Skip to main content
Glama
muness

Xero Expenses MCP

by muness

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-mcp

Or install globally:

npm install -g xero-expenses-mcp

Xero App Setup

  1. Go to Xero Developer Portal

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

  3. 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-mcp

Then set environment variables in your shell or .env file.

Environment Variables

Variable

Required

Description

XERO_CLIENT_ID

Yes

Your Xero app's client ID

XERO_CLIENT_SECRET

No

Only for Web apps (not PKCE)

XERO_REDIRECT_URI

No

Default: http://localhost:3000/callback

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/categories

  • xero_list_bank_accounts - List bank accounts

  • xero_list_contacts - Search vendors/contacts

  • xero_list_users - List organization users (for expense claims)

Invoices (Accounts Receivable)

  • xero_create_invoice - Create a sales invoice to send to customers

  • xero_attach_file_to_invoice - Attach file to an invoice

Bills (Accounts Payable)

  • xero_create_bill - Create a bill for future payment

  • xero_attach_file - Attach file to a bill

Expenses (Bank Transactions)

  • xero_create_expense - Create a "Spend Money" transaction

  • xero_attach_file_to_expense - Attach file to an expense

Expense Claims (deprecated Feb 2026)

  • xero_create_expense_claim - Create receipt + expense claim

  • xero_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

Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

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.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/muness/xero-expenses-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server