Short answer: Yes, you can pay for LLM API usage with UPI in India, just not directly to OpenAI, Anthropic or Google. You top up an INR wallet on AICredits through Razorpay (minimum ₹50), lose about 2.36% to the payment gateway, and spend the credit on 300+ models through one sk- key.
Disclosure: the aicredits.in links are affiliate links and I use the service. Fee figures below come from AICredits' own documentation and dashboard code as read on 16 Oct 2026, and I have not run the payment flow myself for this article.
The usual story goes like this. You sign up for a model provider, reach the billing page, paste your RuPay or Visa debit card, and the payment bounces because international transactions are switched off. You switch them on, it bounces again for a different reason, and an hour later you are reading forum threads about virtual dollar cards. If you already own a UPI app, none of that should be necessary.
This guide covers the whole route: what you need, the exact top-up steps, the fee arithmetic, how the cost compares to an international card, and the ways it can go wrong.
What do you need before you start?
- An email address to sign up on AICredits.
- Any UPI app (GPay, PhonePe, Paytm, BHIM) or a net banking login. Razorpay's checkout also takes cards and wallets.
- ₹50 or more. That is the documented minimum top-up.
- Five minutes. There is no card to verify and no dollar account to open.
What you do not need is an international card, a Wise account or a US billing address. That is the whole point of paying in rupees.
How does the UPI top-up flow work, step by step?
- Sign up at aicredits.in.
- Open Dashboard, then Billing. The Add Funds card has preset amounts of ₹100, ₹500, ₹1,000 and ₹2,000, plus a custom field (minimum ₹50).
- If your account shows a GST profile card, fill it in before paying. The invoice is generated at the moment the payment completes and cannot be edited afterwards (more on that in the GST invoice post).
- Read the Total Payable line. The dashboard asks the server for a quote that uses the same function as the real top-up, so the figure on the button is what you will be charged and credited.
- Click Pay. Razorpay's checkout opens. Pick UPI, approve the collect request or scan the QR in your app, and wait for the success banner.
- Go to API Keys, create a key, and copy it. It is shown once.
Then make a call. The base URL is https://api.aicredits.in/v1 for OpenAI-style SDKs. The Claude-in-India walkthrough has working Python and TypeScript for that step, so I won't repeat it here.
One limit to know about: the billing page enforces a wallet ceiling, which defaults to ₹5,000 per account in the frontend code I read. A single top-up cannot push the balance past it, and the page tells you to email support@aicredits.in to raise it. Plan big prepayments around that.
What does the fee math look like?
Two separate layers apply, and people mix them up.
Layer 1: the payment gateway charge, once per top-up. AICredits documents Razorpay at 2% plus 18% GST on that fee, which is 2.36% in total. Its UPI page gives the example that a ₹100 top-up results in ₹97.64 of credit.
Layer 2: the price per request, every call. The formula is provider USD price x live USD/INR rate x 1.05 forex buffer x 1.05 platform fee. That is about 10 to 11% over the provider's list price converted at the live rate. This is where the real cost of the convenience sits, and I'd rather you see it plainly than discover it later.
Here is Layer 1 applied to four top-up sizes. This is illustrative arithmetic from the documented 2.36%, not a captured quote:
| You pay | Gateway charge at 2.36% | Credit if the charge comes out of what you pay |
|---|---|---|
| ₹50 | ₹1.18 | ₹48.82 |
| ₹100 | ₹2.36 | ₹97.64 |
| ₹500 | ₹11.80 | ₹488.20 |
| ₹5,000 | ₹118.00 | ₹4,882.00 |
One honest caveat. The marketing page describes the fee as coming out of the amount you pay. The billing form, by contrast, is built around the credit you want and displays a Total Payable, which suggests the fee may be added on top of the credit instead. I did not run a payment to see which wording the live quote follows. If it adds the fee on top, the effective loss for a desired ₹100 credit is a little higher than 2.36% of ₹100, because the fee is applied to the larger total. The quote on the Pay button settles it, so read it before you approve the UPI request.
To compute your own numbers, this short script handles both readings. It is plain arithmetic, so there is nothing to run against the API:
GATEWAY = 0.0236 # 2% + 18% GST on that 2%, per AICredits docs
def credit_if_fee_deducted(pay_inr: float) -> float:
"""Reading A: fee comes out of what you pay."""
return round(pay_inr * (1 - GATEWAY), 2)
def pay_if_fee_added(want_credit_inr: float) -> float:
"""Reading B: you want this much credit, fee is grossed up."""
return round(want_credit_inr / (1 - GATEWAY), 2)
for amount in (50, 100, 500, 5000):
print(amount, credit_if_fee_deducted(amount), pay_if_fee_added(amount))
(Not run against anything live; it is a three-line calculation you can check by hand.)
How does this compare with paying by international card?
I won't publish a headline "you save X%" figure, because it depends on your bank. What I can give you is the shape of the comparison so you can fill in your own numbers.
| Cost item | UPI via a gateway | International card direct |
|---|---|---|
| Per-top-up charge | About 2.36% gateway charge (documented) | Depends on your card issuer's foreign-transaction markup, if any |
| Currency conversion | Built into the request price (live rate plus 5% buffer) | Your bank's rate, often with a spread |
| Platform fee | 5% on the request price | None, you pay the provider directly |
| Setup friction | Email and a UPI approval | An international-enabled card, which many Indian cards are not |
| Minimum to start | ₹50 | Often a larger authorised amount |
| Unused balance | Expires after one year, FIFO | Pay-as-you-go invoices, no prepaid pool |
If your bank already gives you a 1 to 2% foreign markup on a card that works, direct billing can be cheaper per rupee. If you do not have such a card, the real comparison is not against "free", it is against not being able to pay at all. Illustratively, a 3% card markup versus a roughly 10 to 11% gateway premium plus the 2.36% charge is a gap you should decide about with eyes open. You would pay it for UPI-only convenience, one invoice in rupees, per-key budgets and access to several providers behind one key. You would not pay it for raw price. The AICredits review goes through that trade-off in more detail, and the catalog analysis shows how to find the cheap models so the premium applies to small bills.
Which rules about your balance should you know?
- Credits expire after one year and are consumed first-in, first-out. Do not prepay a year of usage on day one.
- There are no free credits and no free tier. Your first top-up is the start of billing.
- A low-balance alert fires when the wallet drops below ₹10, according to the pricing docs.
- Top-ups are final in the sense that matters: the invoice, if GST is enabled for you, cannot be edited after payment.
- Check the balance in code with
GET https://api.aicredits.in/v1/credits; the response includescredits_inr, the actual rupee balance.
curl https://api.aicredits.in/v1/credits \
-H "Authorization: Bearer sk-your-key"
If you want a recurring top-up instead of manual ones, the billing page can show an auto-recharge card for eligible accounts. It is not available to everyone, so check whether it appears on your account before building a plan around it. For the general idea of UPI mandates, see UPI AutoPay basics for AI SaaS.
What are the common failure modes, and what do you do?
| Symptom | Likely cause | What to do |
|---|---|---|
| UPI request never arrives | App notification off or bank downtime | Use the QR option, or switch to net banking in the same checkout |
| Payment debited, no credit | Webhook or verification delay | Do not repay. Keep the UPI reference and Razorpay payment ID, refresh Billing, then email support |
| "Amount too high" or wallet limit message | Balance plus top-up exceeds the ceiling | Top up the headroom shown, or ask support to raise the limit |
| Button says Calculating and stays disabled | Quote not loaded or amount below ₹50 | Enter at least ₹50 and wait for the quote |
| API returns 402 after a top-up | Wallet fine, but the key hit its own budget cap | Raise or reset the key budget, see the budgets post |
| API returns 402 on a fresh account | No credits yet | Top up first; there are no free credits |
The 402 row catches people out. The same status code covers an empty wallet and an exhausted per-key budget, so check both before assuming the payment failed. If you build your own payments someday, the Razorpay webhook idempotency guide explains why "debited but not credited" happens at all.
A short pre-payment checklist
Copy this into your notes:
- Decide the first top-up. ₹100 to ₹500 is enough to test an integration; do not prepay months of usage.
- If you need a GST invoice, fill the GST profile before paying.
- Read Total Payable and compare it with your own calculation above.
- After paying, create a key with a budget cap before pasting it anywhere.
- Store the key in an environment variable, never in the repo; the key leak checklist covers how.
- Log the payment reference somewhere your finance person can find it.
Bottom line
UPI works for LLM APIs in India as long as you accept a gateway in the middle: a documented 2.36% on each top-up and about 10 to 11% on request prices. If that trade is right for you, start with a small top-up, read the quote before approving, and set a budget on your first key. If you already have a working international card and care only about the lowest price, pay the provider directly and skip this.



