Bank Accounts
Bank accounts are the fiat accounts attached to an account, from named IBANs for your customers to the external accounts they withdraw to.
- Deposit accounts (
kind: deposits) are issued by Depa. Depending on your vault they're named virtual IBANs in your customer's name, or an omnibus account shared by your customers and matched byreferral. - Source accounts (
kind: source) are your customer's own external accounts, used as withdrawal destinations.
EUR IBANs are issued in Malta by default; pass iban_country: NL for a Dutch IBAN. USD
accounts need extra holder details. Money arriving on a bank account posts to the ledger
and is reported by webhook. Closing a virtual IBAN is permanent.
/accounts/{account_id}/bank_accountsReturns the bank accounts of an account. Filter with filter[kind]=deposits for the
accounts Depa issued, or filter[kind]=source for your customer's external accounts.
Authorization
BearerAuth Token from POST /sign_in, sent as Authorization: Bearer <token>.
In: header
Path Parameters
ID of the account.
uuidQuery Parameters
Return only deposits or source bank accounts.
Value in
- "deposits"
- "source"
Response Body
application/json
application/json
application/json
curl -X GET "https://example.com/accounts/8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23/bank_accounts?filter%5Bkind%5D=deposits"{ "data": [ { "id": "6d1c9e2a-3f4b-4c8d-a7e6-5b2f0e9d1c47", "name": "Acme Ltd – EUR", "holder_name": "Acme Ltd", "iban": "MT84MALT011000012345MTLCAST001S", "subject": null, "kind": "deposits", "bic": "MALTMTMT", "currency": "EUR", "account_number": null, "sort_code": null, "balance": 12500.5, "created_at": 1772813114, "swift": null } ]}/accounts/{account_id}/bank_accountsIssues a bank account in currency for the account. What you get depends on your vault:
- Virtual IBAN vaults get a named account in the holder's name, in
EUR,USDorGBP. Send the holder's details (email,ip, address and, for USD,phone,document_typeanddocument_number). EUR IBANs are issued in Malta unless you setiban_country: NL. - Other vaults get an omnibus deposit account in
EURorUSD; onlycurrencyis needed. If the account already has a deposit account in that currency, the response is422.
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.
Only currency is needed for an omnibus deposit account. For a named virtual IBAN, send the
holder's details too; USD accounts also need phone, document_type and document_number.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/accounts/8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23/bank_accounts" \ -H "Content-Type: application/json" \ -d '{ "currency": "EUR" }'{ "data": { "id": "6d1c9e2a-3f4b-4c8d-a7e6-5b2f0e9d1c47", "name": "Acme Ltd – EUR", "holder_name": "Acme Ltd", "iban": "MT84MALT011000012345MTLCAST001S", "subject": null, "kind": "deposits", "bic": "MALTMTMT", "currency": "EUR", "account_number": null, "sort_code": null, "balance": 12500.5, "created_at": 1772813114, "swift": null }}/accounts/{account_id}/bank_accounts/{id}Returns a bank account with its account details and balance.
Authorization
BearerAuth Token from POST /sign_in, sent as Authorization: Bearer <token>.
In: header
Path Parameters
ID of the account.
uuidID of the bank account.
uuidResponse Body
application/json
application/json
application/json
curl -X GET "https://example.com/accounts/8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23/bank_accounts/6d1c9e2a-3f4b-4c8d-a7e6-5b2f0e9d1c47"{ "data": { "id": "6d1c9e2a-3f4b-4c8d-a7e6-5b2f0e9d1c47", "name": "Acme Ltd – EUR", "holder_name": "Acme Ltd", "iban": "MT84MALT011000012345MTLCAST001S", "subject": null, "kind": "deposits", "bic": "MALTMTMT", "currency": "EUR", "account_number": null, "sort_code": null, "balance": 12500.5, "created_at": 1772813114, "swift": null }}/accounts/{account_id}/bank_accounts/{id}/closeCloses a virtual IBAN so it stops receiving payments. Closing is permanent; a closed IBAN can't be reopened.
Authorization
BearerAuth Token from POST /sign_in, sent as Authorization: Bearer <token>.
In: header
Path Parameters
ID of the account.
uuidID of the bank account to close.
uuidResponse Body
application/json
application/json
curl -X PUT "https://example.com/accounts/8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23/bank_accounts/6d1c9e2a-3f4b-4c8d-a7e6-5b2f0e9d1c47/close"