An open banking API for your own bank accounts.
Connect CommBank, Westpac, NAB, ANZ or any CDR bank once. Read your transactions and balances as JSON with a scoped key. No accreditation, no sales call, no ABN.
- read-only · CDR regulated
- 7 years of history
- from US$7/mo
$curl https://api.banksync.io/v1/banks/bnk_cba/accounts/acc_4021/transactions?from=2026-09-01 \ -H "X-API-Key: bsk_live_…" { "success": true, "data": [ { "date": "2026-10-08", "description": "Woolworths Surry Hills", "amount": -84.20, "category": "Groceries" }, { "date": "2026-10-07", "description": "Opal Card Top Up", "amount": -40.00, "category": "Transport" }, …41 more ], "meta": { "count": 43, "hasMore": false }}200 OK · 43 rows · 118 ms
What you get in Australia
- Data
- Transactions and balances. Read-only.
- History
- Up to 7 years on the first sync.
- Consent
- Up to 12 months, then you approve again at your bank.
- Framework
- Consumer Data Right · ACCC & Treasury
- Provider
- BankSync is a CDR Representative of Fiskil Pty Ltd, an Accredited Data Recipient (ADRBNK000246).
The banks you already use
- CommBank
- Westpac
- NAB
- ANZ
- Macquarie
- Up
- Bankwest
- Suncorp
How it works
- 1
Connect your own bank
Sign up, then connect CommBank, Westpac, NAB, ANZ or another CDR bank through your bank's own consent screen.
- 2
Create an API key
Workspace › Developers. Give it only the scopes it needs; revoke it any time.
banks:read - 3
Make your first call
Read transactions and balances as JSON with one GET request and your key in the X-API-Key header.
- 4
Or ask an AI agent
Point Claude, ChatGPT or Cursor at the MCP server and ask questions about the same data.
MCP
Call it your way
$curl -s "https://api.banksync.io/v1/banks/bnk_cba/accounts/acc_4021/transactions?from=2026-09-01" \ -H "X-API-Key: bsk_live_…" \ | jq '.data[] | {date, description, amount}'
import osimport requests r = requests.get( "https://api.banksync.io/v1/banks/bnk_cba/accounts/acc_4021/transactions", params={"from": "2026-09-01"}, headers={"X-API-Key": os.environ["BANKSYNC_API_KEY"]},)r.raise_for_status()for row in r.json()["data"]: print(row["date"], row["description"], row["amount"])
const res = await fetch('https://api.banksync.io/v1/banks/bnk_cba/accounts/acc_4021/transactions?from=2026-09-01', { headers: { 'X-API-Key': process.env.BANKSYNC_API_KEY },})if (!res.ok) throw new Error(`BankSync API ${res.status}`)const { data } = await res.json()console.table(data)
you ›How much did I spend at Woolworths and Coles last month?mcpget_transactions({ bankId: "bnk_cba", accountId: "acc_4021", from: "2026-09-01" })agent ›A$612.40 across 14 transactions: Woolworths A$388.15, Coles A$224.25. — same key, same data, in Claude, ChatGPT or Cursor —
Every endpoint
| Method | Endpoint | Description | Scope |
|---|---|---|---|
| GET | /v1/banks | List connected bank institutions | banks:read |
| GET | /v1/banks/:bankId/accounts | List accounts for a bank | banks:read |
| GET | /v1/banks/:bankId/accounts/:accountId/transactions | Query transactions with filters | banks:read |
| GET | /v1/banks/:bankId/accounts/:accountId/balances | Get the latest available balance | banks:read |
| GET | /v1/banks/:bankId/accounts/:accountId/holdings | Get current investment holdings | banks:read |
| GET | /v1/banks/:bankId/accounts/:accountId/loan | Get loan or liability details | banks:read |
| GET | /v1/feeds | List sync feeds | feeds:read |
| POST | /v1/feeds | Create a new sync feed | feeds:write |
| POST | /v1/feeds/:feedId/sync | Trigger a sync run | feeds:write |
| GET | /v1/feeds/:feedId/jobs | List sync jobs & history for a feed | jobs:read |
| GET | /v1/enrichments | List enrichments in workspace | enrichments:read |
| GET | /v1/enrichments/:enrichmentId | Get enrichment details & config | enrichments:read |
| POST | /v1/enrichments | Create any of the 16 enrichment types | enrichments:write |
| PUT | /v1/enrichments/:enrichmentId | Update enrichment config | enrichments:write |
| DELETE | /v1/enrichments/:enrichmentId | Delete an enrichment | enrichments:write |
| POST | /v1/feeds/:feedId/enrich/preview | Dry-run the enrichment pipeline on sample records | enrichments:read |
API access from $7/mo
Standard includes 5 bank connections, 10 API requests a minute and the MCP server. Every plan starts with a 14-day free trial. Prices shown in USD.
Frequently asked questions
Can I use this for my own accounts?
Yes, that is what it is for. Sign up as an individual, connect your own accounts through the Consumer Data Right consent flow at your bank, and create an API key. You call the API for your own data; there is no business contract and no minimum spend.
Do I need an ABN, a business or CDR accreditation?
No. Accreditation is what lets a company receive CDR data, and BankSync already holds that position as a CDR Representative of Fiskil Pty Ltd (ADRBNK000246). You consent at your bank, BankSync receives the data, and your key reads it back.
How long does my consent last, and how do I renew it?
A CDR consent lasts up to 12 months; you choose the duration at your bank. When it ends, reconnect the bank from the app and approve again at your bank. You can withdraw consent at any time from your bank or from BankSync.
What data can I read, and how far back?
Transactions and balances, with up to 7 years of transaction history on the first sync. How far back each bank actually goes still varies by bank.
What is not available in Australia?
Investment holdings, investment trades and loan details: the CDR connection BankSync uses returns transactions and balances only, so those endpoints have nothing to return for Australian banks. Payments are never available; the API is read-only.
Is the API read-only?
Yes. The connection your bank grants is read-only: BankSync can read account data, and it cannot move money, make payments or change anything at your bank. Your API key reads the same data, scoped to the permissions you give it.
How is this different from screen-scraping?
You never hand over your banking password. CDR is a regulated framework: you sign in on your own bank’s site, approve exactly what is shared and for how long, and the bank issues a revocable token. Screen-scrapers log in as you with your stored password.
How much does API access cost?
API access starts on Standard at US$7/mo: up to 5 bank connections, 10 API requests a minute and the MCP server. Professional and Business raise the limits. Every plan starts with a 14-day free trial; prices are in USD.
Related reading
- How CDR consent works →Accreditation, CDR Representatives, consent durations and revocation.
- Australian bank coverage →Every bank you can connect, with the data each one returns.
- MCP server →The same data in Claude, ChatGPT, Cursor and VS Code.
- API reference →Every endpoint, parameter and response, from the OpenAPI spec.
Make your first call tonight
Connect your Australian bank, create a scoped key, and read your own data as JSON.