2024 is the year of the connector - vote here

Query the Xero API using regular SQL

You're a developer. You're perfectly capable of connecting to the Xero API and pulling down data. But why waste your time building an API integration when your skills and time are better spent elsewhere?

API integrations are hard to build and maintain. But with SyncHub, you can query your data source using a language you know and love - SQL.

How it works

Get your Xero data into your favourite reporting tool in just two minutes and three easy steps.

1 2 3 Connect Xero to SyncHub

Securely connect your cloud software to SyncHub and we'll do the rest.

1 2 3 We sync your data automatically

SyncHub incrementally syncs your data and stages it in a managed data warehouse. We check for changes so you don't have to.

1 2 3 Connect your reporting tool

Query and share your data using our built-in Insights platform, or use your own reporting tool - such as like Excel, Tableau or Power BI.

No ODBC driver required

SyncHub runs in the cloud, 24×7. There are no ODBC drivers to install or maintain, and no local computer required to cache your results. Just securely connect SyncHub to your Xero account and you can be querying your data in just a couple of minutes.


Want more power? How about views, stored procedures or triggers? No problem - SyncHub's Bring Your Own Database feature gives you complete control over your database.

Real-time data*

Make a change in Xero and query it via SQL within minutes. Our feed is so quick, you'll think you're querying Xero directly!

Your data is secure

Your Xero data is stored using best-practice security protocols. But if you're still concerned, no worries - just use our BYOD (Bring Your Own Database) option when setting up your account.

Frequently asked questions

Not directly, no. But SyncHub's ERD model, combined with the real-time* sync from Xero, means that it is essentially the same as querying directly.
No. Our solution is cloud-hosted, meaning no installs are required on your own computers. Furthermore, because it is cloud-hosted, SyncHub runs in the background 24-7, keeping your data up to date while you sleep.
If your SQL skills are a little rusty, we've got you covered too. Our AI-powered Query Assistant uses knowledge of your Xero data model to create SQL queries for you - just describe your problem and watch the magic happen.
SyncHub can poll Xero as frequently as every five minutes, however this capability may be limited by the amount of data you have and/or the type of plan you have with Xero. The best way to find out is to simply grab a free trial of SyncHub, connect Xero, then see for yourself.
No. SyncHub is a reporting tool and cannot reflect changes back to your cloud application.
We currently sync Account, Bank transaction, Bank transaction line item tracking category, Bank transfer, Batch payment, Budget, Contact, Contact group, Credit note, Credit note item, Credit note item tracking category, Employee, Contact history, Bank transaction history, Bank transfer history, Credit note history, Manual journal history, Invoice history, Item history, Payment history, Purchase order history, Repeating invoice history, Quote history, Overpayment history, Prepayment history, Batch payment history, Invoice, Invoice item, Invoice item tracking category, Item, Journal, Journal item, Expense claim, Manual journal, Organisation, Overpayment, Overpayment item, Payment, Prepayment, Prepayment item, Purchase order, Purchase order item tracking category, Quote, Quote item, Quote item tracking category, Repeating invoice, Repeating invoice item, Repeating invoice item tracking category, Tax rate, Tracking category, User, Balance sheet report, Profit and loss report by fiscal year, Profit and loss report by month, Trial balance report, Bank transaction line item, Batch payment payment, Budget tracking category, Contact contact group, Contact address, Contact phone, Credit note allocation, Journal item tracking category, Manual journal line item, Over payment allocation, Purchase order line item, Tracking category option, Report row cell, Report row, Budget account balance and Manual journal item tracking category (see our Data Model for full details). If there's something else you need just ask.
Your Xero data is stored in its own dedicated data warehouse, hosted in our Microsoft Azure Sydney Data Center. If you'd like it stored somewhere else (even your own servers), just enquire about our BYOD (bring-your-own-database) option.
Absolutely. Every customer gets their very own isolated data warehouse. Database credentials are salt-encrypted...multi-factor authentication can be activated for your account...we take security very seriously. You can read more about our security best practices here.

Example queries

Check out these example queries for some inspiration

  • select mjitc.TrackingOptionID, mjitc.TrackingCategoryID, mjli.IsBlank, mjli.AccountID from [xero].ManualJournalItemTrackingCategory mjitc left join [xero].ManualJournalLineItem mjli on mjitc.ManualJournalLineItemRemoteID = mjli.RemoteID
  • select bab.BudgetID, bab.AccountID, b.UpdatedDateUTC, b.Type from [xero].BudgetAccountBalance bab left join [xero].Budget b on bab.BudgetRemoteID = b.RemoteID
  • select rr.Title, rr.RowType, bsr.UpdatedDateUTC, bsr.SubSubTitle from [xero].ReportRow rr left join [xero].BalanceSheetReport bsr on rr.BalanceSheetReportRemoteID = bsr.RemoteID
  • select top 14 UpdatedDateUTC, ReportingCodeName, ReportingCode, CurrencyCode, ShowInExpenseClaims, EnablePaymentsToAccount from [xero].Account order by UpdatedDateUTC
  • select top 12 CurrencyCode, UpdatedDateUTC, Total, TotalTax, SubTotals, LineAmountTypes from [xero].BankTransaction order by CurrencyCode
  • select top 6 Option, BankTransactionLineItemID, TrackingCategoryID, Name, WhenModified, WhenCreated from [xero].BankTransactionLineItemTrackingCategory order by Option
* Realtime

SyncHub's engine polls for changes every 5 minutes. However, different APIs, and different endpoints within those APIs, may impose restrictions beyond our control - thereby reducing the fidelity of your real-time feed.