Skip to content

Can a third-party app post real bank feed lines into Xero?

StatementClear7 min read

Yes, through Xero's Bank Feeds API, but Xero does not hand that out with a developer account. An application has to be approved by Xero before it can open a feed connection against a bank account and post statement lines to it. Anything without that access can read your statement and give you a file back, and a file goes into Xero as an imported statement rather than as a feed.

What Xero counts as a bank feed

In Xero, a bank account receives statement lines in one of two ways, and the account itself records which. A feed is a standing connection that delivers lines on its own, either from a bank Xero has an agreement with or from an application posting through the Bank Feeds API. An import is a file somebody uploaded, covering one period, ending when the file ends. The lines look similar once they land, but the account does not behave the same way: a fed account keeps arriving, and an imported one waits for the next person with a spare hour and a CSV. That distinction is the whole reason this question gets asked, because a converter can produce lines that reconcile and still leave you doing the same job next month.

Why most statement tools give you a file instead

Because the file is the only route open to them. This is the part every confident wrong answer collapses, so it is worth separating carefully. Xero's general Accounting API can write into a bank account: an app holding the right scope can create spend money and receive money transactions, and plenty of good Xero apps do. What it cannot create is a bank statement line, which is the bank's own record of what happened and the thing a ledger entry gets matched against. Xero's documentation for that endpoint says it "does not allow access to any bank statements or direct bank feeds", and Xero's bank statements page goes further: reconciling statement lines through the Accounting API is not supported and Xero does not plan to add it. The request to allow statement line import has been open since October 2009. So a converter can put transactions in your bank account through the public API and still have delivered nothing that reconciles against anything.

Some tools return a CSV or OFX for manual import, while others also offer direct delivery. Check each vendor's current documentation and where its transactions appear in Xero. Direct syncing is not exclusive to StatementClear. Xero also offers native PDF import for eligible US and Canadian organisations.

What the Bank Feeds API actually does

It is a separate API from the one most Xero apps use, and it exists for the systems that supply bank data: banks, card issuers, payment platforms and the applications Xero has approved to post on their behalf. Xero's own overview page puts the gate plainly, calling it "a closed API that is only available to financial institutions that have an established financial services partnership with Xero", and adds that the integration has to be certified by Xero before it goes out to customers. Note the term Xero uses is financial institutions rather than banks, and Xero's own page on connecting a bank says feeds pull in transactions from a bank or a payment provider like Stripe or PayPal. So the common shorthand that a Xero feed can only come from a bank is wrong on Xero's own evidence, while the shorthand that a developer can simply request the scope is wrong too.

The mechanics matter more than the access, because they explain why a fed line is a different object from an imported one. An application creates a feed connection against a specific Xero bank account, identified by Xero's own account id rather than by an account number typed in by hand. Statements posted to that connection carry a start date, an end date, a start balance and an end balance alongside the lines. Xero will not accept the statement without those balances, so an application posting through this API has to know what the account balance was before and after every batch it sends. Balance verification is not a feature somebody chose to build on top; it is the price of admission.

What Xero's own import checks, and what it doesn't

Worth being precise about, because it decides whether the difference is worth paying for. Xero's importer does look for statement lines it already holds and will drop ones it recognises, and Xero publishes a report for finding and removing the duplicates that get through, which tells you plainly that some do. What it never does is check that the file you uploaded covered the whole period. It has no opinion on whether the closing balance agrees with the bank's. And it will happily accept an export that records spending as a positive number, which posts a month of payments as income and reconciles cleanly against nothing.

Those three are the errors that cost real time, because none of them announces itself. A truncated export looks like a quiet month. A sign convention read the wrong way round looks like a good one. You find both weeks later, from a balance that will not agree, and then you are reading a hundred lines against a PDF to work out which ones are wrong.

Where StatementClear fits

StatementClear reads PDF, CSV and Excel statements and shows a preview before delivery. It checks overlaps against previous uploads to the same StatementClear feed, with balance and sign checks using the available statement data. Send eligible transactions directly to Xero or download a Xero-ready CSV. Direct delivery only supports dates within the last year, and another provider's feed connection can prevent it. Check existing Xero lines yourself before importing an overlapping period.

It does not ask for your bank login and never connects to a bank. It works from statements you already have, which is also why it can cover accounts no aggregator reaches and history from before any feed existed.

You already have the statement. Have it arrive as a feed, not a file.

StatementClear posts the statements you already export into Xero as live bank feed lines, deduped and balance-checked before anything reaches the ledger.

Frequently asked

No. It is a separate API from Xero's general Accounting API, intended for the institutions and applications that supply bank data, and access is granted per application after Xero assesses it. A standard Xero developer account does not include it, which is why almost every statement tool converts to a file instead.

The line reconciles the same way, but the account records how it arrived and behaves differently afterwards. A fed account keeps receiving lines from its connection. An imported one stops at the end of the file and waits for somebody to upload the next period.

Xero offers native PDF statement import for eligible organisations in the US and Canada. Other regions can use CSV, OFX, QBO, QFX or QIF, or a connected tool. Check your organisation's plan and the current Xero PDF requirements before converting.

It drops statement lines it recognises as ones it already holds, and it publishes a report for finding and removing the duplicates that get through. What it does not do is tell you the file was short, or that the closing balance disagrees with the bank's, which are the errors that actually cost time.

Not for this route. A feed posted through the Bank Feeds API is built from a statement you exported yourself, so nothing needs your banking credentials. That is the difference from an aggregator feed, which holds a connection to the bank on your behalf.

Read next