Skip to main content

get-accounts

Get the user's bank accounts and cards. Returns each account with balances, identifiers (account number, plus IBAN/BBAN/BIC or masked PAN where the bank has them), holder, product, type, lifecycle status, and usage. Field shapes follow the Berlin Group PSD2 accountDetails model where they overlap.

Input

FieldTypeRequiredDescription
account_type"Current" | "Savings" | "Credit" | "Loan" | "Other" | nullFilter by account type. Current and Savings are the common spending and deposit accounts; Credit covers revolving credit / credit cards; Loan covers mortgages and amortizing loans. Debit and prepaid cards live under Current; their maskedPan field flags the attached card. Default: null.
only_withdrawal_accountsbooleanIf true, return only accounts usable as the source of an outgoing transfer or withdrawal. Default: false.
status"Enabled" | "Blocked" | "Deleted" | nullFilter by lifecycle status. Defaults to all statuses; pass Enabled to hide closed or blocked accounts. Default: null.
usage"Private" | "Business" | nullFilter by usage: personal (Private) or business (Business). Servers MAY ignore this if they do not track usage. Default: null.
Raw JSON Schema
{
"additionalProperties": false,
"properties": {
"account_type": {
"anyOf": [
{
"enum": [
"Current",
"Savings",
"Credit",
"Loan",
"Other"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter by account type. `Current` and `Savings` are the common spending and deposit accounts; `Credit` covers revolving credit / credit cards; `Loan` covers mortgages and amortizing loans. Debit and prepaid cards live under `Current`; their `maskedPan` field flags the attached card."
},
"only_withdrawal_accounts": {
"default": false,
"description": "If true, return only accounts usable as the source of an outgoing transfer or withdrawal.",
"type": "boolean"
},
"status": {
"anyOf": [
{
"enum": [
"Enabled",
"Blocked",
"Deleted"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter by lifecycle status. Defaults to all statuses; pass `Enabled` to hide closed or blocked accounts."
},
"usage": {
"anyOf": [
{
"enum": [
"Private",
"Business"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter by usage: personal (`Private`) or business (`Business`). Servers MAY ignore this if they do not track usage."
}
},
"type": "object"
}

Output

FieldTypeRequiredDescription
itemsarray<Account>Accounts matching the request.

items[]Account

Bank account with balance and metadata. Property names follow Berlin Group PSD2 accountDetails where they overlap (iban, bban, bic, maskedPan, product, status, usage), so servers fronting a PSD2 backend can map fields directly. Servers SHOULD populate at least one of accountNumber, iban, bban, or maskedPan.

FieldTypeRequiredDescription
accountNumberstringDisplay-friendly account number in the locally familiar format. For European accounts this is typically the IBAN; otherwise the domestic account number. Use the typed identifier fields (iban, bban, maskedPan) when you need to parse or route on it. Examples: "1234-56-789012", "GB29NWBK60161331926819", "0133-26-007890".
accountType"Current" | "Credit" | "Savings" | "Loan" | "Other" | nullType of account. Default: null.
availableBalancenumber | nullFunds available to spend right now in currency, after pending authorisations and including any overdraftLimit headroom. Aligns with the PSD2 interimAvailable balance type. Default: null.
balancenumberCurrent booked balance in currency. For credit accounts a negative value indicates an outstanding balance owed.
balanceUpdatedAtstring | nullISO 8601 timestamp at which balance and availableBalance were last refreshed by the bank. Default: null.
balancesarray<Balance> | nullTyped balance entries when the bank exposes more than just the booked and available scalars (ClosingBooked, Expected, InterimAvailable, ForwardAvailable, NonInvoiced). When populated, the top-level balance and availableBalance scalars are derived shortcuts for the most-recent ClosingBooked and InterimAvailable entries; servers MUST keep them consistent. Servers without typed balance support SHOULD omit this field and emit only the scalars. Default: null.
bbanstring | nullBasic Bank Account Number, the domestic identifier used in countries (or for products) without an IBAN. Default: null. Examples: "BARC12345612345678", "0133-26-007890".
bicstring | nullBIC / SWIFT code of the holding bank (ISO 9362). Default: null. Examples: "NWBKGB2L", "DEUTDEFF".
currencystringISO 4217 currency code of the account. For multi-currency accounts (per PSD2 convention) use XXX. Examples: "USD", "EUR", "ISK", "GBP", "XXX". Pattern: ^[A-Z]{3}$.
ibanstring | nullIBAN (ISO 13616), when the account has one. Default: null. Examples: "GB29NWBK60161331926819", "DE89370400440532013000".
idstringUnique account identifier (server-scoped)
isDefaultAccountboolean | nullWhether this is the user's default account for new transfers. At most one account per response SHOULD have this set to true. Default: null.
isWithdrawalAccountboolean | nullWhether this account can be used as the source of an outgoing transfer or withdrawal. Default: null.
maskedPanstring | nullMasked Primary Account Number for card accounts. The middle digits MUST be obscured. Default: null. Examples: "411111xxxxxx1111", "****-****-****-1234".
minimumPaymentDuenumber | nullCredit accounts only. Minimum payment required by paymentDueDate to keep the account current and avoid late fees, in currency. Servers MUST omit on non-credit accounts. Default: null.
namestring | nullHuman-readable account name set by the bank or the user. Default: null. Examples: "Main Checking", "Emergency Fund", "Visa Credit Card".
openedDatestring | nullDate the account was opened, ISO 8601 (YYYY-MM-DD). Default: null.
overdraftLimitnumber | nullApproved overdraft on a current/savings account or credit limit on a credit/card account, in currency. 0 (or omitted) means no extra headroom beyond balance. Default: null.
ownerNamestring | nullPrimary account holder's name as the bank holds it. For joint accounts, servers MAY join multiple names with , . Default: null. Examples: "Jane Doe", "Jane Doe & John Doe", "Acme Corp".
paymentDueDatestring | nullCredit accounts only. ISO 8601 date by which minimumPaymentDue must be paid. Servers MUST omit on non-credit accounts. Default: null.
productstring | nullBank's marketing name for the account product, per PSD2 product. Free-form and proprietary to the issuer. Default: null. Examples: "Premium Checking", "Visa Signature", "Easy Saver".
statementBalancenumber | nullCredit accounts only. Total billed on the most recent closed statement, in currency. Pay this in full by paymentDueDate to avoid interest charges. Servers MUST omit on non-credit accounts. Default: null.
statementClosingDatestring | nullCredit accounts only. ISO 8601 date the current billing cycle closes and the next statement is generated. Optional even on credit accounts; servers MUST omit on non-credit accounts. Default: null.
status"Enabled" | "Blocked" | "Deleted" | nullLifecycle status. If omitted, clients SHOULD treat the account as Enabled. Default: null.
usage"Private" | "Business" | nullWhether this is a personal or business account. Default: null.

balances[]Balance

One typed balance entry on an account. Profile of: Berlin Group PSD2 balances array element.

FieldTypeRequiredDescription
amountnumberBalance amount in currency.
asOfstring | nullISO 8601 timestamp when this balance was last refreshed. Default: null.
currencystringISO 4217 currency code. Pattern: ^[A-Z]{3}$.
type"ClosingBooked" | "Expected" | "InterimAvailable" | "ForwardAvailable" | "NonInvoiced"Balance type.
Raw JSON Schema
{
"description": "Envelope for a list of accounts",
"properties": {
"items": {
"description": "Accounts matching the request.",
"items": {
"description": "Bank account with balance and metadata.\n\nProperty names follow Berlin Group PSD2 `accountDetails` where they\noverlap (`iban`, `bban`, `bic`, `maskedPan`, `product`, `status`,\n`usage`), so servers fronting a PSD2 backend can map fields directly.\nServers SHOULD populate at least one of `accountNumber`, `iban`,\n`bban`, or `maskedPan`.",
"properties": {
"accountNumber": {
"description": "Display-friendly account number in the locally familiar format. For European accounts this is typically the IBAN; otherwise the domestic account number. Use the typed identifier fields (`iban`, `bban`, `maskedPan`) when you need to parse or route on it.",
"examples": [
"1234-56-789012",
"GB29NWBK60161331926819",
"0133-26-007890"
],
"type": "string"
},
"accountType": {
"anyOf": [
{
"description": "Type of bank account.\n\nAligned with the ISO 20022 ExternalCashAccountType1Code values exposed\nvia the Berlin Group PSD2 `cashAccountType`, collapsed to the buckets\nthat map cleanly across regions and reflect distinctions a user would\nactually ask about:\n\n - `Current` - day-to-day transaction account (ISO 20022 CACC).\n Debit cards and stored-value / prepaid cards live\n here too: `maskedPan` flags an attached card and the\n balance/availableBalance pair answers \"can I use it?\"\n - `Savings` - interest-bearing savings (ISO 20022 SVGS)\n - `Credit` - revolving credit / credit card account; carries the\n statement-cycle fields below (`statementBalance`,\n `minimumPaymentDue`, `paymentDueDate`, ...).\n - `Loan` - amortizing loan or mortgage (ISO 20022 LOAN)\n - `Other` - anything else (escrow, brokerage, etc.)",
"enum": [
"Current",
"Credit",
"Savings",
"Loan",
"Other"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Type of account."
},
"availableBalance": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Funds available to spend right now in `currency`, after pending authorisations and including any `overdraftLimit` headroom. Aligns with the PSD2 `interimAvailable` balance type."
},
"balance": {
"description": "Current booked balance in `currency`. For credit accounts a negative value indicates an outstanding balance owed.",
"type": "number"
},
"balanceUpdatedAt": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "ISO 8601 timestamp at which `balance` and `availableBalance` were last refreshed by the bank."
},
"balances": {
"anyOf": [
{
"items": {
"description": "One typed balance entry on an account.\n\nProfile of: Berlin Group PSD2 `balances` array element.",
"properties": {
"amount": {
"description": "Balance amount in `currency`.",
"type": "number"
},
"asOf": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "ISO 8601 timestamp when this balance was last refreshed."
},
"currency": {
"description": "ISO 4217 currency code.",
"pattern": "^[A-Z]{3}$",
"type": "string"
},
"type": {
"description": "Balance type.",
"enum": [
"ClosingBooked",
"Expected",
"InterimAvailable",
"ForwardAvailable",
"NonInvoiced"
],
"type": "string"
}
},
"required": [
"type",
"amount",
"currency"
],
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Typed balance entries when the bank exposes more than just the booked and available scalars (`ClosingBooked`, `Expected`, `InterimAvailable`, `ForwardAvailable`, `NonInvoiced`). When populated, the top-level `balance` and `availableBalance` scalars are derived shortcuts for the most-recent `ClosingBooked` and `InterimAvailable` entries; servers MUST keep them consistent. Servers without typed balance support SHOULD omit this field and emit only the scalars."
},
"bban": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Basic Bank Account Number, the domestic identifier used in countries (or for products) without an IBAN.",
"examples": [
"BARC12345612345678",
"0133-26-007890"
]
},
"bic": {
"anyOf": [
{
"pattern": "^[A-Z]{6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3})?$",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "BIC / SWIFT code of the holding bank (ISO 9362).",
"examples": [
"NWBKGB2L",
"DEUTDEFF"
]
},
"currency": {
"description": "ISO 4217 currency code of the account. For multi-currency accounts (per PSD2 convention) use `XXX`.",
"examples": [
"USD",
"EUR",
"ISK",
"GBP",
"XXX"
],
"pattern": "^[A-Z]{3}$",
"type": "string"
},
"iban": {
"anyOf": [
{
"pattern": "^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "IBAN (ISO 13616), when the account has one.",
"examples": [
"GB29NWBK60161331926819",
"DE89370400440532013000"
]
},
"id": {
"description": "Unique account identifier (server-scoped)",
"type": "string"
},
"isDefaultAccount": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether this is the user's default account for new transfers. At most one account per response SHOULD have this set to true."
},
"isWithdrawalAccount": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether this account can be used as the source of an outgoing transfer or withdrawal."
},
"maskedPan": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Masked Primary Account Number for card accounts. The middle digits MUST be obscured.",
"examples": [
"411111xxxxxx1111",
"****-****-****-1234"
]
},
"minimumPaymentDue": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Credit accounts only. Minimum payment required by `paymentDueDate` to keep the account current and avoid late fees, in `currency`. Servers MUST omit on non-credit accounts."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Human-readable account name set by the bank or the user.",
"examples": [
"Main Checking",
"Emergency Fund",
"Visa Credit Card"
]
},
"openedDate": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date the account was opened, ISO 8601 (YYYY-MM-DD)."
},
"overdraftLimit": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Approved overdraft on a current/savings account or credit limit on a credit/card account, in `currency`. `0` (or omitted) means no extra headroom beyond `balance`."
},
"ownerName": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Primary account holder's name as the bank holds it. For joint accounts, servers MAY join multiple names with `, `.",
"examples": [
"Jane Doe",
"Jane Doe & John Doe",
"Acme Corp"
]
},
"paymentDueDate": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Credit accounts only. ISO 8601 date by which `minimumPaymentDue` must be paid. Servers MUST omit on non-credit accounts."
},
"product": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Bank's marketing name for the account product, per PSD2 `product`. Free-form and proprietary to the issuer.",
"examples": [
"Premium Checking",
"Visa Signature",
"Easy Saver"
]
},
"statementBalance": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Credit accounts only. Total billed on the most recent closed statement, in `currency`. Pay this in full by `paymentDueDate` to avoid interest charges. Servers MUST omit on non-credit accounts."
},
"statementClosingDate": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Credit accounts only. ISO 8601 date the current billing cycle closes and the next statement is generated. Optional even on credit accounts; servers MUST omit on non-credit accounts."
},
"status": {
"anyOf": [
{
"description": "Lifecycle status of an account, per Berlin Group PSD2 `accountStatus`.",
"enum": [
"Enabled",
"Blocked",
"Deleted"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Lifecycle status. If omitted, clients SHOULD treat the account as `Enabled`."
},
"usage": {
"anyOf": [
{
"description": "How the account is used, per Berlin Group PSD2 `usage`.\n\n`Private` corresponds to PSD2 `PRIV` (personal); `Business` to `ORGA`\n(professional / organisation).",
"enum": [
"Private",
"Business"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether this is a personal or business account."
}
},
"required": [
"id",
"accountNumber",
"currency",
"balance"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"items"
],
"type": "object"
}