Source connector
Xero connector
Xero integration for databases, warehouses and BI tools
Cloud accounting for SMB ledgers and cash flow. Datrise captures Xero entities such as contacts, invoices, bank transactions, accounts, and payments, then lands normalized and typed models for warehouse reporting, attribution, and AI workflows.
The Xero Accounting API 2.0 authenticates with OAuth 2.0, incremental runs key on UpdatedDateUTC (If-Modified-Since header), and Xero caps calls at per-tenant: 5 concurrent calls, 60 calls/minute, 1,000 calls/day (starter tier) or 5,000/day (Core tier and above); per-app: 10,000 calls/minute across all connected tenants.
Of the 5 objects, 2 sync as upserts keyed on the primary key and 3 as append-only streams, so each incremental run moves only what changed since the last watermark. Every object lands in its own table (for example `xero_contacts`) with a schema derived from the Xero API rather than a flattened CSV, in any of the 43 supported destinations.
Datrise is in early access: pick a destination below to open the Xero pipeline page, and join the waitlist to get the Xero connector (ERP) with guided onboarding.
What Xero data Datrise extracts
Each object lands in its own typed table. Sync mode is derived from the object: history-style objects append, everything else upserts.
| Object | Landing table | Sync mode |
|---|---|---|
| contacts | xero_contacts | Upsert by primary key, incremental on updated-at |
| invoices | xero_invoices | Append-only, incremental by timestamp |
| bank transactions | xero_bank_transactions | Append-only, incremental by timestamp |
| accounts | xero_accounts | Upsert by primary key, incremental on updated-at |
| payments | xero_payments | Append-only, incremental by timestamp |
Xero API: setup facts for the connector
Verified against the vendor documentation on 2026-09-02. Unknown values are left blank rather than guessed.
| API | Xero Accounting API 2.0 |
|---|---|
| Authentication | OAuth 2.0 — OAuth 2.0 only: the standard authorization-code flow (with client secret) for web servers, PKCE for native apps, and Custom Connections (client-credentials-style, no user interaction) for single-org private apps. |
| Pagination | page — Invoices, Contacts, CreditNotes, BankTransactions, ManualJournals, Payments, PurchaseOrders, Prepayments and Overpayments support `page`/`pageSize` (default 100, max 1,000); a `pagination` object in the response reports `page`/`pageSize`/`pageCount`/`itemCount`. |
| Rate limit | per-tenant: 5 concurrent calls, 60 calls/minute, 1,000 calls/day (starter tier) or 5,000/day (Core tier and above); per-app: 10,000 calls/minute across all connected tenants |
| Incremental cursor | UpdatedDateUTC (If-Modified-Since header) — Most endpoints accept an `If-Modified-Since` UTC-timestamp header for changed records, but Xero explicitly recommends the Journals endpoint's `offset` (an ascending `JournalNumber`) instead wherever it's available, since some field-only edits don't update `UpdatedDateUTC` and get missed by If-Modified-Since. |
| Webhooks | Yes — Xero API webhooks |
| Bulk export | No |
| Deletes detectable | Yes — Invoices/Credit Notes support `?Statuses=DELETED,VOIDED` and Contacts expose a `ContactStatus=ARCHIVED` state, so deletes are detected by status filter rather than a separate deleted-records feed. |
What bites when replicating Xero
- `If-Modified-Since` is accurate only to the second and explicitly does not catch every change (Xero's docs call out partially-paid transaction fields like `DueDate`/`SentToContact`, and Contact fields sourced elsewhere like `Balances`/`IsSupplier`), so an If-Modified-Since-only sync silently drops some updates.
- The per-tenant Daily Limit is only 1,000 calls/day on the Starter tier (5,000/day from Core up), shared across every feature of the connected app, and a 429 response carries a `Retry-After` header plus an `X-Rate-Limit-Problem` header naming which of the concurrent/minute/daily/app-minute limit was hit.
- Webhooks only fire `CREATE`/`UPDATE` events (Contact, Credit Note, Invoice, Overpayment, Prepayment, Subscription categories) — there is no `DELETE` event type, so a deleted or voided invoice arrives as an `UPDATE` and the connector must re-fetch the record and check its `Status` to notice.
- The Journals endpoint (the most reliable change-capture mechanism, via the ascending `offset`/`JournalNumber`) requires an Advanced-tier plan on the connected organisation plus a Xero security assessment and use-case approval on the app before it can be requested at all.
Popular destinations for Xero
Choose a destination below to open the ready pipeline page.
- AAirtable
Relational spreadsheet destination for ops and go-to-market teams.
View pipeline - AAmazon Athena
Serverless SQL over S3 data lake tables.
View pipeline - AAmazon DynamoDB
Serverless key-value and document store on AWS.
View pipeline - AAmazon QuickSight
AWS serverless BI with SPICE and embedded analytics.
View pipeline - AAmazon Redshift
AWS petabyte-scale warehouse with Spectrum.
View pipeline - AAmazon S3 Data Lake
Object storage landing zone for parquet and snapshots.
View pipeline - AApache Superset
Open-source BI for SQL exploration, charts, and dashboard publishing.
View pipeline - AAzure Data Lake Storage
ADLS Gen2 object storage for analytics workloads.
View pipeline - AAzure Synapse
Microsoft analytics workspace with SQL pools.
View pipeline
Xero connector FAQ
- What Xero data does the connector extract?
- 5 objects: contacts, invoices, bank transactions, accounts and payments. Each lands in its own table with types preserved; history-style objects (3: invoices, bank transactions and payments) load as append-only streams.
- Is the Xero integration incremental?
- Yes. After the initial full load, every run reads only records changed since the last watermark (updated-at or event timestamp) and applies an upsert or an append depending on the object.
- Where can I load Xero data?
- Into 43 destinations: relational databases, cloud warehouses, data lakes, spreadsheets and BI tools. Each Xero → destination pair has its own page with the object-to-table mapping.
Related ERP sources
Other sources in the same category, each with its own connector page.
Early access
Launch your Xero pipeline with guided onboarding
Join the waitlist to get priority access for Xero integrations with guided setup, schema-aware mapping, and production-grade incremental sync.