DatriseAI-first ETL

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.

Incremental syncSchema-aware mapping43 destinations available

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.

ObjectLanding tableSync mode
contactsxero_contactsUpsert by primary key, incremental on updated-at
invoicesxero_invoicesAppend-only, incremental by timestamp
bank transactionsxero_bank_transactionsAppend-only, incremental by timestamp
accountsxero_accountsUpsert by primary key, incremental on updated-at
paymentsxero_paymentsAppend-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.

APIXero Accounting API 2.0
AuthenticationOAuth 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.
Paginationpage — 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 limitper-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 cursorUpdatedDateUTC (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.
WebhooksYes — Xero API webhooks
Bulk exportNo
Deletes detectableYes — 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.

Official API reference

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.

Compare this against every other documented API

Popular destinations for Xero

Choose a destination below to open the ready pipeline page.

  • A
    Airtable

    Relational spreadsheet destination for ops and go-to-market teams.

    View pipeline
  • A
    Amazon Athena

    Serverless SQL over S3 data lake tables.

    View pipeline
  • A
    Amazon DynamoDB

    Serverless key-value and document store on AWS.

    View pipeline
  • A
    Amazon QuickSight

    AWS serverless BI with SPICE and embedded analytics.

    View pipeline
  • A
    Amazon Redshift

    AWS petabyte-scale warehouse with Spectrum.

    View pipeline
  • A
    Amazon S3 Data Lake

    Object storage landing zone for parquet and snapshots.

    View pipeline
  • A
    Apache Superset

    Open-source BI for SQL exploration, charts, and dashboard publishing.

    View pipeline
  • A
    Azure Data Lake Storage

    ADLS Gen2 object storage for analytics workloads.

    View pipeline
  • A
    Azure 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.