Skip to content

Reference

Xero

Set up Xero OAuth for accounting, invoicing, and bank reconciliation

Connect your users to Xero for accounting, invoicing, and bank reconciliation.

PropertyValue
Provider IDxero
CategoryFinance
PKCESupported (S256)
Token refreshAutomatic (rotating refresh tokens, requires offline_access)
Redirect URIShown in Developer Portal

Go to the Xero Developer Portal

Navigate to My Apps in the Xero Developer Portal and sign in.

Create a new app

Click New app, enter the app name, and choose Web app as the integration type.

Configure the application

Enter the company or application URL and add the Alter callback URL (from the Developer Portal) to the Redirect URI field.

Get credentials

Open the app’s Configuration page, copy the Client ID, and generate a Client Secret. The secret is only shown once.

Open the Developer Portal

Go to portal.alterauth.com and navigate to the application.

Add Xero provider

Go to OAuth Providers > Add Provider > Xero.

Enter credentials

  • Client ID: Paste your Xero Client ID
  • Client Secret: Paste your Xero Client Secret

Select scopes

Choose the scopes the application needs. Always include offline_access.

Save

Click Save. The provider is now active.

ScopeDescription
openidAuthenticate with Xero via OpenID Connect
profileThe user’s first name and last name
emailThe user’s email address
offline_accessIssue a refresh token so access continues after the 30-minute access token expires
ScopeDescription
accounting.contacts.readRead-only access to customers and suppliers
accounting.contactsRead/write access to customers and suppliers
accounting.invoices.readRead-only access to invoices, credit notes, quotes, purchase orders, and items
accounting.invoicesRead/write access to invoices, credit notes, quotes, purchase orders, and items
accounting.payments.readRead-only access to payments, batch payments, overpayments, and prepayments
accounting.paymentsRead/write access to payments, batch payments, overpayments, and prepayments
accounting.banktransactions.readRead-only access to bank transactions and bank transfers
accounting.banktransactionsRead/write access to bank transactions and bank transfers
accounting.manualjournals.readRead-only access to manual journals
accounting.manualjournalsRead/write access to manual journals
accounting.settings.readRead-only access to organisation settings, the chart of accounts, and tax rates
accounting.settingsRead/write access to organisation settings, the chart of accounts, and tax rates
accounting.attachments.readRead-only access to attachments on accounting documents
accounting.attachmentsRead/write access to attachments on accounting documents
accounting.journals.readRead-only access to the accounting journal
accounting.budgets.readRead-only access to budgets
accounting.reports.aged.readRead-only access to aged receivables and aged payables reports
ScopeDescription
files.read / filesRead-only / read-write access to files and folders
assets.read / assetsRead-only / read-write access to fixed assets
projects.read / projectsRead-only / read-write access to projects and time entries
ScopeDescription
files.readRead-only access to files and folders
filesRead/write access to files and folders
assets.readRead-only access to fixed assets
assetsRead/write access to fixed assets
projects.readRead-only access to projects and time entries
projectsRead/write access to projects and time entries
  • Always request offline_access — Xero access tokens expire after 30 minutes and the refresh token is the only way to keep the grant alive.
  • Xero rotates refresh tokens on every refresh. Alter Vault stores the latest token automatically.
  • Apps created on or after March 2, 2026 must use the granular accounting scopes shown above; the broad accounting.transactions and accounting.reports.read scopes are rejected for new apps and retire in September 2027.
  • Each user grants access to one or more Xero organisations at consent time; API calls carry a xero-tenant-id header identifying the organisation.
  • Uncertified apps are limited to 25 connected organisations.
  • See the Xero OAuth documentation for more details.

Alter policy rules can target these attested operations and families for operation-level and parameter-aware controls.

Operation IDFamiliesMethodProvider path
getOrganisationsreadGET/api.xro/2.0/Organisation
getAccountsreadGET/api.xro/2.0/Accounts
getInvoicesreadGET/api.xro/2.0/Invoices
getInvoicereadGET/api.xro/2.0/Invoices/{InvoiceID}
createInvoiceswritePUT/api.xro/2.0/Invoices
updateOrCreateInvoiceswritePOST/api.xro/2.0/Invoices
updateInvoicewritePOST/api.xro/2.0/Invoices/{InvoiceID}
emailInvoicesendPOST/api.xro/2.0/Invoices/{InvoiceID}/Email
getContactsreadGET/api.xro/2.0/Contacts
getContactreadGET/api.xro/2.0/Contacts/{ContactID}
createContactswritePUT/api.xro/2.0/Contacts
updateContactwritePOST/api.xro/2.0/Contacts/{ContactID}
getPaymentsreadGET/api.xro/2.0/Payments
createPaymentpayment, writePOST/api.xro/2.0/Payments
createPaymentspayment, writePUT/api.xro/2.0/Payments
deletePaymentdelete, paymentPOST/api.xro/2.0/Payments/{PaymentID}
getBankTransactionsreadGET/api.xro/2.0/BankTransactions
createBankTransactionswritePUT/api.xro/2.0/BankTransactions
updateBankTransactionwritePOST/api.xro/2.0/BankTransactions/{BankTransactionID}
getCreditNotesreadGET/api.xro/2.0/CreditNotes
createCreditNoteswritePUT/api.xro/2.0/CreditNotes
getQuotesreadGET/api.xro/2.0/Quotes
createQuoteswritePUT/api.xro/2.0/Quotes

Report an issue with this page

Necessary

Required for sign-in, security, authorization, and remembering your choices.

Always active

Analytics

Helps us understand which product and documentation features are useful.

Performance diagnostics

Uses performance tracing and privacy-masked session replay to diagnose problems.

You can change these choices at any time from Cookie settings.