Accounts
An account owns balances, bank accounts, blockchain wallets and ledger entries. Each account belongs to a vault and is linked to the identification of its holder.
- Your organization has a main account. Create a sub-account for each of your customers to keep their funds and records segregated.
- Link an account to its holder with
identification_uuid, or with theexternal_uuidyou gave the identification. referralis the account's payment reference. Incoming transfers to a pooled bank account that quote it are credited to this account automatically; transfers without a recognised reference wait aspendinguntil you assign them (see Fiat Payments).balanceis a quick per-currency summary. For the authoritative figures and the entries behind them, use Ledger.
/accountsReturns the accounts your user can access, your main account and its sub-accounts, with a balance summary and the verification status of each holder.
Authorization
BearerAuth Token from POST /sign_in, sent as Authorization: Bearer <token>.
In: header
Query Parameters
Page number, starting at 1.
1 <= value1Number of results per page. Defaults to 80.
1 <= valueResponse Body
application/json
application/json
curl -X GET "https://example.com/accounts?page=1&per_page=80"{ "data": [ { "id": "8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23", "referral": "P2ZRZ5", "status": "active", "alias": "Acme Ltd – operating", "created_at": 1772813114, "balance": { "EUR": 12500.5, "USDC": 3000 }, "status_verification": "approved", "complete_name": "Acme Ltd", "identification_external_uuid": "016aba24-5d22-4008-b7ed-0c77bbe044c6", "identification_uuid": "25f21bf7-54d2-4b47-9db2-af48558df5eb" } ], "pagination": { "current_page": 1, "per_page": 80, "total_pages": 1, "total_count": 2 }}/accountsCreates a sub-account and links it to the identification of its holder. Identify the
identification with identification_uuid (Depa's ID) or external_uuid (your ID for it).
Returns 404 with the code identification_not_found if no identification matches.
Authorization
BearerAuth Token from POST /sign_in, sent as Authorization: Bearer <token>.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Link the new account to an identification with either identification_uuid or external_uuid.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/accounts" \ -H "Content-Type: application/json" \ -d '{ "identification_uuid": "25f21bf7-54d2-4b47-9db2-af48558df5eb" }'{ "data": { "id": "8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23", "referral": "P2ZRZ5", "status": "active", "alias": "Acme Ltd – operating", "created_at": 1772813114, "balance": { "EUR": 12500.5, "USDC": 3000 }, "status_verification": "approved", "complete_name": "Acme Ltd", "identification_external_uuid": "016aba24-5d22-4008-b7ed-0c77bbe044c6", "identification_uuid": "25f21bf7-54d2-4b47-9db2-af48558df5eb" }}/accounts/{id}Returns an account with its balance summary and the verification status of its holder.
Authorization
BearerAuth Token from POST /sign_in, sent as Authorization: Bearer <token>.
In: header
Path Parameters
ID of the account.
uuidResponse Body
application/json
application/json
application/json
curl -X GET "https://example.com/accounts/8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23"{ "data": { "id": "8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23", "referral": "P2ZRZ5", "status": "active", "alias": "Acme Ltd – operating", "created_at": 1772813114, "balance": { "EUR": 12500.5, "USDC": 3000 }, "status_verification": "approved", "complete_name": "Acme Ltd", "identification_external_uuid": "016aba24-5d22-4008-b7ed-0c77bbe044c6", "identification_uuid": "25f21bf7-54d2-4b47-9db2-af48558df5eb" }}/accounts/{id}Changes an account's alias, its payment reference (referral) or the identification it's linked to. Send only the fields you want to change.
Authorization
BearerAuth Token from POST /sign_in, sent as Authorization: Bearer <token>.
In: header
Path Parameters
ID of the account.
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Send only the fields you want to change.
Response Body
application/json
application/json
application/json
application/json
curl -X PUT "https://example.com/accounts/8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23" \ -H "Content-Type: application/json" \ -d '{ "alias": "Acme Ltd – operating" }'{ "data": { "id": "8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23", "referral": "P2ZRZ5", "status": "active", "alias": "Acme Ltd – operating", "created_at": 1772813114, "balance": { "EUR": 12500.5, "USDC": 3000 }, "status_verification": "approved", "complete_name": "Acme Ltd", "identification_external_uuid": "016aba24-5d22-4008-b7ed-0c77bbe044c6", "identification_uuid": "25f21bf7-54d2-4b47-9db2-af48558df5eb" }}/accounts/{account_id}/link_blockchain_paymentAssigns an on-chain deposit to a sub-account. Use it after a customer sends funds to a deposit wallet of your main account: pass the transaction hash, and Depa checks the transaction against the wallet's whitelisted asset and network before crediting the account in the path.
Authorization
BearerAuth Token from POST /sign_in, sent as Authorization: Bearer <token>.
In: header
Path Parameters
ID of the account.
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/accounts/8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23/link_blockchain_payment" \ -H "Content-Type: application/json" \ -d '{ "tx_hash": "0x9fc76417374aa880d4449a1f7f31ec597f00b1f6f3dd2d66f4c9c6c445836d8b", "to_sepa": false }'{ "data": [ { "id": "0c4f8a2e-6b1d-4e7a-8f3c-9d5b2a1e7c60", "amount": "500.0", "currency": "USDC", "kind": "outgoing", "status": "sent", "created_at": 1772813114, "approval_progress": "1/2", "initiated_by": "maria@acme.example", "approved_by": [ "jon@acme.example" ], "rejected_by": null } ]}/accounts/{account_id}/withdrawSends funds from the account to its holder's registered source bank account. Use it when each customer has a single external bank account; to pay any other account, create a fiat payment.
Authorization
BearerAuth Token from POST /sign_in, sent as Authorization: Bearer <token>.
In: header
Path Parameters
ID of the account.
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/accounts/8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23/withdraw" \ -H "Content-Type: application/json" \ -d '{ "amount": 250, "description": "Withdrawal March 2026" }'{ "data": { "id": "7e2a9c4b-5d1f-4b8e-9a3c-6f0e2d8b1a74", "iban": "DE89370400440532013000", "description": "Invoice 2026-0142", "recipient": "Müller Bürobedarf GmbH", "amount": "1250.0", "currency": "EUR", "kind": "outgoing", "status": "sent", "card_bin": null, "last_four": null, "account_number": null, "fiat_payment_fee": 1.5, "created_at": 1772447756, "approval_progress": "1/2", "initiated_by": "maria@acme.example", "approved_by": [ "jon@acme.example" ], "rejected_by": null, "payment_rail": "sepa", "settlement_status": null, "refusal_description": null }}