Skip to main content

New Features

1. Credit-Based Billing

Dodo Payments now supports Credit-Based Billing, a flexible system to issue, manage, and track credit entitlements across subscriptions, one-time products, and usage-based billing. Instead of charging per-use or limiting access through feature flags, you allocate a pool of credits that customers draw from as they consume your service.
Checkout showing included credits with the product purchase
What You Can Do
CapabilityDescription
Custom Units or Fiat CreditsDefine credits in your own unit (API calls, tokens, compute hours) or as actual currency value (USD, EUR)
Subscription CreditsIssue credits per billing cycle with automatic re-issuance on renewal
One-Time CreditsGrant a fixed credit balance on purchase, ideal for top-up packs or promotional bundles
Usage-Based DeductionLink credits to meters for automatic deduction based on real-time consumption events
RolloverAllow unused credits to carry forward with configurable max percentage, timeframe, and rollover count
Overage ControlsLet customers continue using your service beyond their balance, with options to forgive, bill, or carry over the deficit
ExpirationSet credit validity from 7 days to never, with custom day counts
Credit Lifecycle
  1. Credits Issued - Granted when a customer purchases a product with attached credit entitlements. For subscriptions, credits are re-issued each billing cycle.
  2. Credits Consumed - Deducted as customers use your service. Meters automatically deduct credits based on real-time events, or you can deduct manually via the dashboard or API.
  3. 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 based on your settings.
  4. Overage Handling - If credits run out mid-cycle, you can allow continued usage and choose how overage is handled at the end of the cycle.
Attaching Credits to Products Credits are attached as entitlements in the product creation flow. You can attach up to 3 credits per product, and credits work with all three pricing types: subscriptions, one-time payments, and usage-based billing.
// Create a checkout session for a product with attached credits
const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_ai_pro_plan',
      quantity: 1,
    }
  ],
  customer: { email: 'customer@example.com' },
  return_url: 'https://yourapp.com/success'
});
Usage-Based Deduction When credits are linked to meters, the system automatically deducts credits based on ingested usage events. Configure the meter units per credit rate to control the conversion (e.g., 1,000 API calls = 1 credit).
// Send usage events that deduct credits automatically
await fetch('https://api.dodopayments.com/events/ingest', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.DODO_API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    events: [{
      event_id: `gen_${Date.now()}`,
      customer_id: 'cus_abc123',
      event_name: 'ai.generation',
      timestamp: new Date().toISOString(),
      metadata: { model: 'gpt-4', tokens: 1500 }
    }]
  })
});
Customer Experience Customers can view and manage their credit balances in the Customer Portal under the Credits section, with available balance, transaction history, and usage breakdowns. Credits also appear in checkout, subscription details, and payment transaction pages.
Customer Portal credits view with balance and transaction history
Webhooks Credit-Based Billing fires webhook events for every credit lifecycle change:
EventDescription
credit.addedCredits granted to a customer
credit.deductedCredits consumed through usage or manual debit
credit.expiredUnused credits expired
credit.rolled_overCredits carried forward to a new grant
credit.rollover_forfeitedCredits forfeited at max rollover count
credit.overage_chargedOverage charges applied
credit.manual_adjustmentManual credit/debit adjustment made
credit.balance_lowBalance dropped below configured threshold
Start with simple settings, no rollover, no overage, and add complexity as you learn how customers use credits. Most settings can be updated at any time without affecting existing grants.
Learn more: Credit-Based Billing | Credit Webhook Payloads | Credit Entitlements API

2. Design & Theme Customization

Introducing the new Design page, a unified hub for customizing the look and feel of your checkout, storefront, and customer portal from a single place. Choose pre-built themes, configure typography and colors, and apply per-section overrides, all with a live preview before you save.
Design settings page with live preview of checkout, customer portal, and storefront
Key Highlights
FeatureDescription
Unified Design HubConfigure checkout, storefront, and customer portal appearance from a single page
Pre-Built ThemesStart with a curated theme (Dodo Pulses, Terminal, Bumblebee, or Bubblegum) and customize from there
Light & Dark ModeDefine separate color palettes for each mode
Live PreviewSee how your changes look across checkout, customer portal, and storefront before saving
Per-Section OverridesFine-tune individual sections without affecting the others
Programmatic ControlOverride themes at checkout time via the API or Checkout SDK
Getting Started Navigate to Design in the main sidebar of your Merchant Dashboard. The page has four tabs:
TabPurpose
GeneralBusiness name, logo, theme selection, and global advanced settings
CheckoutOverride theme settings specifically for the checkout page
StorefrontOverride theme settings and configure storefront layout
Customer PortalOverride theme settings for the customer portal
Advanced Settings Expand the Advanced Settings on the General tab for granular control over typography (primary/secondary Google Fonts, font size, font weight), color configuration (separate palettes for light and dark mode covering backgrounds, text, buttons, and borders), and border radius for controlling the roundness of UI elements.
Advanced settings expanded showing full color configuration for light and dark modes
Pre-Built Themes Four curated themes ship out of the box:
  • Dodo Pulses - The default theme with lime green accents and clean sans-serif typography
  • Terminal - Developer-oriented with monospaced typography and royal blue accents
  • Bumblebee - Warm amber and gold accents with bold, premium styling
  • Bubblegum - Playful pink and magenta accents with fully rounded corners
After selecting a pre-built theme, you can further customize individual properties in the Advanced Settings. Any unspecified properties fall back to the theme defaults.
Learn more: Design & Theme Customization | Checkout Features | Storefront

3. Refund Status and Dispute Status in List Payments API

The GET /payments list endpoint now includes refund_status and dispute_status fields in each payment item, so you can see refund and dispute state at a glance without fetching individual payment details.
FieldTypeDescription
refund_statuspartial | full | nullSummary of the refund status for this payment. null if no succeeded refunds exist
dispute_statusstring | nullThe most recent dispute status for this payment. null if no disputes exist
dispute_status values: dispute_opened, dispute_expired, dispute_accepted, dispute_cancelled, dispute_challenged, dispute_won, dispute_lost You can also filter payments by dispute status using the dispute_status query parameter:
# List all payments with open disputes
curl -X GET 'https://api.dodopayments.com/payments?dispute_status=dispute_opened' \
  -H 'Authorization: Bearer YOUR_API_KEY'
Use these fields to build dispute and refund dashboards, trigger alerts on dispute status changes, or filter your payment list to surface payments that need attention.
Learn more: List Payments API

4. Refunds Table in Customer Portal

The Customer Portal now includes a dedicated Refunds section where customers can view all refunds associated with their payments. Each refund entry shows the refund amount, status, date, and the original payment it was issued against, giving customers full transparency into their refund history without needing to contact support.
The refunds table is available automatically in the customer portal for all businesses. No configuration is needed.
Learn more: Customer Portal

5. Copy to Live Mode for Meters

You can now copy meters from test mode to live mode directly from the dashboard. When you’ve finished testing a meter configuration in test mode, use the copy action to replicate it to live mode with all settings preserved: aggregation type, event name, filters, and credit associations. This eliminates the need to manually recreate meters when moving from development to production.
Build and validate your meter configurations in test mode first, then copy them to live mode when you’re ready to go to production. This ensures your billing setup is tested before it handles real customer usage.
Learn more: Usage-Based Billing | Meters