Inyo

Recipient Account

A Recipient Account represents the bank account or payout destination where funds will be delivered. Before creating a recipient account, you must first create the recipient as a participant and fetch the account schema for the destination country.


Schema-Driven Creation

Recipient account requirements vary by country. Always fetch the account schema before building your form or API call:

# Fetch account schema for Colombia
curl --request GET \
  --url https://{FQDN}/organizations/$TENANT/payout/recipientAccounts/schema/co \
  --header "x-api-key: $API_KEY" \
  --header "x-agent-id: $AGENT_ID" \
  --header "x-agent-api-key: $AGENT_KEY"

The schema returns a JSON Schema (draft-07) object that defines required fields, allowed values, and validation rules. Common fields include:

FieldDescriptionExamples
assetCurrency code (ISO 4217)BRL, MXN, COP, PEN
payoutMethod.typePayout mechanismBANK_DEPOSIT
payoutMethod.countryCodeDestination countryBR, MX, CO
payoutMethod.bankCodeBank identifierVaries by country (use Banks endpoint)
payoutMethod.routingNumberRouting/SWIFT/BIC codeCountry-specific
payoutMethod.accountNumberAccount numberCLABE (MX), IBAN, or local account number
payoutMethod.accountTypeAccount typeCHECKING, SAVINGS

💡 Tip: For countries that require a bankCode, use the Banks in a Country endpoint to populate a dropdown in your UI.


Creating a Recipient Account

Endpoint: POST /organizations/{tenant}/payout/participants/{participantId}/recipientAccounts/gateway
Authentication: Agent-level (x-api-key + x-agent-id + x-agent-api-key)

Request Body

FieldTypeRequiredDescription
externalIdstringNoYour internal identifier for this account
assetstringYesCurrency code (ISO 4217) for the recipient's account
payoutMethodobjectYesBank account details (country-specific, see schema)

Example: Colombia (Bank Deposit)

curl --request POST \
  --url https://{FQDN}/organizations/$TENANT/payout/participants/$RECIPIENT_ID/recipientAccounts/gateway \
  --header 'Content-Type: application/json' \
  --header "x-api-key: $API_KEY" \
  --header "x-agent-id: $AGENT_ID" \
  --header "x-agent-api-key: $AGENT_KEY" \
  --data '{
  "externalId": "acct-co-001",
  "asset": "COP",
  "payoutMethod": {
    "type": "BANK_DEPOSIT",
    "countryCode": "CO",
    "bankCode": "1001",
    "routingNumber": "1234",
    "accountNumber": "9876543210",
    "accountType": "SAVINGS"
  }
}'

Example: Mexico (CLABE)

curl --request POST \
  --url https://{FQDN}/organizations/$TENANT/payout/participants/$RECIPIENT_ID/recipientAccounts/gateway \
  --header 'Content-Type: application/json' \
  --header "x-api-key: $API_KEY" \
  --header "x-agent-id: $AGENT_ID" \
  --header "x-agent-api-key: $AGENT_KEY" \
  --data '{
  "externalId": "acct-mx-001",
  "asset": "MXN",
  "payoutMethod": {
    "type": "BANK_DEPOSIT",
    "countryCode": "MX",
    "bankCode": "002",
    "routingNumber": "002",
    "accountNumber": "012345678901234567",
    "accountType": "CHECKING"
  }
}'

Example: Peru (Bank Deposit)

curl --request POST \
  --url https://{FQDN}/organizations/$TENANT/payout/participants/$RECIPIENT_ID/recipientAccounts/gateway \
  --header 'Content-Type: application/json' \
  --header "x-api-key: $API_KEY" \
  --header "x-agent-id: $AGENT_ID" \
  --header "x-agent-api-key: $AGENT_KEY" \
  --data '{
  "externalId": "acct-pe-001",
  "asset": "PEN",
  "payoutMethod": {
    "type": "BANK_DEPOSIT",
    "countryCode": "PE",
    "bankCode": "BINPPEPL",
    "routingNumber": "1234",
    "accountNumber": "1345",
    "accountType": "CHECKING"
  }
}'

⚠️ Save the returned id — this is the recipientAccountId required when creating a transaction.


Getting a Recipient Account

Endpoint: GET /organizations/{tenant}/payout/participants/{participantId}/recipientAccounts/{recipientAccountId}
Authentication: Agent-level

curl --request GET \
  --url https://{FQDN}/organizations/$TENANT/payout/participants/$RECIPIENT_ID/recipientAccounts/$ACCOUNT_ID \
  --header "x-api-key: $API_KEY" \
  --header "x-agent-id: $AGENT_ID" \
  --header "x-agent-api-key: $AGENT_KEY"

Deleting a Recipient Account

Endpoint: DELETE /organizations/{tenant}/payout/participants/{participantId}/recipientAccounts/{recipientAccountId}
Authentication: Agent-level

curl --request DELETE \
  --url https://{FQDN}/organizations/$TENANT/payout/participants/$RECIPIENT_ID/recipientAccounts/$ACCOUNT_ID \
  --header "x-api-key: $API_KEY" \
  --header "x-agent-id: $AGENT_ID" \
  --header "x-agent-api-key: $AGENT_KEY"

Country-Specific Requirements

CountryCurrencyKey FieldDocument TypeNotes
Brazil (BR)BRLaccountNumberCPFPIX keys may be supported depending on your corridor config
Mexico (MX)MXNaccountNumber (CLABE, 18 digits)CURP / INECLABE is the standard interbank identifier
Colombia (CO)COPbankCode + accountNumberCC (Cédula)Use the Banks endpoint for valid bankCode values
Peru (PE)PENbankCode + accountNumberDNIBank codes use SWIFT/BIC format
India (IN)INRroutingNumber (IFSC)PAN / AadhaarIFSC code is mandatory for Indian bank transfers
Philippines (PH)PHPbankCode + accountNumber

💡 Always use the schema endpoint as the source of truth — the table above is for guidance only.


Integration Workflow

1. Fetch account schema  →  GET /payout/recipientAccounts/schema/{countryCode}
2. Fetch bank list        →  GET /payout/{countryCode}/banks (if bankCode is required)
3. Collect user input     →  Build form from schema
4. Create account         →  POST /payout/participants/{id}/recipientAccounts/gateway
5. Save account ID        →  Use in POST /fx/transactions

All Endpoints

OperationMethodEndpoint
Create recipient accountPOST/organizations/{tenant}/payout/participants/{participantId}/recipientAccounts/gateway
Get recipient accountGET/organizations/{tenant}/payout/participants/{participantId}/recipientAccounts/{recipientAccountId}
Delete recipient accountDELETE/organizations/{tenant}/payout/participants/{participantId}/recipientAccounts/{recipientAccountId}

Interactive API Documentation