Credit-Based Billing lets you grant customers a balance of credits - API calls, tokens, compute units, or any custom metric - and deduct from that balance as they consume your service. Credits work across all product types: subscriptions, one-time purchases, and usage-based billing.
Usage-Based Billing
Combine credits with meters to deduct from balances based on real-time consumption.
Subscriptions
Issue credits per billing cycle with rollover, overage, and expiration controls.
Customer Portal
Customers can view balances, transaction history, and credit usage in the portal.
What is Credit-Based Billing?
Credit-Based Billing gives you a flexible system to issue credit entitlements to customers as part of your products. Instead of charging per-use or limiting access through feature flags, you allocate a pool of credits that customers draw from as they use your service. Credits are ideal for:- AI and LLM platforms: Grant tokens or generation credits per plan tier
- API services: Allocate API call credits with overage pricing
- Infrastructure platforms: Issue compute hours or storage credits
- Communication services: Provide message or minute credits per subscription
- SaaS with consumption tiers: Bundle included usage into credit pools

Core Concepts
Credit Types
When creating a credit, you choose between two types:- Custom Unit
- Fiat Credits
Define credits in your own unit - tokens, API calls, compute hours, or any metric meaningful to your product. Custom units use the precision you set (0 to 3 decimal places).Best for: API calls, AI tokens, compute hours, storage units, messages
Credit Lifecycle
Credits follow a clear lifecycle from issuance through consumption:Credits Issued
Credits are granted when a customer purchases a product (subscription or one-time) with attached credit entitlements. For subscriptions, credits are re-issued each billing cycle.
Credits Consumed
As customers use your service, credits are deducted. For usage-based products, meters automatically deduct credits based on real-time events. You can also deduct credits manually via the dashboard or API.
Credits Expire or Roll Over
At the end of the billing cycle (or after the configured expiry period), unused credits either expire or roll over to the next period based on your settings.
Grant Sources
Credits can be granted from multiple sources:| Source | Description |
|---|---|
| Subscription | Credits issued with subscription purchase, re-issued each billing cycle |
| One-Time | Credits issued with a one-time payment product |
| API | Credits granted manually via API or dashboard |
| Rollover | Credits carried over from a previous billing cycle |
Creating Credits
Create credit entitlements in the Products → Credits section of your dashboard. Each credit defines the unit, precision, expiry rules, and lifecycle behavior.
Navigate to Credits
Go to Products in your dashboard and select the Credits tab. Click Create Credit to start.
Set General Settings
Configure the credit type and display properties:
Choose Custom Unit or Fiat Credits.
- Custom Unit - Define your own metric (tokens, API calls, compute hours). Requires a Unit Name (e.g., “Platform tokens”) and a Precision setting.
- Fiat Credits - Credits represent real currency value. Requires a Unit Currency selection (USD, EUR, GBP, INR, etc.).
Only for Custom Unit credits. The label customers see for this credit (e.g., “AI Tokens”, “API Calls”). Shown in checkout and the customer portal.
Only for Custom Unit credits. Number of decimal places allowed:
0- Whole numbers (best for countable items like API calls)1- One decimal (0.0)2- Two decimals (0.00) - default3- Three decimals (0.000)
How long credits remain valid after issuance:
- 7 days, 30 days (default), 60 days, 90 days, Custom, or Never
Configure Subscription Settings (Optional)
These settings control credit behavior within recurring subscriptions:When Credits Run Out or Subscription Expires:
Allow unused credits to carry forward to the next billing cycle. When enabled, configure:
- Max Rollover Percentage (0–100%) - Limit how much carries over
- Rollover Timeframe - How long rolled-over credits remain valid (e.g., 1 Month)
- Max Rollover Count - Maximum consecutive rollovers before credits are forfeited
Let customers continue using your service after their credit balance reaches zero. When enabled, configure:
- Overage Limit - Maximum credits customers can consume beyond their balance
- Price Per Unit - Cost per additional credit when overage is enabled (with currency selector)
Controls how overage is handled at the end of the billing cycle:
- Forgive overage at reset (default) - Usage beyond the credit limit is tracked but not billed. Balance resets each cycle.
- Bill overage at billing - Usage beyond the credit limit is charged on the next invoice, then the balance resets.
- Carry over deficit - Usage beyond the credit limit carries forward as a negative balance into the next cycle.
- Carry over deficit (auto-repay) - Deficit carries forward and is automatically repaid from new credits in the next cycle.
Attaching Credits to Products
Credits are attached to products as entitlements in the product creation or editing flow. You can attach up to 3 credits per product. Credits work with all three pricing types.Subscription Products
For subscriptions, credits are issued per billing cycle and can be configured with proration, trial credits, and cycle-specific settings.Create or Edit a Subscription Product
Go to Products → Create Product or edit an existing product. Select Subscription as the pricing type and configure your recurring price.
Open Entitlements Section
Expand the Entitlements section and click the Attach button next to Credits.

