Skip to main content
VideoShop

Billing

Configure plan purchase and wallet top-up flows through Dodo Payments.

Billing has one source of truth for money display, plan pricing, wallet balance, invoices, and payment provider state. Currency and prices should come from the centralized pricing layer, not hardcoded UI text.

Active provider

Dodo Payments is the active launch provider. Razorpay can remain configured for later activation after business verification. Stripe and Twilio are not launch blockers for the current plan.

Plan purchase flow

  1. Open Dashboard > Billing or Dashboard > Plans.
  2. Select a plan.
  3. Start Dodo hosted checkout.
  4. Complete test payment.
  5. Return to the app.
  6. Confirm plan state, invoice history, and provider logs.

Wallet top-up flow

  1. Open Dashboard > Billing.
  2. Choose a wallet top-up amount.
  3. Complete Dodo hosted checkout.
  4. Confirm wallet balance is credited only after verified webhook processing.
  5. Confirm the transaction appears in invoice or transaction history.

Expected records

RecordExpected source
Plan priceCentral pricing catalog
Display currencyCentral money formatter
Checkout sessionDodo provider adapter
Wallet creditVerified Dodo webhook
Invoice historyBilling invoice service

Troubleshooting

  • If checkout succeeds but wallet does not update, check Dodo webhook logs and pending top-up state.
  • If the UI shows the wrong currency, check the centralized pricing catalog and formatter.
  • If invoice history is empty after payment, check webhook processing and invoice service logs.
  • If a free trial behaves like a paid plan, check trial limits, feature gates, and plan resolver output.