https://sandbox.zapyd.com/pos/api/v1. Customer and bank calls use /cms/api/v1 and limit calls use /ren/api/v1.
Paying from a balance?
Prefunded payouts skip the per-order crypto transfer.
Paying outside India?
Onboard beneficiaries in the UAE, UK, SEPA, Brazil, Mexico, the US and others.
Before you start
- The customer is
VERIFIEDand has aVERIFIEDbank account. Save itsidasbank_id. - Your webhook URL is registered.
Flow
1. Read the configuration
GET /payout/configuration returns, for each fiat, the supported assets, the minimum and maximum per payment method, and the required risk parameters. Cache it and refresh it daily.
2. Check the customer’s limit
GET /ren/api/v1/payout/limits/{customer_id} returns available_limit and is_edd_required. If the limit doesn’t cover the amount and EDD is required, collect EDD first.
3. Create a quotation
CallPOST /payout/quotation. Send either sending_amount (the crypto you send) or receiving_amount (the fiat the beneficiary gets).
payment_method and network are required. payment_method must be valid for the fiat, for example IMPS for INR.
4. Send the crypto
Send exactlysending_amount of the quoted asset, on the quoted network, to wallet_address, before expiry_time. Keep the transaction hash.
5. Initiate the payout
CallPOST /payout/initiate.
- A
transaction_hashcan fund one payout only. EVM hashes are compared without regard to case. - Zapyd verifies the transfer on-chain before it pays out.
PROCESSING. Most payouts complete within 30 to 60 minutes. Bank delays can stretch this to 24 hours.
6. Track the result
Zapyd doesn’t send a webhook forPROCESSING. You receive one for each status after that:
Every payout event also carries your
client_reference_id. To poll instead, call GET /payout/{payout_id}, or list orders with GET /payout/history.
Test it in sandbox
- Create a quotation on
sepolia, and send testnet USDT or USDC towallet_address. - Initiate with the Sepolia transaction hash.
- Move the payout with Mock Payout Status:
SUCCESS,FAILEDorREFUNDED.