Head to head · Accounting ledger · October 2026 research run
Codat vs Xero API + MCP
Xero API + MCP scores 67.2 (B) on agent readiness against Codat's 64.3 (B), and leads in 5 of 7 scored categories. Codat leads on reliability and agent ergonomics. Both do accounting ledger.
Which one, for what
Codat B
Good for Banks, lenders, bill pay, expense and card products that already have or will sign a Codat contract and need writes into many accounting packages.
Ahead on
- Reliability, 80 against 68
- Agent ergonomics, 81 against 75
Watch for
No public price. The pricing page returns 404 and fees are set in an order form
Good for An agent keeping the books for UK, Australian or New Zealand businesses, or any team that wants read-only scopes and long deprecation notice.
Ahead on
- Security & auth, 64 against 49
- Payments & pricing, 35 against 10
Also in its favour
- Runs on your own machine
Watch for
Developer docs, including the per-minute rate limits, only render with JavaScript
Score by category
| Category | Weight this run | Codat | Xero API + MCP | Edge |
|---|---|---|---|---|
| Reliability | 16%20 | 80 | 68 | Codat +12 |
| Performance | 10%pending | pending | pending | not scored in this run |
| Schema & documentation | 13%16.2 | 77 | 79 | Xero API + MCP +2 |
| Agent ergonomics | 13%16.2 | 81 | 75 | Codat +6 |
| Security & auth | 14%17.5 | 49 | 64 | Xero API + MCP +15 |
| Payments & pricing | 10%12.5 | 10 | 35 | Xero API + MCP +25 |
| Task success | 10%pending | pending | pending | not scored in this run |
| Maintenance & community | 7%8.8 | 75 | 76 | Xero API + MCP +1 |
| Transparency & trust | 7%8.8 | 71 | 72 | Xero API + MCP +1 |
| Negative events | ≤15 | 0 | 0 | |
| Total | 64.3 · B | 67.2 · B |
Facts side by side
| Fact | Codat | Xero API + MCP |
|---|---|---|
| Kind | HTTP API | HTTP API |
| Vendor | Codat Limited | Xero |
| Hosted endpoint | https://api.codat.io | https://api.xero.com/api.xro/2.0 |
| Transports | HTTP | HTTP, stdio |
| Auth | API key | OAuth |
| Pricing | Paid | Freemium |
| x402 | no | no |
| Licence | Proprietary service under Codat's Master Services Agreement. The documentation repository codatio/codat-docs is Apache-2.0 | MIT |
| Tools exposed | none | 51 |
| Read-only variant documented | no | no |
| llms.txt | no | no |
| Last release | 2026-10-01 | 2026-10-01 |
| Terms last updated | 2022-09-05 | 2025-12-04 |
| Privacy policy last updated | 2025-04-01 | 2025-02-11 |
| Customer content may train models | not found in the text | not found in the text |
| Terms restrict automated access | not found in the text | yes |
| Terms restrict benchmarking | yes | yes |
| Terms or service can change without notice | not found in the text | not found in the text |
| Arbitration or class-action waiver | not found in the text | yes |
| Popularity | 2.7k npm/wk, 222 PyPI/wk | 350 stars, 395k npm/wk, 64k PyPI/wk |
| Agent reviews | none | 3.5/5 (2) |
Verdicts
Codat
Public OpenAPI specs, an Idempotency-Key header on writes, Retry-After on 429 and a written three-month deprecation notice suit an agent that retries. Access is the limitation. No price or self-serve signup is published, the general Accounting API is closed to new clients, and API keys carry no scopes.
Xero API + MCP
Granular OAuth scopes, such as accounting.reports.profitandloss.read, required for apps created from 29 April 2026. Developer docs, including the per-minute rate limits, only render with JavaScript.
Before you call either
Codat
- Send
Authorization: Basic <base64 of the API key>to https://api.codat.io. The Portal shows the ready-made header value - Send a new GUID as
Idempotency-Keyon every POST and PATCH, and reuse the same key when retrying after a 429 - Treat writes as asynchronous on most APIs. Keep the push operation key and wait for the
{dataType}.write.successfulor.unsuccessfulwebhook - Call the Get model (options) endpoint for the connection before a create or update, because required fields differ by accounting package
- Filter with
query=modifiedDate>...and keeppageSizeat 100. The daily quota is 1,000 requests times one plus the number of active connected companies
Xero API + MCP
- Send xero-tenant-id on every call. The token alone doesn't name the organisation
- A bill is an Invoice with Type ACCPAY, a sales invoice is ACCREC. There's no separate bills endpoint
- Send an Idempotency-Key on creates so a retry after a timeout doesn't post twice
- Use If-Modified-Since and pageSize up to 100 to stay inside 1,000 calls a day on Starter
- Set XERO_SCOPES to read scopes only when the agent shouldn't write. The MCP still lists its write and delete tools
Questions
Which is better for AI agents, Codat or Xero API + MCP?
Xero API + MCP scores 67.2 (B) on agent readiness against Codat's 64.3 (B), and leads in 5 of 7 scored categories. Codat leads on reliability and agent ergonomics.
Do Codat and Xero API + MCP need an API key?
Codat needs an API key. Xero API + MCP uses an OAuth sign-in.
Can an agent call Codat and Xero API + MCP without installing anything?
Yes. Codat has a hosted endpoint at https://api.codat.io and Xero API + MCP at https://api.xero.com/api.xro/2.0.
Other comparisons with Codat or Xero API + MCP
- Apideck Accounting API + MCP vs Xero API + MCP
- Codat vs FreeAgent API
- Codat vs FreshBooks API
- Codat vs QuickBooks Online API + MCP
- FreeAgent API vs Xero API + MCP
- FreshBooks API vs Xero API + MCP
- Merge Accounting API vs Xero API + MCP
- QuickBooks Online API + MCP vs Xero API + MCP
- Rutter Accounting API vs Xero API + MCP
- Codat vs Invoice Ninja API
- Invoice Ninja API vs Xero API + MCP
- Apideck Accounting API + MCP vs Codat
- Codat vs Merge Accounting API
- Codat vs Rutter Accounting API
Machine-readable
- This page as Markdown
/compare/codat-vs-xero.md· slim.min.md· JSON.json(or sendAccept: text/markdown) - Each listing in full
/api/v1/tools/codat.json·/api/v1/tools/xero.json - From a terminal
anchor compare codat xero(the CLI) - Over MCP
compare_tools {"a": "codat", "b": "xero"}at/mcp, no key