Depa LogoDocsv1
API Reference

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 by referral.
  • 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.

List bank accounts

GET/accounts/{account_id}/bank_accounts

Returns 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
AuthorizationBearer <token>

Token from POST /sign_in, sent as Authorization: Bearer <token>.

In: header

Path Parameters

account_id*string

ID of the account.

Formatuuid

Query Parameters

filter[kind]?string

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    }  ]}

Create a bank account

POST/accounts/{account_id}/bank_accounts

Issues 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, USD or GBP. Send the holder's details (email, ip, address and, for USD, phone, document_type and document_number). EUR IBANs are issued in Malta unless you set iban_country: NL.
  • Other vaults get an omnibus deposit account in EUR or USD; only currency is needed. If the account already has a deposit account in that currency, the response is 422.

Authorization

BearerAuth
AuthorizationBearer <token>

Token from POST /sign_in, sent as Authorization: Bearer <token>.

In: header

Path Parameters

account_id*string

ID of the account.

Formatuuid

Request 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  }}

Retrieve a bank account

GET/accounts/{account_id}/bank_accounts/{id}

Returns a bank account with its account details and balance.

Authorization

BearerAuth
AuthorizationBearer <token>

Token from POST /sign_in, sent as Authorization: Bearer <token>.

In: header

Path Parameters

account_id*string

ID of the account.

Formatuuid
id*string

ID of the bank account.

Formatuuid

Response 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  }}

Close a virtual IBAN

PUT/accounts/{account_id}/bank_accounts/{id}/close

Closes a virtual IBAN so it stops receiving payments. Closing is permanent; a closed IBAN can't be reopened.

Authorization

BearerAuth
AuthorizationBearer <token>

Token from POST /sign_in, sent as Authorization: Bearer <token>.

In: header

Path Parameters

account_id*string

ID of the account.

Formatuuid
id*string

ID of the bank account to close.

Formatuuid

Response 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"
Empty
🍪 We do not track your behaviour or use any cookie on this site.