Xero MCP Connector
XeroConnect AI agents to Xero for accounting, invoicing, bank reconciliation, payroll, and financial reporting.
Auth notes
OAuth 2.0 via Xero Developer Portal at developer.xero.com. Register app and configure redirect URIs. Each connected organization requires separate tenant ID. Access tokens expire every 30 minutes. Refresh tokens valid for 60 days.
Rate limits
60 requests per minute per app per Xero organization. Some endpoints have lower limits — Files API limited to 10 requests per minute. Exceeding limits returns 429 with Retry-After header.
Edge cases
Tenant ID required in every request header — easy to forget when switching between organizations. Xero uses its own currency formatting — do not use standard locale formatting. Archived contacts and accounts still appear in list responses — filter by status field. Bank feed data has up to 24 hour delay.
Sandbox testing
Run test calls against Xero from Pipeyard. Try prompts below to see a simulated response; real MCP integration is coming in a future release.
Have a connector you'd like us to prioritize or a specific test flow you care about? Use the Requests page to submit new ideas.
Quick Start — curl example
curl -X GET "https://api.xero.com/api.xro/2.0/Invoices?Status=AUTHORISED" \
-H "Authorization: Bearer {access_token}" \
-H "Xero-tenant-id: {tenant_id}" \
-H "Accept: application/json"Credential Setup Guide
- 11. Go to developer.xero.com and log in or create a free account
- 22. Click "New App" and fill in your app details
- 33. Set your Redirect URI for OAuth callback
- 44. Copy your Client ID and Client Secret
- 55. Direct users to https://login.xero.com/identity/connect/authorize for authorization
- 66. Exchange the code for tokens at https://identity.xero.com/connect/token
- 77. Get your Tenant ID by calling GET https://api.xero.com/connections after authorization
- 88. Include Xero-tenant-id header in every API request
Example API Response
Sample data{
"Invoices": [
{
"InvoiceID": "uuid-invoice-here",
"Type": "ACCREC",
"InvoiceNumber": "INV-0042",
"Status": "AUTHORISED",
"DateString": "2025-03-01",
"DueDateString": "2025-03-31",
"AmountDue": 3800,
"AmountPaid": 0,
"Total": 3800,
"Contact": {
"Name": "Meridian Builders Ltd"
},
"CurrencyCode": "USD"
}
]
}