Quickstart
From a fresh account to your first live response in about five minutes, using a free sandbox bank. No real bank connection required.
1. Create an account
Sign up at the developer portal. New accounts start on the free sandbox tier, so you can build everything below at no cost.
2. Create an API key
In the portal, open API keys and create one. The secret is shown once, at creation time, and never again, so copy it straight away. Every key looks like edk_… and is sent as a bearer token on every request.
Keep your key secret
3. Provision a sandbox bank
In the portal, click Provision sandbox. This creates a deterministic sandbox bank on your account with a few accounts and realistic transactions. Sandbox data has the exact same shape as production and never bills, and every record it returns carries "sandbox": true so you can tell it apart.
4. List your accounts
Call GET /accounts with your key. You get back the connected accounts on your account, each with a stable id you use for the following calls.
curl https://api.endute.com/v1/accounts \
-H "Authorization: Bearer edk_a1B2c3D4_EXAMPLEexampleEXAMPLEexampleEXAMPLEexample1"[
{
"id": "6f2b6c0e-7d1a-4a2e-9f0b-2c9a1e5d4b3a",
"institution": "Endute Sandbox Bank",
"name": "Everyday Current",
"masked_identifier": "4321",
"currency": "GBP",
"status": "enabled",
"sandbox": true,
"last_synced_at": "2026-07-01T09:14:22Z",
"oldest_booking_date": "2026-05-02"
},
{
"id": "b8e4d2a1-1c3f-4e5a-8b6d-0f2a7c9e1d4b",
"institution": "Endute Sandbox Bank",
"name": "Rainy Day Savings",
"masked_identifier": "8890",
"currency": "GBP",
"status": "enabled",
"sandbox": true,
"last_synced_at": "2026-07-01T09:14:23Z",
"oldest_booking_date": "2026-05-02"
}
]5. Fetch transactions
Use an account id to read its transactions. The feed is newest-first and cursor-paginated: follow the next URL to walk it. Each transaction keeps the raw bank description verbatim and adds an enrichment object with a merchant name, category and, when known, the merchant's website domain (brand_domain) you can feed to a logo service to show merchant logos.
curl "https://api.endute.com/v1/accounts/6f2b6c0e-7d1a-4a2e-9f0b-2c9a1e5d4b3a/transactions" \
-H "Authorization: Bearer edk_a1B2c3D4_EXAMPLEexampleEXAMPLEexampleEXAMPLEexample1"{
"next": "https://api.endute.com/v1/accounts/6f2b6c0e-7d1a-4a2e-9f0b-2c9a1e5d4b3a/transactions?cursor=cD0yMDI2LTA2LTI4",
"previous": null,
"results": [
{
"id": "d1c2b3a4-5e6f-4708-9a0b-1c2d3e4f5061",
"booking_date": "2026-06-30",
"value_date": "2026-06-30",
"amount": "-12.80",
"currency": "GBP",
"description": "TESCO STORES 3421 LONDON GB",
"counterparty": "Tesco Stores",
"enrichment": {
"merchant_name": "Tesco",
"category": "Groceries",
"brand_domain": "tesco.com",
"confidence": null,
"source": null
},
"sandbox": true
},
{
"id": "a9b8c7d6-4e5f-4031-8a2b-9c8d7e6f5041",
"booking_date": "2026-06-29",
"value_date": "2026-06-29",
"amount": "1850.00",
"currency": "GBP",
"description": "SALARY ACME LTD",
"counterparty": "Acme Ltd",
"enrichment": {
"merchant_name": null,
"category": "Income",
"brand_domain": null,
"confidence": null,
"source": null
},
"sandbox": true
}
]
}6. Read a balance
Balances are cached and served with a fetched_at timestamp so you always know how current they are. Reading a balance never triggers a live bank fetch.
curl "https://api.endute.com/v1/accounts/6f2b6c0e-7d1a-4a2e-9f0b-2c9a1e5d4b3a/balances" \
-H "Authorization: Bearer edk_a1B2c3D4_EXAMPLEexampleEXAMPLEexampleEXAMPLEexample1"{
"account_id": "6f2b6c0e-7d1a-4a2e-9f0b-2c9a1e5d4b3a",
"balance": "1284.5600",
"currency": "GBP",
"fetched_at": "2026-07-01T09:14:22Z"
}Next steps
- Endpoint reference: every path, parameter and response field.
- Pagination & errors: walking the feed and handling error responses.
- When you are ready for real data, connect a bank from the portal. Billing only starts once a real account is connected.
