APIs & Integrations
Xero
Overview
Pre-built tooling
✅ Authorization
✅ Authorization
✅ Read & write data
✅ Read & write data
Tools | Status |
---|---|
Pre-built integrations | ✅ |
API unification | ✅ |
2-way sync | ✅ |
Webhooks from Nango on data modifications | ✅ |
Real-time webhooks from 3rd-party API | ✅ |
Proxy requests | ✅ |
✅ Observability & data quality
✅ Observability & data quality
Tools | Status |
---|---|
HTTP request logging | ✅ |
End-to-type type safety | ✅ |
Data runtime validation | ✅ |
OpenTelemetry export | ✅ |
Slack alerts on errors | ✅ |
Integration status API | ✅ |
✅ Customization
✅ Customization
Tools | Status |
---|---|
Create or customize use-cases | ✅ |
Pre-configured pagination | 🚫 (time to contribute: <48h) |
Pre-configured rate-limit handling | 🚫 (time to contribute: <48h) |
Per-customer configurations | ✅ |
Pre-built integrations
Accounts
Accounts
Endpoint | Description | Readme |
---|---|---|
GET /accounts | Fetches all accounts in Xero (chart of accounts). Incremental sync, detects deletes, metadata is not required. | 🔗 |
Bank Transactions
Bank Transactions
Endpoint | Description | Readme |
---|---|---|
GET /BankTransactions | Fetches all bank transactions in Xero. Incremental sync, detects deletes, metadata is not required. | 🔗 |
Contacts
Contacts
Endpoint | Description | Readme |
---|---|---|
POST /contacts | Creates one or multiple contacts in Xero. Note: Does NOT check if these contacts already exist. | 🔗 |
PUT /contacts | Updates one or multiple contacts in Xero. Only fields that are passed in are modified. If a field should not be changed, omit it in the input. The id field is mandatory. | 🔗 |
GET /contacts | Fetches all Xero contacts. Details: incremental sync, detects deletes, metadata is not required. | 🔗 |
Credit Notes
Credit Notes
General Ledger
General Ledger
Endpoint | Description | Readme |
---|---|---|
GET /general-ledger | Fetch all general ledger entries in Xero | 🔗 |
Invoices
Invoices
Endpoint | Description | Readme |
---|---|---|
POST /invoices | Creates one or more invoices in Xero. Note: Does NOT check if the invoice already exists. | 🔗 |
PUT /invoices | Updates one or more invoices in Xero. To delete an invoice that is in DRAFT or SUBMITTED set the status to DELETED. If an invoice has been AUTHORISED it can’t be deleted but you can set the status to VOIDED. | 🔗 |
GET /invoices | Fetches all invoices in Xero. Incremental sync. | 🔗 |
Items
Items
Organisations
Organisations
Endpoint | Description | Readme |
---|---|---|
GET /organisations | Fetches organisation details in Xero. | 🔗 |
Payments
Payments
Tenants
Tenants
Endpoint | Description | Readme |
---|---|---|
GET /tenants | Fetches all the tenants the connection has access to. This can be used to set the metadata to the selected tenant. | 🔗 |
Not seeing the integration you need? Build your own independently.
Access requirements
Pre-Requisites | Status | Comment |
---|---|---|
Paid dev account | ✅ Not required | Free, self-signup for a Xero Developer account. |
Paid test account | ✅ Not required | Developer account includes a demo company for testing. |
Partnership | ✅ Not required | |
App review | ✅ Not required | Only required for apps published to the Xero App Store. |
Security audit | ✅ Not required |
Setup guide
1
Create a Xero Developer account
Go to Xero Developer signup page and create a free account.
2
Create a new app
- Log in to your Xero My Apps developer console.
- Click New app in the top right corner.
- A new app form will appear. Enter a unique App name.
- Select Mobile or desktop app as the integration type.
- Fill in the Company or application URL and Redirect URI fields. For the Redirect URI, use:
https://api.nango.dev/oauth/callback
. - Check the developer’s terms checkbox and click Create App.
- Your app will be generated, and you will be redirected to your App details page.
3
Obtain API credentials
- Navigate to the Configuration tab to retrieve your Client ID and Client Secret.
- Click Generate a Secret to create a new Client Secret.
- You will need these credentials when configuring your integration in Nango.
4
Next
Follow the Quickstart.
To receive webhooks from Xero, follow our Xero Webhooks Guide.
Need help getting started? Get help in the community.
Contribute improvements to the setup guide by editing this page
Useful links
Contribute useful links by editing this page
API gotchas
- When a user authorizes your app, they select which Xero organization to connect. Your app can only access data for the selected organization.
- If you need to work with multiple Xero organizations, you’ll need to handle the tenant context in your API calls. After a connection is created, Nango will automatically fetch and store the
tenant_id
in the connection config, which you can then use in your API calls. - Make sure you add the
offline_access
scope to ensure the token refreshes as expected
Contribute API gotchas by editing this page