Reconcile via the API
Be able to reconcile bank statement lines via the API.
Thank you for the continued feedback and for your patience on this long‑running request. We know that programmatic bank reconciliation and AI‑driven workflows are increasingly important to many of you, and we understand the frustration that this capability is not available via the Xero API.
After reviewing this again with our legal, risk and banking teams, we have confirmed that we will not be adding the ability to reconcile bank statement lines via the API or to expose unreconciled bank statement data via the public API.
There are a few key reasons for this decision:
- Regulatory and contractual obligations on raw bank data. Unreconciled bank statement lines are “raw” banking data – unmodified information that comes directly from banks. In markets such as Australia, this data is treated as banking data under consumer data rights regimes. Sharing it on to third parties (including via an open API) would require us to treat every consuming app as if it were a regulated data recipient, with substantial security, accreditation and liability obligations that sit on Xero as an intermediary as well as on those third parties. We have taken a policy decision not to operate as an intermediary for redistributing raw bank statement data.This ensures that the highest standards of banking security are maintained directly between the customer and their financial institution.
- Our data‑sharing boundary: unreconciled vs reconciled data. We draw a clear line between:
- Unreconciled statement data, which is banking data supplied to us by banks and subject to the obligations above; and
- Reconciled transaction data, which has been improved within Xero (for example, matched to contacts, invoices or accounts) and for which Xero is the custodian on behalf of the customer.
- We can expose certain reconciled/derived data through specific endpoints such as the Finance API’s Bank Statements Plus in limited, finance‑focused scenarios, but those endpoints are not designed or licensed for broad, high‑volume access to raw bank feeds or for third‑party replication of Xero’s bank reconciliation engine.
- Why “reconcile via the API” falls on the wrong side of that line. Supporting full reconciliation via the API would, in practice, require programmatic access to unreconciled statement lines and a way to push reconciliation decisions back into Xero. That would effectively recreate bank reconciliation workflows outside Xero while still relying on Xero to redistribute raw bank data, which is exactly the pattern our regulatory, security and contractual constraints are designed to avoid. For these reasons, this is not something we can safely or responsibly offer as an open API capability.
We recognise that a small number of existing partner applications continue to receive limited access to certain statement data under legacy, contract-specific arrangements that pre‑date this policy. These specific arrangements are strictly managed under heightened security and compliance terms. To ensure we meet our current regulatory and risk standards, we are not extending these legacy permissions to new partners or applying them to any new use cases.
We also hear the concern that “this is customer data and customers should be able to use it where they choose”. We agree that customers should have access to their own banking information, and open banking frameworks are designed to give customers direct access to that data from their bank or banking aggregator, without Xero sitting in the middle as a redistributor. For apps that need raw bank statements to power AI or other automation, the right pattern is to source that data directly from the bank or an accredited open‑banking provider, and then connect into Xero using the data structures we do expose.
Our strategy for bank reconciliation is to invest in automation inside Xero, where we can manage risk, performance and user experience end‑to‑end. That includes features such as bank rules, suggested matches, cash coding, and newer improvements like statement-period bank reconciliation, enhanced bank feeds, and our AI-powered automation features, rather than exposing the underlying feeds for external reconciliation logic.
We will continue to review our approach as regulation, banking connectivity and customer needs evolve, but we want to be clear and transparent that this specific request will remain declined under our current legal and risk framework. We genuinely appreciate the thought and passion that has gone into this thread, and we’ll keep focusing our efforts on making in‑product reconciliation as efficient and intelligent as we can, within those constraints.
-
Richard Howard
commented
Seriously needs to be a feature. Automating the reconciliation process cuts hours of work each week (if not more) if this task is automated (we are copy-pasting what the API could do for us!).
-
Anonymous
commented
What can you do with the Xero API in terms of reconciling bank lines?
From an accountants perspective, is it possible build a web app that would display the unreconciled lines? -
Mark Stephenson
commented
For us to continue using xero as we continue to grow (1000 users to 12000 in a year) we need to be able to automatically reconcile stripe payments. Allowing reconciliation through the API will give us the ability to automate this very laborious task.
-
Gareth Lawrence
commented
A must have
-
Anonymous
commented
Please either improve the memory function to remember payeee name from bank lines or allow reconciliation via the API
-
Alex Rich
commented
We are considering changing from Xero to something else. Pushing 'Reconcile' for all incoming payments is a big waste of time when our payment system could automatically reconcile them as they are applied to customer accounts.
I can't imagine what the 'significant issues' that prevent Xero from working on it are.
Some people (like us) use Xero only for our tax obligations and 'big picture' reports. It's easy for the Accountants to collaborate with us, but not everyone uses Xero Invoicing and links their customer accounts to Xero.
-
Anonymous
commented
We receive an average of 20 transactions a day into Xero through Stripe, in 2 different currencies, and reconciling them is a really time-consuming process and one that seems perfect for automation considering how repetitive it is!
Allowing this feature would allow us to save lots of time and money spent on bookkeeping.
-
Anonymous
commented
Please guys can you add this feature. We want to have different staff members reconciling payments but as xero is setup our staff will be able to see the full state of accounts which is not acceptable.
We want to be able to isolate an account and allow access to specific users on our internal software to reconsile incoming payments to open invoice's
This feature is a must for our growing business. Either this or some upgraded user types in xero that would allow us to give access to reconcile one account without been able to see everything else..
-
Johnny Oshika
commented
A lot of our reconciliations are repetitive, and being able to do this automatically through the API would be a huge time saver.
-
Colin MacLeod
commented
+1 vote from me
We are using the API extensively to integrate with our POS system and this would make life easier. -
Anonymous
commented
I need this because I have a lot multi-currency transactions that I need to reconcile - the currency value from my bank statement doesn't always match the receipt so I was hoping to do this programmatically with an algorithm that makes smart assumptions about the most likely transaction -> receipt reconciliation.
-
Anonymous
commented
Add votes from me. We pay bills for our clients and it would be great to reconcile them once the checks actually hit the bank account.
-
James
commented
Another couple of votes from me. We run some software to import Stripe transactions on behalf of clients and it would be great to then automatically reconcile them
-
Kim Richardson
commented
We process direct deposits through an external payment source, we set a merchant reference and the bank posts the reference number. Would be great to be able to auto reconcile this via an API that can match up the payment.
-
Jacob G commented
The problem with the suggested solution is that you still can't match the specific invoices with the deposit. The clearing account is basically treated as a pool of money.
-
Anonymous
commented
This feature is VERY important to our business. We receive lump deposits which are related to several clearing accounts. It is impossible for us to manually break down every deposit and determine the proportion associated with each clearing account. An API would be the only solution. I believe this would make Xero a very powerful tool.
-
Adam Law
commented
This is very important to me even as a sole operator
-
Peter McCarroll
commented
In addition, or as a substitute, we also need to be able to create payment batches through the API (groups of invoices/bills under a single Payment transaction in the bank ledger). This would alleviate a huge issue people are asking for here.
-
Ross Stanley
commented
As a manufacturer who sells product to supermarkets, we experience high volumes of invoices and credit notes (over a hundred per week) which are covered by a single payment from the supermarket's head office (for the month). In these cases the UI provided by Xero for this task is totally inadequate.
What accounting software package are other manufacturers using that solves this problem?
-
Anonymous
commented
Any updated on this as it seems the community really requires this feature?
We too have a use case where this missing feature prevents us from full integration into Xero.Can someone from Xero please comment or give any updates on this request?