Transform raw usage events into billable quantities with aggregation and filtering.
Meters convert raw events into billable quantities. They filter events and apply aggregation functions (Count, Sum, Max, Last) to calculate usage per customer.
The unit label for invoices and reports. Examples: calls, tokens, GB, hours.
3
Filtering (Optional)
Add conditions to filter which events are counted:
AND logic: All conditions must match
OR logic: Any condition can match
Available comparators: equals, not equals, greater than, greater than or equals, less than, less than or equals, contains, does not contain.Enable filtering, choose your logic, then add conditions with a property key, comparator, and value.
To edit a meter in the dashboard, open the meter’s menu and select Edit. You can change the name, description, and measurement unit. These fields don’t affect billing.The event name, aggregation, and filter are read-only after creation. To change how a meter bills, archive it and create a new meter. Through the API, Update Meter accepts name, description, and measurement_unit only, and returns 422 for any other field. Send "description": null to remove the description.
By default, meters charge customers per-unit in dollars (or your configured currency). You can instead configure a meter to deduct from a customer’s credit balance, so usage consumes credits rather than generating a monetary charge.
Credit-based deduction requires a Credit Entitlement attached to the same product. Create the credit entitlement first, then link it to the meter.
First, create a credit entitlement in Products → Credits. Define the unit (e.g., “API Calls”, “Tokens”), precision, and lifecycle settings (expiry, rollover, overage).See the Credit-Based Billing guide for detailed instructions.
2
Create or Edit a Usage-Based Product
Go to your usage-based product and open the Meter configuration section.
3
Add a Meter
Click the + button to attach a meter. Configure the event name, aggregation type, and measurement unit as usual.
4
Enable 'Bill Usage in Credits'
Toggle Bill usage in Credits on the meter configuration to reveal credit settings:
Toggle 'Bill usage in Credits' to switch from currency-based to credit-based deduction.
The number of usage units required to deduct 1 credit. For example:
1 = each meter event deducts 1 credit
100 = 100 meter events deduct 1 credit
1000 = 1,000 API calls consume 1 credit
5
Free Threshold and Credits
The Free Threshold applies to meters billed in money, not to meters billed in credits. When a meter bills in credits, every unit counts toward credit deduction.Example: With meter-units-per-credit of 1, a customer who makes 2,500 API calls has 2,500 credits deducted.
Once configured, the deduction pipeline runs automatically:
Events arrive — Your application sends usage events via the Event Ingestion API.
Meter aggregates — Events are aggregated per your meter configuration (Count, Sum, Max, Last).
Background worker processes — Every minute, a worker fetches new events since the last checkpoint.
Credits are deducted — Aggregated usage is converted to credits using the meter_units_per_credit rate and deducted using FIFO ordering (earliest-expiring grants consumed first).
Overage tracked — If the balance hits zero, further usage is recorded as overage and handled according to the configured behavior (forgiven at reset, billed at next invoice, or carried forward as deficit). Dodo Payments doesn’t block usage when the balance runs out. To stop access at zero, check the balance in your application.
Credit deduction runs asynchronously (every ~1 minute). There may be a brief delay between event ingestion and balance deduction. Design your application to handle this delay and don’t rely on real-time balance checks for access control on individual requests.
You can link multiple meters on the same product to the same credit entitlement. All meters deduct from one shared balance.Example: An AI platform with two meters:
text.generation — 1 credit per 1,000 tokens
image.generation — 10 credits per image
Both deduct from the same “AI Credits” pool. The customer sees a single unified balance in their portal.
Use different meter_units_per_credit rates across meters to express relative costs. Expensive operations (image generation) cost fewer meter units per credit than cheap ones (text completion).
List Customer Ledger
View the full credit deduction history for a customer.
Get Customer Balance
Check a customer’s current credit balance via API.
Start sending usage events from your application to your meters.
View Blueprints
Use ready-made meter configurations for common use cases.
Pricing as Code
Define meters and usage-based prices with Terraform.
Last modified on October 29, 2026
Was this page helpful?
⌘I
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"Dodo Payments Documentation","description":"Documentation for Dodo Payments — the all-in-one payments, billing, and merchant of record platform for SaaS, AI, and digital products.","colors":{"primary":"#779812","light":"#C6FE1E","dark":"#166534"},"logo":{"light":"https://mintcdn.com/dodopayments/nM_mJfYkri-OpC5M/logo/light.svg?fit=max\u0026auto=format\u0026n=nM_mJfYkri-OpC5M\u0026q=85\u0026s=23f7a052f7ecb9d6570b7c95ee359a97","dark":"https://mintcdn.com/dodopayments/nM_mJfYkri-OpC5M/logo/dark.svg?fit=max\u0026auto=format\u0026n=nM_mJfYkri-OpC5M\u0026q=85\u0026s=cd6c20238a54526436f21c43fee51b26"},"favicon":"https://mintcdn.com/dodopayments/doYQc9oUE-WNz0cs/favicon.svg?fit=max\u0026auto=format\u0026n=doYQc9oUE-WNz0cs\u0026q=85\u0026s=271c6cc8ce7d6bf4d7f2b9cca029e004","background":{"color":{"light":"#FFFFFF","dark":"#0D0D0D"}},"navbar":{"links":[{"icon":"link","href":"https://docs.dodopayments.com/llms-full.txt","label":"llms-full.txt"},{"icon":"discord","href":"https://discord.gg/bYqAp4ayYh","label":"Community"},{"icon":"house","href":"https://app.dodopayments.com/","label":"Dashboard"}]},"footer":{"socials":{"x":"https://x.com/dodopayments","linkedin":"https://linkedin.com/company/dodopayments","website":"https://dodopayments.com","discord":"https://discord.gg/bYqAp4ayYh","github":"https://github.com/dodopayments","instagram":"https://www.instagram.com/dodo.payments","facebook":"https://www.facebook.com/profile.php?id=61565515607280"}},"seo":{"metatags":{"og:site_name":"Dodo Payments Documentation","twitter:card":"summary_large_image"},"indexing":"navigable"},"fonts":{"heading":{"family":"ApfelGrotezk","weight":400,"source":"fonts/ApfelGrotezk-Regular.woff2","format":"woff2"},"body":{"family":"Inter","weight":400,"source":"fonts/Inter-Variable.woff2","format":"woff2"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","cursor"],"display":"header"},"metadata":{"timestamp":true},"styling":{"latex":true},"navigation":{"languages":[{"language":"en","href":"introduction"},{"language":"es","href":"es/introduction"},{"language":"ar","href":"ar/introduction"},{"language":"fr","href":"fr/introduction"},{"language":"de","href":"de/introduction"},{"language":"id","href":"id/introduction"},{"language":"ja","href":"ja/introduction"},{"language":"ko","href":"ko/introduction"},{"language":"pt-BR","href":"pt-BR/introduction"},{"language":"vi","href":"vi/introduction"},{"language":"cn","href":"cn/introduction"},{"language":"hi","href":"hi/introduction"},{"language":"it","href":"it/introduction"},{"language":"sv","href":"sv/introduction"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"dodopayments","hasAudioNarration":false,"actualSubdomain":"dodopayments","customDomains":["docs.dodopayments.com"],"gitSource":{"type":"github","owner":"dodopayments","repo":"dodo-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae9d3f44867c64450fc4331","collectionId":"a243a3dd-d05c-4bb9-b7e1-994950705cc1","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae9d3f44867c64450fc4331"},"feedback":{"thumbs":true,"edits":false,"issues":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae9d3f44867c64450fc4331","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"en","tag":"Docs","count":174},{"language":"en","tag":"API Reference","count":163},{"language":"ar","tag":"Docs","count":153},{"language":"cn","tag":"Docs","count":153},{"language":"de","tag":"Docs","count":153},{"language":"es","tag":"Docs","count":153},{"language":"fr","tag":"Docs","count":153},{"language":"hi","tag":"Docs","count":153},{"language":"id","tag":"Docs","count":153},{"language":"it","tag":"Docs","count":153},{"language":"ja","tag":"Docs","count":153},{"language":"ko","tag":"Docs","count":153},{"language":"pt-BR","tag":"Docs","count":153},{"language":"sv","tag":"Docs","count":153},{"language":"vi","tag":"Docs","count":153},{"language":"ar","tag":"API Reference","count":151},{"language":"cn","tag":"API Reference","count":151},{"language":"de","tag":"API Reference","count":151},{"language":"es","tag":"API Reference","count":151},{"language":"fr","tag":"API Reference","count":151},{"language":"hi","tag":"API Reference","count":151},{"language":"id","tag":"API Reference","count":151},{"language":"it","tag":"API Reference","count":151},{"language":"ja","tag":"API Reference","count":151},{"language":"ko","tag":"API Reference","count":151},{"language":"pt-BR","tag":"API Reference","count":151},{"language":"sv","tag":"API Reference","count":151},{"language":"vi","tag":"API Reference","count":151},{"language":"en","tag":"Features","count":85},{"language":"ar","tag":"Features","count":81},{"language":"cn","tag":"Features","count":81},{"language":"de","tag":"Features","count":81},{"language":"es","tag":"Features","count":81},{"language":"fr","tag":"Features","count":81},{"language":"hi","tag":"Features","count":81},{"language":"id","tag":"Features","count":81},{"language":"it","tag":"Features","count":81},{"language":"ja","tag":"Features","count":81},{"language":"ko","tag":"Features","count":81},{"language":"pt-BR","tag":"Features","count":81},{"language":"sv","tag":"Features","count":81},{"language":"vi","tag":"Features","count":81},{"language":"en","tag":"Integrate","count":73},{"language":"en","tag":"Changelog","count":66},{"language":"ar","tag":"Changelog","count":65},{"language":"cn","tag":"Changelog","count":65},{"language":"de","tag":"Changelog","count":65},{"language":"es","tag":"Changelog","count":65},{"language":"fr","tag":"Changelog","count":65},{"language":"hi","tag":"Changelog","count":65},{"language":"id","tag":"Changelog","count":65},{"language":"it","tag":"Changelog","count":65},{"language":"ja","tag":"Changelog","count":65},{"language":"ko","tag":"Changelog","count":65},{"language":"pt-BR","tag":"Changelog","count":65},{"language":"sv","tag":"Changelog","count":65},{"language":"vi","tag":"Changelog","count":65},{"language":"ar","tag":"Integrate","count":59},{"language":"cn","tag":"Integrate","count":59},{"language":"de","tag":"Integrate","count":59},{"language":"es","tag":"Integrate","count":59},{"language":"fr","tag":"Integrate","count":59},{"language":"hi","tag":"Integrate","count":59},{"language":"id","tag":"Integrate","count":59},{"language":"it","tag":"Integrate","count":59},{"language":"ja","tag":"Integrate","count":59},{"language":"ko","tag":"Integrate","count":59},{"language":"pt-BR","tag":"Integrate","count":59},{"language":"sv","tag":"Integrate","count":59},{"language":"vi","tag":"Integrate","count":59},{"language":"en","tag":"External Integrations","count":33},{"language":"ar","tag":"External Integrations","count":30},{"language":"cn","tag":"External Integrations","count":30},{"language":"de","tag":"External Integrations","count":30},{"language":"es","tag":"External Integrations","count":30},{"language":"fr","tag":"External Integrations","count":30},{"language":"hi","tag":"External Integrations","count":30},{"language":"id","tag":"External Integrations","count":30},{"language":"it","tag":"External Integrations","count":30},{"language":"ja","tag":"External Integrations","count":30},{"language":"ko","tag":"External Integrations","count":30},{"language":"pt-BR","tag":"External Integrations","count":30},{"language":"sv","tag":"External Integrations","count":30},{"language":"vi","tag":"External Integrations","count":30},{"language":"en","tag":"Webhooks","count":23},{"language":"ar","tag":"Webhooks","count":23},{"language":"cn","tag":"Webhooks","count":23},{"language":"de","tag":"Webhooks","count":23},{"language":"es","tag":"Webhooks","count":23},{"language":"fr","tag":"Webhooks","count":23},{"language":"hi","tag":"Webhooks","count":23},{"language":"id","tag":"Webhooks","count":23},{"language":"it","tag":"Webhooks","count":23},{"language":"ja","tag":"Webhooks","count":23},{"language":"ko","tag":"Webhooks","count":23},{"language":"pt-BR","tag":"Webhooks","count":23},{"language":"sv","tag":"Webhooks","count":23},{"language":"vi","tag":"Webhooks","count":23},{"language":"en","tag":"Guides","count":22},{"language":"ar","tag":"Guides","count":22},{"language":"cn","tag":"Guides","count":22},{"language":"de","tag":"Guides","count":22},{"language":"es","tag":"Guides","count":22},{"language":"fr","tag":"Guides","count":22},{"language":"hi","tag":"Guides","count":22},{"language":"id","tag":"Guides","count":22},{"language":"it","tag":"Guides","count":22},{"language":"ja","tag":"Guides","count":22},{"language":"ko","tag":"Guides","count":22},{"language":"pt-BR","tag":"Guides","count":22},{"language":"sv","tag":"Guides","count":22},{"language":"vi","tag":"Guides","count":22},{"language":"en","tag":"Entitlements","count":20},{"language":"ar","tag":"Entitlements","count":20},{"language":"cn","tag":"Entitlements","count":20},{"language":"de","tag":"Entitlements","count":20},{"language":"es","tag":"Entitlements","count":20},{"language":"fr","tag":"Entitlements","count":20},{"language":"hi","tag":"Entitlements","count":20},{"language":"id","tag":"Entitlements","count":20},{"language":"it","tag":"Entitlements","count":20},{"language":"ja","tag":"Entitlements","count":20},{"language":"ko","tag":"Entitlements","count":20},{"language":"pt-BR","tag":"Entitlements","count":20},{"language":"sv","tag":"Entitlements","count":20},{"language":"vi","tag":"Entitlements","count":20},{"language":"en","tag":"Customers","count":16},{"language":"ar","tag":"Customers","count":16},{"language":"cn","tag":"Customers","count":16},{"language":"de","tag":"Customers","count":16},{"language":"es","tag":"Customers","count":16},{"language":"fr","tag":"Customers","count":16},{"language":"hi","tag":"Customers","count":16},{"language":"id","tag":"Customers","count":16},{"language":"it","tag":"Customers","count":16},{"language":"ja","tag":"Customers","count":16},{"language":"ko","tag":"Customers","count":16},{"language":"pt-BR","tag":"Customers","count":16},{"language":"sv","tag":"Customers","count":16},{"language":"vi","tag":"Customers","count":16}]},"assistantConfig":{"deflection":{"enabled":false,"email":"support@dodopayments.com","showHelpButton":true}},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"styles.css","content":"#content-area{max-width:60rem}h1,h2,h3,h4,h5,h6{letter-spacing:0.05em!important}.welcome-page .card-group{margin:3rem auto 8rem;max-width:70rem;padding-left:1.25rem;padding-right:1.25rem}.welcome-page .card-group .card{padding:1rem}.welcome-hero{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:20vh;text-align:center;margin-top:3rem;margin-bottom:2.5rem}.welcome-hero h1{font-size:2.5rem;font-weight:700;margin-bottom:1rem;line-height:1.2;color:#fff}.welcome-hero p{font-size:1.25rem;max-width:600px;margin:0 auto}.welcome-hero h1{color:rgb(41 42 37 / 1)}.dark .welcome-hero h1{color:rgb(255 255 255 / 1)}.welcome-hero p{color:rgb(83 85 79 / 1)}.dark .welcome-hero p{color:rgb(162 164 158 / 1)}"}],"page":{"pagePath":"features/usage-based-billing/meters","slug":"/features/usage-based-billing/meters","pageMetadata":{"sidebarTitle":"Meters","title":"Meters","description":"Transform raw usage events into billable quantities with aggregation and filtering.","icon":"sliders","keywords":["Dodo Payments","usage meters","metering","consumption tracking","aggregation"],"href":"/features/usage-based-billing/meters"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Transform raw usage events into billable quantities with aggregation and filtering.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CardGroup,Frame,Heading,Info,Mermaid,OptimizedImage,ParamField,Step,Steps,Table,Tip,Warning}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Mermaid)_missingMdxReference(`Mermaid`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Meters convert raw events into billable quantities. They filter events and apply aggregation functions (Count, Sum, Max, Last) to calculate usage per customer.`}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-2.png?fit=max\u0026auto=format\u0026n=w9oVTi6CzZMAOQA3\u0026q=85\u0026s=f9d85a463fba231437151db3d4a2052a`,alt:`Meter creation interface showing event name, aggregation type, and filtering options`,style:{maxHeight:`500px`,width:`auto`},\"data-og-width\":`2324`,width:`2324`,\"data-og-height\":`1600`,height:`1600`,\"data-path\":`images/usage-based/UBB-2.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-2.png?w=280\u0026fit=max\u0026auto=format\u0026n=w9oVTi6CzZMAOQA3\u0026q=85\u0026s=18fdbbf75ab4df7ede6c45f6e248b783 280w, https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-2.png?w=560\u0026fit=max\u0026auto=format\u0026n=w9oVTi6CzZMAOQA3\u0026q=85\u0026s=e404194a942a1276de7148f9b8eff36d 560w, https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-2.png?w=840\u0026fit=max\u0026auto=format\u0026n=w9oVTi6CzZMAOQA3\u0026q=85\u0026s=1bec71463cb2e00acd0841b9968f2b7e 840w, https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-2.png?w=1100\u0026fit=max\u0026auto=format\u0026n=w9oVTi6CzZMAOQA3\u0026q=85\u0026s=746ef8eb5f8bb76a355122d8253e9cba 1100w, https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-2.png?w=1650\u0026fit=max\u0026auto=format\u0026n=w9oVTi6CzZMAOQA3\u0026q=85\u0026s=8f10a20590e5c9056b9c7f285b827217 1650w, https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-2.png?w=2500\u0026fit=max\u0026auto=format\u0026n=w9oVTi6CzZMAOQA3\u0026q=85\u0026s=a503c04b328416b03f7e20dc6c4c0a28 2500w`})}),`\n`,_jsx(Heading,{level:`2`,id:`api-resources`,children:`API Resources`}),`\n`,_jsx(AccordionGroup,{children:_jsx(Accordion,{title:`View Meter API References`,id:`view-meter-api-references`,children:_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Create Meter`,icon:`plus`,href:`/api-reference/meters/create-meter`,children:_jsx(_components.p,{children:`Create meters programmatically via API.`})}),_jsx(Card,{title:`List Meters`,icon:`list`,href:`/api-reference/meters/get-meters`,children:_jsx(_components.p,{children:`Retrieve all meters in your account.`})}),_jsx(Card,{title:`Get Meter`,icon:`eye`,href:`/api-reference/meters/retrieve-meter`,children:_jsx(_components.p,{children:`Fetch details for a specific meter by ID.`})}),_jsx(Card,{title:`Update Meter`,icon:`pen`,href:`/api-reference/meters/update-meter`,children:_jsx(_components.p,{children:`Change a meter’s name, description, or measurement unit.`})}),_jsx(Card,{title:`Archive Meter`,icon:`arrow-rotate-right`,href:`/api-reference/meters/archive-meter`,children:_jsx(_components.p,{children:`Archive a meter to stop tracking usage.`})}),_jsx(Card,{title:`Unarchive Meter`,icon:`arrow-rotate-left`,href:`/api-reference/meters/unarchive-meter`,children:_jsx(_components.p,{children:`Restore an archived meter to resume tracking.`})})]})})}),`\n`,_jsx(Heading,{level:`2`,id:`creating-a-meter`,children:`Creating a Meter`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Basic Information`,children:[_jsx(ParamField,{path:`Meter Name`,type:`string`,required:true,id:`param-meter-name`,children:_jsx(_components.p,{children:`A descriptive name for the meter (e.g., “API Requests”, “Token Usage”).`})}),_jsx(ParamField,{path:`Event Name`,type:`string`,required:true,id:`param-event-name`,children:_jsxs(_components.p,{children:[`The exact event name to match (case-sensitive). Examples: `,_jsx(_components.code,{children:`api.call`}),`, `,_jsx(_components.code,{children:`image.generated`}),`.`]})})]}),_jsxs(Step,{title:`Aggregation`,children:[_jsxs(ParamField,{path:`Aggregation Type`,type:`string`,required:true,id:`param-aggregation-type`,children:[_jsx(_components.p,{children:`Choose how events are aggregated:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Count`}),`: Total number of events (API calls, uploads)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Sum`}),`: Sum of numeric values (tokens, bytes)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Max`}),`: Highest value in the period (peak users)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Last`}),`: Most recent value`]}),`\n`]})]}),_jsx(ParamField,{path:`Over Property`,type:`string`,id:`param-over-property`,children:_jsxs(_components.p,{children:[`The metadata key to aggregate (required for Sum, Max, and Last). Examples: `,_jsx(_components.code,{children:`tokens`}),`, `,_jsx(_components.code,{children:`bytes`}),`, `,_jsx(_components.code,{children:`duration_ms`}),`.`]})}),_jsx(ParamField,{path:`Measurement Unit`,type:`string`,required:true,id:`param-measurement-unit`,children:_jsxs(_components.p,{children:[`The unit label for invoices and reports. Examples: `,_jsx(_components.code,{children:`calls`}),`, `,_jsx(_components.code,{children:`tokens`}),`, `,_jsx(_components.code,{children:`GB`}),`, `,_jsx(_components.code,{children:`hours`}),`.`]})})]}),_jsxs(Step,{title:`Filtering (Optional)`,children:[_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-3.png?fit=max\u0026auto=format\u0026n=w9oVTi6CzZMAOQA3\u0026q=85\u0026s=ce231b0559d31723bc12c22cd9ff9d64`,alt:`Event filtering interface with AND/OR logic and comparison operators`,style:{maxHeight:`500px`,width:`auto`},\"data-og-width\":`1558`,width:`1558`,\"data-og-height\":`942`,height:`942`,\"data-path\":`images/usage-based/UBB-3.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-3.png?w=280\u0026fit=max\u0026auto=format\u0026n=w9oVTi6CzZMAOQA3\u0026q=85\u0026s=2cd814d88c0043f59bd0809f62a70932 280w, https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-3.png?w=560\u0026fit=max\u0026auto=format\u0026n=w9oVTi6CzZMAOQA3\u0026q=85\u0026s=6346cf2daf9635f53f9280701b1fefc2 560w, https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-3.png?w=840\u0026fit=max\u0026auto=format\u0026n=w9oVTi6CzZMAOQA3\u0026q=85\u0026s=d5b459ab63581aa80b9ddcd6a2d9be25 840w, https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-3.png?w=1100\u0026fit=max\u0026auto=format\u0026n=w9oVTi6CzZMAOQA3\u0026q=85\u0026s=95c547968201d65d65981b0dc6271c0a 1100w, https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-3.png?w=1650\u0026fit=max\u0026auto=format\u0026n=w9oVTi6CzZMAOQA3\u0026q=85\u0026s=52e270bd88d839ea0c148fcfadbbf7dd 1650w, https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-3.png?w=2500\u0026fit=max\u0026auto=format\u0026n=w9oVTi6CzZMAOQA3\u0026q=85\u0026s=f737d26f50ab2a4cc45cc03927936d4e 2500w`})}),_jsx(_components.p,{children:`Add conditions to filter which events are counted:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`AND logic`}),`: All conditions must match`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`OR logic`}),`: Any condition can match`]}),`\n`]}),_jsx(_components.p,{children:`Available comparators: equals, not equals, greater than, greater than or equals, less than, less than or equals, contains, does not contain.`}),_jsx(_components.p,{children:`Enable filtering, choose your logic, then add conditions with a property key, comparator, and value.`})]}),_jsx(Step,{title:`Create`,children:_jsxs(_components.p,{children:[`Review your configuration and click `,_jsx(_components.strong,{children:`Create Meter`}),`.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`editing-a-meter`,children:`Editing a Meter`}),`\n`,_jsxs(_components.p,{children:[`To edit a meter in the dashboard, open the meter’s menu and select `,_jsx(_components.strong,{children:`Edit`}),`. You can change the `,_jsx(_components.strong,{children:`name`}),`, `,_jsx(_components.strong,{children:`description`}),`, and `,_jsx(_components.strong,{children:`measurement unit`}),`. These fields don’t affect billing.`]}),`\n`,_jsxs(_components.p,{children:[`The event name, aggregation, and filter are read-only after creation. To change how a meter bills, archive it and create a new meter. Through the API, `,_jsx(_components.a,{href:`/api-reference/meters/update-meter`,children:`Update Meter`}),` accepts `,_jsx(_components.code,{children:`name`}),`, `,_jsx(_components.code,{children:`description`}),`, and `,_jsx(_components.code,{children:`measurement_unit`}),` only, and returns `,_jsx(_components.code,{children:`422`}),` for any other field. Send `,_jsx(_components.code,{children:`\"description\": null`}),` to remove the description.`]}),`\n`,_jsx(Heading,{level:`2`,id:`viewing-analytics`,children:`Viewing Analytics`}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-1.png?fit=max\u0026auto=format\u0026n=w9oVTi6CzZMAOQA3\u0026q=85\u0026s=7fb86a266b5aa84f281b680601bd998e`,alt:`Meter analytics dashboard showing usage overview, events, and customer data`,style:{maxHeight:`500px`,width:`auto`},\"data-og-width\":`1536`,width:`1536`,\"data-og-height\":`1252`,height:`1252`,\"data-path\":`images/usage-based/UBB-1.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-1.png?w=280\u0026fit=max\u0026auto=format\u0026n=w9oVTi6CzZMAOQA3\u0026q=85\u0026s=23a2bbb81a88052bec92772f03254690 280w, https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-1.png?w=560\u0026fit=max\u0026auto=format\u0026n=w9oVTi6CzZMAOQA3\u0026q=85\u0026s=b9ebba13d62c1e5e0470097382319a8c 560w, https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-1.png?w=840\u0026fit=max\u0026auto=format\u0026n=w9oVTi6CzZMAOQA3\u0026q=85\u0026s=2cb2348f913ebdc8175d07c533553d74 840w, https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-1.png?w=1100\u0026fit=max\u0026auto=format\u0026n=w9oVTi6CzZMAOQA3\u0026q=85\u0026s=84b14f137b8f737d8e269cb9c2213915 1100w, https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-1.png?w=1650\u0026fit=max\u0026auto=format\u0026n=w9oVTi6CzZMAOQA3\u0026q=85\u0026s=9059aafa1890c7a834a0acbd2a115567 1650w, https://mintcdn.com/dodopayments/w9oVTi6CzZMAOQA3/images/usage-based/UBB-1.png?w=2500\u0026fit=max\u0026auto=format\u0026n=w9oVTi6CzZMAOQA3\u0026q=85\u0026s=7a1008d882d31dc4699b07353c4121f6 2500w`})}),`\n`,_jsx(_components.p,{children:`Your meter dashboard displays:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Overview`}),`: Total usage and usage trends over time`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Events`}),`: Individual events received and their metadata`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Customers`}),`: Per-customer usage totals and charges`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`billing-in-credits-instead-of-currency`,children:`Billing in Credits Instead of Currency`}),`\n`,_jsx(_components.p,{children:`By default, meters charge customers per-unit in dollars (or your configured currency). You can instead configure a meter to deduct from a customer’s credit balance, so usage consumes credits rather than generating a monetary charge.`}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`Credit-based deduction requires a `,_jsx(_components.a,{href:`/features/credit-based-billing`,children:`Credit Entitlement`}),` attached to the same product. Create the credit entitlement first, then link it to the meter.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`when-to-use-credit-based-deduction`,children:`When to Use Credit-Based Deduction`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Scenario`}),_jsx(_components.th,{children:`Standard (currency)`}),_jsx(_components.th,{children:`Credit-based`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Simple per-unit pricing ($0.01/call)`}),_jsx(_components.td,{children:`✅ Best fit`}),_jsx(_components.td,{children:`Unnecessary overhead`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Prepaid credit packs (buy 10K tokens, use over time)`}),_jsx(_components.td,{children:`❌ Can’t express`}),_jsx(_components.td,{children:`✅ Best fit`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Bundled usage with subscriptions (Pro plan includes 100K calls)`}),_jsx(_components.td,{children:`Possible via free threshold`}),_jsx(_components.td,{children:`✅ Better: credits roll over, expire, and show in portal`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Multi-meter products sharing a credit pool`}),_jsx(_components.td,{children:`❌ Each meter bills separately`}),_jsx(_components.td,{children:`✅ All meters deduct from one balance`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`configuring-a-meter-to-deduct-credits`,children:`Configuring a Meter to Deduct Credits`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Create a Credit Entitlement`,children:[_jsxs(_components.p,{children:[`First, create a credit entitlement in `,_jsx(_components.strong,{children:`Products → Credits`}),`. Define the unit (e.g., “API Calls”, “Tokens”), precision, and lifecycle settings (expiry, rollover, overage).`]}),_jsxs(_components.p,{children:[`See the `,_jsx(_components.a,{href:`/features/credit-based-billing`,children:`Credit-Based Billing guide`}),` for detailed instructions.`]})]}),_jsx(Step,{title:`Create or Edit a Usage-Based Product`,children:_jsxs(_components.p,{children:[`Go to your usage-based product and open the `,_jsx(_components.strong,{children:`Meter`}),` configuration section.`]})}),_jsx(Step,{title:`Add a Meter`,children:_jsxs(_components.p,{children:[`Click the `,_jsx(_components.strong,{children:`+`}),` button to attach a meter. Configure the event name, aggregation type, and measurement unit as usual.`]})}),_jsxs(Step,{title:`Enable 'Bill Usage in Credits'`,children:[_jsxs(_components.p,{children:[`Toggle `,_jsx(_components.strong,{children:`Bill usage in Credits`}),` on the meter configuration to reveal credit settings:`]}),_jsx(Frame,{caption:`Toggle 'Bill usage in Credits' to switch from currency-based to credit-based deduction.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/dodopayments/ibNfoFRyCIGyt3pO/images/CBB/Desktop%20-%20Attach%20Credit%20-%20UBB-5.jpg?fit=max\u0026auto=format\u0026n=ibNfoFRyCIGyt3pO\u0026q=85\u0026s=b4ef2fe5079cbf3bb39eb3814f101cbd`,alt:`Meter configuration with Bill usage in Credits toggle enabled`,style:{maxHeight:`500px`,width:`auto`},\"data-og-width\":`2880`,width:`2880`,\"data-og-height\":`2282`,height:`2282`,\"data-path\":`images/CBB/Desktop - Attach Credit - UBB-5.jpg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/dodopayments/ibNfoFRyCIGyt3pO/images/CBB/Desktop%20-%20Attach%20Credit%20-%20UBB-5.jpg?w=280\u0026fit=max\u0026auto=format\u0026n=ibNfoFRyCIGyt3pO\u0026q=85\u0026s=0f765142d0ca9ab3916a4f01d4ca170e 280w, https://mintcdn.com/dodopayments/ibNfoFRyCIGyt3pO/images/CBB/Desktop%20-%20Attach%20Credit%20-%20UBB-5.jpg?w=560\u0026fit=max\u0026auto=format\u0026n=ibNfoFRyCIGyt3pO\u0026q=85\u0026s=6bf59eadfa5cd6c865d0ac90e760854b 560w, https://mintcdn.com/dodopayments/ibNfoFRyCIGyt3pO/images/CBB/Desktop%20-%20Attach%20Credit%20-%20UBB-5.jpg?w=840\u0026fit=max\u0026auto=format\u0026n=ibNfoFRyCIGyt3pO\u0026q=85\u0026s=a995ab0ab4952c8cfd90279c2d6bf472 840w, https://mintcdn.com/dodopayments/ibNfoFRyCIGyt3pO/images/CBB/Desktop%20-%20Attach%20Credit%20-%20UBB-5.jpg?w=1100\u0026fit=max\u0026auto=format\u0026n=ibNfoFRyCIGyt3pO\u0026q=85\u0026s=7971d02b844038a9978418b23c7b8071 1100w, https://mintcdn.com/dodopayments/ibNfoFRyCIGyt3pO/images/CBB/Desktop%20-%20Attach%20Credit%20-%20UBB-5.jpg?w=1650\u0026fit=max\u0026auto=format\u0026n=ibNfoFRyCIGyt3pO\u0026q=85\u0026s=c69a3883012f141c59228a0fb3a7655f 1650w, https://mintcdn.com/dodopayments/ibNfoFRyCIGyt3pO/images/CBB/Desktop%20-%20Attach%20Credit%20-%20UBB-5.jpg?w=2500\u0026fit=max\u0026auto=format\u0026n=ibNfoFRyCIGyt3pO\u0026q=85\u0026s=68e2d8094dbec7704060f0a28ea10a2f 2500w`})}),_jsx(ParamField,{path:`Credit Entitlement`,type:`string`,required:true,id:`param-credit-entitlement`,children:_jsx(_components.p,{children:`Select which credit entitlement this meter deducts from.`})}),_jsxs(ParamField,{path:`Meter units per credit`,type:`number`,required:true,id:`param-meter-units-per-credit`,children:[_jsx(_components.p,{children:`The number of usage units required to deduct 1 credit. For example:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`1`}),` = each meter event deducts 1 credit`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`100`}),` = 100 meter events deduct 1 credit`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`1000`}),` = 1,000 API calls consume 1 credit`]}),`\n`]})]})]}),_jsxs(Step,{title:`Free Threshold and Credits`,children:[_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Free Threshold`}),` applies to meters billed in money, not to meters billed in credits. When a meter bills in credits, every unit counts toward credit deduction.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Example`}),`: With meter-units-per-credit of 1, a customer who makes 2,500 API calls has 2,500 credits deducted.`]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`how-credit-deduction-works`,children:`How Credit Deduction Works`}),`\n`,_jsx(_components.p,{children:`Once configured, the deduction pipeline runs automatically:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Events arrive`}),` — Your application sends usage events via the `,_jsx(_components.a,{href:`/features/usage-based-billing/event-ingestion`,children:`Event Ingestion API`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Meter aggregates`}),` — Events are aggregated per your meter configuration (Count, Sum, Max, Last).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Background worker processes`}),` — Every minute, a worker fetches new events since the last checkpoint.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Credits are deducted`}),` — Aggregated usage is converted to credits using the `,_jsx(_components.code,{children:`meter_units_per_credit`}),` rate and deducted using FIFO ordering (earliest-expiring grants consumed first).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Overage tracked`}),` — If the balance hits zero, further usage is recorded as overage and handled according to the configured behavior (forgiven at reset, billed at next invoice, or carried forward as deficit). Dodo Payments doesn’t block usage when the balance runs out. To stop access at zero, check the balance in your application.`]}),`\n`]}),`\n`,_jsx(Mermaid,{chart:`flowchart LR\n A[Usage Event] --> B[Meter Aggregation]\n B --> C{Credits Available?}\n C -->|Yes| D[Deduct from Balance]\n C -->|No| E{Overage Enabled?}\n E -->|Yes| F[Track Overage]\n E -->|No| G[Your App Enforces Limits]\n D --> H[Update Ledger]\n F --> H`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Credit deduction runs asynchronously (every ~1 minute). There may be a brief delay between event ingestion and balance deduction. Design your application to handle this delay and don’t rely on real-time balance checks for access control on individual requests.`})}),`\n`,_jsx(Heading,{level:`3`,id:`multiple-meters-one-credit-pool`,children:`Multiple Meters, One Credit Pool`}),`\n`,_jsx(_components.p,{children:`You can link multiple meters on the same product to the same credit entitlement. All meters deduct from one shared balance.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Example`}),`: An AI platform with two meters:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`text.generation`}),` — 1 credit per 1,000 tokens`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`image.generation`}),` — 10 credits per image`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Both deduct from the same “AI Credits” pool. The customer sees a single unified balance in their portal.`}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Use different `,_jsx(_components.code,{children:`meter_units_per_credit`}),` rates across meters to express relative costs. Expensive operations (image generation) cost fewer meter units per credit than cheap ones (text completion).`]})}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`List Customer Ledger`,icon:`scroll`,href:`/api-reference/credit-entitlements/list-customer-ledger`,children:_jsx(_components.p,{children:`View the full credit deduction history for a customer.`})}),_jsx(Card,{title:`Get Customer Balance`,icon:`wallet`,href:`/api-reference/credit-entitlements/get-customer-balance`,children:_jsx(_components.p,{children:`Check a customer’s current credit balance via API.`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Events not appearing`,id:`events-not-appearing`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Event name must match exactly (case-sensitive)`}),`\n`,_jsx(_components.li,{children:`Check that meter filters aren’t excluding events`}),`\n`,_jsx(_components.li,{children:`Verify customer IDs exist in your account`}),`\n`,_jsx(_components.li,{children:`Temporarily disable filters to test`}),`\n`]})}),_jsx(Accordion,{title:`Aggregation not working`,id:`aggregation-not-working`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Verify the Over Property matches the metadata key exactly`}),`\n`,_jsxs(_components.li,{children:[`Use numbers, not strings: `,_jsx(_components.code,{children:`tokens: 150`}),` not `,_jsx(_components.code,{children:`tokens: \"150\"`})]}),`\n`,_jsx(_components.li,{children:`Include required properties in all events`}),`\n`]})}),_jsx(Accordion,{title:`Filters not working`,id:`filters-not-working`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Match case exactly`}),`\n`,_jsx(_components.li,{children:`Use correct operators for the data type`}),`\n`,_jsx(_components.li,{children:`Ensure events include the filtered properties`}),`\n`]})}),_jsx(Accordion,{title:`Wrong usage totals`,id:`wrong-usage-totals`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Check the Events tab to count actual events received`}),`\n`,_jsx(_components.li,{children:`Verify the aggregation type (Count vs Sum)`}),`\n`,_jsx(_components.li,{children:`Ensure values are numeric for Sum and Max`}),`\n`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next Steps`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Send Events`,icon:`bolt`,href:`/features/usage-based-billing/event-ingestion`,children:_jsx(_components.p,{children:`Start sending usage events from your application to your meters.`})}),_jsx(Card,{title:`View Blueprints`,icon:`copy`,href:`/features/usage-based-billing/ingestion-blueprints`,children:_jsx(_components.p,{children:`Use ready-made meter configurations for common use cases.`})}),_jsx(Card,{title:`Pricing as Code`,icon:`code-branch`,href:`/developer-resources/terraform-provider`,children:_jsx(_components.p,{children:`Define meters and usage-based prices with Terraform.`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"sidebarTitle":"Meters","title":"Meters","description":"Transform raw usage events into billable quantities with aggregation and filtering.","icon":"sliders","keywords":["Dodo Payments","usage meters","metering","consumption tracking","aggregation"],"href":"/features/usage-based-billing/meters"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"API Resources","slug":"api-resources","depth":2,"children":[]},{"title":"Creating a Meter","slug":"creating-a-meter","depth":2,"children":[]},{"title":"Editing a Meter","slug":"editing-a-meter","depth":2,"children":[]},{"title":"Viewing Analytics","slug":"viewing-analytics","depth":2,"children":[]},{"title":"Billing in Credits Instead of Currency","slug":"billing-in-credits-instead-of-currency","depth":2,"children":[{"title":"When to Use Credit-Based Deduction","slug":"when-to-use-credit-based-deduction","depth":3,"children":[]},{"title":"Configuring a Meter to Deduct Credits","slug":"configuring-a-meter-to-deduct-credits","depth":3,"children":[]},{"title":"How Credit Deduction Works","slug":"how-credit-deduction-works","depth":3,"children":[]},{"title":"Multiple Meters, One Credit Pool","slug":"multiple-meters-one-credit-pool","depth":3,"children":[]}]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]},{"title":"Next Steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/dodopayments/0ee82a08f7b65bcb/seo.js","/_mintlify/custom/dodopayments/6f88c9bbee313616/assistant-loader.js"],"subdomain":"dodopayments","siteName":"Dodo Payments Documentation","title":"Meters - Dodo Payments Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/features/usage-based-billing/meters","matchLevel":0},"es":{"href":"/es/features/usage-based-billing/meters","matchLevel":1},"ar":{"href":"/ar/features/usage-based-billing/meters","matchLevel":1},"fr":{"href":"/fr/features/usage-based-billing/meters","matchLevel":1},"de":{"href":"/de/features/usage-based-billing/meters","matchLevel":1},"id":{"href":"/id/features/usage-based-billing/meters","matchLevel":1},"ja":{"href":"/ja/features/usage-based-billing/meters","matchLevel":1},"ko":{"href":"/ko/features/usage-based-billing/meters","matchLevel":1},"pt-BR":{"href":"/pt-BR/features/usage-based-billing/meters","matchLevel":1},"vi":{"href":"/vi/features/usage-based-billing/meters","matchLevel":1},"cn":{"href":"/cn/features/usage-based-billing/meters","matchLevel":1},"hi":{"href":"/hi/features/usage-based-billing/meters","matchLevel":1},"it":{"href":"/it/features/usage-based-billing/meters","matchLevel":1},"sv":{"href":"/sv/features/usage-based-billing/meters","matchLevel":1}}},"lastModified":"2026-10-29T07:17:58.599Z","gitLastModified":"2026-10-29T07:17:31.000Z","originalFileLocation":"features/usage-based-billing/meters.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Transform raw usage events into billable quantities with aggregation and filtering.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Dodo Payments Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/dodopayments/KuV_TozyHuGHOyyc/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/dodopayments/KuV_TozyHuGHOyyc/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/dodopayments/KuV_TozyHuGHOyyc/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/dodopayments/KuV_TozyHuGHOyyc/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/dodopayments/KuV_TozyHuGHOyyc/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/dodopayments/KuV_TozyHuGHOyyc/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/dodopayments/KuV_TozyHuGHOyyc/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/dodopayments/KuV_TozyHuGHOyyc/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/dodopayments/KuV_TozyHuGHOyyc/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Meters - Dodo Payments Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Transform raw usage events into billable quantities with aggregation and filtering.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Dodo Payments Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.dodopayments.com/features/usage-based-billing/meters\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://dodopayments.mintlify.app/_mintlify/api/og/v2?division=Usage+Based+Billing\u0026amp;title=Meters\u0026amp;description=Transform+raw+usage+events+into+billable+quantities+with+aggregation+and+filtering.\u0026amp;theme=7deaaa10b0ab3bbb6a23be51\u0026amp;signature=508e3cb87e1fed91ca8efef45b1f88244cdfb60049c13d3764d9b22255375065\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Meters - Dodo Payments Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Transform raw usage events into billable quantities with aggregation and filtering.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://dodopayments.mintlify.app/_mintlify/api/og/v2?division=Usage+Based+Billing\u0026amp;title=Meters\u0026amp;description=Transform+raw+usage+events+into+billable+quantities+with+aggregation+and+filtering.\u0026amp;theme=7deaaa10b0ab3bbb6a23be51\u0026amp;signature=508e3cb87e1fed91ca8efef45b1f88244cdfb60049c13d3764d9b22255375065\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/dodopayments/KuV_TozyHuGHOyyc/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Dodo Payments Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#779812\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.dodopayments.com/features/usage-based-billing/meters\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/features/usage-based-billing/meters.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.dodopayments.com/features/usage-based-billing/meters\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"es\" href=\"https://docs.dodopayments.com/es/features/usage-based-billing/meters\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ar\" href=\"https://docs.dodopayments.com/ar/features/usage-based-billing/meters\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"fr\" href=\"https://docs.dodopayments.com/fr/features/usage-based-billing/meters\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"de\" href=\"https://docs.dodopayments.com/de/features/usage-based-billing/meters\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"id\" href=\"https://docs.dodopayments.com/id/features/usage-based-billing/meters\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://docs.dodopayments.com/ja/features/usage-based-billing/meters\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://docs.dodopayments.com/ko/features/usage-based-billing/meters\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"pt-BR\" href=\"https://docs.dodopayments.com/pt-BR/features/usage-based-billing/meters\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"vi\" href=\"https://docs.dodopayments.com/vi/features/usage-based-billing/meters\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://docs.dodopayments.com/cn/features/usage-based-billing/meters\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"hi\" href=\"https://docs.dodopayments.com/hi/features/usage-based-billing/meters\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"it\" href=\"https://docs.dodopayments.com/it/features/usage-based-billing/meters\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"sv\" href=\"https://docs.dodopayments.com/sv/features/usage-based-billing/meters\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.dodopayments.com/features/usage-based-billing/meters\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.dodopayments.com/#organization\",\"name\":\"Dodo Payments Documentation\",\"url\":\"https://docs.dodopayments.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/dodopayments/nM_mJfYkri-OpC5M/logo/light.svg?fit=max\u0026auto=format\u0026n=nM_mJfYkri-OpC5M\u0026q=85\u0026s=23f7a052f7ecb9d6570b7c95ee359a97\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.dodopayments.com#website\",\"name\":\"Dodo Payments Documentation\",\"url\":\"https://docs.dodopayments.com\",\"publisher\":{\"@id\":\"https://docs.dodopayments.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.dodopayments.com/features/usage-based-billing/meters#webpage\",\"url\":\"https://docs.dodopayments.com/features/usage-based-billing/meters\",\"name\":\"Meters\",\"description\":\"Transform raw usage events into billable quantities with aggregation and filtering.\",\"dateModified\":\"2026-10-29T07:17:31.000Z\",\"isPartOf\":{\"@id\":\"https://docs.dodopayments.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.dodopayments.com/features/usage-based-billing/meters#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.dodopayments.com/features/usage-based-billing/meters#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Features\",\"item\":\"https://docs.dodopayments.com/features/products\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Usage Based Billing\",\"item\":\"https://docs.dodopayments.com/features/usage-based-billing/introduction\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Meters\",\"item\":\"https://docs.dodopayments.com/features/usage-based-billing/meters\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.dodopayments.com/features/usage-based-billing/meters#article\",\"headline\":\"Meters\",\"name\":\"Meters\",\"description\":\"Transform raw usage events into billable quantities with aggregation and filtering.\",\"url\":\"https://docs.dodopayments.com/features/usage-based-billing/meters\",\"mainEntityOfPage\":{\"@id\":\"https://docs.dodopayments.com/features/usage-based-billing/meters#webpage\"},\"dateModified\":\"2026-10-29T07:17:31.000Z\",\"keywords\":\"Dodo Payments, usage meters, metering, consumption tracking, aggregation\",\"publisher\":{\"@id\":\"https://docs.dodopayments.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.dodopayments.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Dodo Payments Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Dodo Payments Documentation","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Docs","icon":"book","groups":[{"group":"Getting Started","pages":[{"title":"Welcome to Dodo Payments","sidebarTitle":"Introduction","icon":"rocket","href":"/introduction"},{"title":"Build with AI Coding Agents","sidebarTitle":"AI Coding Agents","icon":"robot","href":"/developer-resources/build-with-ai-coding-agents"},{"title":"Migrate to Dodo Payments","icon":"arrow-right-arrow-left","href":"/migrate-to-dodo"},{"title":"Account Verification","icon":"id-card","href":"/miscellaneous/verification-process"}]},{"group":"Features","pages":[{"sidebarTitle":"Products","title":"Products","icon":"box","href":"/features/products"},{"sidebarTitle":"Product Collections","title":"Product Collections","icon":"layer-group","href":"/features/product-collections"},{"sidebarTitle":"One-Time Payments","title":"One-Time Payments","icon":"credit-card","href":"/features/one-time-payment-products"},{"group":"Subscriptions","icon":"infinity","pages":[{"sidebarTitle":"Subscriptions","title":"Subscriptions","icon":"repeat","href":"/features/subscription"},{"sidebarTitle":"Add-ons","title":"Add-ons for Subscriptions","icon":"puzzle","href":"/features/addons"},{"title":"On-Demand Subscriptions","icon":"bolt","href":"/developer-resources/ondemand-subscriptions"}]},{"group":"Usage Based Billing","icon":"arrow-trend-up","pages":[{"sidebarTitle":"Introduction","title":"Usage-Based Billing","description":"Charge customers based on what they actually use with flexible metering and automated billing.","icon":"box","href":"/features/usage-based-billing/introduction"},{"sidebarTitle":"Meters","title":"Meters","icon":"sliders","href":"/features/usage-based-billing/meters"},{"sidebarTitle":"Event Ingestion","title":"Event Ingestion","description":"Send usage events from your application to track customer consumption and power billing.","icon":"bolt","href":"/features/usage-based-billing/event-ingestion"},{"group":"Ingestion Blueprints","icon":"copy","pages":[{"sidebarTitle":"Introduction","title":"Ingestion Blueprints","icon":"box","href":"/features/usage-based-billing/ingestion-blueprints"},{"title":"LLM Blueprint","icon":"brain-circuit","href":"/developer-resources/ingestion-blueprints/llm"},{"title":"API Gateway Blueprint","icon":"cloud","href":"/developer-resources/ingestion-blueprints/api-gateway"},{"title":"Object Storage Blueprint","icon":"box-archive","href":"/developer-resources/ingestion-blueprints/object-storage"},{"title":"Stream Blueprint","icon":"tower-broadcast","href":"/developer-resources/ingestion-blueprints/stream"},{"title":"Time Range Blueprint","icon":"clock","href":"/developer-resources/ingestion-blueprints/time-range"}]}]},{"sidebarTitle":"Credit-Based Billing","title":"Credit-Based Billing","icon":"coins","href":"/features/credit-based-billing"},{"sidebarTitle":"Seat-Based Billing","title":"Seat-Based Billing","icon":"users","href":"/features/seat-based-billing"},{"sidebarTitle":"Hybrid Billing","title":"Hybrid Billing Models","icon":"layer-group","href":"/features/hybrid-billing"},{"title":"Upsells \u0026 Downsells","icon":"arrow-up-right-dots","href":"/features/upsells-and-downsells"},{"group":"Customers","icon":"user-group","pages":[{"title":"Customer Management","icon":"user-group","href":"/features/customers"},{"sidebarTitle":"Customer Portal","title":"Customer Portal","icon":"id-card","href":"/features/customer-portal"},{"title":"Customer Wallets","icon":"wallet","href":"/features/customer-wallet"},{"sidebarTitle":"Sent Emails","title":"Customer Email Logs","icon":"envelope","href":"/features/email-logs"},{"sidebarTitle":"Customer Blocklist","title":"Customer Blocklist","icon":"user-slash","href":"/features/customer-blocklist"}]},{"sidebarTitle":"Discounts","title":"Discounts","icon":"percent","href":"/features/discount-codes"},{"group":"Recovery","icon":"rotate","pages":[{"sidebarTitle":"Overview","title":"Revenue Recovery","icon":"rotate","href":"/features/recovery/overview"},{"sidebarTitle":"Abandoned Cart Recovery","title":"Abandoned Cart Recovery","icon":"cart-shopping","href":"/features/recovery/abandoned-cart-recovery"},{"sidebarTitle":"Subscription Dunning","title":"Subscription Dunning","icon":"repeat","href":"/features/recovery/subscription-dunning"},{"sidebarTitle":"Subscription Payment Retries","title":"Subscription Payment Retries","icon":"arrow-rotate-right","href":"/features/recovery/payment-retries"},{"sidebarTitle":"Manual Retry","title":"Manual Payment Retry","icon":"hand-pointer","href":"/features/recovery/manual-retry"}]},{"group":"Transactions","icon":"credit-card","pages":[{"title":"Payments","icon":"money-bill-transfer","href":"/features/transactions/payments"},{"title":"Refunds","icon":"rotate-left","href":"/features/transactions/refunds"},{"title":"Disputes","icon":"circle-exclamation","href":"/features/transactions/disputes"}]},{"group":"Entitlements","icon":"gift","pages":[{"title":"Introduction","sidebarTitle":"Introduction","icon":"box-archive","href":"/features/entitlements/introduction"},{"title":"License Keys","icon":"key","href":"/features/license-keys"},{"title":"Digital Product Delivery","sidebarTitle":"Digital Products","icon":"download","href":"/features/digital-product-delivery"},{"title":"Feature Flag Entitlement","sidebarTitle":"Feature Flags","icon":"flag","href":"/features/entitlements/feature-flags"},{"title":"Discord Entitlement","sidebarTitle":"Discord","icon":"discord","href":"/features/entitlements/discord"},{"title":"GitHub Entitlement","sidebarTitle":"GitHub","icon":"github","href":"/features/entitlements/github"},{"title":"Telegram Entitlement","sidebarTitle":"Telegram","icon":"telegram","href":"/features/entitlements/telegram"},{"title":"Framer Entitlement","sidebarTitle":"Framer","icon":"puzzle-piece","href":"/features/entitlements/framer"},{"title":"Notion Entitlement","sidebarTitle":"Notion","icon":"book","href":"/features/entitlements/notion"}]},{"group":"Payouts and Balances","icon":"wallet","pages":[{"title":"Payouts Process","icon":"money-bill","href":"/features/payouts/payout-structure"},{"title":"Balances","icon":"file-invoice-dollar","href":"/features/account-summary-payout-wallet"}]},{"group":"Account Management","icon":"user","pages":[{"sidebarTitle":"Archive a Business","title":"Archiving a Business","icon":"box-archive","href":"/features/archive-business"},{"sidebarTitle":"Transfer Ownership","title":"Transferring Business Ownership","icon":"people-arrows","href":"/features/ownership-transfer"},{"sidebarTitle":"Entity Transfer","title":"Transferring Your Business to a New Entity","icon":"building","href":"/features/entity-transfer"},{"title":"Multi-Brand Setup","icon":"building-columns","href":"/features/multi-brands"},{"title":"Invoice Management","icon":"file-invoice-dollar","href":"/features/invoice-generation"},{"title":"Team Members","icon":"user-gear","href":"/features/team"},{"sidebarTitle":"Connected Apps","title":"Connected Apps","icon":"plug","href":"/features/connected-apps"},{"title":"Communication Preferences","sidebarTitle":"Communication Preferences","icon":"bell","href":"/features/communication-preferences"},{"title":"My Account","icon":"user-gear","href":"/miscellaneous/accounts"}]},{"group":"Pricing","icon":"dollar-sign","pages":[{"sidebarTitle":"Tax Inclusive Pricing","title":"Tax Inclusive Pricing","icon":"file-invoice","href":"/features/tax-inclusive-pricing"},{"sidebarTitle":"Pay What You Want","title":"Pay What You Want Pricing","icon":"dollar-sign","href":"/features/pay-what-you-want"},{"title":"B2B Payments","icon":"money-bills","href":"/features/b2b-payments"},{"title":"Localized Pricing","sidebarTitle":"Localized Pricing","icon":"earth-americas","href":"/features/localized-pricing"},{"sidebarTitle":"Purchasing Power Parity","title":"Purchasing Power Parity","icon":"money-bill-trend-up","href":"/features/purchasing-power-parity"},{"sidebarTitle":"Charm Pricing","title":"Charm Pricing","icon":"tag","href":"/features/charm-pricing"}]},{"sidebarTitle":"Checkout","title":"Checkout Features","icon":"cart-shopping","href":"/features/checkout"},{"sidebarTitle":"Single Page Checkout","title":"Single Page Checkout","icon":"window-maximize","tag":"BETA","href":"/features/single-page-checkout"},{"sidebarTitle":"Design","title":"Design \u0026 Theme Customization","icon":"palette","href":"/features/design"},{"group":"Payment Methods","icon":"money-bill-wave","pages":[{"title":"Payment Methods","sidebarTitle":"Overview","icon":"layer-group","href":"/features/payment-methods"},{"title":"Credit \u0026 Debit Cards","sidebarTitle":"Cards","icon":"credit-card","href":"/features/payment-methods/cards"},{"title":"Digital Wallets","sidebarTitle":"Digital Wallets","icon":"wallet","href":"/features/payment-methods/digital-wallets"},{"title":"Buy Now Pay Later (BNPL)","sidebarTitle":"BNPL","icon":"calendar-days","href":"/features/payment-methods/bnpl"},{"title":"ACH Direct Debit","sidebarTitle":"ACH Direct Debit","icon":"building-columns","href":"/features/payment-methods/ach"},{"title":"India Payment Methods","sidebarTitle":"India","icon":"indian-rupee-sign","href":"/features/payment-methods/india"},{"title":"European Payment Methods","sidebarTitle":"Europe","icon":"euro-sign","href":"/features/payment-methods/europe"},{"title":"South Korea Payment Methods","sidebarTitle":"South Korea","icon":"won-sign","href":"/features/payment-methods/south-korea"},{"title":"Asia-Pacific Payment Methods","sidebarTitle":"Asia-Pacific","icon":"earth-asia","href":"/features/payment-methods/asia-pacific"},{"title":"Pix","sidebarTitle":"Pix","icon":"brazilian-real-sign","href":"/features/payment-methods/pix"},{"title":"Stablecoins","sidebarTitle":"Stablecoins","icon":"dollar-sign","href":"/features/payment-methods/stablecoins"},{"title":"WeChat Pay","sidebarTitle":"WeChat Pay","icon":"comment-dollar","href":"/features/payment-methods/wechat"}]},{"title":"Third-Party Analytics","sidebarTitle":"Third-Party Analytics","icon":"chart-line","href":"/features/analytics"},{"sidebarTitle":"Adaptive Currency","title":"Adaptive Currency","icon":"money-bill-transfer","href":"/features/adaptive-currency"},{"group":"BYOP","icon":"shuffle","tag":"BETA","pages":[{"title":"Bring Your Own Processor (BYOP)","sidebarTitle":"Overview","tag":"BETA","icon":"boxes-stacked","href":"/features/byop"},{"title":"Stripe - Connect \u0026 Raw Card API Access","sidebarTitle":"Stripe","icon":"stripe","href":"/features/byop/stripe"},{"title":"Adyen - Connect \u0026 Raw Card API Access","sidebarTitle":"Adyen","icon":"https://mintlify.s3.us-west-1.amazonaws.com/dodopayments/images/logos/adyen.svg","href":"/features/byop/adyen"}]},{"title":"Storefront","icon":"store","href":"/features/storefront"},{"title":"Affiliates","icon":"users-line","href":"/features/affiliates"},{"title":"Moderation API","icon":"shield-check","tag":"NEW","href":"/features/moderation"},{"title":"Selling Digital Goods on iOS","icon":"mobile","href":"/features/appstore-digital-goods"},{"title":"Dashboard Analytics","sidebarTitle":"Dashboard Analytics","icon":"chart-line","href":"/features/analytics-and-reporting"},{"title":"Reports","sidebarTitle":"Reports","icon":"file-invoice","href":"/features/reports"}]},{"group":"Integrate","pages":[{"group":"SDKs","icon":"box-open","pages":[{"sidebarTitle":"Overview","title":"Official SDKs","icon":"box","href":"/developer-resources/dodo-payments-sdks"},{"title":"TypeScript","icon":"js","href":"/developer-resources/sdks/typescript"},{"title":"Python","icon":"python","href":"/developer-resources/sdks/python"},{"title":"Go","icon":"golang","href":"/developer-resources/sdks/go"},{"title":"Ruby","icon":"gem","href":"/developer-resources/sdks/ruby"},{"title":"Java","icon":"java","href":"/developer-resources/sdks/java"},{"title":"Kotlin","icon":"k","href":"/developer-resources/sdks/kotlin"},{"title":"PHP","icon":"php","href":"/developer-resources/sdks/php"},{"title":"C#","icon":"c","href":"/developer-resources/sdks/csharp"},{"title":"Rust","icon":"rust","href":"/developer-resources/sdks/rust"}]},{"group":"Mobile Checkout SDKs","icon":"mobile","pages":[{"title":"Mobile Integration Guide","sidebarTitle":"Integration Guide","icon":"mobile","href":"/developer-resources/mobile-integration"},{"title":"Android","sidebarTitle":"Android","icon":"android","href":"/developer-resources/sdks/android"},{"title":"iOS","sidebarTitle":"iOS","icon":"apple","href":"/developer-resources/sdks/ios"},{"title":"React Native","sidebarTitle":"React Native","icon":"react","href":"/developer-resources/sdks/react-native"},{"title":"Flutter","sidebarTitle":"Flutter","icon":"layer-group","href":"/developer-resources/sdks/flutter"}]},{"group":"Framework Adaptors","icon":"frame","pages":[{"sidebarTitle":"Overview","title":"Framework Adaptors Overview","icon":"box","href":"/developer-resources/framework-adaptors"},{"title":"Next.js Adaptor","icon":"code-merge","href":"/developer-resources/nextjs-adaptor"},{"title":"Better Auth Adaptor","icon":"code-merge","href":"/developer-resources/better-auth-adaptor"},{"title":"Convex Component","icon":"code-merge","href":"/developer-resources/convex-component"},{"title":"TanStack Adaptor","icon":"code-merge","href":"/developer-resources/tanstack-adaptor"},{"title":"Nuxt Adaptor","icon":"code-merge","href":"/developer-resources/nuxt-adaptor"},{"title":"Express Adaptor","icon":"code-merge","href":"/developer-resources/express-adaptor"},{"title":"Astro Adaptor","icon":"code-merge","href":"/developer-resources/astro-adaptor"},{"title":"SvelteKit Adaptor","icon":"code-merge","href":"/developer-resources/sveltekit-adaptor"},{"title":"Hono Adaptor","icon":"code-merge","href":"/developer-resources/hono-adaptor"},{"title":"Remix Adaptor","icon":"code-merge","href":"/developer-resources/remix-adaptor"},{"title":"Fastify Adaptor","icon":"code-merge","href":"/developer-resources/fastify-adaptor"},{"title":"Bun Adaptor","icon":"code-merge","href":"/developer-resources/bun-adaptor"}]},{"group":"Webhooks","icon":"webhook","pages":[{"sidebarTitle":"Overview","title":"Webhooks","icon":"webhook","href":"/developer-resources/webhooks"},{"title":"Webhook Events Guide","icon":"bell","href":"/developer-resources/webhooks/intents/webhook-events-guide"},{"group":"Webhook Payloads","icon":"code","pages":[{"title":"Payment","icon":"credit-card","href":"/developer-resources/webhooks/intents/payment"},{"sidebarTitle":"Subscription","title":"Subscription Webhooks","icon":"repeat","href":"/developer-resources/webhooks/intents/subscription"},{"title":"Refund","icon":"rotate-left","href":"/developer-resources/webhooks/intents/refund"},{"sidebarTitle":"Dispute","title":"Dispute Webhooks","icon":"circle-exclamation","href":"/developer-resources/webhooks/intents/dispute"},{"title":"License Key","icon":"key","href":"/developer-resources/webhooks/intents/license-key"},{"title":"Entitlement Grant","icon":"gift","href":"/developer-resources/webhooks/intents/entitlement-grant"},{"sidebarTitle":"Credit-Based Billing","title":"Credit-Based Billing Webhooks","icon":"coins","href":"/developer-resources/webhooks/intents/credit"},{"title":"Recovery","icon":"rotate","href":"/developer-resources/webhooks/intents/recovery"},{"sidebarTitle":"Payout","title":"Payout Webhooks","icon":"money-bill-transfer","href":"/developer-resources/webhooks/intents/payout"}]},{"group":"Deploy to Cloud","icon":"rocket","pages":[{"title":"Vercel Functions","icon":"triangle","href":"/developer-resources/webhooks/examples/vercel-example"},{"title":"Cloudflare Workers","icon":"cloud","href":"/developer-resources/webhooks/examples/cloudflare-example"},{"title":"Supabase Edge Functions","icon":"bolt","href":"/developer-resources/webhooks/examples/supabase-example"},{"title":"Netlify Functions","icon":"diamond","href":"/developer-resources/webhooks/examples/netlify-example"}]}]},{"group":"Workload Identity","icon":"id-badge","tag":"NEW","pages":[{"sidebarTitle":"Overview","title":"Workload Identity Federation","icon":"id-badge","tag":"NEW","href":"/developer-resources/workload-identity/overview"},{"sidebarTitle":"Dashboard Setup","title":"Set Up Workload Identity in the Dashboard","icon":"sliders","href":"/developer-resources/workload-identity/dashboard-setup"},{"sidebarTitle":"SDK Usage","title":"Use Workload Identity with the SDKs","icon":"code","href":"/developer-resources/workload-identity/sdk-usage"},{"sidebarTitle":"Terraform","title":"Use Workload Identity with the Terraform Provider","icon":"code-branch","href":"/developer-resources/workload-identity/terraform"},{"group":"Provider Guides","icon":"list-check","pages":[{"sidebarTitle":"GitHub Actions","title":"Workload Identity for GitHub Actions","icon":"github","href":"/developer-resources/workload-identity/providers/github-actions"},{"sidebarTitle":"GitLab","title":"Workload Identity for GitLab CI/CD","icon":"gitlab","href":"/developer-resources/workload-identity/providers/gitlab"},{"sidebarTitle":"Terraform Cloud","title":"Workload Identity for HCP Terraform","icon":"cloud","href":"/developer-resources/workload-identity/providers/terraform-cloud"},{"sidebarTitle":"Google Cloud","title":"Workload Identity for Google Cloud","icon":"google","href":"/developer-resources/workload-identity/providers/google-cloud"},{"sidebarTitle":"Vercel","title":"Workload Identity for Vercel","icon":"triangle","href":"/developer-resources/workload-identity/providers/vercel"},{"sidebarTitle":"Kubernetes and EKS","title":"Workload Identity for Kubernetes and Amazon EKS","icon":"dharmachakra","href":"/developer-resources/workload-identity/providers/kubernetes"},{"sidebarTitle":"AWS","title":"Workload Identity for AWS","icon":"aws","href":"/developer-resources/workload-identity/providers/aws"},{"sidebarTitle":"Custom OIDC","title":"Workload Identity for a Custom OIDC Issuer","icon":"key","href":"/developer-resources/workload-identity/providers/custom-oidc"}]}]},{"group":"Testing \u0026 Demo Tools","icon":"flask","pages":[{"title":"Test Mode vs Live Mode","icon":"toggle-on","href":"/miscellaneous/test-mode-vs-live-mode"},{"title":"Testing Process","icon":"flask","href":"/miscellaneous/testing-process"},{"title":"Atlas Demo Product","icon":"palette","href":"/features/atlas-demo-website"}]},{"group":"Boilerplates","icon":"box-open","pages":[{"sidebarTitle":"Expo","title":"Expo Boilerplate","icon":"https://mintlify.s3.us-west-1.amazonaws.com/dodopayments/images/logos/expo.svg","href":"/developer-resources/expo-boilerplate"},{"sidebarTitle":"Supabase","title":"Supabase Boilerplate","icon":"https://mintlify.s3.us-west-1.amazonaws.com/dodopayments/images/logos/supabase.svg","href":"/developer-resources/supabase-boilerplate"},{"sidebarTitle":"Figma Plugin","title":"Figma Plugin","icon":"https://mintlify.s3.us-west-1.amazonaws.com/dodopayments/images/logos/figma.svg","href":"/integrations/figma-plugin"},{"sidebarTitle":"Next.js","title":"Next.js Minimal Boilerplate","icon":"https://mintlify.s3.us-west-1.amazonaws.com/dodopayments/images/logos/nextjs.svg","href":"/developer-resources/nextjs-boilerplate"},{"sidebarTitle":"Astro","title":"Astro Minimal Boilerplate","icon":"https://mintlify.s3.us-west-1.amazonaws.com/dodopayments/images/logos/astro.svg","href":"/developer-resources/astro-boilerplate"},{"sidebarTitle":"FastAPI","title":"FastAPI Boilerplate","icon":"https://mintlify.s3.us-west-1.amazonaws.com/dodopayments/images/logos/fastapi.svg","href":"/developer-resources/fastapi-boilerplate"},{"sidebarTitle":"Go","title":"Go Boilerplate","icon":"golang","href":"/developer-resources/go-boilerplate"}]},{"title":"Dodo CLI","icon":"terminal","href":"/developer-resources/sdks/cli"},{"sidebarTitle":"Terraform Provider","title":"Pricing as Code with Terraform","icon":"code-branch","tag":"NEW","href":"/developer-resources/terraform-provider"},{"title":"Overlay Checkout","icon":"cart-shopping","href":"/developer-resources/overlay-checkout"},{"title":"Inline Checkout","icon":"credit-card","href":"/developer-resources/inline-checkout"},{"title":"Billing SDK","icon":"boxes-stacked","href":"/developer-resources/billingsdk"},{"title":"Dodo Payments MCP Server","icon":"server","href":"/developer-resources/mcp-server"},{"title":"Agent Skills","icon":"wand-magic-sparkles","href":"/developer-resources/agent-skills"},{"sidebarTitle":"Database Sync","title":"Sync with Your Database","icon":"database","href":"/developer-resources/dodo-sync"},{"sidebarTitle":"Subscription Migration","title":"Subscription Migration to Dodo Payments","icon":"file-import","href":"/miscellaneous/subscription-migration"},{"sidebarTitle":"Card Data Export","title":"Request a Card Data Export","icon":"file-export","href":"/miscellaneous/card-data-export"}]},{"group":"Merchant of Record","pages":[{"sidebarTitle":"What Is MoR?","title":"Introduction","icon":"building-columns","href":"/features/mor-introduction"},{"title":"MoR vs PG","icon":"scale-balanced","href":"/features/mor-vs-pg"},{"title":"Countries Eligible for Payment Acceptance","icon":"globe","href":"/miscellaneous/list-of-countries-we-accept-payments-from"},{"title":"Merchant Acceptance Policy","icon":"building-shield","href":"/miscellaneous/merchant-acceptance"},{"title":"Countries Eligible for Merchant Acceptance","icon":"globe","href":"/miscellaneous/accepted-countries-and-territories"},{"title":"Review \u0026 Monitoring Policy","icon":"magnifying-glass","href":"/miscellaneous/review-monitoring-policy"},{"sidebarTitle":"Bypass of App Store Fees","title":"Bypassing App Store \u0026 Play Store Fees Using Dodo Payments","icon":"shield-check","href":"/features/bypassing-app-store-fees"}]},{"group":"Miscellaneous","pages":[{"group":"Support Channels","icon":"headset","pages":[{"title":"Help and Support","icon":"headset","href":"/miscellaneous/help-support"},{"title":"Feature Request and Roadmap","icon":"lightbulb","href":"/features/feature-request"}]},{"title":"Mobile \u0026 Desktop Apps","icon":"mobile","href":"/features/mobile-app"},{"title":"FAQs","icon":"circle-question","href":"/miscellaneous/faq"},{"title":"Security Reporting Policy","icon":"shield","href":"/miscellaneous/security-policy"}]}]},{"tab":"Guides","icon":"compass","pages":[{"title":"Guides","href":"/developer-resources/integration-guide"}]},{"tab":"API Reference","icon":"rectangle-code","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]},{"tab":"External Integrations","icon":"plug","pages":[{"title":"External Integrations","href":"/integrations/introduction"}]},{"tab":"Changelog","icon":"calendar-days","pages":[{"title":"Changelog","href":"/changelog/introduction"}]},{"tab":"Community Projects","icon":"users","pages":[{"title":"Community Projects","href":"/community/overview"}]}]},{"language":"es","pages":[{"title":"es","href":"/es/features/usage-based-billing/meters"}]},{"language":"ar","pages":[{"title":"ar","href":"/ar/features/usage-based-billing/meters"}]},{"language":"fr","pages":[{"title":"fr","href":"/fr/features/usage-based-billing/meters"}]},{"language":"de","pages":[{"title":"de","href":"/de/features/usage-based-billing/meters"}]},{"language":"id","pages":[{"title":"id","href":"/id/features/usage-based-billing/meters"}]},{"language":"ja","pages":[{"title":"ja","href":"/ja/features/usage-based-billing/meters"}]},{"language":"ko","pages":[{"title":"ko","href":"/ko/features/usage-based-billing/meters"}]},{"language":"pt-BR","pages":[{"title":"pt-BR","href":"/pt-BR/features/usage-based-billing/meters"}]},{"language":"vi","pages":[{"title":"vi","href":"/vi/features/usage-based-billing/meters"}]},{"language":"cn","pages":[{"title":"cn","href":"/cn/features/usage-based-billing/meters"}]},{"language":"hi","pages":[{"title":"hi","href":"/hi/features/usage-based-billing/meters"}]},{"language":"it","pages":[{"title":"it","href":"/it/features/usage-based-billing/meters"}]},{"language":"sv","pages":[{"title":"sv","href":"/sv/features/usage-based-billing/meters"}]}]},"basePath":"","title":"Meters - Dodo Payments Documentation","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-BdiBGm0H.js","DynamicMarkdown-CbqEDjbV.js","zoom-image-lightbox-CvtNkYOX.js","lightbox-handle-r17bVUz3.js"]}