Xero MCP Server: connect your Xero books to Claude, Cursor and other AI apps
Lets your AI assistant read and create invoices, contacts, payments, quotes and reports in your Xero books.
This is Xero's open-source server that runs on your computer. It lets Claude and other assistants look up accounts, contacts, invoices and reports, and create or update invoices, payments, quotes and journals. It connects with keys from a Xero Custom Connection, which costs extra each month and is only offered in Australia, New Zealand, the UK and the US. If you only want answers about your numbers in Claude, Xero's read-only Claude connector needs no setup.
Good for
- Small business owners who want to ask about unpaid invoices or this month's profit in plain words
- Bookkeepers and accountants who want an assistant to draft invoices, quotes and credit notes
- NZ and UK businesses that run payroll timesheets and leave in Xero
- Developers building finance automations on Xero's API from Claude Desktop or an editor
Works in
1 with issues · 11 should work
Tap an app to see how to set it up and any known problems.
Xero's README covers it: add the command and your Custom Connection keys to the Claude Desktop config file.
Known problems
- Open
Sign-in with a Custom Connection fails in Claude Desktop even with the keys set
Since Jun 2025 · GitHub
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install Xero MCP
Claude Code
- 1
Copy this prompt.
Add the Xero MCP server to Claude Code. Run this command: claude mcp add xero -e XERO_CLIENT_ID=<XERO_CLIENT_ID> -e XERO_CLIENT_SECRET=<XERO_CLIENT_SECRET> -- npx -y @xeroapi/xero-mcp-server Ask me for XERO_CLIENT_ID, XERO_CLIENT_SECRET and only put the values in that config, nowhere else. Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Node.js.
Read-only mode: There's no read-only mode. To keep it to lookups and reports, give your Xero Custom Connection only read scopes.
Most people should use a Xero Custom Connection: paste its client ID and secret. To use a bearer token instead, replace both with XERO_CLIENT_BEARER_TOKEN (it expires after about 30 minutes). With nvm, replace npx with the full path to npx.
Built from the package data we hold. Not yet tested by us.
Tools
Finds your invoices, draft, sent or paid, for a customer or invoice number
Lists invoices in Xero, including drafts, sent and paid ones. You can narrow it to one customer or invoice number.
Try: “Show me all unpaid invoices for Acme Ltd”
Network ·
list-invoicesLists your customers and suppliers
Lists the customers and suppliers saved in your Xero organisation.
Try: “Find the contact details for our supplier Green Print”
Network ·
list-contactsShows payments received or made against invoices
Lists payments made against invoices, with date, amount and method. You can look them up by invoice number or reference.
Try: “Has invoice INV-0042 been paid yet?”
Network ·
list-paymentsGives you a profit and loss report for any period
Pulls Xero's profit and loss report, showing revenue, expenses and profit or loss for the period you choose.
Try: “What was our profit last quarter?”
Network ·
list-profit-and-lossGives you the balance sheet
Pulls the balance sheet report from Xero.
Try: “Show me our balance sheet as of the end of last month”
Network ·
list-report-balance-sheetGives you a trial balance of every account
Pulls the trial balance, a snapshot of the general ledger with debit and credit balances for each account.
Try: “Run a trial balance for September”
Network ·
list-trial-balanceShows how much a customer owes you and how overdue it is
Shows the aged receivables for one customer up to a date, so you can see what they owe and for how long.
Try: “How overdue is Acme Ltd on what they owe us?”
Network ·
list-aged-receivables-by-contactShows how much you owe a supplier and how overdue it is
Shows the aged payables for one supplier up to a date, so you can see what you owe them and for how long.
Try: “What do we still owe Green Print, and how late is it?”
Network ·
list-aged-payables-by-contactLists bank account transactions
Lists the transactions on your bank accounts in Xero, for one account or all of them.
Try: “Show the last 10 transactions on our business account”
Network ·
list-bank-transactionsLists your quotes, for one customer or all
Lists the quotes in Xero, either all of them or those for one customer.
Try: “List the quotes we sent to Acme Ltd”
Network ·
list-quotesLists credit notes, for one customer or all
Lists credit notes in Xero, either all of them or those for one contact.
Try: “Show any credit notes issued to Acme Ltd”
Network ·
list-credit-notesLists manual journal entries
Lists manual journals in Xero, or shows one journal, or only those changed after a date.
Try: “Show manual journals posted this month”
Network ·
list-manual-journalsLists the products and services you sell
Lists the items saved in Xero, with their codes and descriptions, for use on invoices.
Try: “What items do we have set up for consulting work?”
Network ·
list-itemsLists contact groups and who is in them
Lists the contact groups in Xero, or shows one group with its members.
Try: “Who is in our Wholesale customers group?”
Network ·
list-contact-groupsLists tracking categories such as departments or regions
Lists your tracking categories and their options, like departments or regions used to tag transactions.
Try: “What tracking categories do we use?”
Network ·
list-tracking-categoriesLists payroll employees and their details
Lists payroll employees with names, contact details, start dates and whether they are permanent, fixed term or casual.
Try: “List all our permanent employees”
Network ·
list-payroll-employeesLists payroll timesheets
Lists payroll timesheets with employee, dates and total hours.
Try: “Show this week's timesheets”
Network ·
list-timesheetsShows one payroll timesheet in detail
Gets one payroll timesheet with its employee, dates, total hours and last update.
Try: “Show me the details of Sam's latest timesheet”
Network ·
get-timesheetShows an employee's leave history
Lists all leave for one employee, including approved, pending and processed time off.
Try: “What leave has Priya taken this year?”
Network ·
list-payroll-employee-leaveShows how much leave an employee has left
Shows an employee's current leave balances for annual, sick and other leave types.
Try: “How many days of annual leave does Sam have left?”
Network ·
list-payroll-employee-leave-balancesShows an employee's leave periods and when they are paid
Lists an employee's time-off periods with start and end dates, status, payment dates and leave type.
Try: “When is Priya's next leave period?”
Network ·
list-payroll-leave-periodsShows which leave types an employee can take
Lists the leave types one employee can take, with how leave builds up and their entitlement.
Try: “What leave types is Sam entitled to?”
Network ·
list-payroll-employee-leave-typesLists every leave type set up in payroll
Lists all leave categories set up in Xero Payroll, including statutory and company-specific ones.
Try: “What leave types do we have in payroll?”
Network ·
list-payroll-leave-typesShows details of your Xero organisation
Shows the details of the connected Xero organisation, such as its name and settings.
Try: “Which Xero organisation are you connected to?”
Network ·
list-organisation-detailsCreates an invoice and gives you a link to it in Xero
Creates a new invoice in Xero and returns a link so you can open it in Xero.
Try: “Create an invoice for Acme Ltd for 10 hours of consulting at $150”
Write ·
create-invoiceCreates a quote and gives you a link to it
Creates a new quote in Xero and returns a link to open it.
Try: “Draft a quote for Acme Ltd for a website redesign at $4,000”
Write ·
create-quoteAdds a new customer or supplier
Creates a new contact in Xero and returns a link to it.
Try: “Add a new customer called Blue Harbour Cafe”
Write ·
create-contactRecords a payment against an invoice
Records a payment against an invoice, from the account you choose, for an amount no larger than what is owed.
Try: “Mark invoice INV-0042 as paid in full from our business account”
Write ·
create-paymentRecords a new bank transaction
Creates a spend or receive transaction on a bank account in Xero and returns a link to it.
Try: “Record a $45 spend on office supplies from our business account”
Write ·
create-bank-transactionCreates a credit note
Creates a new credit note in Xero and returns a link to it.
Try: “Create a credit note for Acme Ltd for $200”
Write ·
create-credit-notePosts a manual journal entry
Creates a manual journal with at least two lines using your account codes.
Try: “Post a journal moving $500 from prepaid expenses to rent”
Write ·
create-manual-journalAdds a new product or service item
Creates a new item you can use on invoices and quotes.
Try: “Add an item called Hourly consulting at $150”
Write ·
create-itemCreates a payroll timesheet for an employee
Creates a new payroll timesheet for an employee with the pay calendar, dates and hours.
Try: “Create a timesheet for Sam for this week with 8 hours a day”
Write ·
create-timesheetCreates a tracking category
Creates a new tracking category, such as a department or region.
Try: “Create a tracking category called Region”
Write ·
create-tracking-categoryAdds options to a tracking category
Adds new options, such as North or South, to a tracking category.
Try: “Add North and South to the Region category”
Write ·
create-tracking-optionsChanges a draft invoice
Changes an invoice that is still a draft. Lines that are left out of the update are removed.
Try: “Change the quantity on draft invoice INV-0050 to 12 hours”
Write ·
update-invoiceChanges a draft quote
Changes a quote that is still a draft. Lines that are left out of the update are removed.
Try: “Add a hosting line to the draft quote for Acme Ltd”
Write ·
update-quoteChanges a draft credit note
Changes a credit note that is still a draft. Lines that are left out are removed.
Try: “Change the draft credit note for Acme Ltd to $150”
Write ·
update-credit-noteUpdates a customer or supplier's details
Updates a contact's details in Xero and returns a link to it.
Try: “Update Blue Harbour Cafe's email to accounts@blueharbour.example”
Write ·
update-contactChanges a bank transaction
Updates an existing bank transaction in Xero and returns a link to it.
Try: “Change the description on yesterday's office supplies transaction”
Write ·
update-bank-transactionChanges a draft manual journal
Updates a manual journal that is still a draft.
Try: “Change the narration on the draft rent journal”
Write ·
update-manual-journalChanges a product or service item
Updates an existing item, such as its price or description.
Try: “Raise the price of Hourly consulting to $160”
Write ·
update-itemRenames or changes a tracking category
Updates an existing tracking category.
Try: “Rename the Region category to Territory”
Write ·
update-tracking-categoryChanges options in a tracking category
Updates the options within a tracking category.
Try: “Rename the North option to Northern”
Write ·
update-tracking-optionsAdds hours to an existing timesheet
Adds a new line of hours to an existing payroll timesheet.
Try: “Add 4 hours of overtime to Sam's timesheet on Friday”
Write ·
add-timesheet-lineChanges hours on an existing timesheet
Updates a line on an existing payroll timesheet.
Try: “Change Sam's Tuesday hours to 6”
Write ·
update-timesheet-lineApproves a payroll timesheet
Approves a payroll timesheet so it can be paid.
Try: “Approve Sam's timesheet for this week”
Write ·
approve-timesheetSends an approved timesheet back to draft
Reverts an approved payroll timesheet to draft so it can be changed.
Try: “Revert Sam's approved timesheet so I can fix it”
Write ·
revert-timesheetDeletes a payroll timesheet
Deletes an existing payroll timesheet.
Try: “Delete the duplicate timesheet for Sam”
Delete ·
delete-timesheetUsed by the assistant behind the scenes
Looks up account codes to use on invoices
Lists your chart of accounts with codes and names. The assistant uses it to pick the right account when it creates invoices or journals.
Try: “What account code do we use for sales?”
Network ·
list-accountsLooks up tax rates to use on invoices
Lists the tax rates set up in Xero. The assistant uses it to apply the right tax when it creates invoices.
Try: “What GST rates do we have set up?”
Network ·
list-tax-rates
Read from the source code
Pros and cons
Good
- Made by Xero and open source under the MIT license.
- Covers the core of accounting: contacts, invoices, payments, quotes, credit notes, journals and bank transactions.
- Reads profit and loss, balance sheet, trial balance and aged receivables and payables reports.
- Handles payroll employees, leave and timesheets for NZ and UK organisations.
- Invoice, quote and credit note edits only touch drafts.
- Works with Xero's free Demo Company for testing.
Watch out
- A Custom Connection costs an extra monthly Xero subscription.
- Custom Connections are only offered in Australia, New Zealand, the UK and the US.
- The token option expires after about 30 minutes and does not renew itself.
- It works with one Xero organisation at a time.
- There is no read-only mode.
- This server runs only on your computer and needs Node.js.
Permissions
high risk · 4 things to watch
High risk
A wrong or tricked request can put payments, invoices or journal entries into your real books. Start on the Demo Company, approve each change yourself, and grant the connection only the scopes you need.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only mode
Watch out for
It can record payments and post journals
The assistant can create payments, bank transactions, invoices, credit notes and manual journals in your live books. Approve each action by hand and test on the Demo Company first. github.com
There is no read-only mode
Every connection gets the create and update tools. Give the Custom Connection only the scopes you need if you just want reports and lookups. github.com
Your Xero secret sits in a config file
The client secret is stored in plain text in your app's settings. Keep that file private and never commit it. github.com
It can delete payroll timesheets
One tool deletes a payroll timesheet, and others approve or revert them. Check payroll changes before they go through. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | No read-only switch. Narrow access by granting only read scopes to the Custom Connection or by setting XERO_SCOPES to a shorter list. |
|---|---|
| Talks to | api.xero.com. identity.xero.com |
| Sign-in and keys | Custom Connection client ID and secret, or a bearer token, stored as environment variables in your client's config file. |
| Scopes |
|
Alternatives
Use Xero's read-only Claude connector to ask about your numbers, and this local server when you want the assistant to create invoices or payments. Developers with a Xero app on the Core plan or above can use Xero's hosted Remote MCP instead of running anything locally.
| Server | Official | Runs | Sign-in | Can change things | Tools | Weekly downloads |
|---|---|---|---|---|---|---|
| For Xero | ||||||
| Xero MCP ServerThis page | Official | Local | API key | Yes | 51 | – |
| xero-mcp | Community | Local | – | – | – | 154/wk |
| CodeSpar Xero | Community | Local | Token | – | – | 42/wk |
| Mindstone Xero | Community | Local | API key | – | – | – |
| Other tools for the same job | ||||||
| Xero connector for Claude | Official | Hosted | Account | No | 20 | – |
| Xero Developer Remote MCP | Official | Hosted | Account | Yes | – | – |
What people say
People find setup frustrating, mostly because of the paid Custom Connection, region limits and expiring tokens.
Common complaints
- Setup is hard: a paid Custom Connection, region limits and scope changes block people at each step.
- Outside Australia, New Zealand, the UK and the US you are left with a token that expires every 30 minutes.
- It covers less than the full Xero API, so some users add their own code on top.
- It only works with one Xero organisation at a time.
- Token errors were fixed by granting every scope the README lists.
In their words
“Honestly, this is the worst experience of setting up any MCP. It's like they are actively trying to stop you from using it. At every step of the way there's some block.”moltarGitHub issueAug 2025
“This MCP server has been designed from the ground up with a single tenant in mind.”TheReganGitHub issueMar 2026
“This MCP is limited vs the full API(php etc).”DibbleeGitHub issueJun 2025
“I have created a Xero "Customer Connection" (and paid the extra money to access my own data).”benneic
Questions
Is the Xero MCP server free?
The server is free and open source, but connecting it to real books needs a Xero Custom Connection, which is an extra monthly subscription. Connecting it to Xero's Demo Company is free.
Xero MCP server vs the Xero connector in Claude?
The Claude connector costs nothing extra, needs no setup and is read-only: it answers questions about profit, cash, invoices and customers. This server can also create and update records, but needs a paid Custom Connection and runs on your computer.
Does it work in Canada or the EU?
Not with a Custom Connection, which Xero only sells in Australia, New Zealand, the UK and the US. Elsewhere you can use the token option, but the token expires after about 30 minutes and has to be replaced by hand.
Is there a hosted Xero MCP server URL?
Yes, but not for this server. Xero runs https://api.xero.com/mcp/v1 for developers whose Xero app is on the Core plan or above, and the read-only Claude connector uses https://mcp.xero.com/mcp. This open-source server only runs on your computer.
Can it connect to more than one Xero organisation?
No. Xero's maintainers say it is designed for one organisation at a time, and with several authorised it only returns data from one.
Can it change or delete my accounting data?
Yes. It can create payments, invoices, bank transactions and journals, update contacts and drafts, and delete payroll timesheets. It cannot change an invoice once it is no longer a draft.
Is it safe to use on my real books?
Only with care. Test on the Demo Company first, approve each change yourself, and give the Custom Connection only the scopes you need.
Why do I get 'Failed to get Xero token'?
Usually the Custom Connection is missing scopes the server asks for. Users fixed it by adding every scope listed in the README to the connection.
Can it handle payroll?
Yes, for New Zealand and UK organisations. It can list employees and leave, and create, approve, revert or delete timesheets.
How do I add it to Claude Desktop?
Use the Claude Desktop tab in the install box above and paste your Custom Connection keys. If you use nvm, replace npx with its full path.
Information
updated Nov 1, 2026
- Publisher
- Xero (official)
- Package
@xeroapi/xero-mcp-server- Registry
- npm
- Transport
- stdio
- Auth
- token in env
- License
- MIT
- Last commit
- Oct 26, 2026
Other Xero MCP servers
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 12Hide
- GitHub · github.com
- Xero Developer · developer.xero.com
- Xero connector for Claude · xero.com
- Tool source · github.com
- Remote MCP FAQs · developer.xero.com
- Xero connector · claude.com
- GitHub · github.com
- GitHub · github.com
- GitHub · github.com
- Xero Developer Remote MCP · developer.xero.com
- GitHub · github.com
- GitHub · github.com