Customer accounts
Optional banking product — EUR/USD IBAN, stablecoin ledger, sends, book transfers, currency conversions, payouts, and cards. Give each vault customer bankable and on-chain balances under onecustomer_id (pcus_*):
- Fiat accounts — e.g. EUR (IBAN) and USD (account / routing or SWIFT when returned)
- Stablecoin accounts — e.g. USDC / USDT on Base or Polygon
account_id for deposit instructions, stablecoin sends, book transfers, currency conversions, payouts, and cards. Corridor quote → accept uses customer_id only — no account open required.
Sandbox funding: usable balance for outbound stablecoin sends may require an Element Pay sandbox credit. See deposit instructions.
Auth and environments
Production:https://api.elementpay.net/api/v1 with is_live_… keys.
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 data.products.deposit_account.status is ready2
Open a rail (optional)
POST /partner/customers/{customer_id}/accounts when you need a new fiat or stablecoin rail3
List accounts
GET /partner/customers/{customer_id}/accounts → pick account_id4
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.Stablecoin
network is required: Base or Polygon. Currency: USDC or USDT.
data.id as account_id.
3. List accounts
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
- Deposit instructions: fund a fiat or stablecoin rail
- Quickstart: corridor quote → accept as an alternate funding / exit path
- Stablecoin sends: preview → confirm → poll
- Route cheat sheet