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.
-
hari salabashyan commented
Reconciliation via the API is critical business functionality. Please consider enabling this feature.
-
Nicolas Emmerich
commented
Since we can't vote, consider this comment a vote.
-
Brendan Gooden commented
Reconciliation via the API is critical to our business operations. Please implement ASAP and listen to your customers!
-
Alex Soul commented
Hi, I need to be able to count how many transactions are still unreconciled and from how long ago. I need to ensure that our bookkeepers are doing a Great Job and there should not be any unreconciled transactions pending there for longer than X days. I am not able to keep checking this myself on a daily basis.... so, a basic API access to at least READ-ONLY would be highly beneficial for this checks
-
Jason
commented
Is there perhaps a way to just initiate the reconciliation process and identify how many, if any, statement lines remain unreconciled?
-
Shane Russo
commented
Can you please provide an update to this feature?
Reconciliation via the API is critical to my business. Without it I will need to look at alternate products to Xero.
-
August Stoyanov
commented
There are no commercial reasons stopping you from providing data to custom connection apps. This is not sharing. We own the data and can do whatever we like with it. The bank provides us with the statement for free.
-
Greg Elliott
commented
It looks like voting is closed so please add my vote to this.
One of my first tasks for the new year was to investigate and establish an API for the bank rec. We have a customer who pays each invoice individually (approx 500/mth and growing) and uses their own internally generated number as the bank ref. We built an automated process which extracts the invoice number matching the customer's payment ref. The final step was to automate matching on the bank rec via an API. Sadly it looks that won't be happening with Xero ☹️ -
August Stoyanov
commented
Why is the documentation pointing to this issue here and then voting is closed? It is crazy not to have this feature, and even crazier to suggest that to provide it you need to give us access to "their data". It is our data, not theirs! We only need the data you are showing on the statement line anyway. Please reconsider! Or give us a believable explanation.
-
William B
commented
what is the point of a 'bank feed' service that has an API, but you can't use the API to access the bank feed?!!!! this is totally pointless. I wasted a week trying to understand what the hell I am meant to use this for.
-
Joel Kallman
commented
It's been almost a year since my last request and it looks like many others want this functionality. This is extremely valuable functionality for businesses and addon integrations.
Please provide a mechanism to read bank statements and reconcile over the API. If your agreements with certain banks are restricting your ability to offer this functionality, please offer it only for those banks that allow it. I'd gladly switch all of my businesses to those institutions if it meant we could automate this functionality.
-
Khayam Ezzat commented
This feature is available on FreeAgent. It is a mystery as to why this not included in a product as mature as Xero. If it were built that means I can allow someone who I don't want to give unfettered access to the accounting system or necessarily understand accounting deeply, a screen to match payments to clients which the system can allocate to invoices on the API. The lack of this feature means I cannot migrate my nursery business to Xero.
-
Anonymous commented
Can we at least have the transactions exposed? I personally dont need the reconciliation feature, but having the transactions available would go a long way for my situation. (Like they used to be in the report API then stopped in late 2021)
-
Lola Chang commented
We're working with NZ & AU banks to improve their bank app offerings. Enabling their SMB customers to do reconciliation straight in their bank apps soon after transactions happen would be a win-win for everyone - the banks, Xero, their customers, accountants and advisors. Right now the infrequency of SMBs logging into Xero to do reconciliation causes problems for everyone needing up to date data to help SMBs stay viable and thrive. Perhaps this could be a restricted access feature instead of being unavailable to all?
-
Emily Spence Thomas
commented
I'm adding another vote for access to reconcile bank statements via the API, this would improve productivity for so many people, PLEASE reconsider this.
-
Galinos Giaglis commented
Hello,
In Europe we are currently working with PSD2 Open Banking for ALL banks. All CRM and ERP vendors have to ingest open banking data with direct connections. We are not even asking you to do this.
We are asking you to open the API and let us do the work by just submitting what we get from the bank.
This is completely preposterous ok your end to INCREASE prices while you continue offering a lesser product or adding features that in most cases are not useful to the majority of your audience
-
jason orrock
commented
Another voice added the request to this obvious feature.
You have the API why not extend it to cover this function and keep a log of this tagged API based state change or something?
We have a lot of automation we work on with e-commerce and this causes a lot of issues especially with high volumn sales.
Jason -
Joel Kallman
commented
We would be able to automatically reconcile about ~90% our transactions if we had the ability to utilize the Bank Statements API. This would be **extremely** valuable for us and our business.
Please provide a mechanism to read bank statements and reconcile over the API.
-
Owen Conti commented
Adding a comment to keep track of updates to this saga. It seems very short-sighted to not even allow read/GET access to the incoming unreconciled bank data.
At this point, I'd be happy with just an email notification of when an unreconciled incoming payment was sat waiting to be reconciled in Xero.
-
Richard King
commented
For those that are also stuck.. we are considering using the following solution to help reconcile transactions from our bank feeds.
https://www.akahu.io/
https://www.saltedge.com/
https://nordigen.com/en/