curl --request GET \
--url https://api.next.orenda.finance/v1/accounts \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.next.orenda.finance/v1/accounts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.next.orenda.finance/v1/accounts"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"success": true,
"total": 1,
"page": 1,
"limit": 10,
"data": [
{
"accountId": "e4f5a6b7-3333-4d4e-8f5a-bbbbccccdddd",
"accountProviderAccountId": "ACC-558201",
"customerId": "c9f8e7d6-1111-4b2c-8d3e-444455556666",
"programId": "examplebank",
"applicationId": "a7b8c9d0-2222-4e3f-9a0b-ccccddddeeee",
"name": "Main EUR account",
"currency": "EUR",
"accountProvider": "examplebank",
"iban": "NL91ABNA0417164300",
"bankName": "Example Bank",
"bankAddress": "Example Bank N.V., 1 Example Street, 1016 EJ Amsterdam",
"status": "ACTIVE",
"accountType": "Personal",
"accountTier": "default",
"tier": "default",
"balance": "1542.00",
"availableBalance": "1500.00",
"isSandbox": false,
"created": "2026-06-29T09:14:00.000Z",
"payLock": false
}
]
}Search accounts
Search customer accounts across providers.
Accounts in PENDING status are always excluded, regardless of any status filter you pass — this endpoint returns provisioned accounts only. Stored statuses are upper case: ACTIVE, BLOCKED, CLOSED, SUSPENDED, and status matches them exactly.
programId always sets the program scope here, so allPrograms has no effect on this endpoint.
Some filters are named for the stored field rather than the one in the response: accountName filters what comes back as name, and provider filters the stored composite of account and card provider (<account>-<card>) while the response carries accountProvider and cardProvider.
CSV exports (resultType=file) carry exactly the fields of the JSON results, with nested objects and arrays (limits, balances, statusHistory) expanded into their own columns. Fields that are not part of that contract — provider holder ids, the internal request and lock bookkeeping — are not exported. An export covers every match: page and limit are ignored, total and limit in the response are the number of exported rows, and page is 1. A very large export can exceed the function’s time limit; narrow the filters if that happens.
page, limit, sortBy, sortOrder, fromDate and toDate reach the search engine without validation. A query it rejects — an unknown sortBy, a malformed date — fails with 422 and must be corrected rather than retried; the same 422 also covers a search-engine failure, which is worth a retry.
This endpoint does not accept keyword; use the specific identifier filters below.
All filters accept comma-separated values for multi-select.
curl --request GET \
--url https://api.next.orenda.finance/v1/accounts \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.next.orenda.finance/v1/accounts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.next.orenda.finance/v1/accounts"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"success": true,
"total": 1,
"page": 1,
"limit": 10,
"data": [
{
"accountId": "e4f5a6b7-3333-4d4e-8f5a-bbbbccccdddd",
"accountProviderAccountId": "ACC-558201",
"customerId": "c9f8e7d6-1111-4b2c-8d3e-444455556666",
"programId": "examplebank",
"applicationId": "a7b8c9d0-2222-4e3f-9a0b-ccccddddeeee",
"name": "Main EUR account",
"currency": "EUR",
"accountProvider": "examplebank",
"iban": "NL91ABNA0417164300",
"bankName": "Example Bank",
"bankAddress": "Example Bank N.V., 1 Example Street, 1016 EJ Amsterdam",
"status": "ACTIVE",
"accountType": "Personal",
"accountTier": "default",
"tier": "default",
"balance": "1542.00",
"availableBalance": "1500.00",
"isSandbox": false,
"created": "2026-06-29T09:14:00.000Z",
"payLock": false
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
The program to scope results to. Required on every request — including when you pass allPrograms=true. A request without it is rejected before it reaches the search.
Filter by customer ID. Comma-separated for multi-select.
Filter by custodian ID. Comma-separated for multi-select. Ignored for guardian-bound roles, which are always scoped to their own guardian.
Filter by status. Comma-separated for multi-select.
Lower bound (inclusive) on record date, ISO 8601.
Upper bound (inclusive) on record date, ISO 8601.
1-based page number. Defaults to 1.
x >= 1Maximum number of items per page.
x >= 1Field to sort results by.
Sort direction.
asc, desc Result format. json (default) returns inline results; file returns a presigned S3 CSV URL (valid 1 hour) in place of the data array.
json, file Customises the filename of the exported CSV when resultType=file.
Filter by Orenda account ID. Comma-separated for multi-select.
Filter by the provider's own account identifier. Comma-separated for multi-select.
Filter by account name. Comma-separated for multi-select.
Filter by account type. Comma-separated for multi-select.
Filter by IBAN. Comma-separated for multi-select.
Filter by account number. Comma-separated for multi-select.
Filter by sort code. Comma-separated for multi-select.
Filter by account provider. Comma-separated for multi-select.
Filter by currency (ISO 4217), e.g. EUR, GBP. Comma-separated for multi-select.
Filter by exact creation timestamp. Comma-separated for multi-select. For ranges use fromDate / toDate.
Returns available-balance report rows (with human column labels) instead of accounts: as JSON, or as a CSV export with resultType=file.
available-balance-report Response
Matching accounts, or a presigned export URL when resultType=file.
- Option 1
- Option 2
Inline JSON results, or — when resultType=file — a presigned CSV export URL.