Xero MCP server
39 operations0 webhooks
Cloud accounting API for invoices, contacts, payments, bank transactions, credit notes, quotes, purchase orders, journals, reports, and files.
Try Xero with your agent
Connect Xero, then paste this into Claude, ChatGPT or Cursor. For ideas from other apps, see the use cases.
Using Corsair, show me what you can do in Xero on my account, then run one read-only example and show me the result.
Xero tools and triggers
Tools are what your agent can do in Xero through Corsair's MCP server. Triggers are the Xero events a routine can start from.
Invoices
- CreateWrite
Create a new invoice in Xero (sales invoice or bill)
invoices.create
- GetRead-only
Retrieve a specific invoice by ID from Xero
invoices.get
- ListRead-only
Retrieve a list of invoices from Xero
invoices.list
- UpdateWrite
Update an existing invoice in Xero
invoices.update
Contacts
- CreateWrite
Create a new contact in Xero
contacts.create
- ListRead-only
Retrieve a list of contacts from Xero
contacts.list
- UpdateWrite
Update an existing contact in Xero
contacts.update
Items
- CreateWrite
Create an inventory item in Xero
items.create
- GetRead-only
Retrieve a specific item by ID from Xero
items.get
- ListRead-only
Retrieve items (inventory/products) from Xero
items.list
Purchase Orders
- CreateWrite
Create a purchase order in Xero
purchaseOrders.create
- GetRead-only
Retrieve a specific purchase order by ID from Xero
purchaseOrders.get
- ListRead-only
Retrieve list of purchase orders from Xero
purchaseOrders.list
Accounts
- GetRead-only
Retrieve a specific account from Xero chart of accounts
accounts.get
- ListRead-only
Retrieve chart of accounts from Xero
accounts.list
Assets
- GetRead-only
Retrieve a specific asset by ID from Xero
assets.get
- ListRead-only
Retrieve fixed assets from Xero
assets.list
Attachments
- ListRead-only
List all attachments for a specific entity in Xero
attachments.list
- UploadWrite
Upload a file attachment to a Xero entity
attachments.upload
Bank Transactions
- CreateWrite
Create a bank transaction in Xero (SPEND or RECEIVE)
bankTransactions.create
- ListRead-only
Retrieve bank transactions from Xero
bankTransactions.list
Files
- ListRead-only
Retrieve files from Xero Files
files.list
- List FoldersRead-only
Retrieve folders from Xero Files
files.listFolders
Manual Journals
- GetRead-only
Retrieve a specific manual journal by ID from Xero
manualJournals.get
- ListRead-only
Retrieve manual journals from Xero
manualJournals.list
Payments
- CreateWrite
Create a payment linking invoice and bank account in Xero
payments.create
- ListRead-only
Retrieve list of payments from Xero
payments.list
Projects
- GetRead-only
Retrieve a specific project by ID from Xero
projects.get
- ListRead-only
Retrieve projects from Xero
projects.list
Reports
- Get Balance SheetRead-only
Retrieve Balance Sheet report from Xero
reports.getBalanceSheet
- Get Profit LossRead-only
Retrieve Profit & Loss report from Xero
reports.getProfitLoss
Budgets
- GetRead-only
Retrieve a budget from Xero
budgets.get
Connections
- GetRead-only
List active Xero tenant connections
connections.get
Credit Notes
- ListRead-only
Retrieve list of credit notes from Xero
creditNotes.list
Journals
- ListRead-only
Retrieve journals from Xero
journals.list
Organisations
- GetRead-only
Retrieve organisation details from Xero
organisations.get
Quotes
- ListRead-only
Retrieve a list of quotes from Xero
quotes.list
Tax Rates
- ListRead-only
Retrieve tax rates from Xero
taxRates.list
Tracking Categories
- ListRead-only
Retrieve tracking categories from Xero
trackingCategories.list
Connect Xero to Claude, ChatGPT or Cursor
- 1
Connect Xero in Corsair
Sign in to Xero or add an API key once in Corsair. Corsair stores the credential encrypted and makes the Xero API calls for your agent, so it never goes into a prompt or a config file. Connect Xero
If your link lets the agent add apps, you can skip this: it gives you a sign-in link the first time it needs Xero. On a ChatGPT personal plan, connect Xero here first.
- 2
Add Corsair's MCP server to your agent
Every client uses the same address:
https://mcp.corsair.dev/mcpOpen Customize → Connectors → Add custom connector, paste the address, then select Connect.Add a custom MCP server with the address and choose OAuth. Personal plans get read tools only.Add to CursorOr add this to~/.cursor/mcp.json. Cursor opens Corsair to sign in the first time it connects.{ "mcpServers": { "corsair": { "url": "https://mcp.corsair.dev/mcp" } } }Run this, then run/mcpin Claude Code to sign in.claude mcp add --transport http corsair https://mcp.corsair.dev/mcpCodex, Gemini CLI, VS Code, Zed and other clients with OAuth sign-in work the same way. Clients without it, such as GitHub Copilot's coding agent, use a link's own address and an API key. Setup for every client
- 3
Sign in and choose what needs your approval
Your client opens Corsair to sign in. Pick a link: the apps your agent can use and a mode that decides what it may do without asking. None of Xero's operations are destructive, so in the default Cautious mode they all run right away. Strict mode asks before each of its 9 writes, and Read mode allows reads only.
FAQ
Install corsair and @corsair-dev/xero, add the Xero plugin, and connect with an API key or OAuth. Then call methods like corsair.xero.api.accounts.get() from your app. Corsair stores tokens, and syncs data per tenant.
Yes. Xero supports an API key or OAuth. Use credentials or OAuth scopes that match what you automate. Create them in the Xero developer console, then paste into Corsair or connect through managed auth in Hub.
Yes. One Corsair client can hit Xero, GitHub, Notion, Stripe, and the rest. Trigger Xero from a webhook, push updates to Slack, or chain actions across plugins. Same tenant context across integrations, plain TypeScript.
Teams use Corsair for cloud accounting api for invoices, contacts, payments, bank transactions, credit notes, quotes, purchase orders, journals, reports, and files. Common builds include sync jobs, admin tooling, and agents that call Xero APIs from your backend. Local DB entities let you query synced Xero records without hitting the API on every read.
The SDK is open source. Self-host and you pay Corsair nothing for the integration layer. Hub bills for hosted auth and execution, not per Xero API call. Hub has a generous free tier. For hobby projects you can probably run the whole thing on free. Paid plans start to matter with more tenants or heavier traffic.
We maintain @corsair-dev/xero in the open repo. When Xero ships API changes, upgrade the package. Your call sites stay typed. You should not need to rewrite the integration layer each time.
No. Corsair does not read your Xero data or hold individual access credentials. Credentials stay in your database. API calls run on your instance. We do not store Xero data on your behalf.
Yes. Add https://mcp.corsair.dev/mcp as a custom connector or MCP server in Claude, ChatGPT, Cursor, VS Code, Claude Code, Codex or any client that supports remote MCP servers with OAuth sign-in, then sign in to Corsair. On ChatGPT personal plans, custom servers currently get read tools only.
Yes. Put Xero on a link in Strict mode and every write waits for your approval, while destructive actions are refused. None of the Xero operations are destructive, so the default Cautious mode runs them all without asking. You can change a link's mode at hub.corsair.dev/me.