Skip to Content

Create Customer

POST/customers

Description

Create a customer (the person sending crypto). Returns a kyc_url to send the customer through identity verification, and the customer’s persistent deposit_addresses.

The customer must reach active status (KYC complete) before you can create a payout for them.

Headers

HeaderDescriptionRequired
AuthorizationBearer token with your API keyyes
Content-Typeapplication/jsonyes

Request Body

NameTypeDescriptionRequired
personobjectThe individual: { "first_name", "last_name", "email" }.yes
external_idstringYour own reference for this customer (e.g., your internal user id).no

Example Request

const response = await fetch('https://checkout-api.exodus-int.com/customers', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer sk_live_xxxxxxxxxxxxxxxx',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    person: { first_name: 'Ada', last_name: 'Lovelace', email: '[email protected]' },
    external_id: 'STU-12345',
  }),
});

Response

SUCCESSFUL RESPONSE
{
  "id": "cus_9z8y7x",
  "object": "customer",
  "status": "kyc_pending",
  "external_id": "STU-12345",
  "kyc_url": "https://verify.exodus.com/v/abc123",
  "deposit_addresses": [
    { "address": "0x369aF2…9EDd", "chains": ["ethereum", "arbitrum", "base", "polygon"], "tokens": ["USDC", "USDT"] },
    { "address": "GEhVdAGr…vpJMq", "chains": ["solana"], "tokens": ["USDC", "USDT"] }
  ],
  "created_at": "2026-06-04T12:01:00Z"
}

Redirect the customer to kyc_url. Listen for the customer.activated webhook before creating a payout.

Error Responses

VALIDATION ERROR
{
  "error": {
    "type": "validation_error",
    "message": "email is required",
    "param": "person.email"
  }
}

Start building

XO

Request Demo

Schedule a call with our team

Select a product
Arrow right

Start building
Grateful

Contact Us

We're here to help