Skip to main content
POST
/
v1
/
recipients
Create recipient
curl --request POST \
  --url https://api.daya.co/v1/recipients \
  --header 'Content-Type: application/json' \
  --header 'X-Api-Key: <x-api-key>' \
  --header 'X-Idempotency-Key: <x-idempotency-key>' \
  --data '
{
  "type": "<string>",
  "customer_id": "<string>",
  "bank_account": {
    "bank_account.account_number": "<string>",
    "bank_account.bank_code": "<string>",
    "bank_account.account_name": "<string>"
  },
  "crypto_address": {
    "crypto_address.asset": "<string>",
    "crypto_address.chain": "<string>",
    "crypto_address.address": "<string>"
  }
}
'
{
  "id": "750e8400-e29b-41d4-a716-446655440000",
  "type": "BANK_ACCOUNT",
  "first_name": "John",
  "last_name": "Doe",
  "bank_account": {
    "account_number": "1234567890",
    "account_name": "John Doe",
    "bank_code": "044",
    "bank_name": "Access Bank"
  },
  "crypto_address": null,
  "created_at": "2026-01-05T15:04:05Z"
}

Overview

Create a payout recipient (bank account or crypto address) that can be reused across payouts. Recipients are deduplicated by fingerprint — submitting the same account details will return the existing recipient rather than creating a duplicate.

Authentication

X-Api-Key
string
required
Your merchant API key
X-Idempotency-Key
string
required
Unique idempotency key to prevent duplicate requestsExample: 550e8400-e29b-41d4-a716-446655440000

Request Body

type
string
required
Recipient typeAllowed values: BANK_ACCOUNT | CRYPTO_ADDRESS
customer_id
string
Customer ID to associate with this recipient (UUID)Example: 650e8400-e29b-41d4-a716-446655440000
bank_account
object
Bank account details. Required when type is BANK_ACCOUNT.
crypto_address
object
Crypto address details. Required when type is CRYPTO_ADDRESS.

Request Example

curl --request POST \
  --url https://api.daya.co/v1/recipients \
  --header 'X-Api-Key: YOUR_API_KEY' \
  --header 'X-Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000' \
  --header 'Content-Type: application/json' \
  --data '{
    "type": "BANK_ACCOUNT",
    "bank_account": {
      "account_number": "1234567890",
      "bank_code": "044",
      "account_name": "John Doe"
    }
  }'

Response

id
string
required
Unique recipient identifier (UUID)
type
string
required
Recipient type (BANK_ACCOUNT or CRYPTO_ADDRESS)
first_name
string
Recipient first name (resolved from account details)
last_name
string
Recipient last name (resolved from account details)
bank_account
object
Bank account details. Present when type is BANK_ACCOUNT, null otherwise.
crypto_address
object
Crypto address details. Present when type is CRYPTO_ADDRESS, null otherwise.
created_at
string
required
When the recipient was created (ISO 8601 timestamp)

Success Response

{
  "id": "750e8400-e29b-41d4-a716-446655440000",
  "type": "BANK_ACCOUNT",
  "first_name": "John",
  "last_name": "Doe",
  "bank_account": {
    "account_number": "1234567890",
    "account_name": "John Doe",
    "bank_code": "044",
    "bank_name": "Access Bank"
  },
  "crypto_address": null,
  "created_at": "2026-01-05T15:04:05Z"
}

Error Responses

{
  "error": {
    "code": "validation_failed",
    "message": "Validation failed",
    "details": "bank_account is required when type is BANK_ACCOUNT"
  }
}

Notes

  • Recipients are deduplicated by fingerprint. If you submit the same bank account or crypto address details, the existing recipient is returned instead of creating a duplicate.
  • When account_name is omitted for a bank account recipient, the name is resolved automatically from the bank.
  • The customer_id field is optional. Associating a recipient with a customer allows you to filter recipients by customer later.

Next Steps

List recipients

Retrieve all saved payout recipients

Get recipient

Look up a single recipient by ID