Available corridors are configured per business. If you need access to a corridor that isn’t enabled on your account, contact the Cadana team.
Discovering Available Methods
CallGET /v1/payment-methods to list payment methods available for a country:
Response:
GET /v1/providers to list supported banks and mobile money providers:
Response:
code as the bankCode (or providerCode for mobile money) when creating beneficiaries.
Using the Requirements API
The requirements endpoint returns a JSON Schema (Draft-07) describing all mandatory and optional fields for a given corridor:bash
Understanding the Response
Here’s an example response for Colombia (COP, bank transfer):| Keyword | What it tells you |
|---|---|
required | Fields that must be present |
properties | Available fields with their types and constraints |
pattern | Regex the value must match (e.g., ^[0-9]{9,16}$ for a 9-16 digit number) |
enum | Allowed values (e.g., ["Checking", "Saving"]) |
const | Fixed value (e.g., "CO" for country code) |
maxLength | Maximum string length |
format | Semantic format hint (e.g., email) |
additionalProperties | When false, no extra fields beyond those in properties are accepted |
allOf / if-then | Conditional rules — e.g., if beneficiaryId.type is "NIT", then value must be 9-11 digits |
Building Dynamic Forms
You can use these schemas to dynamically generate beneficiary creation forms that automatically adapt to each corridor’s requirements — no hardcoded field logic needed.Always use
GET /v1/payment-requirements as the source of truth. The examples below illustrate common patterns to help you plan your integration — they are not exhaustive.Bank Transfer
Sends funds directly to a recipient’s bank account through local clearing networks. SetpreferredMethod to "bank" and provide bank details in the bank object:
Simple — Nigeria (NGN)
Many corridors (e.g., NG, KE, GH, MX) require only basic bank details:| Field | Required | Format | Notes |
|---|---|---|---|
accountName | Yes | String (max 60) | Must match bank records |
accountNumber | Yes | String (max 255) | Bank-specific format (e.g., 10-digit NUBAN for Nigeria) |
bankCode | Yes | String (max 255) | Bank code — use GET /v1/providers |
bankName | Yes | String (max 255) | Bank name |
Medium — United Kingdom (GBP)
Some corridors add fields likesortCode, routingNumber, or iban depending on the local clearing system:
| Field | Required | Format | Notes |
|---|---|---|---|
accountName | Yes | String (max 60) | Account holder name |
accountNumber | Yes | 1-8 digits | UK account number |
bankCode | Yes | String (max 255) | Bank code |
bankName | Yes | String (max 255) | Bank name |
sortCode | Yes | 6 digits | Sort code |
iban, beneficiaryAddress), Canada (adds sortCode, address).
Complex — Colombia (COP)
Corridors like Colombia, India, South Africa, and Peru require a combination of beneficiary identification, address, contact details, and conditional validation:| Field | Required | Format | Notes |
|---|---|---|---|
accountName | Yes | String (max 60) | Account holder name |
accountNumber | Yes | 9-16 digits | Colombian account number |
bankCode | Yes | String (1-11 chars) | Alphanumeric bank code |
bankName | Yes | String (max 255) | Bank name |
accountType | Yes | Checking or Saving | Account type |
beneficiaryId.type | Yes | NIT, CC, CE, TI, or PASS | ID type |
beneficiaryId.value | Yes | String | ID number (format depends on type — see schema allOf rules) |
email | Yes | Email (max 100) | Recipient email |
address.line1 | Yes | String (max 70) | Street address |
address.city | Yes | String (max 50) | City |
address.countryCode | Yes | CO | Country code |
ACH
Send funds to US bank accounts via the Automated Clearing House network. SetpreferredMethod to "ach" and provide details in the ach object:
Mobile Money
Send funds directly to mobile money wallets. Widely used across Sub-Saharan African markets. SetpreferredMethod to "momo" and provide details in the momo object:
GET /v1/providers to get the available providers for a given country.
| Field | Required | Format | Notes |
|---|---|---|---|
accountName | Yes | String | Account holder name |
phoneNumber.number | Yes | String | Phone number |
phoneNumber.countryCode | Yes | String | Country dialing code |
provider | Yes | String | Provider name (e.g., mpesa) |
providerCode | Yes | String | Provider code — use GET /v1/providers |
Proxy
Proxy-based payment methods use an identifier (email, phone, or national ID) instead of traditional bank details. Used for corridors like Brazil Pix. SetpreferredMethod to "proxy" and provide details in the proxy object:
| Field | Required | Format | Notes |
|---|---|---|---|
type | Yes | email, mobile, or other | Proxy key type |
value | Yes | String (max 255) | The proxy identifier |
beneficiaryId or address. Use GET /v1/payment-requirements to check the exact requirements for each corridor.
SWIFT
For corridors without local payment rails, Cadana routes payments via SWIFT. Covers 180+ countries (USD and EUR). SetpreferredMethod to "swift" and provide details in the swift object. SWIFT payments typically require more information than local transfers, including the SWIFT/BIC code, recipient address, and either iban or accountNumber depending on the destination.
| Field | Required | Format | Notes |
|---|---|---|---|
accountName | Yes | String (max 60) | Account holder name |
accountNumber | Yes | String (max 255) | Account number |
swiftCode | Yes | 8 or 11 chars | SWIFT/BIC code |
bankName | Yes | String (max 255) | Bank name |
currency | Yes | USD or EUR | Payment currency |
iban | Yes | String | International Bank Account Number |
address | Yes | Object | Recipient address (line1, city, postalCode, countryCode) |