Select Credits to Attach
An Add Credits panel opens. You can select an existing credit from the dropdown or click Create new credit to define one on the spot.

You can attach up to 3 credits per product. Each credit can have its own configuration.
Configure Credit Settings
For each attached credit, configure:
The number of credits granted to the customer each billing period.
Notify when credits fall below this amount. Useful for alerting customers before they run out.
Set a different credit amount for trial periods. Enable Expire trial credits after trial ends to revoke unused trial credits when the trial converts to a paid subscription.
Prorate remaining credits when a customer upgrades or downgrades their subscription plan.
Use the default rollover, overage, and expiry settings from the credit entitlement. Turn this off to customize settings specifically for this product.

One-Time Payment Products
For one-time payments, credits are issued once at the time of purchase.Usage-Based Billing Products
For usage-based products, credits are linked to meters and automatically deducted based on real-time consumption events.Create a Usage-Based Product
Select Usage Based Billing as the pricing type. Configure the base price and billing frequency.

Add a Meter
Click the + button in the Select meter section to add a meter. A subscription can have up to 3 meters.

Enable Credit Billing on the Meter
Toggle Bill usage in Credits to attach a credit to the meter. Select the credit entitlement from the dropdown.
The number of units that are free before credit deduction begins.
When enabled, meter usage deducts from the customer’s credit balance instead of charging per-unit.
The number of usage units required to deduct 1 credit. For example, if set to
1000, then 1,000 API calls consume 1 credit.
Configure Credit Issuance
Set the number of credits issued and optionally customize the credit settings for this product.

