Create Recipients

Create recipients with payment details for transfers.

Before You Start

Read the following guides before proceeding:

GuideWhy
Getting StartedPlatform overview and setup
Api BasicsRequired headers and request configuration
AuthenticationHow to obtain access tokens
OnboardingUser and wallet registration

Overview

Use the v2 endpoint to create a recipient with personal info and payment details in a single call.


Create Recipient

Endpoint

POST /api/v2/recipients

Request Structure

{
  "first_name": "string",
  "last_name": "string",
  "company_name": "string",
  "is_business": false,
  "nick_name": "string",
  "type": "Card",
  "currencies": ["EUR", "USD"],
  "card": { ... },
  "sepa": { ... },
  "ach": { ... },
  "crypto": { ... }
}

Common Fields

FieldTypeRequiredDescription
first_namestringYes*First name (personal recipients)
last_namestringYes*Last name (personal recipients)
company_namestringYes*Company name (business recipients)
is_businessbooleanYesfalse for personal, true for business
nick_namestringNoOptional display name (max 127 characters)
typestringYesPayment type: Card, Sepa, Ach, Crypto, etc.
currenciesstring[]YesCurrencies the recipient can accept

*Provide either first_name + last_name for personal recipients, or company_name for business recipients. For Crypto type with a nickname, personal info can be omitted.


Payment Type: Card

For push to card transfers. Requires prior card tokenization via PCI environment.

{
  "first_name": "Alex",
  "last_name": "Grey",
  "is_business": false,
  "type": "Card",
  "currencies": ["EUR", "USD", "GBP"],
  "card": {
    "card_id": "tok_a1b2c3d4e5f6789012345678",
    "card_pan_last": "4242"
  }
}
FieldTypeRequiredDescription
card.card_idstringYesCard token from PCI tokenization
card.card_pan_laststringYesLast 4 digits of card number

Payment Type: Sepa

For EUR bank transfers within SEPA zone.

{
  "first_name": "Alex",
  "last_name": "Grey",
  "is_business": false,
  "type": "Sepa",
  "currencies": ["EUR"],
  "sepa": {
    "iban": "DE89370400440532013000",
    "bic": "COBADEFFXXX"
  }
}
FieldTypeRequiredDescription
sepa.ibanstringYesIBAN (International Bank Account Number)
sepa.bicstringYesBIC/SWIFT code

Payment Type: Ach

For USD bank transfers within the US.

{
  "first_name": "Alex",
  "last_name": "Grey",
  "is_business": false,
  "type": "Ach",
  "currencies": ["USD"],
  "ach": {
    "routing_number": "021000021",
    "account_number": "123456789",
    "bank_name": "JPMorgan Chase",
    "legal_address": {
      "country": "US",
      "city": "New York",
      "zip_code": "10001",
      "line1": "123 Main Street",
      "state": "NY"
    }
  }
}
FieldTypeRequiredDescription
ach.routing_numberstringYesABA routing number (9 digits)
ach.account_numberstringYesBank account number
ach.bank_namestringNoBank name
ach.legal_addressobjectYesRecipient's legal address

Legal Address

FieldTypeRequiredDescription
countrystringYesCountry code (e.g., "US")
citystringYesCity name
zip_codestringYesPostal code
line1stringYesStreet address
line2stringNoAdditional address info
statestringNoState/province code

Payment Type: Crypto

For blockchain transfers.

{
  "nick_name": "My ETH Wallet",
  "is_business": false,
  "type": "Crypto",
  "currencies": ["USDC", "USDT"],
  "crypto": {
    "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
    "network": "Base"
  }
}
FieldTypeRequiredDescription
crypto.addressstringYesBlockchain wallet address
crypto.networkstringYesNetwork name (e.g., "Base", "Ethereum")

Note: For Crypto recipients, nick_name can replace personal info (first_name/last_name).


Response

{
  "id": "77fc49bd-1d7d-41d9-beea-a0aee0dc8c35",
  "personal_info": {
    "first_name": "Alex",
    "last_name": "Grey",
    "is_business": false
  },
  "payment_details": [
    {
      "id": "c34908da-d980-4a9c-9b39-4dabd6f6144e",
      "type": "Card",
      "currencies": ["EUR", "USD", "GBP"],
      "card": {
        "card_id": "tok_a1b2c3d4e5f6789012345678",
        "card_pan_last": "4242"
      }
    }
  ]
}

The payment_details[].id is used as the identifier when initiating transfers (e.g., external_card_id for push to card).


Add Payment Details to Existing Recipient

Add additional payment methods to an existing recipient.

Endpoint

POST /api/v1/recipients/{recipient_id}/payment_details

Request

{
  "type": "Sepa",
  "currencies": ["EUR"],
  "sepa": {
    "iban": "DE89370400440532013000",
    "bic": "COBADEFFXXX"
  }
}

Response

{
  "id": "d45019eb-e091-5b0d-0c4a-5ebce7255f0f"
}

Error Handling

Validation Errors

Error ReasonFieldDescription
ErrorMissingFieldfirst_nameFirst name required for personal recipients
ErrorMissingFieldlast_nameLast name required for personal recipients
ErrorMissingFieldcompany_nameCompany name required for business recipients
ErrorMissingFieldtypePayment type is required
ErrorMissingFieldcurrenciesAt least one currency required
ErrorMissingFieldcardCard details required when type is Card
ErrorMissingFieldcard.card_idCard token is required
ErrorMissingFieldcard.card_pan_lastLast 4 digits required
ErrorInvalidFieldcard.card_pan_lastMust be exactly 4 digits
ErrorMissingFieldsepa.ibanIBAN is required
ErrorMissingFieldsepa.bicBIC is required
ErrorInvalidFieldsepa.ibanInvalid IBAN format
ErrorInvalidFieldsepa.bicInvalid BIC format
ErrorMissingFieldach.routing_numberRouting number is required
ErrorMissingFieldach.account_numberAccount number is required
ErrorMissingFieldach.legal_addressLegal address is required for ACH

Error Response Format

{
  "error_reason": "ErrorMissingField",
  "error_description": "first name is required",
  "error_category": {
    "category": "CategoryValidationFailure",
    "http_status_code": 400
  },
  "error_details": [
    {
      "key": "field",
      "details": "first_name"
    },
    {
      "key": "issue",
      "details": "missing"
    }
  ]
}