Payment gateway for India, settled in USDT
Accept INR payments from buyers in India through UPI, UPI Intent and IMPS, pay out to UPI IDs and Indian bank accounts, and receive USDT on your balance for every completed order.
For merchants whose buyers pay in rupees
Your customers are in India and pay in INR, and you would rather hold USDT. ATLAS collects each payment in India through the apps and bank accounts your buyers already use and credits your balance in USDT, so you don't need a bank account in the country.
The same integration pays money back out: a pay-out to a customer's UPI ID or bank account, funded from your USDT balance. The merchants page covers the rest of what ATLAS does for merchants.
Pay-ins: UPI, UPI Intent and IMPS
India has three pay-in methods on two rails. UPI and UPI Intent share the UPI rail and pay the same kind of destination, a UPI ID. IMPS is a bank transfer on a rail of its own. You choose the method on every order with paymentMethod (upi, upi_intent or imps). In India the field is required, and amounts are whole rupees.
UPI
UPI is India's system for bank-to-bank payments from a phone, run by NPCI. The buyer scans a QR code with any UPI app, or copies the UPI ID and the amount into the app by hand. The create response carries both: qrImageBase64 for the QR and upiVpa for the text fallback.
UPI Intent
The same rail, handed to the buyer as a tap. Every UPI order returns upiIntentLink, which opens the buyer's UPI app with the payee and the amount filled in. Send includeUpiAppLinks: true to also get PhonePe and Paytm links that open each app's own send-money screen with the amount locked.
IMPS
A bank transfer to an account number and IFSC, the 11-character code of the bank branch. The buyer types the amount into their bank app, so ATLAS never changes the amount of an IMPS order.
The UPI and IMPS method pages go deeper into each rail, and pay-ins shows how the flow works in every market.
- UPI A QR code or the UPI ID, paid from any UPI app
- UPI Intent One tap opens the UPI app with the payee and the amount filled in
- IMPS Account number and IFSC; the buyer types the amount
Pay-outs to UPI IDs and Indian bank accounts
Pay-outs in India also run on two rails. IMPS to an account number and IFSC is the default, and paymentMethod: "upi" pays a recipient's UPI ID instead. A field from the wrong rail gets 400 VALIDATION_ERROR, so a mixed-up recipient is caught before any money moves. The recipient fields for each rail are on the IMPS and UPI pages.
On the UPI rail, ATLAS sends the pay-out from a local account in its network. Both rails end with the same pay_out.completed webhook, and each pay-out is funded in USDT from your pay-out balance. Statuses and failures are covered on the pay-outs page.
Priced in INR, credited in USDT
Every India order is priced in rupees and credited in USDT. The create response shows the order's USDT value, fixed when it is created, so you know what an order is worth before the buyer pays.
Your USDT reaches your TRC-20 wallet through auto-settle, or on request in the dashboard or through the API.
Three ways to connect in India
India is one of the two markets where the ATLAS pay page is available, so you decide how much front end you build.
- Payment link: add a
checkoutobject toPOST /api/merchant/pay-inand send the buyer tocheckout.url. You build no payment screen. - Embedded checkout: the same page inside your own checkout, from
checkout.embedUrlandAtlas.mount. - H2H API: you draw the payment screen from the response, collect the buyer's UTR after the transfer and relay it with
POST /api/merchant/pay-in/{payInId}/utr. An India pay-in is confirmed against a UTR, relayed by you or recorded by ATLAS when it confirms the payment.
The pay page covers orders served by the ATLAS network. A checkout request for an order your routing sends to a partner route is refused with CHECKOUT_NOT_SUPPORTED, no pay-in is created, and you retry without checkout. Request and response samples for each method are on the UPI and IMPS pages.
What a buyer in India sees
The pay page opens in English or Hindi, and the buyer can switch languages with one tap. Pass locale: "hi" to open it in Hindi.
For a UPI order the first choice is the app: PhonePe, Paytm or Other UPI. PhonePe and Paytm open with the payee and the amount filled in. Other UPI unfolds the QR and the UPI ID with copy buttons, and the QR can be saved to the phone's gallery. An IMPS order shows the account number, IFSC, bank and account holder, each with its own copy button.
A countdown shows how long the details stay valid. After paying, the buyer can tap "I have paid" and add the 12-digit UTR, with a hint on where to find it. The UTR is optional. The page keeps checking on its own, switches to success once the payment is confirmed and sends the buyer back to your returnUrl. If the buyer closes the tab early, the order still completes.
How to start taking payments in India
-
Tell us your volume and how you want to connect.
We enable your methods, and the payment-methods endpoint lists the ones on your account.
-
Build against the sandbox, which runs the same contracts as production, with the India view of the API docs.
-
Try the page before you write code.
In the sandbox portal, Pay-Ins → Test Pay Page creates a pay-in, with a QR to open the page on your phone.
-
Go live.
Switch the keys and the address to production. Limits and terms are agreed with you in advance.
FAQ
Which payment methods can buyers in India use?
UPI, UPI Intent and IMPS, in INR.
What is the difference between UPI and UPI Intent?
They pay the same UPI ID over the same rail, with the same confirmation and webhooks. UPI shows the buyer a QR code and the UPI ID; UPI Intent gives them a link that opens their UPI app with everything filled in.
Does the buyer have to enter a UTR?
Not on the pay page, where it is optional and only speeds up confirmation. With your own payment screen, collect the UTR from the buyer and relay it to ATLAS, because an India pay-in is confirmed against it.
Can I send pay-outs over UPI?
Yes. Send paymentMethod: "upi" with the recipient's UPI ID. IMPS to an account number and IFSC is the default rail.
Can I charge an amount with paise?
No. India amounts are whole rupees, and a fractional amount returns VALIDATION_ERROR instead of being rounded.
Can the buyer pay a different amount from my order?
Only for UPI orders, and only if amount adjustment is switched on for your account (it is off by default). You are still credited for requestedAmount.
How do I receive the money from Indian payments?
In USDT, paid out to your TRC-20 wallet by auto-settle or on request.