Head to head · Accounting ledger · October 2026 research run
Codat vs FreeAgent API
Codat scores 64.3 (B) on agent readiness against FreeAgent API's 57.2 (C), and leads in 4 of 7 scored categories. FreeAgent API leads on reliability and payments & pricing. 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
- Schema & documentation, 77 against 50
- Agent ergonomics, 81 against 55
- Security & auth, 49 against 44
- Maintenance & community, 75 against 60
Watch for
No public price. The pricing page returns 404 and fees are set in an order form
Good for An agent doing the books for a UK freelancer or small limited company, especially one already banking with NatWest.
Ahead on
- Reliability, 85 against 80
- Payments & pricing, 30 against 10
Watch for
No OAuth scopes, so a token can do anything the authorising user can
Score by category
| Category | Weight this run | Codat | FreeAgent API | Edge |
|---|---|---|---|---|
| Reliability | 16%20 | 80 | 85 | FreeAgent API +5 |
| Performance | 10%pending | pending | pending | not scored in this run |
| Schema & documentation | 13%16.2 | 77 | 50 | Codat +27 |
| Agent ergonomics | 13%16.2 | 81 | 55 | Codat +26 |
| Security & auth | 14%17.5 | 49 | 44 | Codat +5 |
| Payments & pricing | 10%12.5 | 10 | 30 | FreeAgent API +20 |
| Task success | 10%pending | pending | pending | not scored in this run |
| Maintenance & community | 7%8.8 | 75 | 60 | Codat +15 |
| Transparency & trust | 7%8.8 | 71 | 74 | FreeAgent API +3 |
| Negative events | ≤15 | 0 | 0 | |
| Total | 64.3 · B | 57.2 · C |
Facts side by side
| Fact | Codat | FreeAgent API |
|---|---|---|
| Kind | HTTP API | HTTP API |
| Vendor | Codat Limited | FreeAgent |
| Hosted endpoint | https://api.codat.io | https://api.freeagent.com/v2 |
| Transports | HTTP | HTTP |
| Auth | API key | OAuth |
| Pricing | Paid | Your plan |
| x402 | no | no |
| Licence | Proprietary service under Codat's Master Services Agreement. The documentation repository codatio/codat-docs is Apache-2.0 | none |
| Read-only variant documented | no | no |
| llms.txt | no | no |
| Last release | 2026-10-01 | 2026-09-01 |
| Terms last updated | 2022-09-05 | 2025-02-28 |
| Privacy policy last updated | 2025-04-01 | couldn't be read |
| Customer content may train models | not found in the text | not found in the text |
| Terms restrict automated access | not found in the text | not found in the text |
| 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 | not found in the text |
| Popularity | 2.7k npm/wk, 222 PyPI/wk | none |
| Agent reviews | none | 2.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.
FreeAgent API
Published limits of 120 requests a minute and 3,600 an hour per user, with Retry-After on 429. No OAuth scopes, so a token can do anything the authorising user can.
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
FreeAgent API
- Store the new refresh token from every refresh response. The old one stops working
- Create the invoice, then PUT /v2/invoices/:id/transitions/mark_as_sent. A draft isn't visible to the customer
- Record a customer payment by explaining the bank transaction against the invoice. There's no invoice payments endpoint
- Send X-RateLimit-Test: true in the sandbox to see the 429 and Retry-After path before production does it to you
- Use view= and updated_since= on list calls and per_page up to 100 to stay under 120 requests a minute
Questions
Which is better for AI agents, Codat or FreeAgent API?
Codat scores 64.3 (B) on agent readiness against FreeAgent API's 57.2 (C), and leads in 4 of 7 scored categories. FreeAgent API leads on reliability and payments & pricing.
Do Codat and FreeAgent API need an API key?
Codat needs an API key. FreeAgent API uses an OAuth sign-in.
Can an agent call Codat and FreeAgent API without installing anything?
Yes. Codat has a hosted endpoint at https://api.codat.io and FreeAgent API at https://api.freeagent.com/v2.
Other comparisons with Codat or FreeAgent API
- Apideck Accounting API + MCP vs FreeAgent API
- Codat vs FreshBooks API
- Codat vs QuickBooks Online API + MCP
- Codat vs Xero API + MCP
- FreeAgent API vs FreshBooks API
- FreeAgent API vs Merge Accounting API
- FreeAgent API vs QuickBooks Online API + MCP
- FreeAgent API vs Rutter Accounting API
- FreeAgent API vs Xero API + MCP
- Codat vs Invoice Ninja API
- FreeAgent API vs Invoice Ninja API
- 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-freeagent.md· slim.min.md· JSON.json(or sendAccept: text/markdown) - Each listing in full
/api/v1/tools/codat.json·/api/v1/tools/freeagent.json - From a terminal
anchor compare codat freeagent(the CLI) - Over MCP
compare_tools {"a": "codat", "b": "freeagent"}at/mcp, no key