Accounting API · Bank FeedsUpdated October 11, 2026
Put your platform’s transactions in your customers’ books, in the ledger’s own bank feed, ready to reconcile. One statement call, mapped to Xero, NetSuite, Sage Intacct, Exact Online and the rest, with QuickBooks Online through Intuit Bank Feeds.
Business card ·· 4821
Bank feed from Your platform, 5 to 11 Oct
Marketplace payout
10/05 · txn_01J9B1
Card, ad spend
10/07 · txn_01J9B2
Fuel card, depot 4
10/08 · txn_01J9B3
Supplier refund
10/10 · txn_01J9B4
Sample data. The same statement is editable in the builder below.
01Definition
A bank feeds API lets a platform that holds money for businesses, such as a card issuer, embedded bank or payout platform, send those businesses’ transactions straight into their accounting software. The lines land in the ledger’s bank reconciliation screen, where the bookkeeper matches them to invoices and bills. No CSV export, no statement upload, no copy-paste.
Accountants call the result automated bank feeds or direct bank feeds: bank statement feeds that arrive on their own, instead of a statement someone downloads and imports. It is often confused with bank data aggregation, which runs the other way.
Bank feed
You hold the account. The ledger receives the transactions and reconciles them. This page.
Aggregation
Someone else holds the account. You read it with the customer’s consent. Plaid, MX, Stripe Financial Connections.
02Push and network
Some ledgers take statements you push into their bank feed API. Others only pull, from institutions listed on a bank feed network. QuickBooks Online works this way through Intuit Bank Feeds, and so do the apps on the Plaid network. You need both to cover your customers, and with Apideck it is still one integration.
On either model you post the same statements to the Bank Feeds API. Apideck pushes them into native ledgers and serves them to Intuit and Plaid through FDX Connect, its FDX data provider. Deep dives: Intuit Bank Feeds and Plaid Bank Feeds.
03Lifecycle
Every bank feed, on every ledger, has the same lifecycle. Four steps happen once per customer. The statement call is the one you live with.
POST /vault/sessionsYour customer connects their accounting platform in a hosted, white-label flow. Apideck stores and refreshes the tokens.
POST /accounting/bank-feed-accountsRegister the card, wallet or account you hold for them, where the ledger has feed accounts. Elsewhere statements post against an existing bank account.
Customer maps the feedOn most ledgers the customer maps the feed to a bank account in their chart of accounts. NetSuite needs an admin to install a SuiteBundle first.
POST /accounting/bank-feed-statementsPost batches of posted transactions with an opening and closing balance. This call runs forever, so it is the one to get right.
GET /accounting/bank-feed-statementsConfirm what the ledger accepted, where the connector exposes it, and keep your own running balance in step.
04Statement builder
Change an amount, flip a line from credit to debit, type your own closing balance or retry a transaction. The checks are the ones ledgers apply, and the JSON on the right is the exact request body for bank-feed-statements.
Statement, 2026-10-05 to 2026-10-11
{ "bank_feed_account_id": "bfa_01J9C4X7Q2M8", "start_date": "2026-10-05T00:00:00Z", "end_date": "2026-10-11T23:59:59Z", "start_balance": 18240.00, "start_balance_credit_or_debit": "credit", "end_balance": 23259.15, "end_balance_credit_or_debit": "credit", "transactions": [ { "source_transaction_id": "txn_01J9B1", "posted_date": "2026-10-05T12:00:00Z", "description": "Marketplace payout", "amount": 6420.00, "credit_or_debit": "credit" }, { "source_transaction_id": "txn_01J9B2", "posted_date": "2026-10-07T12:00:00Z", "description": "Card, ad spend", "amount": 1284.50, "credit_or_debit": "debit" }, { "source_transaction_id": "txn_01J9B3", "posted_date": "2026-10-08T12:00:00Z", "description": "Fuel card, depot 4", "amount": 212.35, "credit_or_debit": "debit" }, { "source_transaction_id": "txn_01J9B4", "posted_date": "2026-10-10T12:00:00Z", "description": "Supplier refund", "amount": 96.00, "credit_or_debit": "credit" } ]}
Amounts are always positive. Direction lives in credit_or_debit, and balances carry their own direction field, so an overdrawn account is a debit balance, not a negative number.
05Coverage
34 ledgers are reachable today. That number is honest only with the route next to it: 10 take statements in their own bank feed, QuickBooks Online pulls through Intuit, and 23 get journal entries, which post to the ledger without a reconciliation queue. Pick a ledger to see its path and setup.
Xero
2 routes, chosen per customer
06Ledger notes
The unified statement hides the payload differences. These are the ones it cannot hide, because they live in the ledger, and they are what usually stalls a launch.
Statements chain. Each opening balance must equal the previous closing balance, so a gap or a restated period is fixed with a correcting statement, never by editing the old one. The customer links the feed to a Xero bank account before the first statement lands.
28 Sep to 4 Oct
…→18,240.00
5 to 11 Oct
18,240.00→23,259.15
12 to 18 Oct
23,259.15→next
QuickBooks only pulls from FDX data providers. Through Intuit Bank Feeds, your platform appears in QuickBooks’ bank list under your own name, Apideck’s FDX Connect serves the data, and Intuit fetches it on its own schedule. Expect lag, not instant lines. Early access.
NetSuite has no bank feed endpoint to post to. Apideck ships a SuiteBundle an admin installs once, wired up through a Format Profile under Setup, Accounting, Financial Institution. Statements then appear in Match Bank Data on the next import.
Statements only, on both the legacy XML and the REST API. There is no feed account to register: you post against a bank account that already exists in Intacct.
The European ledgers most US-built feed providers skip. Exact Online runs as three connectors, for the Netherlands, Belgium and the UK. Snelstart and Twinfield accept statements but do not return them, so keep your own ledger as the record of what you sent.
07Build vs buy
Code is the small part of a bank feed. Partner programs, certification and each ledger’s balance rules are the large part, and they repeat for every ledger you add.
| Direct, per ledger | Unified Bank Feeds API | |
|---|---|---|
| Time to the first ledger | Months per ledger, mostly partner approval and certification | Weeks, on connectors that already exist |
| Partner programs | Yours to apply for, ledger by ledger | Varies by ledger: ask whose name is on each approval |
| Payload | A different shape and balance rule per ledger | One statement shape, mapped per ledger |
| Where it breaks | Your on-call rota, when a ledger changes its API | The provider’s connector, with your monitoring on top |
| Ledgers without a feed endpoint | Unsupported, or a custom journal integration | Depends on the provider. Apideck falls back to journal entries |
The ledgers each provider names on its own bank feeds page, as of October 11, 2026. Follow the links for the current list. Rutter covers the most of the Intuit family, including QuickBooks Desktop, and already documents a Plaid listing. Apideck covers the most ledgers outside Intuit, including Europe’s.
| Provider | Ledgers named for bank feeds | QuickBooks | Plaid network |
|---|---|---|---|
| Apideck | Xero, NetSuite, Sage Intacct, Exact Online, Zoho Books, Moneybird, Pennylane, Rillet, Snelstart and TwinfieldJournal entries for 23 more ledgers. | QuickBooks Online through Intuit Bank Feeds, early access | Core Exchange listing, coming soon. Partnership with Plaid signed |
| RutterSource | QuickBooks Online, QuickBooks Desktop, Quicken, Credit Karma, Xero, Sage, NetSuite and Wave | Intuit Bank Feeds, one connection across the Intuit family | Core Exchange listing, documented |
| CodatSource | QuickBooks Online, Xero, Sage, NetSuite, Sage Intacct and FreshBooks | QuickBooks Online bank feed, US and Canada | Not on its bank feeds page |
| MergeSource | NetSuite and Xero, announced as beta | Not on its list | Not on its bank feeds page |
08Evaluation
Six questions that separate a demo from a feed your customers reconcile every day.
Native or not, per ledger
Ask which ledgers receive statements in their own bank feed and which get journal entries. Journal entries skip the reconciliation queue, which is the reason your customers asked for a feed.
The ledgers your customers use, by country
A US card issuer needs QuickBooks and Xero. A European one needs Exact Online, Moneybird or Pennylane. Headline connector counts hide this.
Who holds the partner approvals
Xero, Intuit and NetSuite each gate bank feeds behind a program. Find out whose name is on each approval and what happens if the provider loses it.
Balance and duplicate handling
Statements fail on unreconciled balances and repeated IDs. Ask how errors come back and whether retries with the same source ID are safe.
Read back
You need to see what the ledger accepted. Some ledgers return posted statements and some do not; the provider should tell you which.
Room to grow
The same integration should reach new networks, such as Intuit Bank Feeds and Plaid, without a second build.
09Live demo
Pick a bank, connect an accounting platform and watch the same transactions appear on both sides. Mock data, the real flow. Switch to Live mode in the demo to run it with your own Apideck credentials.
10FAQ
A bank feed network is a directory of financial institutions that accounting software and apps can connect to. Instead of pushing statements into one ledger, the platform that holds the accounts is listed as an institution, and the network pulls accounts and transactions from it over the FDX standard after the customer signs in on the platform’s own login. Intuit Bank Feeds is the network behind QuickBooks Online, and Plaid Core Exchange is the network behind Plaid-powered apps. Through Apideck, both run behind the same Bank Feeds API as push feeds into Xero or NetSuite.
A bank feeds API lets a financial platform, such as a card issuer, embedded banking provider or payout platform, send its customers’ transactions straight into their accounting software. The transactions arrive in the ledger’s bank reconciliation screen, where they are matched to invoices and bills, so nobody exports or imports a CSV. Apideck’s Bank Feeds API does this through one statement call that reaches each ledger’s native bank feed.
They run in opposite directions. Aggregation pulls a person’s bank data out of their bank into an app, with their consent. A bank feed pushes transactions from the platform that holds the account into the customer’s accounting system. Apideck does not aggregate bank accounts. Its Plaid partnership works in the feed direction too: the upcoming Core Exchange connector lets Plaid-powered apps pull from your platform.
It depends on which ledgers your customers use. Compare providers on which ledgers get native feeds rather than journal entries, coverage in your customers’ countries, who holds the Xero, Intuit and NetSuite partner approvals, and how balance errors and duplicates are reported. Apideck sends native feeds to 10 ledgers, including Xero, NetSuite, Sage Intacct and European platforms such as Exact Online and Pennylane, and to QuickBooks Online through Intuit Bank Feeds in early access.
Yes. Xero’s Bank Feeds API has feed connections and statements, and access requires approval through Xero’s partner program. Each statement’s opening balance must match the previous closing balance. Through Apideck you post the same unified statement you send to every other ledger, and Apideck maps it to Xero.
QuickBooks Online does not accept pushed statements. It pulls from FDX data providers through Intuit Bank Feeds. Apideck runs an FDX data provider, so you post statements to the Bank Feeds API and Intuit fetches them on its own schedule. Your platform appears in QuickBooks’ bank list under your own name. This route is in early access.
An imported statement is a file, CSV, OFX or QBO, that someone downloads from the bank or platform and uploads into the accounting software, usually monthly and by hand. Automated bank feeds, also called direct bank feeds or bank statement feeds, deliver the same transactions on their own, every day, into the ledger’s reconciliation screen. A bank feeds API is how a platform provides automated feeds instead of asking customers to export files.
No. A bank feed carries data: accounts, balances and posted transactions. Nothing moves between accounts. Payments are a separate API.
Building direct, expect months per ledger, most of it spent in partner approval and certification rather than code. Through a unified API, the code is three calls: connect the customer, register the feed account, post statements. The rest of the time goes into linking the feed in each ledger and testing balances.
Most ledgers reject a repeated source_transaction_id, which makes a stable ID from your own ledger the safest retry key. Generate a new ID on every retry and you create a duplicate line in your customer’s books.
Intuit Bank Feeds
Your platform in QuickBooks’ bank list, under your own name.
Plaid Bank Feeds
List your platform on the Plaid network through Core Exchange.
Financial Data APIs
Bank data vs accounting data, and why B2B products need both.
Ship bank feeds this quarter
Free to start. Talk to us about Intuit Bank Feeds early access and the Plaid route.