Payouts to India (NRE)
What are the specific requirements for INR payouts to Indian NRE accounts?
Review these India NRE-specific requirements before initiating INR payouts to Non-Resident External (NRE) accounts. For the general cross-border payment flow, see Sending Cross-Border Payments.
Supported configurations
India NRE payouts support the following participant types:
- C2C (consumer-to-consumer) — individual customer to individual counterparty
- B2C (business-to-consumer) — business customer to individual counterparty
- B2B (business-to-business) — business customer to business counterparty
All three use the bank_account route. B2B payouts additionally require supporting documents (see Supporting documents).
Trading account requirement
India NRE payouts require a USDC_SOL trading account as the source. Other trading account types (such as USDC or USDC_NPL) are not supported for this corridor.
Use a customer-level trading accountFor INR remittance plans, use a customer-level trading account as the source. A bank-level trading account results in an error (for example,
invalid_assetorNo platform payout symbol configuration found).
Verify INR payout availability
Confirm your bank supports INR payouts for your participant type and the bank_account route.
Bank configuration requiredContact Cybrid support to enable INR payouts and configure India as a supported corridor for your bank.
GET /api/banks/{bank_guid}
Authorization: Bearer YOUR_TOKENLook for an entry in supported_payout_symbols where:
symbol:INR-USDorINR-USDC_SOLcountry_code:INparticipants_type:C2C,B2C, orB2Broute:bank_account
You can also query prices for India:
GET /api/prices?payout_country_code=IN
Authorization: Bearer YOUR_TOKENIdentity verification requirements
The platform validates all required KYC fields when you create a plan. Requirements differ by participant type.
Originator (Customer)
Individual originator (C2C):
name.first,name.lastdate_of_birthaddress.street,address.city,address.country_code
Business originator (B2C, B2B):
name.fulladdress.street,address.city,address.country_codeidentification_numberswith one of:business_registration_numbertax_identification_numberemployer_identification_number
Receiver (Counterparty)
Create the counterparty with the standard required fields for the appropriate type.
Individual counterparty (C2C, B2C):
This corridor requires no additional counterparty fields beyond the platform defaults.
Business counterparty (B2B):
name.fulladdress.street,address.city,address.country_code
Counterparty address reflects destination countryFor cross-border remittance, the
address.cityandaddress.country_codefields for the counterparty should reflect the destination country (e.g., India for INR payouts), not the source country.
Self-to-self remittance (NRE accounts)When the receiver is the same person as the originator and the destination is a Non-Resident External (NRE) account, create the counterparty using the customer's non-Indian residential address (the same address on the customer record) — not an India-based address.
The counterparty must be in verified state before you can create the external bank account and plan.
Purpose of transaction
Requirements for purpose_of_transaction depend on the participant type:
- C2C — required, and restricted to
family_support(personal remittances to family members) orpersonal_transfer(personal transfers between individuals). Other values are rejected. - B2C — required. Any standard purpose value is accepted.
- B2B — required. Any standard purpose value is accepted.
Supporting documents
B2B payouts to India require a supporting document of type invoice attached to the plan. You can attach additional documents of other types (purchase_order, delivery_slip, contract, bill_of_lading, or others) as optional extras. C2C and B2C payouts require no supporting documents.
Each B2B plan must include exactly one supporting document that carries a document_reference_number (for example, the invoice number). Attach the reference number to the invoice document.
{
"supporting_documents": [
{
"type": "invoice",
"file_guids": ["file_guid"],
"document_reference_number": "INV-1001"
}
]
}Requirements:
- At least one document of type
invoice(required for B2B). - Up to 3 documents per plan.
- Each file must be uploaded with a
typematching the documenttype(aninvoicedocument references files uploaded withtype: invoice). - Allowed file formats:
application/pdf,image/jpeg,image/png. - Each file must be no larger than 8 MB, with a filename of 64 characters or fewer.
- Exactly one supporting document must carry a
document_reference_number.
Upload each file via File Upload and wait for state: "completed" before referencing its GUID. For the full supporting_documents field structure, see Sending Cross-Border Payments.
External bank account setup
India payouts use IFSC (Indian Financial System Code) routing through India's National Electronic Funds Transfer (NEFT) and Real Time Gross Settlement (RTGS) systems.
Requirements:
- IFSC Code: 11-character bank branch identifier
- Account Number: Beneficiary account number
Send a POST request to /api/external_bank_accounts with the following body:
{
"account_kind": "raw_routing_details",
"name": "Indian beneficiary account",
"counterparty_bank_account_details": [{
"bank_code_type": "IFSC",
"bank_code": "HDFC0000123",
"account_identifier": "012345678901",
"payment_rail": "IFSC",
"account_designation": "NRE"
}],
"counterparty_guid": "counterparty_guid",
"customer_guid": "customer_guid",
"asset": "INR"
}
API versioningCreating external bank accounts with foreign raw routing details requires
Accept-Version: 2025-10-01or later.
Account designationFor NRE accounts, set
account_designationtoNRE. If omitted on IFSC accounts, the platform
defaults toNRE.
For the full account model and field reference, see Create Foreign Fiat External Bank Accounts.
Plan expiration
When a plan is created, the response includes an expires_at field (ISO8601 datetime format) indicating when the plan will expire. Once a plan expires, it cannot be executed and attempting to execute it will result in a plan_expired error.
Reconcile the payout (UTR)
Indian payouts settle with a UTR (Unique Transaction Reference) — the rail-issued reconciliation key for IMPS, NEFT, and RTGS transfers. After the payout settles, the UTR surfaces on the executed Stage under identifiers[]:
GET /api/executions/execution_guid
Authorization: Bearer YOUR_TOKEN{
"guid": "execution_guid",
"state": "completed",
"stages": [
{
"guid": "stage_guid",
"type": "payout",
"state": "completed",
"identifiers": [
{ "type": "utr", "value": "HDFC0123456789" }
],
"links": []
}
]
}The UTR appears only after the payer settles. While the stage is in earlier states, identifiers is present but empty. Filter identifiers by type: "utr" and ignore other entries to remain forward-compatible as new corridors add their own reference types.
Common validation errors
| Error Code | Description |
|---|---|
invalid_destination_account | External bank account not completed or missing IFSC details |
invalid_purpose_of_transaction | Missing or invalid purpose value (required for C2C, B2C, and B2B) |
invalid_supporting_document | B2B plan missing the required invoice, a file whose type does not match its document type, or a missing or duplicate document_reference_number |
invalid_parameter | KYC requirements not met (individual PII, or business name, address, and identification numbers) |
invalid_asset | Bank does not support INR payouts for the requested participants_type |
Retryable error codes
Only certain remittance errors should be retried automatically. Only external_server_error and market_volatility are valid for automated retries. Other errors, such as invalid_destination or invalid_destination_account, should not be retried automatically and typically indicate an issue with the counterparty or bank account details that must be resolved before attempting again.
Related resources
Updated about 10 hours ago

