Create Recipients

Recipients are the destination accounts to which you send payments. Create and store recipients before initiating a payment. The API returns a recipient ID that you should save and reuse.

Caliza supports the following recipient types:

Fiat rails: SWIFT (USD), ACH (USD), WIRE (USD), RTP (USD), PIX (BRL), SPEI (MXN), COP (COP), CVU (ARS).

Crypto rails: ETH, TRON.

Each type requires specific fields in the details object (see the sections below). Where a rail uses addresses, the address object has required fields street1, city, state, postalCode, and country (2-letter ISO), and optional street2; state must be a 2–3 letter ISO state code. For supported currencies and payment methods, see Currencies & Payment Methods.

📘

Store the returned recipient ID for use in payment requests and for auditing.

To create a recipient, you need to send a POST request to the /recipients endpoint with the necessary details. See the sections below for more information on the requests of each recipient type.

Request fields

The following tables describe the fields for the RecipientRequest object.

Required fields

FieldTypeDescription
currencystringCurrency code (e.g., USD, BRL, MXN)
typestringPayment rail type (e.g., SWIFT, ACH, PIX)
individualName OR businessNamestringExactly one must be provided
detailsobjectPayment rail–specific fields (structure varies by type; see sections below)

Conditionally required fields

FieldTypeCondition
beneficiaryIdstringRequired for beneficiary-level recipients
countryOfIncorporationstringRequired when businessName is provided (max 2 characters)

Optional fields

FieldTypeDescription
idstringUnique identifier for the recipient (used for updates)
belongsToBeneficiarybooleanWhether the recipient belongs to the beneficiary

See the sections below for more information on the details object structure for each recipient type.

Create SWIFT recipient

SWIFT recipient details fields

The details object for SWIFT recipients can include the following fields:

FieldTypeRequiredDescription
swiftCodestringYesSWIFT/BIC code of the recipient bank (8 or 11 characters; pattern: ^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$)
bankNamestringYesName of the recipient bank
bankAddressobjectYesBank address object (see address structure above). country must not be US
recipientAddressobjectYesRecipient address object (see address structure above)
accountNumber OR ibanstringYesAt least one must be provided. iban pattern: ^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$
routingNumberstringNoRouting number. Use if you want to specify wire routing; otherwise Caliza determines the optimal route.
intermediaryBankSwiftCodestringNoSWIFT code of intermediary bank. Use if you want to specify wire routing; otherwise Caliza determines the optimal route.
intermediaryBankNamestringNoName of intermediary bank. Use if you want to specify wire routing; otherwise Caliza determines the optimal route.

Example request

To create a SWIFT recipient, use the following request:

curl --location --request POST 'https://api.sandbox.caliza.com/core-api/v1/recipients' \
--header 'Authorization: Bearer {{ACCESS_TOKEN}}' \
--header 'Content-Type: application/json' \
--data '{
  "beneficiaryId": "{{BENEFICIARY_ID}}",
  "individualName": "{{INDIVIDUAL_NAME}}",
  "businessName": "{{BUSINESS_NAME}}",
  "currency": "{{CURRENCY}}",
  "type": "SWIFT",
  "details": {
    "swiftCode": "{{SWIFT_CODE}}",
    "bankName": "{{BANK_NAME}}",
    "routingNumber": "{{ROUTING_NUMBER}}",
    "accountNumber": "{{ACCOUNT_NUMBER}}",
    "bankAddress": {
      "street1": "{{BANK_STREET1}}",
      "postalCode": "{{BANK_POSTAL_CODE}}",
      "city": "{{BANK_CITY}}",
      "state": "{{BANK_STATE}}",
      "country": "{{BANK_COUNTRY}}"
    },
    "recipientAddress": {
      "street1": "{{RECIPIENT_STREET1}}",
      "postalCode": "{{RECIPIENT_POSTAL_CODE}}",
      "city": "{{RECIPIENT_CITY}}",
      "state": "{{RECIPIENT_STATE}}",
      "country": "{{RECIPIENT_COUNTRY}}"
    }
  }
}'
{
    "id": "{{RECIPIENT_ID}}",
    "beneficiaryId": "{{BENEFICIARY_ID}}",
    "individualName": "{{INDIVIDUAL_NAME}}",
    "businessName": "{{BUSINESS_NAME}}",
    "currency": "{{CURRENCY}}",
    "type": "SWIFT",
    "countryOfIncorporation": "{{COUNTRY_OF_INCORPORATION}}",
    "belongsToBeneficiary": true,
    "details": {
        "swiftCode": "{{SWIFT_CODE}}",
        "bankName": "{{BANK_NAME}}",
        "intermediaryBankSwiftCode": "{{INTERMEDIARY_BANK_SWIFT_CODE}}",
        "intermediaryBankName": "{{INTERMEDIARY_BANK_NAME}}",
        "routingNumber": "{{ROUTING_NUMBER}}",
        "accountNumber": "{{ACCOUNT_NUMBER}}",
        "bankAddress": {
            "street1": "{{BANK_STREET1}}",
            "postalCode": "{{BANK_POSTAL_CODE}}",
            "city": "{{BANK_CITY}}",
            "state": "{{BANK_STATE}}",
            "country": "{{BANK_COUNTRY}}"
        },
        "recipientAddress": {
            "street1": "{{RECIPIENT_STREET1}}",
            "postalCode": "{{RECIPIENT_POSTAL_CODE}}",
            "city": "{{RECIPIENT_CITY}}",
            "state": "{{RECIPIENT_STATE}}",
            "country": "{{RECIPIENT_COUNTRY}}"
        }
    }
}

