Skip to main content
GET
/
api
/
recipients
/
requirements
Get recipient requirements
curl --request GET \
  --url https://api.example.com/api/recipients/requirements \
  --header 'Authorization: <authorization>'
{
  "success": true,
  "data": {
    "required": true,
    "fields": [
      { "name": "email", "type": "string", "required": true },
      { "name": "country", "type": "string", "required": true },
      { "name": "transferType", "type": "enum", "required": true, "enum": ["fiat", "stablecoin"] },
      { "name": "accountNumber", "type": "string", "required": true, "visibleWhen": { "transferType": ["fiat"] } },
      { "name": "routingNumber", "type": "string", "required": true, "visibleWhen": { "rail": ["ach", "wire"] } },
      { "name": "iban", "type": "string", "required": true, "visibleWhen": { "rail": ["sepa"] } }
    ],
    "bank": {
      "currencies": ["USD", "EUR", "PHP"],
      "currencyRailMap": {
        "USD": ["ach", "wire"],
        "EUR": ["sepa"],
        "PHP": ["bank_transfer"]
      }
    },
    "wallet": {
      "currencies": ["USDC", "USDCPOLYGON", "USDCARBITRUM"],
      "rails": ["arbitrum", "ethereum", "polygon"],
      "railLabels": ["Arbitrum", "Ethereum", "Polygon"]
    }
  }
}
Two sections: bank for fiat, wallet for stablecoin. Call before POST /recipients.
Scope recipients:read

Headers

Authorization
string
required
API key.

Query parameters

relationship
string
Optional. self or third_party.
country
string
Optional ISO 3166-1 alpha-2. Filters out rails not valid for the country.

Response

success
boolean
true on success.
data
object
The merged schema.

Field requirement object

Every entry in data.fields has this shape:
name
string
JSON key on the create-recipient body.
type
string
string · number · enum · object · array.
required
boolean
Required on submit.
description
string
Form label / hint.
enum
string[]
Allowed values (enum).
visibleWhen
object
Show only when sibling fields match (e.g. { rail: ["ach", "wire"] }).
{
  "success": true,
  "data": {
    "required": true,
    "fields": [
      { "name": "email", "type": "string", "required": true },
      { "name": "country", "type": "string", "required": true },
      { "name": "transferType", "type": "enum", "required": true, "enum": ["fiat", "stablecoin"] },
      { "name": "accountNumber", "type": "string", "required": true, "visibleWhen": { "transferType": ["fiat"] } },
      { "name": "routingNumber", "type": "string", "required": true, "visibleWhen": { "rail": ["ach", "wire"] } },
      { "name": "iban", "type": "string", "required": true, "visibleWhen": { "rail": ["sepa"] } }
    ],
    "bank": {
      "currencies": ["USD", "EUR", "PHP"],
      "currencyRailMap": {
        "USD": ["ach", "wire"],
        "EUR": ["sepa"],
        "PHP": ["bank_transfer"]
      }
    },
    "wallet": {
      "currencies": ["USDC", "USDCPOLYGON", "USDCARBITRUM"],
      "rails": ["arbitrum", "ethereum", "polygon"],
      "railLabels": ["Arbitrum", "Ethereum", "Polygon"]
    }
  }
}

Errors

StatusCodeMeaning
400No active routing yet — complete KYB first.
401UNAUTHORIZEDMissing/invalid key.
403FORBIDDENKey lacks recipients:read.