A Xero MCP server lets a compatible AI assistant use the Xero actions that server exposes. Xero's own hosted Claude and ChatGPT connections provide read-only access. The official local XeroAPI server can create supplier bills through create-invoice with type: ACCPAY.
Those are different jobs: viewing an existing bill, reading a supplier PDF and entering a new bill are separate capabilities. A connector that answers questions about accounts payable does not necessarily enter invoices.
The official local implementation also makes a consequential choice: it creates a draft bill with a due date 30 days after execution, rather than using the payment terms on the document. Correctly extracting an invoice is therefore only part of creating a correct Xero bill.
Compare hosted Xero connections and local bill writers
Choose the connection by the work you need it to perform. The routes below were checked against their public listings, documentation and source on 2 October 2026; third-party capabilities are attributed claims, rather than results of live transaction testing.
| Connection | Client and setup | Organisation access | Create supplier bills? | Attach the source invoice? |
|---|---|---|---|---|
| Xero's hosted connectors | Xero-made connection in Claude or ChatGPT; authorise through Xero | Confirm the connected organisation before querying | No, read-only | No attachment-upload action for bill entry |
| Official XeroAPI local server | Local MCP client, such as Claude Desktop; Node.js and Xero developer credentials | One organisation per Custom Connection; bearer-token access depends on the token | Yes, using create-invoice with ACCPAY | No attachment tool in the inspected source |
| Xero Connector by Meridian | Hosted service with documented Claude and ChatGPT connection routes | Vendor says multiple organisations, with separate access modes; shared access to a client organisation is not supported | Vendor documents reads and writes with the required permissions | Unconfirmed: public descriptions conflict |
| Community xero-expenses-mcp | Local MCP client; maintainer documents Claude Code setup and Xero OAuth with PKCE | Confirm the organisation reached by the authorised connection | Maintainer advertises a dedicated bill tool | Maintainer advertises PDF and image attachment tools |
Xero's own hosted connection is for financial questions. Its Claude connector listing explicitly says read-only and includes get_bills and get_aged_payables. The Xero-made ChatGPT listing also states read-only access. Reading bills already in Xero is useful for checking outstanding liabilities, but neither listing offers supplier-bill creation.
The official local package is a separate route. Xero maintains XeroAPI/xero-mcp-server, published as @xeroapi/xero-mcp-server. The similarly named community package xero-mcp is a different project. Check the publisher as well as the package name before following setup instructions.
Meridian's FAQ describes a free hosted connector with multiple-organisation access and writes. It also says only one user can access a given client organisation, a material constraint for an accounting practice. Its integration guide says attachments are not enabled in the hosted tool catalog, while its ChatGPT listing advertises them. Confirm the actual attachment actions before choosing it for a workflow that must retain documents in Xero.
The community xero-expenses-mcp README advertises bill creation, attachments and desktop OAuth using PKCE. Treat those as capabilities to verify in a Demo Company, including the bill's returned status and payment terms. A local server configuration does not by itself connect a hosted ChatGPT conversation.
For practices managing several accounting systems, QuickBooks MCP connections and supplier bill entry and NetSuite MCP for vendor bills require their own connection choices and field mappings.
Connect Claude or ChatGPT to the right Xero organisation
To connect Claude to Xero for read-only questions, use the Xero-made connector linked above and authorise the intended Xero organisation. For ChatGPT, use the Xero-made listing. If you need bill creation through a hosted writer, follow that provider's client-specific instructions and check the developer name: the Xero-made connection and a Meridian-made connection expose different actions.
For the official local server, the XeroAPI setup instructions require Node.js, npm or pnpm, and a Xero developer account. A local MCP client launches the package. Authentication supports a Custom Connection using a client ID and secret, or a bearer token obtained through a separate authentication flow. Follow the current README for scopes and client configuration; a bearer token is not a substitute for arranging authorisation and managing its lifetime.
A Custom Connection reaches one Xero organisation. Xero's custom-development page distinguishes paid connections for live organisations from free Demo Company connections for development. The package's free licence does not make every authentication route free. Account separately for Xero connection costs, any hosted-provider charge and the work of maintaining a local installation.
Before requesting a write, ask the assistant to identify the organisation it can access and retrieve an existing supplier, active expense accounts, tax rates and tracking categories. In a practice, include the organisation name in the proposed action. A working connection to the wrong client's books is still a wrong connection.
Start bill-creation tests in a Demo Company. Confirm that the selected writer exposes the fields you need and returns a bill you can inspect, rather than taking a successful login as proof of a working accounting workflow.
Separate invoice facts from Xero accounting decisions
Prepare a bill record that preserves both what the supplier sent and how your organisation accounts for it. The document supplies evidence; Xero supplies identifiers and permitted accounting values.
| Bill information | Read from the supplier document | Resolve from Xero or your coding policy |
|---|---|---|
| Supplier | Legal or trading name, address and identifying details | Existing contact ID; investigate ambiguous matches before creating another contact |
| Invoice number | Supplier's invoice number, preserving meaningful prefixes and leading zeros | Existing bills for the same supplier and number |
| Invoice date | Date the invoice was issued | Correct accounting period and any review required |
| Due date | Explicit due date or payment terms, including the date those terms run from | Whether the writer can set that actual date |
| Currency | Printed currency or currency established by the document | Whether the organisation and selected writer support that currency |
| Line items | Descriptions, quantities, unit prices, discounts and line amounts | Expense account codes, item codes where used, and tracking categories/options |
| Tax | Printed tax rates and amounts; whether prices include or exclude tax | Valid Xero tax types and the organisation's treatment of the purchase |
| Totals | Subtotal, tax and amount payable | Reconciliation to the proposed and returned Xero bill |
| Evidence | Source filename and page or page range | Where the source will be attached or retained against the bill ID |
A printed GST or VAT amount does not identify the correct Xero tax type. Nor does a supplier name identify a contact ID. Retrieve the organisation's records and apply its coding policy. If a contact match, account code or tax treatment is unresolved, keep the item in an exception list. A draft with guessed coding is not ready for approval.
Classify the documents before creating bills. A supplier statement summarises activity and balances; entering it as a new bill can repeat invoices already booked. A credit note reduces a liability and needs the appropriate credit-note route. Split a multi-invoice PDF into distinct bill records, while preserving the pages supporting each record. Check line amounts, subtotal, tax and total before handing those records to the writer. Unexplained differences need resolution, not an adjustment invented to make the totals agree.
For recurring batches, Invoice Data Extraction turns invoices and other financial documents into Excel, CSV or JSON. Its invoice data extraction for your AI agent supplies the document data for this part of the job. A panel of AI agents has to agree on every value. What the panel cannot agree on is flagged as Review Needed. A page or document that fails is reported, never skipped in silence.
Its MCP server connects with an API key; the agent uploads the files with its own tools and reads the extracted rows, Review Needed items and failed pages. The setup is covered in connecting an invoice extraction MCP server. Resolve those document issues before passing the data to a separately chosen Xero writer. Extracted tax and amounts remain evidence for the bookkeeper's accounting decisions.
Create a draft bill and correct its due date
In the official XeroAPI server, create-invoice handles both sales invoices and supplier bills. Specify type: ACCPAY for a bill; ACCREC is the sales-invoice type. The create-tool schema accepts the contact ID, line items, invoice date and reference. Lines carry descriptions, quantities, unit amounts, account codes and tax types, with optional item codes and tracking.
The create inputs do not expose due date, status, currency or the setting that identifies tax-inclusive versus tax-exclusive line amounts. If your document needs a field the tool cannot pass, resolve that with a supported writer or in Xero before treating the bill as complete. Do not assume the underlying API's fields are all available through this tool.
Source inspection of the current official implementation and published version 0.0.17, checked on 2 October 2026, establishes three behaviours in the create handler:
- The new bill has DRAFT status.
- Its due date is 30 days after the tool runs, regardless of the supplied invoice date or the supplier's terms.
- For ACCPAY, the create input reference becomes the bill's invoice number. Put the supplier invoice number there.
For example, an invoice dated 1 September, due 15 September, entered on 2 October receives a default due date of 1 November. Reading the correct date from the PDF does not change this default. That matters for overdue-bill reporting and payment scheduling. These findings come from code inspection, not a live Xero transaction test.
The separate update-invoice tool exposes a due-date input. The update implementation permits updates only while the bill is a draft. Correct the due date before moving the bill into approval. Its reference input updates Xero's reference field, unlike the create handler's ACCPAY mapping to invoice number; it is not a bill-number correction.
If you update line items, the update-tool instructions require all existing lines to be included. For a due-date correction alone, leave line items out of the request.
Record the returned bill ID and Xero link, then open or retrieve the full bill. Compare supplier, invoice number, invoice date, actual due date, currency, tax, total, account coding and tracking against the prepared record. A short creation-success message does not establish that every field matches the source.
Check duplicates, retain the source and control approval
Before creating a bill, search existing Xero bills for the supplier and invoice number, then corroborate any match against the date and amount. A complete check must follow the selected tool's pagination or filters; finding no match in the first returned page is insufficient. For fuller matching rules, use the guide to preventing duplicate bills in Xero.
Keep a per-document record of the intended write and its outcome. If a request times out after being sent, check Xero for the resulting bill before retrying. The write may have succeeded even though the assistant did not receive its response. An interface duplicate warning is not a guarantee that an API-created duplicate will be blocked. Retry protection in a document-extraction service also does not protect a separate write to Xero.
Retaining the source needs its own supported action. Xero's accounting API supports invoice attachments, but the inspected official local MCP server has no attachment tool. Use Xero itself or a writer with a verified attachment action to attach the supplier PDF or image. Until then, retain the source file and page reference alongside the bill ID. Meridian's conflicting public attachment descriptions need resolution before relying on it; the community server's advertised attachment tool needs a Demo Company test.
Set the expected outcome before allowing a write: create a draft, show the bill, leave approval and payment with the owner. Draft, awaiting approval and authorised are distinct accounting states. Confirming that an assistant may call a tool does not mean the underlying supplier bill has been reviewed or approved. Follow Xero's bill approval workflow for the transition your organisation actually uses.
The MCP guidance on human control of tool actions recommends that a person can deny tool invocations and that applications present confirmation prompts for operations. It does not mandate a particular user interaction model. Check what your chosen client and connector implement, and keep bill authorisation and payment as explicit owner decisions.
When Hubdoc or the bills inbox is enough
For routine supplier invoices, Hubdoc or Xero's bills inbox is a useful baseline. You may already have a capture-and-review process that does the job without maintaining an agent connection. The broader comparison of PDF invoice capture and import options for Xero covers those routes.
A handful of clear invoices can also suit direct document reading in a chat app, followed by manual checking and entry. The extra setup of an agent workflow earns its place when you repeatedly process batches, receive long PDFs containing several invoices, or need explicit line-level coding rules. It should reduce the work of preparing correct drafts, rather than add another system to supervise.
Try representative documents in a Demo Company: an invoice with short payment terms, one with mixed tax treatment, and a credit note in a batch of bills. Check whether the workflow produces the right records, exposes unresolved items and preserves the source. Expand it only when those results make the recurring workload easier to review.