Both flows support the prefunded model (top up once, each payout debits the balance) and the per-order model (send each quotation’s
sending_amount to its wallet_address, then initiate with the transaction_hash).
India: remittance payouts (RDA)
What you create
You create the remitter and the beneficiary once, then reuse them for every transfer between them.
1. Create the beneficiary
POST /cms/api/v1/customer/create
tax_number (the PAN) is optional.
POST /cms/api/v1/kyc/remittance-beneficiary-kyc
2. Add the beneficiary’s bank account
Remittance needs an account number and IFSC. A UPI account fails withpayment_method_not_supported.
POST /cms/api/v1/bank/create
3. Create the remitter
Zapyd registers the remitter with the payout partner as the sender, so it needs full identity. The call is idempotent: sending the sameid_type and id_number again returns the stored remitter.
Save
id as remitter_id. It isn’t a customer ID, so customer endpoints reject it. List remitters with GET /kyc/remitter/list.
4. Get a quotation
Send exactly one amount:receiving_amount to fix the fiat the beneficiary receives (shown below), or sending_amount to fix the crypto you send. Call POST /pos/api/v1/remittance-payout/quotation:
is_self_transferistruewhen the remitter is paying their own account.networkis required. On the prefunded model, it must match your prefunded wallet’s network, otherwise the call fails withNetwork does not match the prefunded wallet network.- With
receiving_amount, the response’ssending_amountis the crypto needed. The response also has thewallet_addressto fund on the per-order model.
5. Fund and initiate
- Prefunded
- Per order
Check that
GET /pos/api/v1/payout/balance covers sending_amount, then initiate without a hash:POST /pos/api/v1/remittance-payout/initiate
6. Track
The payout staysPROCESSING while Zapyd registers the beneficiary, the remitter and the bank account with the payout partner. It then moves to SUCCESS, FAILED, REFUNDED or IN_REVIEW, like any payout.
- If the partner rejects the beneficiary’s KYC or bank account, the payout fails with
Payout failed. IN_REVIEWwith anrfi_linkmeans the customer must answer a request for information.- Poll with
GET /payout/{payout_id}orGET /payout/history.
Remittance to other countries
Outside India, a remittance is a standard payout. Onboard the beneficiary with payout-only onboarding, then run the payout flow, or the prefunded flow.1
Onboard the beneficiary
Create the customer with
POST /customer/payout/create and their country’s alpha_3_country_code. Then call POST /kyc/payout/add-kyc-data and POST /kyc/payout/add-sender-kyc-data with the address fields and identifiers that country needs.2
Add the bank account as a remittance
Call Common purposes for remittances are
POST /bank/payout/create. Set transfer_purpose to the reason for the transfer, and is_self_transfer to false because the sender and the beneficiary are different people. This example is a beneficiary in the Philippines:FAMILY_MAINTENANCE, EDUCATION and MEDICAL_TREATMENT. Without these fields, the account defaults to TRANSFER_TO_OWN_ACCOUNT and is_self_transfer: true.3
Quote and pay out
Create a payout quotation with
customer_id and bank_id, fund it, and initiate. Tracking and webhooks are the same as any payout.Each country has its own methods and required fields. See the country table before you build the onboarding screens.