India API Reference (Merchant Server)
All endpoints use HMAC authentication on https://api.transacty.ai and require the
payin:create scope.
UPI H2H endpoints
| Method | Path | Scope | Purpose |
|---|---|---|---|
POST | /v1/h2h/payin-instances | payin:create | Create a UPI pay-in |
GET | /v1/h2h/payin-instances/:transactionId | payin:create | Get pay-in status |
POST | /v1/h2h/buyer-confirms-payment | payin:create | Submit the bank UTR |
GET | /v1/h2h/payment-methods | payin:create | List supported UPI payment methods |
GET | /v1/h2h/conversion-rates | payin:create | Current INR conversion rates |
Shared read endpoints
| Method | Path | Notes |
|---|---|---|
GET | /v1/transactions | Filter type=payin; includes rail, railLabel, currency |
GET | /v1/transactions/:transactionId | Status poll; same rail fields |
GET | /v1/balance | Wallet pocket + pendingBalance for the currency |
PATCH | /v1/me/webhook | Register the URL for Transacty → merchant events |
Optional products
Crypto pay-in / payout uses the same API key on different paths:
| Method | Path | Notes |
|---|---|---|
* | /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).
currencySymboldefines whetheramountis quoted in INR or USDT (see Create Pay-in).- USDT is a separate wallet pocket from BDT and USDC. On
GET /v1/balance,availableBalanceis spendable andpendingBalanceis in-flight pay-ins for that currency. - The India market must be enabled (KYB approved) or
/v1/h2h/*returns403(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 — useGET /v1/balance.
Last updated on