Xero MCP server: a setup guide for Claude and ChatGPT
Follow the steps to connect Xero to Claude or ChatGPT with read-only access first. There are three routes: Xero's connector in Claude, Xero's Remote MCP server and Xero's open-source MCP server. If you would rather have it done for you, it starts with the A$990 Workflow Audit.
Credited in full to a build signed within 30 days. AUD, no GST charged.
- You ask in Claude or ChatGPT"Which invoices are overdue?"
- The assistant calls Xero MCPXero's server, on your computer or hosted by Xero
- Read-only scopes firstOnly the access the work needs
- A person approves any changeBefore anything is written to Xero
One organisation at a time
Xero MCP: the short answer and the three routes
Short answer: MCP (Model Context Protocol) is the standard way an AI assistant such as Claude or ChatGPT talks to other software. For Xero there are three routes. To get answers, use Xero's own connector in Claude. To let an AI prepare work in Xero, use the Remote MCP server or the open-source MCP server, with read-only scopes first.
The three routes, as Xero and its README describe them, read 30 October 2026
| Route | What it does | What it needs | Fits when |
|---|---|---|---|
| Xero's connector in Claude | Answers from your Xero data. Xero calls it read-only: Claude "can't create, edit, approve, reconcile or pay in Xero" | An active Xero subscription and a Claude account, free or paid. Free to add. No developer setup | You only want answers |
| Xero's Remote MCP server | Hosted by Xero at https://api.xero.com/mcp/v1. Its tools can write back to Xero, so access is set by scopes | A Xero developer app; Xero recommends OAuth 2.0 with PKCE. Custom Connections are not eligible. Xero's Core plan: A$35 a month before tax. Starter: demo organisation only | An AI that prepares work in Xero, for a person to approve |
| Xero's open-source MCP server | Runs on your own computer. The README lists 51 tools: read tools for invoices, contacts, accounts and reports, and write tools that create and update records | Node.js v18 or higher and a Xero Custom Connection: A$10 a month including GST, one organisation. Free on the Demo Company | One organisation, run on your own machine |
Route 1, Xero's connector in Claude, in Xero's four steps
Add Xero.
Find Xero in Claude's connectors directory.
Sign in.
Use your Xero login.
Choose the organisation.
The one you want to ask about.
Ask.
Start with your profit, cash or overdue invoices.
If you only want answers, start here. Xero says the connector is free to add and takes "just a few minutes". Its data is not combined across organisations or used to train Anthropic's models, and it "is not a source of tax, compliance, or financial advice".
Xero's March 2026 blog post says you will be able to trigger actions from Claude "over time". Xero's current Claude page says the connector is read-only. Xero's two MCP servers are different products, and both have tools that can write to Xero. The rest of this guide is about controlling them.
Read-only first: which Xero scopes to give the connection
Scopes decide what the connection can do in Xero. Start with the read-only ones. Add a write scope only when a workflow needs it.
Scopes named in the open-source server's README and Xero's OpenAPI spec, read 30 October 2026
| Data | Read-only scope | Scope that allows writes |
|---|---|---|
| Invoices | accounting.invoices.read | accounting.invoices |
| Payments | accounting.payments.read | accounting.payments |
| Bank transactions | accounting.banktransactions.read | accounting.banktransactions |
| Manual journals | accounting.manualjournals.read | accounting.manualjournals |
| Reports | accounting.reports.profitandloss.read, accounting.reports.balancesheet.read, accounting.reports.trialbalance.read, accounting.reports.aged.read | None listed |
| Contacts | accounting.contacts.read | accounting.contacts |
| Settings (accounts) | accounting.settings.read | accounting.settings |
| Payroll | Leave off. The README says payroll queries need an NZ or UK region | payroll.settings, payroll.employees, payroll.timesheets |
The config in this guide uses the read-only scopes in the table, except payroll. The README's list leaves out accounting.contacts.read and accounting.settings.read. Both are real Xero scopes: Xero's OpenAPI spec describes them as read-only access to contacts and contact groups, and to organisation and account settings. The first test question, listing accounts, needs the settings scope. Tick all of them on the Custom Connection.
Two scopes, accounting.transactions.read and accounting.reports.read, are marked deprecated. The README says "Some scopes are being deprecated in favour of more granular scopes", so use the granular ones above.
The scope set depends on when the connection was created. The README says connections made before 29 April 2026 use SCOPES_V1 (bundled permissions) and later ones SCOPES_V2 (granular permissions). The server "automatically tries V1 scopes first and falls back to V2 if needed", and "All scopes in the relevant list must be added to your custom connection". Setting XERO_SCOPES overrides the default list. The lists are in the README's linked source file, src/clients/xero-client.ts.
How to set up Xero's open-source MCP server in Claude Desktop or Claude Code
Four steps, on your own computer, starting on Xero's Demo Company.
Check Node.js.
The README needs v18 or higher. Run
node --version.Create the connection.
A Xero Custom Connection with the read-only scopes.
Add the server.
One config block for Claude Desktop, or one command for Claude Code.
Restart and test.
Three read-only questions on the Demo Company.
Create the Custom Connection with read-only scopes
Follow Xero's Custom Connections guide, which the README points to. Xero describes the setup as selecting scopes, authorising the connection and getting a client ID and secret. The portal screens change, so use Xero's guide for the clicks. Select only the read-only scopes from section 2, including the contacts and settings ones.
Xero's README recommends a Demo Company to start with, "because it comes with some pre-loaded sample data". Switch to it from the top left-hand dropdown in Xero. Xero says a Custom Connection can be connected to the Demo Company for free for development.
For your own organisation, a Custom Connection is A$10 a month including GST (Xero's page reads "$10/m AUD (inc GST)", 30 October 2026). It covers one organisation, and you need a Xero subscription with enough Custom Connections. Xero offers it to organisations in AU, NZ, UK and US. The README says to keep the client secret out of version control: "Please do not commit your .env file or any sensitive credentials to version control".
Claude Desktop: the config block
- In the Claude menu in your menu bar (not the settings inside the Claude window), choose Settings..., then the Developer tab, then Edit Config.
- The file is
claude_desktop_config.json. On macOS it is in~/Library/Application Support/Claude/. On Windows it is in%APPDATA%\Claude\. - Paste the block below, swap in your client ID and secret, and save. If the file already has an
mcpServerssection, add thexeroentry inside it. - Completely quit Claude Desktop and start it again. It only reads the file at start-up.
{
"mcpServers": {
"xero": {
"command": "npx",
"args": ["-y", "@xeroapi/xero-mcp-server@latest"],
"env": {
"XERO_CLIENT_ID": "YOUR_CLIENT_ID",
"XERO_CLIENT_SECRET": "YOUR_CLIENT_SECRET",
"XERO_SCOPES": "accounting.invoices.read accounting.payments.read accounting.banktransactions.read accounting.reports.profitandloss.read accounting.reports.balancesheet.read accounting.reports.aged.read accounting.contacts.read accounting.settings.read"
}
}
}
} This is the README's block with read-only scopes in XERO_SCOPES. The README uses @latest, so each start runs the newest published version (0.0.17 on npm on 30 October 2026, published 26 May 2026). To pin one, put a version number in its place and update when you choose. The README also describes a bearer-token mode for supporting several Xero accounts at runtime. For Claude Desktop it recommends the Custom Connection.
Claude Code: the command
Run this in your terminal. Keep the quotes around the scopes.
claude mcp add --env XERO_CLIENT_ID=YOUR_CLIENT_ID --env XERO_CLIENT_SECRET=YOUR_CLIENT_SECRET --env XERO_SCOPES="accounting.invoices.read accounting.payments.read accounting.banktransactions.read accounting.reports.profitandloss.read accounting.reports.balancesheet.read accounting.reports.aged.read accounting.contacts.read accounting.settings.read" --transport stdio xero -- npx -y @xeroapi/xero-mcp-server@latest The -- separates Claude's options from the command that runs the server. Keep --transport stdio between the --env options and the name, as Claude Code's documentation asks. The default scope, local, keeps the server to you in the current project. Add --scope user to use it across all projects. Do not use --scope project: it writes to .mcp.json, which is shared with everyone in the project, and your secret would go with it.
Check it with claude mcp list, which shows ✔ Connected when it works. Inside a session, /mcp shows the status.
Restart and test with three questions
In Claude Desktop, open the "Add files, connectors, and more" menu in the input box, then Connectors, then Manage connectors, and select xero to see its tools. Then ask, on the Demo Company:
- List the accounts in this Xero organisation.
- Which invoices are overdue, and how much is owed in total?
- Show the profit and loss for last month.
These use read tools such as list-accounts, list-invoices and list-profit-and-loss. When the answers look right, create a Custom Connection for your own organisation and swap in its client ID and secret. Add a write scope later, for one workflow, with the controls in section 7.
How to connect Xero's Remote MCP server to Claude
Xero hosts this one at https://api.xero.com/mcp/v1, so there is nothing to install. It needs a Xero developer app, not a Custom Connection.
Create a developer app.
Xero recommends an app that uses OAuth 2.0 with PKCE: "PKCE doesn't need a client secret, so there's no secret to leak into a prompt, a config file or an AI development tool."
Register the redirect.
The callback address your client uses.
Add the server.
One Claude Code command, or a Claude custom connector.
Sign in and test.
Start on the demo organisation.
Who can use the Remote MCP server, and the fee, from Xero's Developer FAQ and pricing page, read 30 October 2026
| Case | What Xero says |
|---|---|
| Sign-in | The server authorises through Xero's OAuth 2.0 flow with PKCE. Custom Connections apps are not eligible to access it |
| Core plan and above | Included. Xero's pricing page shows a monthly tier fee of A$35 for Core, and says pricing is tax exclusive |
| Starter plan | Apps on the Starter plan can use it with the demo organisation only |
| Accountants and bookkeepers | For an app built for your own practice or for a client, MCP access is included in your API fee exemption. Apply through Manage plan for your app in the Developer Portal |
Xero says the server works with "any client that supports remote MCP servers", and documents setup for Claude Desktop, Claude Code, Cursor and VS Code. Xero's guides for each client are linked from its Remote MCP documentation.
Claude Code
- In the Xero developer portal, create an app that uses OAuth 2.0 with PKCE, and copy its client ID.
- Add
http://localhost:8080/callbackto the app's redirect URIs. The port must match--callback-portin the command. Check the address against Xero's Claude Code guide, which is the source for the current redirect URI. - Run the command below, with your client ID in place of
YOUR_XERO_CLIENT_ID. - Start a session, run
/mcpand authenticate with Xero.
claude mcp add --transport http --client-id YOUR_XERO_CLIENT_ID --callback-port 8080 xero https://api.xero.com/mcp/v1 The --client-id and --callback-port options are Claude Code's way to use an OAuth client you registered yourself. claude mcp list shows ! Needs authentication until you sign in, then ✔ Connected.
Claude on the web or Claude Desktop
- Go to Customize, then Connectors, then Add custom connector. Enter a name and
https://api.xero.com/mcp/v1as the server address. - Choose "Use your own OAuth client" and enter the client ID of your PKCE app.
- Register the redirect address Xero's Claude guide gives for the app, then add the connector and sign in.
- On Team and Enterprise plans an owner adds it under Organization settings, then Connectors, then Add, then Custom. Each member then chooses Connect to sign in.
Claude connects from Anthropic's cloud, not from your device. Xero's server is public, so that works. A free Claude plan is limited to one custom connector. Claude warns that "Custom connectors allow connections to unverified services", so type the address yourself rather than pasting one from a page you do not trust.
How to connect Xero to ChatGPT: what works today
Xero's connector is for Claude, and Xero documents no ChatGPT setup. ChatGPT can add a custom MCP server by its address, but a server on your own computer needs one extra piece.
ChatGPT and the three Xero routes, read 30 October 2026
| Route | In ChatGPT today | What to do |
|---|---|---|
| Xero's connector | No. It is a connector for Claude | Use Claude for it. The Xero pages read for this guide describe the connector for Claude only |
| Open-source MCP server | Only through a tunnel | ChatGPT needs a public HTTPS address. This server runs on your computer. OpenAI's Secure MCP Tunnel "can reach its configured stdio or HTTP MCP server", and setting one up is technical work |
| Remote MCP server | Possible, not documented by Xero | Xero says its server works with "any client that supports remote MCP servers", and ChatGPT adds custom MCP servers by address. But Xero's documented clients are Claude Desktop, Claude Code, Cursor and VS Code, not ChatGPT. Whether ChatGPT's sign-in works with Xero's OAuth 2.0 PKCE flow is not documented, so try it on the demo organisation first |
How ChatGPT adds a custom MCP server, from OpenAI's developer documentation
Open Plugins.
Go to chatgpt.com/plugins.
Add the server.
Select the plus button, then Add custom MCP server.
Enter the address.
The MCP server address, including the
/mcppath.
OpenAI says account and workspace policies apply to adding and using custom MCP servers, and its developer page names no plans. Check what your plan allows in ChatGPT. Xero's open-source README and its May 2026 announcement do not mention ChatGPT, and Xero's Remote MCP setup guides do not include it. If you use ChatGPT and want a Xero connection, the audit works out which route fits.
Xero MCP not working? Troubleshooting
The common problems, built from the README, Xero's Developer FAQ and the Claude, Claude Code and ChatGPT documentation.
Symptom, likely cause and fix
| Symptom | Likely cause | Fix |
|---|---|---|
| Xero does not appear in Claude Desktop | Claude Desktop was not fully restarted, or the config file has a JSON mistake | Completely quit Claude Desktop and start it again. Check the file is valid JSON and that the xero entry sits inside mcpServers. The log is mcp.log in ~/Library/Logs/Claude (macOS) or %APPDATA%\Claude\logs (Windows) |
| The server will not start | Node.js is missing or older than v18 | Install Node.js v18 or higher and check with node --version |
| Claude Desktop cannot find npx | Node.js was installed with nvm, so npx is not on the path Claude Desktop uses | The README says to set "command" to the full path of npx instead of just npx |
| The error "Environment Variables not set - please check your .env file" | The server did not receive XERO_CLIENT_ID and XERO_CLIENT_SECRET | Check both are inside the env block of the config (or passed with --env in Claude Code), with no typo in the names |
| The error "Failed to get Xero token with XERO_SCOPES" | Xero refused the token: a scope in XERO_SCOPES is missing from the Custom Connection, or the client ID or secret is wrong | Tick every scope in XERO_SCOPES on the connection, and copy the client ID and secret again |
| A 401 with insufficent_scope (Xero's spelling) in the WWW-Authenticate header | The app is missing a granular scope for that tool | Add the scope the tool needs in the Xero developer portal, then sign in again |
| An error about scopes or authorisation | The Custom Connection does not have every scope the server asks for | Compare the connection's scopes with XERO_SCOPES. The README says all scopes in the relevant list must be added to the connection, and that the scope set depends on when it was created |
| Claude Code shows "Failed to connect" | Node.js is missing or too old, a variable is wrong, or the command is in a different shape | Run node --version, check the client ID, secret and scopes, and keep --transport stdio between the --env options and the name and -- before npx. Run claude mcp list again |
| Claude Code shows "Needs authentication" | A remote server needs you to sign in | Run /mcp inside a session and authenticate with Xero |
| The Remote MCP server rejects the app | The app is a Custom Connection, or the Starter plan is used with a real organisation | Use a Xero developer app with OAuth 2.0 and PKCE, on the Core plan or above, or the demo organisation on Starter |
| Payroll questions fail | The README says payroll queries need an NZ or UK region | Use the accounting tools for an Australian organisation |
| Answers are sample data, or from the wrong business | A Custom Connection covers one organisation, and the Demo Company is a separate one | Check which organisation the connection was made for. Use one connection per organisation |
| A remote server will not add in Claude | The address is mistyped, or a free plan is at its one custom connector | Check the address is https://api.xero.com/mcp/v1, or remove another custom connector |
| You want to stop access | The app is still connected to the organisation | For the Remote MCP server, Xero's Developer FAQ says the user who authorised can disconnect access from their Connected Apps page in the Xero App |
What to get right before an AI can write to Xero
Xero is clear about this in its own Developer FAQ for the Remote MCP server, read 30 October 2026.
Four controls, what Xero says and what to do
| Control | What Xero says | What to do |
|---|---|---|
| No confirmation step | "The tools on V1 do not elicit user confirmation. Always ask your agent to confirm with you before writing anything back to Xero" | Tell the assistant to ask you before any write. The server does not do it for you |
| One organisation per action | "Each call runs against a single organisation" | Ask the agent to list the connected organisations, then tell it which one to act on |
| Calls logged, not reasons | "Only the API calls are logged, not the tool calls or prompts behind them" | Keep your own record of what the agent was asked, and why |
| Access by scope | "Only the scopes for the tools you want the agent to call" | Start with read scopes. Add a write scope for one workflow at a time |
The open-source server's README lists 51 tools, 25 of them write tools such as create-invoice, update-invoice and create-payment. It describes no confirmation step before a write. Keep to read-only scopes until a workflow needs more, and tell the assistant to ask you first.
These are the same controls an accountant expects for a new staff member with access to the ledger: limited access, approval before posting, and a record of who did what.
Want it done for you? Start with a free fit check by email
- The right routeThe connector, the Remote MCP server or the open-source server, chosen for what you want done
- Read access firstRead-only scopes to start. Write scopes only for the tools a workflow needs
- The assistantClaude or ChatGPT, with instructions that name the organisation and when to stop and ask
- A person approvesDraft invoices and bills, not approved ones. Nothing posts or pays without a person
- A recordWhat was asked, what was changed and who approved it, plus how to disconnect
A$990 5 working days AUD, no GST charged
A free fit check by email comes first. The audit is the next step: a 60-minute call and a read-only review. The written report says which route fits, what access the assistant needs, where a person approves, and what it will cost to run. If a build is worth doing, the report gives you a fixed quote for it. The audit fee is credited in full to a build signed within 30 days.
Xero's own charges (such as a Custom Connection) and your Claude or ChatGPT subscription are paid by you directly. Running costs (software and AI usage) are estimated in your audit, before you commit to a build.
Chartered Accountant (CA ANZ) · MBA · Xero certified · 16 years in finance, operations and systems · Canberra, working across AU and NZ
About RenzoThe same approach runs an agentic finance system I built: 30 agents, about 10,000 automated tests, and a person approves every money decision.
Set up by a Chartered Accountant who works in Xero
Renzo Demartini: Chartered Accountant (CA ANZ), MBA, Xero certified, 16 years across finance, operations and systems. I know what a ledger needs protecting from, and I build AI workflows with Claude. I work remotely with businesses across Australia and New Zealand, and I do the work myself.
Xero MCP questions: Claude, Claude Code and ChatGPT
What is the Xero MCP server?
MCP (Model Context Protocol) lets an AI assistant use another system's tools. Xero's open-source MCP server runs on your computer. It gives an assistant such as Claude tools to read Xero data, such as invoices, contacts and reports, and to create or update records. Xero also has a Remote MCP server it hosts, and a read-only connector for Claude.
How do I connect Xero to Claude?
For answers, add Xero from Claude's connectors directory, sign in with your Xero login and choose the organisation. Xero says there is no developer setup. For more control, use the open-source server with a Custom Connection: the setup steps are above.
How do I connect Xero to Claude Code?
Create a Xero Custom Connection with read-only scopes, check you have Node.js v18 or higher, then run the claude mcp add command in the Claude Code step. Check it with claude mcp list.
How do I connect Xero to ChatGPT?
Xero's connector is for Claude. ChatGPT adds a custom MCP server by its address, from chatgpt.com/plugins, so it needs a public HTTPS address or OpenAI's Secure MCP Tunnel for a server on your own computer. Xero says its Remote MCP server works with "any client that supports remote MCP servers", but its documented clients do not include ChatGPT, so test it on the demo organisation first. The ChatGPT section has the detail.
Is the Xero connector in Claude enough?
If you want answers about your numbers, often yes. It is read-only and Xero says it is free to add. If you want the AI to prepare work in Xero, such as draft invoices, you need one of the other two routes and the controls on this page.
How much does the Xero MCP server cost?
The connector in Claude is free to add, with an active Xero subscription and a Claude account. The open-source server needs a Xero Custom Connection, which Xero's page prices at "$10/m AUD (inc GST)" for one organisation (read 30 October 2026). It is free on the Demo Company for development. Xero's Remote MCP server needs the Core plan or above, which Xero's pricing page shows at a A$35 monthly tier fee before tax (read 30 October 2026). Apps on the Starter plan can use it with the demo organisation only. Your Claude or ChatGPT subscription is separate.
Can the AI post or pay without me?
Not in a setup I build. The assistant prepares drafts, and a person approves anything that posts, pays or reaches a customer. Xero's guidance and the open-source README describe no confirmation step before a write, so the approval step is built into the setup.
Is my Xero data used to train AI?
Xero says data shared through its Claude connector is not used to train Anthropic's models and is used only for that session. Your Claude or ChatGPT plan has its own terms: the audit checks them.
Can it work across several Xero organisations?
A Custom Connection covers one organisation, so use one per organisation. Xero says its Claude connector does not combine data across organisations. The Remote MCP server supports several organisations with the user's consent, but each call runs against one of them. The setup names the organisation for every task.
Do I pay Xero's API fee as an accountant or bookkeeper?
Xero's Developer FAQ says that for accountants and bookkeepers building for their own practice or a client, MCP access is included in your API fee exemption. To apply, Xero says to go to Manage plan for your app in the Developer Portal and select Get in touch.
How do I disconnect Xero from Claude or ChatGPT?
For the Remote MCP server, Xero's Developer FAQ says the user who authorised the connection can disconnect access from their Connected Apps page in the Xero App. To stop the open-source server on your computer, remove the xero entry from your config and restart Claude Desktop, or run claude mcp remove xero in Claude Code.
Does it work in Cursor or VS Code?
Xero documents its Remote MCP server for Claude Desktop, Claude Code, Cursor and VS Code, and says the open-source server works with any MCP client that supports local (STDIO) servers. This guide covers Claude and ChatGPT.
Do I need to be a developer?
For the Claude connector, no. For the other two routes, some technical setup is needed: a Custom Connection or a Xero developer app with PKCE, and an assistant configured to use it. That is the part I do.
What should I put in an enquiry?
What you would like the assistant to do in Xero, how many organisations, and whether you use Claude or ChatGPT. Please do not send passwords, keys or confidential records.
Sources, checked 30 October 2026: Xero, Claude; Xero media release, 13 May 2026; Xero blog, 27 March 2026; Xero Custom Connections; Xero developer pricing; Xero OpenAPI spec (scopes); Xero's open-source MCP server README; npm registry, @xeroapi/xero-mcp-server; MCP, connect local servers; Claude, custom connectors; Claude Help, connectors; Claude Code, MCP; OpenAI, connect from ChatGPT. The Remote MCP address, plans, fee and controls (section 4 and section 7) are from Xero's Developer FAQ on the Remote MCP server, read 30 October 2026. Xero's plans and prices change: the audit checks them again for you.
Start with what you want the AI to do
A free fit check by email first. The A$990 Workflow Audit is the next step, credited to your build.
Get a free fit check by email The next step after the fit check: the A$990 Workflow Audit
Get a free fit check by email
Send the form with your software, the workflow, your team size and your timing. I reply by email, usually with a question or two, and tell you whether it's a fit. No call needed. If it is, the next step is the A$990 Workflow Audit.
Thanks, it's with me.
I read every enquiry myself and reply by email to the address you gave, .
Next, I reply by email, usually with a question or two, and tell you whether it is a fit. No call needed.
If it is a fit, the step after that is the A$990 Workflow Audit.
In the meantime, see how each build runs: worksbetter.ai/#builds
Sending saves your details in HubSpot so I can reply. No mailing list. No payment is taken. How your enquiry is handled.