Why India Payment Methods Matter
UPI Dominance
UPI processes 10B+ transactions/month. Many Indian customers don’t have international cards.
Low Transaction Costs
UPI has near-zero transaction fees. Excellent for high-volume, lower-value transactions.
Subscription Support
Unlike most alternative payment methods, UPI and Rupay support recurring payments via RBI mandates.
Supported Methods
| Method | Type | Subscriptions | Min Amount |
|---|---|---|---|
| UPI Collect | QR code / VPA | Yes* | ₹1 |
| Rupay Credit | Card | Yes* | ₹1 |
| Rupay Debit | Card | Yes* | ₹1 |
Configuration
API Method Types
| Type | Description |
|---|---|
upi_collect | UPI via QR code or VPA entry |
credit | Credit cards including Rupay |
debit | Debit cards including Rupay |
Example: India-Focused Checkout
Requirements for UPI
For UPI to appear at checkout:- Billing country must be India (
IN) - Currency must be INR
- For non-Indian merchants: Adaptive Currency must be enabled
Subscriptions with RBI Mandates
Indian payment method subscriptions operate under RBI (Reserve Bank of India) regulations with unique requirements.How RBI Mandates Work
Mandate Types
| Subscription Amount | Mandate Type | Limit |
|---|---|---|
| Below Rs 15,000 | On-demand mandate | Rs 15,000 |
| Rs 15,000 or above | Fixed-amount mandate | Exact subscription amount |
The 48-Hour Processing Delay
This is the most important difference from international card payments:1
Charge Initiated (Day 0)
On the scheduled renewal date, Dodo initiates the charge with the bank.
2
Pre-Debit Notification
Customer receives notification from their bank about the upcoming debit.
3
48-Hour Window
Customer can cancel the mandate during this period via their banking app.
4
Debit Completed (~48-51 hours)
After 48 hours (plus up to 3 additional hours for bank processing), funds are debited.
5
Webhook Sent
payment.succeeded webhook is sent after actual debit, not at initiation.Handling the 48-Hour Window
Webhook Events for Indian Subscriptions
| Event | When | Action |
|---|---|---|
subscription.created | Mandate authorized | Record subscription start |
payment.succeeded | ~48h after charge date | Grant/continue access |
payment.failed | Debit failed | Notify customer, pause access |
subscription.on_hold | Payment failed | Prompt for payment method update |
subscription.active | Reactivated after payment | Restore access |
Testing
UPI Test IDs
| Status | UPI ID |
|---|---|
| Success | success@upi |
| Failure | failure@upi |
Indian Card Test Numbers
| Brand | Scenario | Card Number | Expiry | CVV |
|---|---|---|---|---|
| Visa | Success | 4576238912771450 | 06/32 | 123 |
| Visa | Declined | 4706131211212123 | 06/32 | 123 |
| Mastercard | Success | 5409162669381034 | 06/32 | 123 |
| Mastercard | Declined | 5105105105105100 | 06/32 | 123 |
Best Practices
Plan for the 48-hour delay
Plan for the 48-hour delay
Build your application to handle the gap between charge initiation and actual payment. Consider:
- Grace periods for subscription access
- Clear communication to customers about processing time
- Webhook-driven fulfillment, not date-driven
Handle mandate cancellations
Handle mandate cancellations
Customers can cancel mandates via their bank apps at any time. Monitor
subscription.on_hold webhooks and prompt customers to re-subscribe or update payment methods.Set appropriate mandate amounts
Set appropriate mandate amounts
For variable pricing (e.g., usage-based), consider whether a Rs 15,000 on-demand mandate is sufficient. If charges might exceed this, customers will need to re-authorize.
Offer UPI prominently
Offer UPI prominently
For Indian customers, UPI should be the primary payment option. Many users prefer it over cards due to familiarity and lower friction.
Troubleshooting
UPI not appearing at checkout
UPI not appearing at checkout
Check:
- Billing country set to
IN? - Currency set to
INR? - If non-Indian merchant: Adaptive Currency enabled?
upi_collectincluded inallowed_payment_method_types?
country: "IN" and billing_currency: "INR".Subscription charge failed after upgrade
Subscription charge failed after upgrade
Cause: New charge amount exceeds existing mandate limit (Rs 15,000 threshold).Solution: Customer must update payment method to establish a new mandate with the correct limit.
Subscription on hold but customer claims they didn't cancel
Subscription on hold but customer claims they didn't cancel
Cause: Customer may have cancelled the mandate during the 48-hour window, or their bank declined the debit.Solution: Customer needs to re-authorize the mandate or update their payment method.
Payment deduction delayed beyond 48 hours
Payment deduction delayed beyond 48 hours
Cause: Bank API delays can extend processing by 2-3 additional hours.Solution: This is expected. Build your system to handle variable delays up to ~51 hours total.
Mandate cancelled but subscription still active
Mandate cancelled but subscription still active
Cause: Edge case in RBI regulations — mandate cancellation during processing window doesn’t immediately cancel subscription.Solution: The next charge will fail and subscription will move to
on_hold. Monitor webhooks for payment.failed.