Skip to Content
IndiaPayinIndia API Reference (Merchant Server)

India API Reference (Merchant Server)

All endpoints use HMAC authentication on https://api.transacty.ai and require the payin:create scope.

UPI H2H endpoints

MethodPathScopePurpose
POST/v1/h2h/payin-instancespayin:createCreate a UPI pay-in
GET/v1/h2h/payin-instances/:transactionIdpayin:createGet pay-in status
POST/v1/h2h/buyer-confirms-paymentpayin:createSubmit the bank UTR
GET/v1/h2h/payment-methodspayin:createList supported UPI payment methods
GET/v1/h2h/conversion-ratespayin:createCurrent INR conversion rates

Shared read endpoints

MethodPathNotes
GET/v1/transactionsFilter type=payin; includes rail, railLabel, currency
GET/v1/transactions/:transactionIdStatus poll; same rail fields
GET/v1/balanceWallet pocket + pendingBalance for the currency
PATCH/v1/me/webhookRegister the URL for Transacty → merchant events

Optional products

Crypto pay-in / payout uses the same API key on different paths:

MethodPathNotes
*/v1/cpg/*Crypto pay-in / payout (CPG). See deep-dive testing docs.

Webhook events

When configured, Transacty sends payin.completed and payin.failed. The same webhook URL serves all rails. See Webhooks.

Settlement

  • Customer always pays INR via UPI; merchant is always credited USDT on success (trade event 4 or 6).
  • currencySymbol defines whether amount is quoted in INR or USDT (see Create Pay-in).
  • USDT is a separate wallet pocket from BDT and USDC. On GET /v1/balance, availableBalance is spendable and pendingBalance is in-flight pay-ins for that currency.
  • The India market must be enabled (KYB approved) or /v1/h2h/* returns 403 (market_not_enabled); the USDT pocket is provisioned on approval.
  • Do not present GET /v1/account-balance (upstream operator crypto) as the merchant’s balance — use GET /v1/balance.
Last updated on