The response includes the recipient ID and other relevant information and should look like this:

Where:

  • id: The unique identifier for the recipient.
  • beneficiaryId: The ID of the beneficiary associated with the recipient.
  • individualName: The name of the individual associated with the recipient.
  • businessName: The name of the business associated with the recipient.
  • currency: The currency of the recipient.
  • type: The type of the recipient (in this case, SWIFT).
  • details: An object containing specific details about the SWIFT recipient, including bank information and addresses.

The SWIFT recipient has been created and is ready to send payments.

Create ACH recipient

ACH (Automated Clearing House) is supported for USD domestic transfers.

ACH recipient details fields

The details object for ACH recipients can include the following fields:

FieldTypeRequiredDescription
accountNumberstringYesAccount number
routingNumberstringYesRouting number
bankNamestringYesName of the recipient bank
bankCountrystringYesISO 3166-1 alpha-2 country code of the bank (2 characters)
accountTypestringYesOne of: Checking, Savings, GeneralLedger, Loan
recipientAddressobjectYesRecipient address object (see address structure above)

Example request

To create an ACH recipient, use the following request:

curl --location --request POST 'https://api.sandbox.caliza.com/core-api/v1/recipients' \
--header 'Authorization: Bearer {{ACCESS_TOKEN}}' \
--header 'Content-Type: application/json' \
--data '{
  "beneficiaryId": "{{BENEFICIARY_ID}}",
  "individualName": "{{INDIVIDUAL_NAME}}",
  "businessName": "{{BUSINESS_NAME}}",
  "currency": "{{CURRENCY}}",
  "type": "ACH",
  "details": {
    "bankName": "{{BANK_NAME}}",
    "bankCountry": "{{BANK_COUNTRY}}",
    "accountType": "Checking",
    "routingNumber": "{{ROUTING_NUMBER}}",
    "accountNumber": "{{ACCOUNT_NUMBER}}",
    "recipientAddress": {
      "street1": "{{RECIPIENT_STREET1}}",
      "postalCode": "{{RECIPIENT_POSTAL_CODE}}",
      "city": "{{RECIPIENT_CITY}}",
      "state": "{{RECIPIENT_STATE}}",
      "country": "{{RECIPIENT_COUNTRY}}"
    }
  }
}'
{
    "id": "{{RECIPIENT_ID}}",
    "beneficiaryId": "{{BENEFICIARY_ID}}",
    "individualName": "{{INDIVIDUAL_NAME}}",
    "businessName": {{BUSINESS_NAME}},
    "currency": "{{CURRENCY}}",
    "type": "ACH",
    "countryOfIncorporation": "{{COUNTRY_OF_INCORPORATION}}",
    "belongsToBeneficiary": true,
    "details": {
        "bankName": "{{BANK_NAME}}",
        "bankCountry": "{{BANK_COUNTRY}}",
        "accountType": "Checking",
        "routingNumber": "{{ROUTING_NUMBER}}",
        "accountNumber": "{{ACCOUNT_NUMBER}}",
        "recipientAddress": {
            "street1": "{{RECIPIENT_STREET1}}",
            "postalCode": "{{RECIPIENT_POSTAL_CODE}}",
            "city": "{{RECIPIENT_CITY}}",
            "state": "{{RECIPIENT_STATE}}",
            "country": "{{RECIPIENT_COUNTRY}}"
        }
    }
}

The response includes the recipient ID and other relevant information.

Where:

  • id: The unique identifier for the recipient.
  • beneficiaryId: The ID of the beneficiary associated with the recipient.
  • individualName: The name of the individual associated with the recipient.
  • businessName: The name of the business associated with the recipient.
  • currency: The currency of the recipient.
  • type: The type of the recipient (in this case, ACH).
  • details: An object containing specific details about the ACH recipient, including bank information and addresses.

