Provides tools for managing Xero accounting operations including creating invoices, bills, bank transactions (expenses), and expense claims, with support for attachments and PKCE authentication.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Xero Expenses MCPCreate an expense for $29.99 office supplies from Staples today"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
xero-expenses-mcp
MCP (Model Context Protocol) server for Xero accounting. Supports Invoices, Bills, Expenses (Bank Transactions), and Expense Claims with PKCE authentication.
Features
Invoices (ACCREC) - Create sales invoices to send to customers
Bills (ACCPAY) - Create bills you'll pay later
Expenses - Create "Spend Money" bank transactions for already-paid expenses
Expense Claims - Create receipts and submit expense claims for reimbursement
Attachments - Attach PDFs and images to invoices, bills, expenses, and receipts
PKCE Auth - Desktop app OAuth flow (no client secret required)
Installation
npx xero-expenses-mcpOr install globally:
npm install -g xero-expenses-mcpXero App Setup
Go to Xero Developer Portal
Create a new app:
App name: Your choice (e.g., "Expense Manager")
Integration type: "Mobile or desktop app" (uses PKCE, no secret needed)
Redirect URI:
http://localhost:3000/callback
Note your Client ID
Claude Code Configuration
Add to your Claude Code MCP settings:
{
"mcpServers": {
"xero-expenses": {
"command": "npx",
"args": ["xero-expenses-mcp"],
"env": {
"XERO_CLIENT_ID": "YOUR_CLIENT_ID"
}
}
}
}Or use the CLI:
claude mcp add xero-expenses -- npx xero-expenses-mcpThen set environment variables in your shell or .env file.
Environment Variables
Variable | Required | Description |
| Yes | Your Xero app's client ID |
| No | Only for Web apps (not PKCE) |
| No | Default: |
Authentication
On first use, the server will open a browser for Xero OAuth. After authenticating, tokens are stored in ~/.xero-mcp/token.json.
Available Tools
Accounts & Contacts
xero_list_accounts- List expense accounts/categoriesxero_list_bank_accounts- List bank accountsxero_list_contacts- Search vendors/contactsxero_list_users- List organization users (for expense claims)
Invoices (Accounts Receivable)
xero_create_invoice- Create a sales invoice to send to customersxero_attach_file_to_invoice- Attach file to an invoice
Bills (Accounts Payable)
xero_create_bill- Create a bill for future paymentxero_attach_file- Attach file to a bill
Expenses (Bank Transactions)
xero_create_expense- Create a "Spend Money" transactionxero_attach_file_to_expense- Attach file to an expense
Expense Claims (deprecated Feb 2026)
xero_create_expense_claim- Create receipt + expense claimxero_attach_file_to_receipt- Attach file to a receipt
Example Usage
In Claude Code:
"Create an expense for $45.50 lunch at Cafe Example on 2024-01-15, categorize as Business Meals (account 620)"Claude will use the xero_create_expense_claim tool with:
{
"vendorName": "Cafe Example",
"amount": 45.50,
"description": "Lunch",
"accountCode": "620",
"date": "2024-01-15"
}Token Storage
Tokens are stored in ~/.xero-mcp/token.json. To re-authenticate, delete this file.
License
MIT
Resources
Looking for Admin?
Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.