Skip to content

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.

Xero and an AI assistantSet up safely
  1. You ask in Claude or ChatGPT"Which invoices are overdue?"
  2. The assistant calls Xero MCPXero's server, on your computer or hosted by Xero
  3. Read-only scopes firstOnly the access the work needs
  4. 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

Three ways to connect Xero to an AI assistant
RouteWhat it doesWhat it needsFits when
Xero's connector in ClaudeAnswers 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 setupYou only want answers
Xero's Remote MCP serverHosted by Xero at https://api.xero.com/mcp/v1. Its tools can write back to Xero, so access is set by scopesA 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 onlyAn AI that prepares work in Xero, for a person to approve
Xero's open-source MCP serverRuns on your own computer. The README lists 51 tools: read tools for invoices, contacts, accounts and reports, and write tools that create and update recordsNode.js v18 or higher and a Xero Custom Connection: A$10 a month including GST, one organisation. Free on the Demo CompanyOne organisation, run on your own machine

Route 1, Xero's connector in Claude, in Xero's four steps

  1. Add Xero.

    Find Xero in Claude's connectors directory.

  2. Sign in.

    Use your Xero login.

  3. Choose the organisation.

    The one you want to ask about.

  4. 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

Xero scopes for answers only, and the scopes that allow writes
DataRead-only scopeScope that allows writes
Invoicesaccounting.invoices.readaccounting.invoices
Paymentsaccounting.payments.readaccounting.payments
Bank transactionsaccounting.banktransactions.readaccounting.banktransactions
Manual journalsaccounting.manualjournals.readaccounting.manualjournals
Reportsaccounting.reports.profitandloss.read, accounting.reports.balancesheet.read, accounting.reports.trialbalance.read, accounting.reports.aged.readNone listed
Contactsaccounting.contacts.readaccounting.contacts
Settings (accounts)accounting.settings.readaccounting.settings
PayrollLeave off. The README says payroll queries need an NZ or UK regionpayroll.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.

  1. Check Node.js.

    The README needs v18 or higher. Run node --version.

  2. Create the connection.

    A Xero Custom Connection with the read-only scopes.

  3. Add the server.

    One config block for Claude Desktop, or one command for Claude Code.

  4. 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

  1. In the Claude menu in your menu bar (not the settings inside the Claude window), choose Settings..., then the Developer tab, then Edit Config.
  2. The file is claude_desktop_config.json. On macOS it is in ~/Library/Application Support/Claude/. On Windows it is in %APPDATA%\Claude\.
  3. Paste the block below, swap in your client ID and secret, and save. If the file already has an mcpServers section, add the xero entry inside it.
  4. 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.

  1. 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."

  2. Register the redirect.

    The callback address your client uses.

  3. Add the server.

    One Claude Code command, or a Claude custom connector.

  4. 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

Who can use Xero's Remote MCP server and what it costs
CaseWhat Xero says
Sign-inThe server authorises through Xero's OAuth 2.0 flow with PKCE. Custom Connections apps are not eligible to access it
Core plan and aboveIncluded. Xero's pricing page shows a monthly tier fee of A$35 for Core, and says pricing is tax exclusive
Starter planApps on the Starter plan can use it with the demo organisation only
Accountants and bookkeepersFor 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

  1. In the Xero developer portal, create an app that uses OAuth 2.0 with PKCE, and copy its client ID.
  2. Add http://localhost:8080/callback to the app's redirect URIs. The port must match --callback-port in the command. Check the address against Xero's Claude Code guide, which is the source for the current redirect URI.
  3. Run the command below, with your client ID in place of YOUR_XERO_CLIENT_ID.
  4. Start a session, run /mcp and 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

  1. Go to Customize, then Connectors, then Add custom connector. Enter a name and https://api.xero.com/mcp/v1 as the server address.
  2. Choose "Use your own OAuth client" and enter the client ID of your PKCE app.
  3. Register the redirect address Xero's Claude guide gives for the app, then add the connector and sign in.
  4. 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

Which Xero routes work with ChatGPT today
RouteIn ChatGPT todayWhat to do
Xero's connectorNo. It is a connector for ClaudeUse Claude for it. The Xero pages read for this guide describe the connector for Claude only
Open-source MCP serverOnly through a tunnelChatGPT 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 serverPossible, not documented by XeroXero 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

  1. Open Plugins.

    Go to chatgpt.com/plugins.

  2. Add the server.

    Select the plus button, then Add custom MCP server.

  3. Enter the address.

    The MCP server address, including the /mcp path.

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

Xero MCP problems, likely causes and fixes
SymptomLikely causeFix
Xero does not appear in Claude DesktopClaude Desktop was not fully restarted, or the config file has a JSON mistakeCompletely 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 startNode.js is missing or older than v18Install Node.js v18 or higher and check with node --version
Claude Desktop cannot find npxNode.js was installed with nvm, so npx is not on the path Claude Desktop usesThe 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_SECRETCheck 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 wrongTick 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 headerThe app is missing a granular scope for that toolAdd the scope the tool needs in the Xero developer portal, then sign in again
An error about scopes or authorisationThe Custom Connection does not have every scope the server asks forCompare 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 shapeRun 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 inRun /mcp inside a session and authenticate with Xero
The Remote MCP server rejects the appThe app is a Custom Connection, or the Starter plan is used with a real organisationUse a Xero developer app with OAuth 2.0 and PKCE, on the Core plan or above, or the demo organisation on Starter
Payroll questions failThe README says payroll queries need an NZ or UK regionUse the accounting tools for an Australian organisation
Answers are sample data, or from the wrong businessA Custom Connection covers one organisation, and the Demo Company is a separate oneCheck which organisation the connection was made for. Use one connection per organisation
A remote server will not add in ClaudeThe address is mistyped, or a free plan is at its one custom connectorCheck the address is https://api.xero.com/mcp/v1, or remove another custom connector
You want to stop accessThe app is still connected to the organisationFor 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

Controls for letting an AI write to Xero
ControlWhat Xero saysWhat 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

  1. The right routeThe connector, the Remote MCP server or the open-source server, chosen for what you want done
  2. Read access firstRead-only scopes to start. Write scopes only for the tools a workflow needs
  3. The assistantClaude or ChatGPT, with instructions that name the organisation and when to stop and ask
  4. A person approvesDraft invoices and bills, not approved ones. Nothing posts or pays without a person
  5. 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.

How the audit works All prices

Chartered Accountant (CA ANZ) · MBA · Xero certified · 16 years in finance, operations and systems · Canberra, working across AU and NZ

About Renzo

The 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.

About Renzo How I keep a person in the loop

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.

Sending saves your details in HubSpot so I can reply. No mailing list. No payment is taken. How your enquiry is handled.