The ACH recipient has been created and is ready to send payments.

Create a WIRE recipient

WIRE recipient details fields

The details object for WIRE recipients can include the following fields:

FieldTypeRequiredDescription
accountNumberstringYesAccount number
routingNumberstringYesRouting number (must be exactly 9 characters)
bankNamestringYesName of the recipient bank
bankAddressobjectYesBank address object (see address structure above)
recipientAddressobjectYesRecipient address object (see address structure above)

Example request

To create a WIRE recipient, use the following request:

curl --location --request POST 'https://api.sandbox.caliza.com/core-api/v1/recipients' \
--header 'Authorization: Bearer {{ACCESS_TOKEN}}' \
--header 'Content-Type: application/json' \
--data '{
  "beneficiaryId": "{{BENEFICIARY_ID}}",
  "individualName": "{{INDIVIDUAL_NAME}}",
  "currency": "{{CURRENCY}}",
  "type": "WIRE",
  "details": {
    "bankName": "{{BANK_NAME}}",
    "routingNumber": "{{ROUTING_NUMBER}}",
    "accountNumber": "{{ACCOUNT_NUMBER}}",
    "bankAddress": {
      "street1": "{{BANK_STREET1}}",
      "postalCode": "{{BANK_POSTAL_CODE}}",
      "city": "{{BANK_CITY}}",
      "state": "{{BANK_STATE}}",
      "country": "{{BANK_COUNTRY}}"
    },
    "recipientAddress": {
      "street1": "{{RECIPIENT_STREET1}}",
      "postalCode": "{{RECIPIENT_POSTAL_CODE}}",
      "city": "{{RECIPIENT_CITY}}",
      "state": "{{RECIPIENT_STATE}}",
      "country": "{{RECIPIENT_COUNTRY}}"
    }
  }
}'
{
    "id": "{{RECIPIENT_ID}}",
    "beneficiaryId": "{{BENEFICIARY_ID}}",
    "individualName": "{{INDIVIDUAL_NAME}}",
    "businessName": "{{BUSINESS_NAME}}",
    "currency": "{{CURRENCY}}",
    "type": "WIRE",
    "countryOfIncorporation": "{{COUNTRY_OF_INCORPORATION}}",
    "belongsToBeneficiary": true,
    "details": {
        "bankName": "{{BANK_NAME}}",
        "routingNumber": "{{ROUTING_NUMBER}}",
        "accountNumber": "{{ACCOUNT_NUMBER}}",
        "bankAddress": {
            "street1": "{{BANK_STREET1}}",
            "postalCode": "{{BANK_POSTAL_CODE}}",
            "city": "{{BANK_CITY}}",
            "state": "{{BANK_STATE}}",
            "country": "{{BANK_COUNTRY}}"
        },
        "recipientAddress": {
            "street1": "{{RECIPIENT_STREET1}}",
            "postalCode": "{{RECIPIENT_POSTAL_CODE}}",
            "city": "{{RECIPIENT_CITY}}",
            "state": "{{RECIPIENT_STATE}}",
            "country": "{{RECIPIENT_COUNTRY}}"
        }
    }
}

The response includes the recipient ID and other relevant information.

Where:

  • id: The unique identifier for the recipient.
  • beneficiaryId: The ID of the beneficiary associated with the recipient.
  • individualName: The name of the individual associated with the recipient.
  • businessName: The name of the business associated with the recipient.
  • currency: The currency of the recipient.
  • type: The type of the recipient (in this case, WIRE).
  • details: An object containing specific details about the WIRE recipient, including bank information and addresses.

The WIRE recipient has been created and is ready to send payments.

Create RTP recipient

RTP (Real-Time Payments) is supported for USD. The details object requires only accountNumber and routingNumber; no address fields.

FieldTypeRequiredDescription
accountNumberstringYesAccount number
routingNumberstringYesRouting number
curl --location --request POST 'https://api.sandbox.caliza.com/core-api/v1/recipients' \
--header 'Authorization: Bearer {{ACCESS_TOKEN}}' \
--header 'Content-Type: application/json' \
--data '{
  "beneficiaryId": "{{BENEFICIARY_ID}}",
  "individualName": "{{INDIVIDUAL_NAME}}",
  "currency": "USD",
  "type": "RTP",
  "details": {
    "accountNumber": "{{ACCOUNT_NUMBER}}",
    "routingNumber": "{{ROUTING_NUMBER}}"
  }
}'

Create PIX recipient

