Skip to main content

Customer accounts

Give each vault customer bankable and on-chain balances under one customer_id (pcus_*):
  • Fiat accounts — e.g. EUR (IBAN) and USD (account / routing or SWIFT when returned) bank rails for receiving transfers
  • Stablecoin accounts — e.g. USDC / USDT wallets on Base or Polygon
Open or list rails, then use each account_id for deposit instructions, stablecoin sends, book transfers / payouts / cards, or corridor quote → accept where that funds the same customer. Prerequisite: Customers quickstart until vault status is approved (or active).
Sandbox funding: usable balance for outbound stablecoin sends may require an Element Pay sandbox credit. See deposit instructions.
USD fiat for Kenya individuals: opening a USD fiat account is not available when the customer is an individual with Kenya residence (country / residence KE). The API returns 422 with message USD bank accounts are not available for this customer region and data.code: unsupported_region. EUR / GBP / CAD (and other non-USD fiats) and stablecoin rails can still open for those customers when otherwise eligible. Issued cards require an active USD account (Cards), so KE individuals cannot issue cards.

Auth and environments

Gate

approved alone does not unlock accounts. Always read both fields from GET /partner/customers/{customer_id}. Prefer the customer.deposit_account.updated webhook (and customer.approved) over polling — see Webhooks. Poll GET as a backup until products.deposit_account.status is ready. If account routes are called before ready, the API returns 409 with message Deposit account is not ready. Response data includes deposit_account_status (current status) or, in some cases, reason: banking_profile_incomplete.

Happy path

1

Confirm banking ready

Prefer customer.deposit_account.updated (Webhooks); or poll GET /partner/customers/{customer_id} until deposit_account.status=ready
2

Open a rail (optional)

POST /partner/customers/{customer_id}/accounts when you need a new fiat or stablecoin rail
3

List accounts

GET /partner/customers/{customer_id}/accounts → pick account_id
4

Get one (optional)

GET /partner/customers/{customer_id}/accounts/{account_id}
5

Next

Fund via deposit instructions, corridor quote → accept where applicable, then stablecoin sends or other money-movement guides when you have balance

1. Poll customer

2. Open an account

Idempotent on the rail tuple (asset_type + currency + network for stablecoin). Opening an existing rail returns 200 with the existing account; a new rail returns 201.

Fiat (bank rail)

Example: EUR (IBAN). USD (where enabled) returns account / routing or SWIFT-style fields when ready, not always an IBAN.
After open, deposit instructions return the bank coordinates to show the end-customer (EUR: IBAN/BIC; USD: account number and routing / SWIFT when provisioned; GBP: account and sort code when returned).

Stablecoin

network is required: Base or Polygon. Currency: USDC or USDT.
Save data.id as account_id.

3. List accounts

Typical fields: id, customer_id, asset_type, currency, network, status, balances, and rail coordinates when ready (for example account_number / bank fields for fiat, wallet_address for stablecoin).

4. Get one account

Errors

Next