Skip to main content
See what this connector supports ↓

Introduction

Xero is a cloud accounting platform for small and medium-sized businesses. It is used for bookkeeping, bank reconciliation and reporting.

Activate Xero

Partner keys

You’ll need your own OAuth2 app, registered with Xero. You need a Xero account and the pricing plan that matches the data you plan to access. New apps start on the free Starter tier, capped at 5 connected organizations. Add a payment method to move to Core, which allows up to 50. Certification is only required from the Plus tier, for more than 50 connections.
1

Create a Xero account

If you don’t have one yet, start a free trial.
2

Create the app

Sign in to the Xero Developer Portal and create a new app:
  • App name: a name your users will recognize during the OAuth flow
  • Integration type: Web app
  • Company or application URL: your company’s website, starting with https://
  • Redirect URI:
3

Get the credentials

In My Apps, open your app. Reveal the Client ID, then click Generate secret to create the Client Secret. Copy both and store them securely.
Starter tier. Every new app starts on the free Starter tier:
  • at most 5 connected organizations
  • 1,000 calls per day per organization
  • 60 calls per minute
To connect more than 5 organizations, add a payment method to move to Core, which allows up to 50. Core needs no certification.Certification. App Certification turns your integration into a Xero App Partnership. It is required from the Plus tier and above. Plus allows up to 1,000 connections.
  • Xero recommends applying once you have onboarded at least 10 beta customers.
  • Xero reviews the app: error handling, secure data management, and the onboarding flow (Sign In with Xero).
  • A Xero App Store listing needs Plus or above:
    • optional on Plus and Advanced
    • required on Enterprise
    • not available on Starter and Core
Financial services. Apps doing bank feeds, lending and credit, expense management or payment services follow a separate path: see Special certification for financial services below.See Xero’s certification guide.

Activate Xero in your Chift account

In Connectors, enter your Xero Client ID and Client Secret.

Special certification for financial services

If your app falls into one of these categories, the standard certification does not apply: you operate under a specific financial services contract with Xero, not the standard developer terms.
  • Bank feeds: pushing transaction data into Xero automatically. Xero’s Bank Feeds API is closed: it is only open to financial services partners, and Xero must certify the integration before customers can use it.
  • Lending & credit: reading Xero data to assess creditworthiness or to offer business loans.
  • Expense management: dedicated flows for corporate cards and employee reimbursements.
  • Payment services: moving funds between bank accounts and Xero.
These contracts have their own process and pricing, which Xero does not publish. Contact the Partnerships team at partnerships@chift.eu: they introduce you directly to the right person at Xero for the certification, the contract and the next steps.

Connector settings

The Scopes setting in the Chift Xero connector settings: the scopes Chift always requests are greyed out, the optional ones can be ticked
Scopes sets which scopes Chift requests from Xero during the OAuth flow. Scopes are not set when creating the app in Xero: you tick the optional ones here. Chift always requests these scopes: openid, profile, email, offline_access, accounting.contacts.read, accounting.settings.read, accounting.attachments.read and files.read. Some scopes are deprecated and cannot be requested by apps created on or after March 2, 2026: doing so returns an invalid scope error. Apps created before that date can use them until September 2027. See Xero’s organization scopes. The accounting.reports.read scope is replaced by granular report scopes. Of these, Chift only offers accounting.reports.trialbalance.read.
Do not request accounting.journals.read or bankfeeds without prior approval from Xero. Requesting either without approval returns an invalid_scope error and stops the user from completing the connection.

Test Xero

About the demo company:
  • It resets automatically 28 days after creation, and you then need to reconnect your app.
  • You cannot invite other users to it.
For an empty organization, start a 30-day Xero trial instead: it has no demo data.

Vendor fees

Since March 2, 2026, Xero bills API access by tier, and has added limits on authentication, API usage and feature access. These changes affect integration design, data consumption and cost.

Software editor (you)

From free to €845 per month (excl. tax), billed on the number of connected companies and the data downloaded each month. See the tiers below.

End user

No fees. Xero bills the API tiers to the software editor, not to the end user.
Prices exclude tax. Beyond the quota, each additional GB costs €1.45. The premium APIs are the Journals API GET /Journals, the Xero Practice Manager API and bulk connections. They need:
  • the Advanced tier or above
  • a security assessment, initial and yearly
  • a use-case validation by Xero
See Xero’s pricing page and its pricing and policy FAQ. On the pricing page, select EUR. Apps in financial services (bank feeds, lending and credit, expense management, payment services) are priced under a separate contract with Xero: see Special certification for financial services.

Connect Xero

Xero setup guide for end users

The full step-by-step, with screenshots.
Before they start, your end users need:
  • an active Xero subscription for the organization
  • a Xero user with the Standard, Adviser or Administrator role and the Connected Apps permission
  • while your app is not certified: an organization can connect at most 5 uncertified apps
  • for cashbook and ledger (partner edition) organizations: a member of the practice staff to authorize the connection, since managed client and cashbook client roles cannot
To connect, they:
  • sign in to Xero and authorize your app
  • choose the organizations they want to connect
  • pick the organization to use in the Tenant ID list shown after authorization. This step disappears when the connector option Let the user specify the folder? is turned off

Rate limits

Xero applies fixed quotas per tenant. A tenant is an organization, account or practice. Windows are fixed and reset at different times for each tenant. When a limit is exceeded, Xero returns HTTP 429 Too Many Requests, with an X-Rate-Limit-Problem header naming the limit reached. For the minute and daily limits, it also sends Retry-After, in seconds. Chift then returns ERROR_RATE_LIMIT (HTTP 429), with a message saying which limit was hit and when requests will be accepted again. Chift does not retry a request that hit the per-minute or daily limit. Wait for the time given in the error before sending it again. Certified apps on Plus and above get Rapid Sync: the standard limits are lifted for the first 30 minutes of a new connection. See Xero’s rate limit documentation.

Limitations & specificities

GET suppliers only returns contacts that Xero flags as suppliers, meaning contacts with at least one bill. A new supplier contact without a bill does not appear. GET clients returns every contact, suppliers included.Why: in Xero, every customer and supplier is a contact. Xero infers the supplier role from activity; it is not stored as a separate record.
Journals and manual journals are two unrelated objects; manual journals are not a subset of journals:
  • Journal (GET /Journals) maps to GET Journal Entries in Chift. It is read-only and returns every general-ledger entry, including those generated from invoices and payments. It is a premium API: it needs the Advanced tier and a security assessment.
  • Manual journal (/ManualJournals) maps to POST Journal Entry and to GET Journal Entries on the manual journal in Chift. It covers manual journals only, on every tier.
Journal entries can only use general ledger accounts. For a customer, supplier or employee line, pass force_general_account with the general ledger account to book it on.
Xero returns account balances year to date only, from the start of the current fiscal year: a custom start date is not supported.On journal entries, the tax amount must match the tax code: a 0% tax code needs a tax amount of 0, and a tax code with a positive rate needs a non-zero tax amount.

Coverage

Troubleshooting

Specific errors for Xero: