What Is a Remittance Payout
A remittance payout is a crypto-to-fiat payout made on behalf of a remittance user: someone sending money to a beneficiary in India, rather than a customer cashing out their own funds. The flow reuses the standard Payout building blocks (customer, bank account, quotation, status tracking) and adds two things: a PAN-only KYC for the beneficiary, and a remitter record that identifies the sending party.The beneficiary of a remittance payout is a DollarPe Customer, but they skip the full document KYC flow. Instead, submit the customer’s tax number (PAN) once via Remittance Beneficiary KYC after creating the customer.
Integration at a Glance
- Create the beneficiary customer. Register the receiving party via
/customer/createwithalpha_3_country_code: "IND". - Complete beneficiary KYC. Submit the customer’s PAN via
/kyc/remittance-beneficiary-kyc. - Add the bank account. Add the beneficiary’s bank account via
/bank/create. - Create the remitter. Register the sending party via
/kyc/remitter/create. - Create a quotation. Generate a quote via
/remittance-payout/quotation, keyed off the amount the beneficiary should receive. - Fund the payout. On the prefunding flow, check that your prefunded balance covers the quotation’s
sending_amountvia/payout/balance. On the non-prefunding flow, send thesending_amountin crypto to the wallet address from the quotation response and save the transaction hash. - Initiate the remittance payout. Create the order via
/remittance-payout/initiate, linking the quotation and remitter. Pass thetransaction_hashonly on the non-prefunding flow. - Monitor transaction status. Track progress via webhooks or polling.
Funding Models
How you fund payouts changes what you do before and during initiation. On the prefunding flow (recommended), you top up a DollarPe wallet address with USDT or USDC in advance, and every payout debits that balance. You don’t transfer crypto per payout, and you don’t pass any funding reference when initiating. Before each payout, check the balance via/payout/balance.
On the non-prefunding flow, you fund each payout individually: send the quotation’s sending_amount to the wallet address returned in the quotation response, then pass that transfer’s on-chain transaction_hash when initiating.
Visual Integration Flow
Step-by-Step Integration Guide
Step 1: Create the Beneficiary Customer
Register the receiving party as a DollarPe Customer. For remittance payouts to India,alpha_3_country_code must be IND.
- API Request
- Fetch Later
customer_id; every later step references it. You can retrieve the customer again via Fetch Customer or List Customers.
Step 2: Complete Remittance Beneficiary KYC
Submit the beneficiary’s tax number (PAN) once, after creating the customer. This PAN-only KYC replaces the full document KYC flow for remittance beneficiaries.- API Request
- Response
Step 3: Add the Beneficiary’s Bank Account
Add the bank account the payout will land in. Save the returnedbank_id for the quotation.
Step 4: Create the Remitter
Register the sending party once, before requesting a remittance quotation. This call is idempotent: resubmitting the sameid_type + id_number for your organization returns the existing remitter instead of creating a duplicate.
- API Request
- Response
id_type: one ofPASSPORT,DRIVING_LICENCE,BENEFICIARY_ID,PAN_CARD,AADHAAR_CARD,AIRLINE_STAFF_CARD,BUSINESS_REGISTRATION_NO_BR,CENTRAL_BANK_LICENCE,ACRAsource_of_funds: fixed enum (salary,savings,gifts,business_income, and others)id: pass this value asremitter_idin the quotation (Step 5) and payout (Step 7)
Step 5: Create a Remittance Quotation
You can check the live rate first viaGET /payout/fetch-rate, though this is optional.
A standard payout quotation is keyed on sending_amount, the crypto amount the customer sends. A remittance quotation is keyed on receiving_amount instead: the fiat amount the beneficiary should receive. It links the customer_id (Step 1), bank_id (Step 3), and remitter_id (Step 4):
- API Request
- Response
sending_amount is the crypto amount needed to fund the payout; the next step depends on it. See the Remittance Quotation reference for full field and error details.
Step 6: Fund the Payout
What you do here depends on your funding model. Prefunding flow. Check that the prefunded wallet covers the quotation’ssending_amount before you initiate. The balance is returned per asset and cached briefly, so a top-up you just made can take a short while to show up.
- API Request
- Response
sending_amount, top up the wallet before initiating; otherwise the payout will fail. See the Fetch Balance reference for full details. You don’t send any crypto per payout and won’t need a transaction hash in the next step.
Non-prefunding flow. Send the quotation’s sending_amount in crypto to the wallet address returned in the quotation response. Save the on-chain transaction_hash of that transfer; you pass it when initiating the payout in the next step.
Step 7: Initiate the Remittance Payout
- Prefunding Flow
- Non-Prefunding Flow
Include
transaction_hash only on the non-prefunding flow: it is the hash of the crypto transfer you made in Step 6. On the prefunding flow, send no funding reference; the payout debits your prefunded USDT/USDC balance. client_reference_id is optional in both cases.Step 8: Monitor Transaction Status
Track the payout by pollingGET /payout/{payout_id} (single order) or GET /payout/history (all orders), or subscribe to webhooks for status change notifications.
Getting Help
If you have questions about the remittance payout flow:- Check our API documentation for detailed endpoint information
- Contact our support team

