Reconcile via the API
Be able to reconcile bank statement lines via the API.
Firstly, apologies – it’s obvious from the continuing comments that we declined this request too hastily and without the explanation it deserved.
We know that reconciling would be a valuable API feature, but reconciling requires fine grained access to bank statement data and unfortunately we’re not able to share that data via the API for commercial reasons.
At Xero we’re passionate about having an open API and providing small businesses with open access to their data. Unfortunately, many of the partners we rely on for statement data don’t share the same ideals.
Hopefully change is coming in the form of open banking. However, it will be a long time before we can openly share statement data via the API and provide a decent reconciliation experience to third-party apps. For that reason we will unfortunately leave this request as ‘declined’.
For the immediate future, we’re busy doing some really cool stuff to improve the in-product experience and automating bank rec as much as we can. We already have bank rules, auto-match, suggestions and cash coding but there’s lots more coming this year.
Again, we apologies for our lack of transparency on this thread. We do value the feedback on UserVoice and have shipped features with over 3000 votes in the last 12 months. We definitely dropped the ball on this one though.
This is a cluster****. Basically, we can import bank statement lines from a csv, and even if we know *exactly* which records they should be matched to, we're forced into a massively time-consuming and error prone process. We can't even match by custom fields in the statement lines, so even if the bank statement is imported with precise matching data, the system instead makes error-prone suggestions, that end up as accounting errors.
Completely crazy guys! You need to do better here. I'm currently hunting for an accounting solution that has the flexibility to do this job correctly.
QUOTE: "We know that reconciling would be a valuable API feature, but reconciling requires fine grained access to bank statement data and unfortunately we’re not able to share that data via the API for commercial reasons."
Isn't this data that the bank freely shares via it's statement export? Data that I upload myself into XERO ( I have no automatic bank feeds ). Surely I'm allowed to access my own data, that I uploaded?
Craig Byren commented
Hi, the Xero bank statement functionality is great but ideally I want to pull these bank statement lines into my system via an API as the matching to a Bill needs to get done on my side. I already have functionality that then allows me to Post the reconciled payment through, but in order to prevent duplications I would want to be able to delete the Bank Statement line using the API. Is this possible? Is there anyway I can at least read the unreconciled Bank Statement Lines?
Eugène van der Merwe commented
You should remove the link from this page as the request is "declined":
I guess if I was Xero or their providers I would also decline the request.
Basically if you open up recon to API users the API users could exploit it to their own benefit bypassing Xero. Also I guess one could throw the "there is a security risk" at Xero and decline these requests too.
Matthew Bloch commented
Hi! I'm also frustrated by the lack of a reconciliation API.
But when Xero say that "reconciling [via an API] requires fine grained access to bank statement data" - they're wrong!
Sure you can design the API to expose a BankTransactions endpoint, and you'd hit the contractual objection that has apparently blocked this idea for years. That'd be easy and nice and useful but OK - we can't have that.
Instead - add a new API end point for a "ReconcilationHint" - this could be an extension to the manual Bank Rules, or something new.
As developers with access to external data, we know that a particular bank transfer will have come in for a certain amount, within certain dates.
We could tell Xero via this new API "hey, when you see a transaction for £100.00 within a week of September 1st, go ahead and mark it off against Invoices 1, 2, 8 and 47".
Xero could say "thanks, I see 1, 2, 8 & 47 add up to £100, I'll bear that in mind!"
Then when it comes to the manual reconciliation, process Xero can take that as a firm instruction to mark those off automatically (or to auto-select them in the current manual process).
That would at least fulfil *my* reconcilation wishlist, where I need to mark off invoices and bills against a single bank transfer, which the current front-end makes particularly painful. I don't need access to the bank feeds, and I suspect with some more creative API design, they could pick off other use cases in the same way.
There would be some more design work to do, and would might need another reconciliation front-end - like what if a hinted reconciliation *hasn't* come in? That's a useful thing to know - but even if you could just query previous hints to see if they've been matched, that'd be everything a developer needs to build fully automated reconciliation.
Chris Macneill commented
How about an update on the "Declined" post from last year? I haven't noticed any of the somewhat vague "really cool stuff" that was promised.
Automated reconciliation via APIs and/or access to actual bank feed data is an absolute must. Try working with KiwiBank, I'm sure they'd be more receptive to change and having a competitive advantage and maybe kick the "kangeroo" banks into action on this.
I don't understand what the issue is. Banks already allow manual download of formatted data for bank transactions and automated banks feeds, so how can they restrict Xero as a 3rd party from providing access to that information via API? It's the same information, just accessed in a different way.
Banks are merely the custodian of information, it is the customer's that own it and banks should not be putting artificial barriers in the way of improving productivity.
Network Engineer / Software Developer
+1 I would love to have this.
We have developed zeevou.com, a hospitality management system seeking to automate as many processes as possible for hosts. Right now, the lack of this functionality is forcing hundreds of hosts who use Xero to have to reconcile their booking payments manually. We may need to start sending our customers to one of your competitors.
britton bercegeay commented
For commercial reasons?
Okay, well tell your partners this:
You guys just lost one potential customer to Plaid,
so better hop on board because you're getting left behind.
Greg Yorke commented
+1 for this … we issue about 2000 checks per month and while the reconciliation screen properly matches about 75% of them, it is still a lot of manual work to click 2000 "OK" buttons; plus, the other 25% are cases where the check number is supplied in the bank feed but the match is uncertain or not found. Was looking into automating w/ a script and disappointed that this isn't accessible.
We have automated bank feeds and our invoices pushed to the api contain the same reference as appears on each of our bank feeds for each transaction again we have hundreds of orders each day and to manually reconcile each against the various bank feeds is a nightmare. Surely the unique reference on each line of our bank statement which matches exactly the reference we provide on our invoices which are pushed via the api from our ecommerce platform can be automatically matched and reconciled via the api?
Not pleased to see this has been declined.
What about just allowing access to the bank statement lines via the API (i.e. without the ability to reconcile)?
We currently pay £3 per month for our bank feed to be imported in to Xero, accessing it via the API would be very advantageous.
Michael Kim commented
Bankfeeds.io is a tool that will help import and reconcile Stripe payments into Xero.
Nate Clark commented
We really need this! We're using Xero with Shopify and as our sales grow reconciling is taking longer and longer to do manually. Shopify Payments sends us a single payout daily that covers dozens or sometimes hundreds of transactions. We need to match the single bank statement deposit with the many transactions that were synced over from Shopify.
This should be EASY to do programmatically because every transaction has an ID and we know from the Shopify payout which transactions should be included. It takes a human many clicks and manual sorting to do this process.
Please allow reconciliation via API!!
At SMTAX (www.smtax.co.za). We have a workaround solution to this problem.
The process works similar to the below:
1. Provide us with accountant access to Xero (We are a Gold Xero Partner)
2. Send us the CSV file - you can automate this process.
3. We will reconcile all the payments
4. Notification is sent to you once allocation is complete
Vangelis Mihalopoulos commented
Try out the Xero Reconcile Robot:
At https://www.yodeck.com we are using Stripe combined with SilverSiphon for automatically importing Stripe transactions into Xero. We get hundreds of transactions each day. With the Xero Reconcile Robot we have made it as easy as it can get to automatically reconcile matching transactions.
I think the xero designers may be confused on this request. From the comments, I don't see people wanting to reconcile the bank statment, I think it's the individual payments. Yes, the bank statement should always be done by a human.
I think this request more clearly defines what is needed: https://xero.uservoice.com/forums/5528-xero-accounting-api/suggestions/35787817-reconcile-individual-payments-not-bank-statement
<reconciling requires fine grained access to bank statement data> This is 100% incorrect. All that is needed is the date, amount, and who it's from (contactID), plus the ability to match it with one or many charges. The charges are available in the API already.
Can you please expand your thinking on this? It doesn't make sense and is frustrating the executives in our company as they're continually having to monitor this frustrating manual process. I convinced them to switch to your software and now I look like a complete idiot since you closed this. Ugh!
We have a SAAS product line and Stripe sends a single payout through every day with dozens of payments attached to it. This is increasing for us every month.
Please *PLEASE* reconsider adding this to the API, or at least give me some way to programmatically do this. I cannot fathom paying a team of bookkeepers to sit and match hundreds of payments every single day.