UPI via dLocal
This feature is a Private Beta Release. Contact Chargebee Support to enable UPI via dLocal for your live and test sites.
Overview
dLocal supports UPI (Unified Payments Interface) for India, allowing businesses to collect recurring payments via pre-approved UPI mandates. UPI is a pull-based payment method in which the customer authorizes a mandate once, and subsequent debits are pulled automatically without further user action.
This feature is ideal for subscription billing use cases, where reducing payment friction and improving collection success are critical.
This payment method is ideal for:
- Businesses targeting customers in India who prefer to pay via local methods like UPI, without needing international cards or wallets.
- Global merchants expanding into India or combining UPI with other local payment methods (LATAM, SE Asia, etc.) via dLocal.
Supported Region
The following are the region categories supported for this integration:
| Category | Details |
|---|---|
| Your Region | Merchants onboarded in India and enabled for INR collections. |
| Payment Collection Region (Your customer’s region) | Payers must have India-issued bank accounts with UPI enabled. Currency supported: INR |
Processing Characteristics
| Characteristic | Details |
|---|---|
| Payment Type | Mandate-based recurring UPI (Autopay mandate) |
| Mandate Approval | Customer authorizes via UPI app or by entering UPI ID |
| Mandate Rules | Mandate amount ≤ ₹1,00,000 Frequency: daily Expiry: after 29 years from mandate creation |
| Refunds | Full, partial, and multiple partial refunds are supported |
Prerequisites
Ensure the following before configuring UPI payments via dLocal:
- A live dLocal merchant account with UPI enabled.
- dLocal must be added and configured as a payment gateway in Chargebee.
- UPI must be enabled by dLocal for your account. Contact the dLocal support team to activate it for your account.
Required Fields for UPI via dLocal
To collect payments successfully, the following fields must be passed during checkout:
- First Name, Last Name
- Phone Number
- Billing Address
- PAN / Document Number (auto-filled based on currency)
If you're using Chargebee Checkout, go to:
- Settings > Configure Chargebee > Checkout & Self-Serve Portal > Fields
- Make the following fields mandatory:
- Under Account Information: First Name, Last Name, Email, Phone Number

- Under Billing Address: All address fields

- Ensure PAN / Document Number is set up correctly (auto-handled for INR).
If using a custom checkout using JavaScript, you must explicitly collect and send these fields to Chargebee.
Integration Options
| Integration Method | Supported/Not Supported |
|---|---|
| Chargebee Checkout | In-app layout of Checkout - Supported Full Page Checkout - Supported |
| Custom Checkout | Chargebee.js - Supported Payment Components - Supported dLocal.js - Not supported |
Configuring UPI Payments in Chargebee
Enable UPI via dLocal in your Chargebee site:
- Log in to the Chargebee Billing site.
- Go to Settings > Configure Chargebee > Payment Gateways > dLocal.
- On the Configure dLocal page, enable Unified Payments Interface (UPI) from the list of payment methods.

- Click Apply to save changes.

Configure Smart Routing
Follow these steps to configure Smart Routing rules to ensure INR recurring payments for the UPI route to dLocal:
- Go to Settings > Configure Chargebee > Payment Gateways.
- Select Smart Routing.
- Select dLocal as the payment gateway for the INR currency under the For UPI section.
Checkout Flow
- Customer initiates checkout and selects UPI as the payment method.
- Customer enters all mandatory details (e.g., PAN, billing info) and clicks Next.

- The customer then reviews the entered information and clicks Pay & Subscribe.

- After clicking Pay, the customer is redirected to a processor page or their UPI app.
- The customer completes the mandate approval:
- Enters UPI ID
- Approves request via app or link

- On successful mandate approval:
- Payment is triggered automatically
- Subscription moves to In-Progress state
- Chargebee updates the status as Successful or Failed based on dLocal’s gateway confirmation.
Was this article helpful?