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.
-
Bradley Higgs
commented
Bank txn parsing in AU has been a nightmare for decades, I have no idea how other countries do it but the amount of frivolous "busy work" considered "normal" by the industry is ridiculous, not only the monopolising of data but even their in-house data practices, not even providing unique hashing for txn rows, plain text EFT logs, short field date formats in wild configurations mm/dd/yy for example, 6 digit passwords. plain text csv retention for 2 years only.... it's archaic, the equivalent of telegram in the digital age. Took me 6 months of harassing CBA in 2008 to find out that they even HAD a deprecated product for a business to gain access to their own statement data via automation, $1000/m, their own datasec staff suggesting i just scrape Netbank "it's how I do it, it works." bUsInEsS cOnTiNuItY.... May cryptos blow all these gatekeepers to dust.
-
Anonymous
commented
I would require this feature to move to Xero. As it stands we will end our migration from Sage and sty where we are. Will look into some of the systems mentioned in comments thanks.
-
Priyan Rajapaksa
commented
If you dropped the ball - time to pick it up
Reconciling is the task that takes time and is so easy to automate
Mybe you do not realise it
-
Anonymous
commented
For bank uploads I have created a script that simulates a browser window, logs in to Xero, navigates to the right pages and puts the right file in the upload box. Then it logs out.
I guess now I need to make another script that logs in, opens all the "reconcile" pages and clicks the buttons as needed.
Thanks!
-
Simon Lampen
commented
Thanks for the update Adam, ironically I think you will find that the data in the bank statement is not your partner's to but is actually the user's data. This data ownership issue should be even more evident now with recent GDPR changes etc. So if this is the main reason for not proceeding with this feature, I'd encourage you to fight harder for user's rights. Cheers.
-
Chris Dawes
commented
Who even reads this forum, or listens to customers in the dev team?
Seems only accountants matter now, even the stripe implementation was a dogs breakfast. and still doesn't reflect the dual rate stripe charge. (1.75% or 2.9%)... #sigh
This makes NO SENSE when accountants have this functionality in the form of a billion checkboxes to bulk reconcile, but forget the end user, they don't matter
We have over a million transactions a year, so we currently had to rewite a lot of Xero into our own app so we can reconcile EXTERNALLY.
You guys are a joke for not implementing this.
We have the option of HACKING the ajax calls to implement this ourselves, or moving to MYOB, who have this, as do sassu.
seems your product manage spends too much time smoking pot and not WORKING.
-
Alexey Novikov
commented
+1
-
Anonymous
commented
wow, this is one of the top ideas to implement and you just ignoring it?
great customer support ;) -
Stephen Mount (stemount)
commented
The ability to reconcile transactions with the API is essential for Xero, it is one of the features that is most useful I imagine for a lot of companies.
-
Simon Lampen
commented
I think you should re-consider allowing reconciliation via the API. I'm sure your reticence would be around allowing regular users to not have to interact with the UI, however with so many integrations that use payment gateway (stripe, payment express, chargify....) you get a many to one relationship where 1 payment needs to be reconciled against many invoices and this is a major productivity block. Xero claims to support over 1000 invoices per month, I don't want my staff manually reconciling 50+ invoices per business day when the data to reconcile them is already available else where. Please reconsider allowing reconciliation via the API for use-cases like this.
-
Anonymous
commented
We would definitely use this feature. Xero developers, please re-consider this.
-
Adam
commented
Certainly want it, to help reconcile those stripe fees.
-
Doug Pickering
commented
I am more interested in being able to bulk "unreconcile" transactions. If a facility existed to make this functionality to be able to be selected by account it would be really useful. In our case, PayPal transactions number thousands and loads have the incorrect tax code. This would really help to allow them to be recoded easily.
-
anonymous
commented
+1
-
Gabe commented
We use Stripe to process credit card payments. When Stripe transfers over the balance into our bank account, doing the reconciliation in Xero is complicated and time-consuming. We've used the API to create Spend Money transactions for the Stripe fees and then Bank Transfer transactions from our Stripe "bank account" to our Checking account. These transactions are not auto-reconciled and it's a manual and time-consuming process to reconcile them. I believe reconciling via API could solve that problem. Or creating a ToAccountIsReconciled and FromAccountIsReconciled parameter on the BankTransfer endpoing would solve that as well.
-
Anonymous
commented
We would definitely use this feature. Xero developers, please re-consider this.
-
Anonymous
commented
+1 we would definitely use this
-
Martin Thompson commented
You should do a survey! You would need to explain the benefits.
- This feature is a matter of " you don't know what you don't know" . If people really understood the value of this feature then everyone would be using it.
- This could potentially save businesses (consolidated) millions of hours of manually reconcilliations
- It would help eliminate human error and monotonous tasksThe other issue with this is that it it the partners and developers who want the feature , but if the end user understood the potential of automating reconcilliations and the time it would save.. then everybody would use it. Unfortunately for the value to be fully realised is a 2 step process:
1) the software or recon screens need to be developed ( for example matching credit card transactions and programmatically working out exchange variances )
2) The end user uses the addon to reduce the amount of manual reconcilliation / matching - and at the same time reduces human error.
-
Giorgos
commented
+1
-
Robert
commented
+1. Let's get 'er done!