When credits are linked to meters, the system automatically deducts credits based on ingested usage events. A background worker processes events every minute, aggregates them according to the meter’s configuration, and applies FIFO (first-in, first-out) deduction from the customer’s oldest non-expired grants.
Credit Settings
Rollover
Rollover lets unused credits carry forward to the next billing cycle instead of expiring.| Setting | Description |
|---|---|
| Rollover Enabled | Toggle to allow unused credits to carry forward |
| Max Rollover Percentage | Limit how much carries over (0–100%). At 50%, only half of unused credits roll over |
| Rollover Timeframe | How long rolled-over credits remain valid (day, week, month, year) |
| Max Rollover Count | Maximum number of times credits can be consecutively rolled over. After this limit, remaining credits are forfeited |
Overage
Overage controls what happens when a customer’s credit balance reaches zero mid-cycle.| Setting | Description |
|---|---|
| Allow Overage | Toggle to let customers continue using the service beyond their credit balance |
| Overage Limit | Maximum credits customers can consume beyond their balance |
| Price Per Unit | Cost per additional credit consumed as overage (with currency) |
| Overage Behavior | Controls what happens to overage at the end of the billing cycle (see below) |
| Behavior | Description |
|---|---|
| Forgive overage at reset | Usage beyond the credit limit is tracked but not billed. Balance resets each cycle |
| Bill overage at billing | Usage beyond the credit limit is charged on the next invoice, then the balance resets |
| Carry over deficit | Overage carries forward as a negative balance into the next cycle |
| Carry over deficit (auto-repay) | Deficit carries forward and is automatically repaid from new credits in the next cycle |
When overage is disabled, customers cannot use the service once their credit balance reaches zero. Choose an overage behavior that matches your billing model - Forgive at reset is the default and simplest option.
Expiration
| Setting | Description |
|---|---|
| Credit Expiry | Duration after issuance before credits expire (7, 30, 60, 90, custom days, or never) |
| Trial Credits Expire After Trial | Whether trial-specific credits expire when the trial period ends |
Expired credits create a
CreditExpired ledger entry. If rollover is enabled, the rollover percentage is applied before expiration, and only the remainder expires.Usage Billing with Credits
When credits are linked to usage meters, the system creates a powerful consumption-based billing model. Customers receive a credit allocation, and usage events automatically deduct from their balance.
How Meter-Based Credit Deduction Works
- Your application sends usage events - Each event includes a customer ID, event name, and metadata
- Meters aggregate events - Using Count, Sum, Max, Last, or Unique Count aggregation
- Credits are deducted automatically - A background worker processes events every minute, converts meter units to credits using your configured rate, and deducts from the customer’s balance using FIFO ordering (oldest grants first)
- Overage is tracked - If the credit balance reaches zero and overage is enabled, the system tracks overage usage for end-of-cycle billing
Meters Panel
The Usage Billing dashboard includes a Meters panel listing all defined meters with their aggregation type:| Aggregation | Description | Example |
|---|---|---|
| Count | Total number of events | API calls |
| Sum | Sum of a value field | Total bytes transferred |
| Max | Highest value recorded | Peak concurrent users |
| Last | Most recent value | Current storage used |
| Unique Count | Count of distinct values | Unique active users |
Customer Experience
Checkout
When a customer purchases a product with attached credits, the checkout page displays the included credits as part of the product offering.
Customer Portal
Customers can view and manage their credit balances in the Customer Portal under the Credits section.
- Available Balance - Current credit balance displayed prominently
- Credit Tabs - Switch between different credit types (e.g., “OpenAI Credits”, “Usage Tokens”)
- Recent Transactions - Full history with date, transaction ID, type, amount, and running balance
| Type | Description | Amount |
|---|---|---|
| Credits with Subscription | Credits issued with subscription purchase/renewal | Green (+) |
| One-Time Credits | Credits from one-time purchases or manual grants | Green (+) |
| Usage Deduction | Credits consumed through service usage | Red (-) |
| Overage | Usage beyond credit balance | Red (-) |
Subscription Details
The subscription detail page shows credit entitlements alongside other plan information.
- Credit allocation per billing cycle (e.g., “1000 credits each cycle”)
- Remaining balance (e.g., “7500 credits remaining”)
- Renewal date for next credit issuance
- Usage History tab with meter-level breakdown showing units consumed, thresholds, unit prices, and total costs
Transaction Details
Payment transaction pages include an Entitlements section showing all entitlements delivered with the payment, including credits.
Managing Credits
Dashboard Views
Credit Entitlements List
View all your credit entitlements in Products → Credits. The table shows credit name, expiry settings, and provides quick actions for editing or archiving.
Customer Credit Details
View a specific customer’s credit balances and transaction history from Customers → [Customer Name] → Credits.
- Credit Selector - Switch between different credit entitlements
- Available Balance - Current balance in large, prominent display
- Apply Credit/Debit - Button to manually adjust the customer’s balance
- Recent Transactions - Full ledger with date, transaction ID, type, amount, and running balance
Manual Adjustments
You can manually credit or debit a customer’s balance directly from the dashboard:Open Credits Tab
Click the Credits tab and select the appropriate credit entitlement from the wallet selector.
Apply Credit or Debit
Click Apply Credit/Debit to open the adjustment interface.
Select Credit to add credits or Debit to remove credits from the customer’s balance.
The number of credits to add or remove.
Optional explanation for the adjustment (e.g., “Service compensation”, “Promotional bonus”).
Credit Ledger
Every credit operation is recorded in the credit ledger, providing a complete audit trail:| Transaction Type | Description |
|---|---|
| Credit Added | Credits granted (subscription, one-time, or API) |
| Credit Deducted | Credits consumed through usage or manual debit |
| Credit Expired | Credits expired without rollover |
| Credit Rolled Over | Credits carried forward to the next period |
| Rollover Forfeited | Rolled credits forfeited after max rollover count reached |
| Overage Charged | Usage beyond credit balance with overage enabled |
| Auto Top-Up | Automatic credit replenishment at low balance |
| Manual Adjustment | Credit or debit applied manually by merchant |
| Refund | Credits refunded |
Webhooks
Credit-Based Billing fires webhook events for every credit lifecycle change. Use these to keep your application in sync with credit balances, trigger notifications, or build custom billing workflows.| Event | Description |
|---|---|
credit.added | Credits granted to a customer |
credit.deducted | Credits consumed through usage or manual debit |
credit.expired | Unused credits expired |
credit.rolled_over | Credits carried forward to a new grant |
credit.rollover_forfeited | Credits forfeited at max rollover count |
credit.overage_charged | Overage charges applied |
credit.manual_adjustment | Manual credit/debit adjustment made |
credit.balance_low | Balance dropped below configured threshold |
credit.added through credit.manual_adjustment) include the full CreditLedgerEntry payload with balance before/after, overage before/after, and source reference. The credit.balance_low event includes the threshold configuration and current balance.
Credit Webhook Payloads
View full payload schemas, field descriptions, and integration examples for all credit webhook events.
API Management
Create Credit Entitlements
Create Credit Entitlements
Use the API to create credit entitlements programmatically with full control over rollover, overage, and expiration settings.
Manage Credit Entitlements
Manage Credit Entitlements
Retrieve, update, or delete credit entitlements. Deleted entitlements can be restored.
Grant and Adjust Credits
Grant and Adjust Credits
Grant credits directly to a customer’s balance without requiring a purchase, or create manual debit entries for billing adjustments.
Create Ledger Entry
Credit or debit a customer’s balance with full audit trail and idempotency support.
Query Balances and Ledger
Query Balances and Ledger
Retrieve a customer’s current credit balance, grant history, and full ledger of transactions for any credit entitlement.
Integration Example
Initialize the Dodo Payments client:Real-World Examples
AI SaaS Platform
AI SaaS Platform
Pricing Structure:
Configuration:
| Plan | Price | Credits/Month | Overage |
|---|---|---|---|
| Starter | $29/mo | 10,000 tokens | $0.003/token |
| Pro | $99/mo | 100,000 tokens | $0.002/token |
| Enterprise | $499/mo | 1,000,000 tokens | $0.001/token |
- Credit Type: Custom Unit (“AI Tokens”)
- Precision: 0 (whole tokens)
- Rollover: 25% max, 1-month timeframe
- Overage: Enabled, bill overage at billing
- Meter:
ai.generationwith Sum aggregation ontokensfield
API Gateway
API Gateway
Pricing Structure:
Configuration:
| Plan | Price | Credits/Month | Overage |
|---|---|---|---|
| Free | $0/mo | 1,000 calls | Blocked |
| Developer | $19/mo | 50,000 calls | $0.001/call |
| Business | $99/mo | 500,000 calls | $0.0005/call |
- Credit Type: Custom Unit (“API Calls”)
- Precision: 0 (whole calls)
- Rollover: Disabled
- Overage: Developer+ plans allow overage (forgive at reset), Free plan disables overage
- Meter:
api.requestwith Count aggregation
Cloud Storage Service
Cloud Storage Service
Pricing Structure:
Configuration:
| Plan | Price | Credits/Month | Overage |
|---|---|---|---|
| Personal | $9/mo | 100 GB-hours | $0.05/GB-hour |
| Team | $49/mo | 1,000 GB-hours | $0.03/GB-hour |
- Credit Type: Custom Unit (“GB-hours”)
- Precision: 2 (two decimal places)
- Rollover: 50% max, carries over once
- Overage: Enabled with 200% limit
- Meter:
storage.usagewith Sum aggregation
Best Practices
- Start simple: Begin with a single credit type and no rollover. Add complexity based on customer feedback and usage patterns.
- Set clear expectations: Display credit allocations, remaining balances, and overage pricing prominently in your product pages and customer portal.
- Use meaningful units: Name credits after what they represent (e.g., “API Calls”, “AI Tokens”) rather than generic terms. This helps customers understand value.
- Configure expiry thoughtfully: Short expiry windows (7 days) drive urgency but may frustrate customers. Longer windows (30–90 days) are more customer-friendly for most SaaS products.
- Monitor low balances: Set low balance thresholds to alert customers before they run out, reducing surprise overage charges.
- Test in test mode: Create credits, attach them to test products, and simulate the full purchase → usage → deduction → expiration cycle before going live.
Credit-Based Billing works seamlessly with all other Dodo Payments features - subscriptions with trials, plan changes with proration, and the customer portal. Start with a basic setup and expand as your pricing model evolves.



