India — UPI Pay-in (H2H)
Base URL
https://api.transacty.ai
Summary
India UPI pay-in lets your customers pay in INR via UPI. You build the payment screen (QR / UPI ID). Your server creates a pay-in, shows the payment details, collects the bank UTR after payment, and confirms it with Transacty. When the payment completes, Transacty credits your USDT wallet and notifies your webhook.
Supported on the merchant API: H2H UPI only (
/v1/h2h/*). There is no hosted “pay button” create on/v1. You build the UPI payment UI.
Amount, conversion, and settlement
- The customer always pays in INR through UPI.
- Your merchant wallet is always credited in USDT on success — settlement lands when the trade reaches event 4 or 6 (see Pay-in Status & Events).
currencySymbolsets whether youramountis in INR or USDT:- INR — customer pays that INR amount; you receive the USDT equivalent.
- USDT — customer pays the INR equivalent at the current rate; you receive that USDT amount.
See Create Pay-in for examples. Use
GET /v1/h2h/conversion-rates for current rates.
Settlement wallet & balances
- India settles to its own USDT pocket — a separate balance from Bangladesh (BDT) and Europe (USDC). Never sum unlike currencies into one headline number.
- On
GET /v1/balance:availableBalanceis the settled, spendable balance;pendingBalanceis the sum of in-flight pay-ins in that currency (not yet spendable). - The transaction appears on the
indiarail in transaction lists.
Enable the India market first. Each market has its own KYB approval. Until India is
approved, /v1/h2h/* returns 403 (market_not_enabled), and your USDT wallet pocket
is provisioned only once the market is approved.
Required headers
Every request uses HMAC authentication (same scheme as all /v1/* endpoints):
X-Transacty-KeyX-Transacty-Timestamp(Unix seconds)X-Transacty-Signature=HMAC-SHA256(secret, "{timestamp}.{rawBody}")Content-Type: application/json
Required scope
payin:create
Integration flow
| Step | Merchant server | Transacty API |
|---|---|---|
| 1 | Create the pay-in | POST /v1/h2h/payin-instances |
| 2 | Show UPI details from paymentDetails / paymentInstructions | — |
| 3 | Customer pays in their bank/UPI app | — |
| 4 | Collect the bank UTR from the customer | — |
| 5 | Submit the UTR | POST /v1/h2h/buyer-confirms-payment |
| 6 | Poll status or wait for webhook | GET /v1/h2h/payin-instances/:transactionId or GET /v1/transactions/:id |
| 7 | Final status; wallet credited on success | success / failed |
The customer-facing UPI screen (QR, VPA, UTR entry, confirm button) is built and hosted by you — Transacty does not provide a hosted checkout for India H2H.
Webhook events
When a webhook URL is configured, Transacty sends:
payin.completedpayin.failed
See Webhooks for signature verification.