PIX is supported for BRL. The details object requires pixKey and documentNumber. documentNumber must be 11 characters (CPF) or 14 characters (CNPJ) after removing /, -, and ..

FieldTypeRequiredDescription
pixKeystringYesPIX key
documentNumberstringYesCPF (11 chars) or CNPJ (14 chars), without formatting characters
curl --location --request POST 'https://api.sandbox.caliza.com/core-api/v1/recipients' \
--header 'Authorization: Bearer {{ACCESS_TOKEN}}' \
--header 'Content-Type: application/json' \
--data '{
  "beneficiaryId": "{{BENEFICIARY_ID}}",
  "individualName": "{{INDIVIDUAL_NAME}}",
  "currency": "BRL",
  "type": "PIX",
  "details": {
    "pixKey": "{{PIX_KEY}}",
    "documentNumber": "{{DOCUMENT_NUMBER}}"
  }
}'

Create SPEI recipient

SPEI is supported for MXN. The details object requires clabe, bankCode, and receiverName; no optional details fields.

FieldTypeRequiredDescription
clabestringYesCLABE (Clave Bancaria Estandarizada)
bankCodestringYesBank code
receiverNamestringYesName of the receiver
curl --location --request POST 'https://api.sandbox.caliza.com/core-api/v1/recipients' \
--header 'Authorization: Bearer {{ACCESS_TOKEN}}' \
--header 'Content-Type: application/json' \
--data '{
  "beneficiaryId": "{{BENEFICIARY_ID}}",
  "individualName": "{{INDIVIDUAL_NAME}}",
  "currency": "MXN",
  "type": "SPEI",
  "details": {
    "clabe": "{{CLABE}}",
    "bankCode": "{{BANK_CODE}}",
    "receiverName": "{{RECEIVER_NAME}}"
  }
}'

Create COP recipient

COP is supported for Colombian peso transfers. The details object requires accountType (one of CHECKING, SAVINGS), bankAccount, and bankCode. If thirdPartyWithdrawal is true, you must also provide documentId, documentType, and email.

FieldTypeRequiredDescription
accountTypestringYesOne of: CHECKING, SAVINGS
bankAccountstringYesBank account number
bankCodestringYesBank code
thirdPartyWithdrawalbooleanNoDefault false. If true, documentId, documentType, and email are required
documentIdstringConditionallyRequired when thirdPartyWithdrawal is true
documentTypestringConditionallyRequired when thirdPartyWithdrawal is true
emailstringConditionallyRequired when thirdPartyWithdrawal is true
curl --location --request POST 'https://api.sandbox.caliza.com/core-api/v1/recipients' \
--header 'Authorization: Bearer {{ACCESS_TOKEN}}' \
--header 'Content-Type: application/json' \
--data '{
  "beneficiaryId": "{{BENEFICIARY_ID}}",
  "individualName": "{{INDIVIDUAL_NAME}}",
  "currency": "COP",
  "type": "COP",
  "details": {
    "accountType": "SAVINGS",
    "bankAccount": "{{BANK_ACCOUNT}}",
    "bankCode": "{{BANK_CODE}}"
  }
}'

Create CVU recipient

CVU (Argentine virtual uniform key) is supported for ARS. The details object requires recipientName and cvu; no optional details fields.

FieldTypeRequiredDescription
recipientNamestringYesName of the recipient
cvustringYesCVU identifier
curl --location --request POST 'https://api.sandbox.caliza.com/core-api/v1/recipients' \
--header 'Authorization: Bearer {{ACCESS_TOKEN}}' \
--header 'Content-Type: application/json' \
--data '{
  "beneficiaryId": "{{BENEFICIARY_ID}}",
  "individualName": "{{INDIVIDUAL_NAME}}",
  "currency": "ARS",
  "type": "CVU",
  "details": {
    "recipientName": "{{RECIPIENT_NAME}}",
    "cvu": "{{CVU}}"
  }
}'

Create crypto recipient

Crypto recipients are supported for ETH and TRON. The details object requires only walletAddress.

FieldTypeRequiredDescription
walletAddressstringYesWallet address for the rail
curl --location --request POST 'https://api.sandbox.caliza.com/core-api/v1/recipients' \
--header 'Authorization: Bearer {{ACCESS_TOKEN}}' \
--header 'Content-Type: application/json' \
--data '{
  "beneficiaryId": "{{BENEFICIARY_ID}}",
  "individualName": "{{INDIVIDUAL_NAME}}",
  "currency": "USD",
  "type": "ETH",
  "details": {
    "walletAddress": "{{WALLET_ADDRESS}}"
  }
}'

Next steps