{
  "data": {
    "a": {
      "slug": "codat",
      "name": "Codat",
      "vendor": "Codat Limited",
      "vendorUrl": "https://codat.io",
      "kind": "http-api",
      "category": "accounting",
      "summary": "Codat connects a business's accounting, banking and commerce software to financial products and banks through one REST API. Product APIs cover bill pay, expenses, bank feeds and lending data, with official SDKs for TypeScript, Python and C#.",
      "url": "https://www.anchorterminal.com/tools/codat",
      "markdownUrl": "https://www.anchorterminal.com/tools/codat.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/codat.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/codat.json",
      "repo": "https://github.com/codatio/oas",
      "license": "Proprietary service under Codat's Master Services Agreement. The documentation repository codatio/codat-docs is Apache-2.0",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.codat.io",
      "packages": [
        {
          "registry": "npm",
          "name": "@codat/platform"
        },
        {
          "registry": "pypi",
          "name": "codat-platform"
        }
      ],
      "auth": "api-key",
      "authNotes": "An API key, Base64 encoded, in an `Authorization: Basic` header on every call to https://api.codat.io. An account comes through Codat's sales team. The docs say to get in touch to create one, and no self-serve signup was found. A client can hold up to 10 named keys, created and deleted in the Portal by Administrator or Developer users or through the /apiKeys endpoints. Keys have no scopes, so each one reaches every company the client has connected. End customers authorise their accounting package through Codat's Link flow.",
      "pricing": "paid",
      "pricingNotes": "No public price. codat.io/pricing returns 404 and the site's buttons ask for a meeting. The standard MSA sets a platform fee invoiced in advance and a unit fee per active company per month, both in an order form. The docs describe a free trial limited to 50 companies, no hourly syncs and 365 days, and a Codat Sandbox integration that is excluded from billing, but an account starts with a request to Codat (checked 2026-10-08).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs repository, the OpenAPI specs or the site (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 2690,
        "pypiWeekly": 222,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://docs.codat.io/using-the-api/overview",
      "openapi": "https://raw.githubusercontent.com/codatio/oas/main/json/Codat-Platform.json",
      "capabilities": [
        "accounting.unified",
        "accounting.bills",
        "accounting.reports",
        "accounting.ledger",
        "accounting.invoices"
      ],
      "tags": [
        "hosted",
        "paid",
        "sales-led",
        "api-key",
        "openapi",
        "webhooks",
        "async-jobs",
        "idempotency",
        "sandbox",
        "typescript",
        "python",
        "csharp",
        "status-page",
        "soc2",
        "iso27001",
        "closed-source"
      ],
      "lastRelease": "2026-10-01",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 64.3,
        "grade": "B",
        "agentReady": false,
        "rank": 280,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 4,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 81,
          "maintenance": 75,
          "payments": 10,
          "reliability": 80,
          "schema": 77,
          "security": 49,
          "transparency": 71
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "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.",
        "bestFor": "Banks, lenders, bill pay, expense and card products that already have or will sign a Codat contract and need writes into many accounting packages.",
        "strengths": [
          "Public OpenAPI 3 specs for every API in codatio/oas, with long operation descriptions and per-integration response examples",
          "Idempotency-Key header on POST and PATCH, cached for 90 minutes, and released after a 429 so the same key can be retried",
          "429 responses carry Retry-After, and every response carries X-Rate-Limit-Limit, Remaining and Reset headers",
          "Breaking changes are posted at least three months ahead, with a deprecation calendar and quarterly emails",
          "Annual SOC 2 Type II and ISO 27001 audits and a private bug bounty, per codat.io/security"
        ],
        "weaknesses": [
          "No public price. The pricing page returns 404 and fees are set in an order form",
          "No self-serve signup found. The docs and the site ask new users to get in touch",
          "The general Accounting API spec says it is relevant only to existing clients, and the status page labels it Legacy",
          "API keys have no scopes or read-only mode, and one key reaches every connected company",
          "Two complete API outages in July 2026, of 14 and 12 minutes, and intermittent Xero failures from 22 to 29 July",
          "The Java and Go SDKs were archived in April and May 2026"
        ],
        "agentNotes": [
          "Send `Authorization: Basic \u003cbase64 of the API key\u003e` to https://api.codat.io. The Portal shows the ready-made header value",
          "Send a new GUID as `Idempotency-Key` on 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.successful` or `.unsuccessful` webhook",
          "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\u003e...` and keep `pageSize` at 100. The daily quota is 1,000 requests times one plus the number of active connected companies"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 64.3
          }
        ],
        "editorialScores": {
          "ergonomics": 81,
          "maintenance": 75,
          "payments": 10,
          "reliability": 80,
          "schema": 77,
          "security": 49,
          "transparency": 59
        },
        "provenanceScore": 82
      },
      "connect": {
        "install": "npm install @codat/platform",
        "http": "curl https://api.codat.io/companies \\\n  -H \"Authorization: Basic $CODAT_ENCODED_API_KEY\""
      },
      "letme": {
        "capability": "https://letme.dev/accounting.unified",
        "tool": "https://letme.dev/codat"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "Codat Limited",
        "domain": "codat.io",
        "domainRegistered": "2016-10-17",
        "endpointOnVendorDomain": true,
        "terms": "https://codat.io/msa-standard/",
        "privacy": "https://codat.io/privacy-policy/",
        "statusPage": "https://status.codat.io",
        "changelog": "https://docs.codat.io/updates",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The standard MSA (version 2.0, 5 September 2022) names Codat Limited, registered in England and Wales, number 10480375, 6-7 St. Cross Street, London EC1N 8UB, for clients in the UK and the rest of the world outside the USA. The privacy notice also names Codat, Inc., a Delaware corporation.",
          "codat.io/legals lists two agreements, the Master Services Agreement (standard and enterprise versions) and the Start-up Plan terms. The standard MSA is the one recorded here.",
          "The Codat Global Privacy Notice was last updated in April 2025. It is written mainly for website visitors, and the MSA points to the same page for the sub-processor list.",
          "codat.io, app.codat.io and api.codat.io all return 404 for /.well-known/security.txt. codat.io/security has a disclosure form.",
          "RDAP for codat.io gives a registration date of 2016-10-17."
        ],
        "score": 82
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/codat.json",
      "live": {
        "slug": "codat",
        "probe": {
          "target": "https://api.codat.io",
          "method": "get",
          "lastAt": "2026-10-09T01:12:43.52055158Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 59,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 60,
          "p95ms24h": 102,
          "samples24h": 83,
          "samples30d": 83,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 70,
              "ok": 70
            },
            {
              "date": "2026-10-09",
              "probes": 13,
              "ok": 13
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.codat.io",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-09T01:07:23.561325441Z"
        },
        "pages": [
          {
            "url": "https://docs.codat.io/updates",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:18:26.233949031Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "07529b659c92"
          },
          {
            "url": "https://codat.io/privacy-policy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:16:28.10988641Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "e89a28b3e19e"
          },
          {
            "url": "https://codat.io/msa-standard/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:16:25.833678794Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "a5936b16dc49"
          }
        ],
        "updatedAt": "2026-10-09T01:12:43.52055158Z"
      }
    },
    "answer": "Codat scores 64.3 (B) on agent readiness against Odoo External API's 55.9 (C), and leads in 4 of 7 scored categories. Odoo External API leads on security \u0026 auth, payments \u0026 pricing and transparency \u0026 trust.",
    "b": {
      "slug": "odoo",
      "name": "Odoo External API",
      "vendor": "Odoo SA",
      "vendorUrl": "https://www.odoo.com",
      "kind": "http-api",
      "category": "accounting",
      "summary": "Odoo is a business suite from Odoo SA in Belgium with accounting, invoicing, sales, stock and HR apps on one database. Outside software reaches it through the JSON-2 HTTP API with API keys and, from Odoo 20, an MCP server.",
      "url": "https://www.anchorterminal.com/tools/odoo",
      "markdownUrl": "https://www.anchorterminal.com/tools/odoo.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/odoo.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/odoo.json",
      "repo": "https://github.com/odoo/odoo",
      "license": "Community edition LGPL-3.0. The Enterprise edition (the full Accounting app and the AI app with the MCP server) is proprietary under the Odoo Enterprise Subscription Agreement",
      "transports": [
        "http"
      ],
      "packages": [],
      "auth": "api-key",
      "authNotes": "An API key created by a user under Preferences, Account Security, New API Key, sent as `Authorization: bearer \u003ckey\u003e`. The key acts with that user's access rights and record rules, is shown once and expires within three months at most. Self-serve once the database is on a plan that includes the external API (Custom on Odoo Online), with no app review. The MCP server takes a key created with the MCP scope. The deprecated XML-RPC and JSON-RPC services take the database name, user id and password or key in the call.",
      "pricing": "paid",
      "pricingNotes": "Odoo Online needs the Custom plan for the external API. On 8 October 2026 the pricing page, read from a UK address, showed Custom at £41 a user a month billed yearly or £52 billed monthly (£32 and £41 for the first 12 months), Standard at £22 or £28 without the external API, and One App Free at £0 for one app without it. A free trial needs no card. The Community edition is free to self-host under LGPLv3 and includes the JSON-2 API. We did not read US dollar prices, so the price table is empty.",
      "priceSummary": "Paid",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the external API docs, the MCP server docs or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 54912,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://www.odoo.com/documentation/20.0/developer/reference/external_api.html",
      "capabilities": [
        "accounting.ledger",
        "accounting.invoices",
        "accounting.bills"
      ],
      "tags": [
        "hosted",
        "self-hosted",
        "open-source",
        "enterprise",
        "mcp",
        "status-page"
      ],
      "lastRelease": "2026-10-08",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 55.9,
        "grade": "C",
        "agentReady": false,
        "rank": 499,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 7,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 67,
          "maintenance": 73,
          "payments": 22,
          "reliability": 44,
          "schema": 51,
          "security": 61,
          "transparency": 93
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "One endpoint pattern reaches every model, with field selection, filters and paging, and keys that expire within three months. On Odoo Online the external API needs the Custom plan, there is no OpenAPI file, and the acceptable use policy asks for about one call a second with no parallel calls.",
        "bestFor": "An agent working inside a company that already runs Odoo, where invoices, bills, journal entries, stock and sales sit in one database behind one endpoint pattern.",
        "strengths": [
          "`/json/2/\u003cmodel\u003e/\u003cmethod\u003e` reaches every model the user can see, including `account.move` for invoices, bills and journal entries",
          "API keys are per user, shown once, expire within three months at most and can be generated and revoked through the API",
          "Odoo 20 adds an MCP server at `\u003cdatabase_url\u003e/mcp` that exposes five read-only tools by default, with write tools switched on one by one",
          "The Community edition is LGPLv3 and carries the same JSON-2 controller, so a self-hosted server answers the same calls at no charge",
          "The privacy policy of 24 September 2026 names subprocessors, hosting regions and retention periods"
        ],
        "weaknesses": [
          "On Odoo Online the external API is limited to the Custom plan. One App Free and Standard exclude it",
          "No OpenAPI file and no llms.txt. The per-database reference at `/doc` needs a login or a key, and its docs section reads \"Under construction\"",
          "The acceptable use policy puts API traffic at about one call a second with no parallel calls. No 429 or Retry-After handling was found in the docs",
          "No idempotency keys, and the JSON-2 docs say several calls cannot share one transaction",
          "status.odoo.com has no history page, and its only dated entry is a planned upgrade on 4 August 2026",
          "The full Accounting app and the MCP server are in the proprietary Enterprise edition. Community has Invoicing"
        ],
        "agentNotes": [
          "POST to `/json/2/\u003cmodel\u003e/\u003cmethod\u003e` with `Authorization: bearer \u003ckey\u003e` and named arguments in a JSON body. Add `X-Odoo-Database` when one host serves several databases",
          "Pass `fields` and `limit` on `search_read`. The default limit is every matching record",
          "Create invoices and bills on `account.move` with `move_type` set to `out_invoice` or `in_invoice`, then call `action_post`. A new move is a draft",
          "Keep to about one call a second with no parallel calls on Odoo Online, and batch records into one `create` call",
          "Ask the owner for a key on a dedicated bot user with the minimum access rights, and rotate it before its expiry date"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 55.9
          }
        ],
        "editorialScores": {
          "ergonomics": 67,
          "maintenance": 73,
          "payments": 22,
          "reliability": 44,
          "schema": 51,
          "security": 61,
          "transparency": 87
        },
        "provenanceScore": 98
      },
      "connect": {
        "http": "curl https://$DATABASE.odoo.com/json/2/res.partner/search_read \\\n  -X POST \\\n  --oauth2-bearer $API_KEY \\\n  -H \"X-Odoo-Database: $DATABASE\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"domain\": [[\"is_company\", \"=\", true]], \"fields\": [\"name\"]}'",
        "claudeCode": "claude mcp add --transport stdio \u003cserver_name\u003e -- npx -y mcp-remote \u003cdatabase_url\u003e/mcp --header \"Authorization: Bearer \u003cAPI_KEY\u003e\"",
        "config": {
          "mcpServers": {
            "odoo": {
              "args": [
                "-y",
                "mcp-remote",
                "\u003cdatabase_url\u003e/mcp",
                "--header",
                "Authorization: Bearer \u003cAPI_KEY\u003e"
              ],
              "command": "npx"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/accounting.ledger",
        "tool": "https://letme.dev/odoo"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "Odoo SA",
        "domain": "odoo.com",
        "domainRegistered": "2001-01-25",
        "endpointOnVendorDomain": true,
        "terms": "https://www.odoo.com/documentation/20.0/legal/terms/enterprise.html",
        "privacy": "https://www.odoo.com/privacy",
        "statusPage": "https://status.odoo.com",
        "changelog": "https://www.odoo.com/odoo-20-release-notes",
        "securityTxt": "valid",
        "checked": "2026-10-08",
        "notes": [
          "The Odoo Enterprise Subscription Agreement (version 13, 24 September 2026) is between the customer and Odoo SA and its affiliates, under Belgian law, and covers the cloud platforms and self-hosting. The Acceptable Use Policy of 7 May 2025 is incorporated into it.",
          "The privacy policy (effective 24 September 2026) gives the postal contact as Odoo SA, Chaussée de Namur 40, Belgium, and privacy@odoo.com.",
          "www.odoo.com/.well-known/security.txt is PGP-signed and gives security@odoo.com, the disclosure policy and a hall of fame. It has no Expires field, which RFC 9116 requires.",
          "Odoo Online databases answer at \u003cname\u003e.odoo.com. A self-hosted server answers on the owner's own domain.",
          "status.odoo.com is a single page with component states and no history page. Its only dated entry on 8 October 2026 was the planned odoo.com upgrade of 4 August 2026.",
          "RDAP for odoo.com gives a registration date of 2001-01-25."
        ],
        "score": 98
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/odoo.json",
      "live": {
        "slug": "odoo",
        "vendorStatus": {
          "page": "https://status.odoo.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-08T19:38:51.647101455Z"
        },
        "updatedAt": "2026-10-08T19:38:51.647101455Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Codat Limited",
        "b": "Odoo SA",
        "name": "Vendor"
      },
      {
        "a": "https://api.codat.io",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under Codat's Master Services Agreement. The documentation repository codatio/codat-docs is Apache-2.0",
        "b": "Community edition LGPL-3.0. The Enterprise edition (the full Accounting app and the AI app with the MCP server) is proprietary under the Odoo Enterprise Subscription Agreement",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-01",
        "b": "2026-10-08",
        "name": "Last release"
      },
      {
        "a": "2022-09-05",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "2025-04-01",
        "b": "2026-09-24",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "2.7k npm/wk, 222 PyPI/wk",
        "b": "55k stars",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Codat scores 64.3 (B) on agent readiness against Odoo External API's 55.9 (C), and leads in 4 of 7 scored categories. Odoo External API leads on security \u0026 auth, payments \u0026 pricing and transparency \u0026 trust.",
        "question": "Which is better for AI agents, Codat or Odoo External API?"
      },
      {
        "answer": "Both need an API key.",
        "question": "Do Codat and Odoo External API need an API key?"
      },
      {
        "answer": "Codat has a hosted endpoint at https://api.codat.io. No hosted endpoint is listed for Odoo External API.",
        "question": "Can an agent call Codat and Odoo External API without installing anything?"
      },
      {
        "answer": "No open-source release is listed for Codat. Odoo External API is open source (Community edition LGPL-3.0. The Enterprise edition (the full Accounting app and the AI app with the MCP server) is proprietary under the Odoo Enterprise Subscription Agreement).",
        "question": "Are Codat and Odoo External API open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 80 against 44",
          "Schema \u0026 documentation, 77 against 51",
          "Agent ergonomics, 81 against 67"
        ],
        "also": [
          "A hosted endpoint, with nothing to install"
        ],
        "goodFor": "Banks, lenders, bill pay, expense and card products that already have or will sign a Codat contract and need writes into many accounting packages.",
        "slug": "codat",
        "watchFor": "No public price. The pricing page returns 404 and fees are set in an order form"
      },
      {
        "aheadOn": [
          "Security \u0026 auth, 61 against 49",
          "Payments \u0026 pricing, 22 against 10",
          "Transparency \u0026 trust, 93 against 71"
        ],
        "also": [
          "Open source"
        ],
        "goodFor": "An agent working inside a company that already runs Odoo, where invoices, bills, journal entries, stock and sales sit in one database behind one endpoint pattern.",
        "slug": "odoo",
        "watchFor": "On Odoo Online the external API is limited to the Custom plan. One App Free and Standard exclude it"
      }
    ],
    "job": {
      "capability": "accounting.ledger",
      "name": "Accounting ledger"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/apideck-accounting-vs-odoo.json",
        "title": "Apideck Accounting API + MCP vs Odoo External API",
        "url": "https://www.anchorterminal.com/compare/apideck-accounting-vs-odoo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/codat-vs-freeagent.json",
        "title": "Codat vs FreeAgent API",
        "url": "https://www.anchorterminal.com/compare/codat-vs-freeagent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/codat-vs-freshbooks.json",
        "title": "Codat vs FreshBooks API",
        "url": "https://www.anchorterminal.com/compare/codat-vs-freshbooks"
      },
      {
        "json": "https://www.anchorterminal.com/compare/codat-vs-quickbooks-online.json",
        "title": "Codat vs QuickBooks Online API + MCP",
        "url": "https://www.anchorterminal.com/compare/codat-vs-quickbooks-online"
      },
      {
        "json": "https://www.anchorterminal.com/compare/codat-vs-xero.json",
        "title": "Codat vs Xero API + MCP",
        "url": "https://www.anchorterminal.com/compare/codat-vs-xero"
      },
      {
        "json": "https://www.anchorterminal.com/compare/codat-vs-zoho-books.json",
        "title": "Codat vs Zoho Books",
        "url": "https://www.anchorterminal.com/compare/codat-vs-zoho-books"
      },
      {
        "json": "https://www.anchorterminal.com/compare/freeagent-vs-odoo.json",
        "title": "FreeAgent API vs Odoo External API",
        "url": "https://www.anchorterminal.com/compare/freeagent-vs-odoo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/freshbooks-vs-odoo.json",
        "title": "FreshBooks API vs Odoo External API",
        "url": "https://www.anchorterminal.com/compare/freshbooks-vs-odoo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/merge-accounting-vs-odoo.json",
        "title": "Merge Accounting API vs Odoo External API",
        "url": "https://www.anchorterminal.com/compare/merge-accounting-vs-odoo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/odoo-vs-quickbooks-online.json",
        "title": "Odoo External API vs QuickBooks Online API + MCP",
        "url": "https://www.anchorterminal.com/compare/odoo-vs-quickbooks-online"
      },
      {
        "json": "https://www.anchorterminal.com/compare/odoo-vs-rutter.json",
        "title": "Odoo External API vs Rutter Accounting API",
        "url": "https://www.anchorterminal.com/compare/odoo-vs-rutter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/odoo-vs-xero.json",
        "title": "Odoo External API vs Xero API + MCP",
        "url": "https://www.anchorterminal.com/compare/odoo-vs-xero"
      },
      {
        "json": "https://www.anchorterminal.com/compare/odoo-vs-zoho-books.json",
        "title": "Odoo External API vs Zoho Books",
        "url": "https://www.anchorterminal.com/compare/odoo-vs-zoho-books"
      },
      {
        "json": "https://www.anchorterminal.com/compare/codat-vs-invoice-ninja.json",
        "title": "Codat vs Invoice Ninja API",
        "url": "https://www.anchorterminal.com/compare/codat-vs-invoice-ninja"
      },
      {
        "json": "https://www.anchorterminal.com/compare/invoice-ninja-vs-odoo.json",
        "title": "Invoice Ninja API vs Odoo External API",
        "url": "https://www.anchorterminal.com/compare/invoice-ninja-vs-odoo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apideck-accounting-vs-codat.json",
        "title": "Apideck Accounting API + MCP vs Codat",
        "url": "https://www.anchorterminal.com/compare/apideck-accounting-vs-codat"
      },
      {
        "json": "https://www.anchorterminal.com/compare/codat-vs-merge-accounting.json",
        "title": "Codat vs Merge Accounting API",
        "url": "https://www.anchorterminal.com/compare/codat-vs-merge-accounting"
      },
      {
        "json": "https://www.anchorterminal.com/compare/codat-vs-rutter.json",
        "title": "Codat vs Rutter Accounting API",
        "url": "https://www.anchorterminal.com/compare/codat-vs-rutter"
      }
    ],
    "scores": [
      {
        "by": 36,
        "codat": 80,
        "edge": "codat",
        "key": "reliability",
        "name": "Reliability",
        "odoo": 44,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 26,
        "codat": 77,
        "edge": "codat",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "odoo": 51,
        "weight": 13
      },
      {
        "by": 14,
        "codat": 81,
        "edge": "codat",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "odoo": 67,
        "weight": 13
      },
      {
        "by": 12,
        "codat": 49,
        "edge": "odoo",
        "key": "security",
        "name": "Security \u0026 auth",
        "odoo": 61,
        "weight": 14
      },
      {
        "by": 12,
        "codat": 10,
        "edge": "odoo",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "odoo": 22,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 2,
        "codat": 75,
        "edge": "codat",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "odoo": 73,
        "weight": 7
      },
      {
        "by": 22,
        "codat": 71,
        "edge": "odoo",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "odoo": 93,
        "weight": 7
      }
    ],
    "summary": "Codat scores 64.3 (B) on agent readiness against Odoo External API's 55.9 (C), and leads in 4 of 7 scored categories. Odoo External API leads on security \u0026 auth, payments \u0026 pricing and transparency \u0026 trust. Both do accounting ledger.",
    "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.",
      "odoo": "One endpoint pattern reaches every model, with field selection, filters and paging, and keys that expire within three months. On Odoo Online the external API needs the Custom plan, there is no OpenAPI file, and the acceptable use policy asks for about one call a second with no parallel calls."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/codat-vs-odoo",
    "json": "https://www.anchorterminal.com/compare/codat-vs-odoo.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/codat-vs-odoo.md",
    "slim": "https://www.anchorterminal.com/compare/codat-vs-odoo.min.md"
  },
  "markdown": "Codat scores 64.3 (B) on agent readiness against Odoo External API's 55.9 (C), and leads in 4 of 7 scored categories. Odoo External API leads on security \u0026 auth, payments \u0026 pricing and transparency \u0026 trust. Both do accounting ledger.\n\n- Codat: grade B, 64.3/100, rank #280 of 722. Markdown https://www.anchorterminal.com/tools/codat.md · JSON https://www.anchorterminal.com/api/v1/tools/codat.json\n- Odoo External API: grade C, 55.9/100, rank #499 of 722. Markdown https://www.anchorterminal.com/tools/odoo.md · JSON https://www.anchorterminal.com/api/v1/tools/odoo.json\n\n## Which one, for what\n\n### Codat (B)\n\nGood 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.\n\nAhead on:\n- Reliability, 80 against 44\n- Schema \u0026 documentation, 77 against 51\n- Agent ergonomics, 81 against 67\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n\nWatch for: No public price. The pricing page returns 404 and fees are set in an order form\n\n### Odoo External API (C)\n\nGood for: An agent working inside a company that already runs Odoo, where invoices, bills, journal entries, stock and sales sit in one database behind one endpoint pattern.\n\nAhead on:\n- Security \u0026 auth, 61 against 49\n- Payments \u0026 pricing, 22 against 10\n- Transparency \u0026 trust, 93 against 71\n\nAlso in its favour:\n- Open source\n\nWatch for: On Odoo Online the external API is limited to the Custom plan. One App Free and Standard exclude it\n\n\n## Score by category\n\n| Category | Weight | Codat | Odoo External API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 80 | 44 | Codat +36 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 77 | 51 | Codat +26 |\n| Agent ergonomics | 13% (16.2 this run) | 81 | 67 | Codat +14 |\n| Security \u0026 auth | 14% (17.5 this run) | 49 | 61 | Odoo External API +12 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 10 | 22 | Odoo External API +12 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 75 | 73 | Codat +2 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 71 | 93 | Odoo External API +22 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **64.3 · B** | **55.9 · C** | |\n\n## Facts side by side\n\n| Fact | Codat | Odoo External API |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Codat Limited | Odoo SA |\n| Hosted endpoint | `https://api.codat.io` | no (local only) |\n| Transports | HTTP | HTTP |\n| Auth | API key | API key |\n| Pricing | Paid | Paid |\n| x402 | no | no |\n| Licence | Proprietary service under Codat's Master Services Agreement. The documentation repository codatio/codat-docs is Apache-2.0 | Community edition LGPL-3.0. The Enterprise edition (the full Accounting app and the AI app with the MCP server) is proprietary under the Odoo Enterprise Subscription Agreement |\n| Read-only variant documented | no | yes |\n| llms.txt | no | no |\n| Last release | 2026-10-01 | 2026-10-08 |\n| Terms last updated | 2022-09-05 | no date given |\n| Privacy policy last updated | 2025-04-01 | 2026-09-24 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | not found in the text | not found in the text |\n| Terms restrict benchmarking | yes | not found in the text |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | 2.7k npm/wk, 222 PyPI/wk | 55k stars |\n\n## Verdicts\n\n**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.\n\n**Odoo External API.** One endpoint pattern reaches every model, with field selection, filters and paging, and keys that expire within three months. On Odoo Online the external API needs the Custom plan, there is no OpenAPI file, and the acceptable use policy asks for about one call a second with no parallel calls.\n\n## Before you call either\n\n### Codat\n\n1. Send `Authorization: Basic \u003cbase64 of the API key\u003e` to https://api.codat.io. The Portal shows the ready-made header value\n2. Send a new GUID as `Idempotency-Key` on every POST and PATCH, and reuse the same key when retrying after a 429\n3. Treat writes as asynchronous on most APIs. Keep the push operation key and wait for the `{dataType}.write.successful` or `.unsuccessful` webhook\n4. Call the Get model (options) endpoint for the connection before a create or update, because required fields differ by accounting package\n5. Filter with `query=modifiedDate\u003e...` and keep `pageSize` at 100. The daily quota is 1,000 requests times one plus the number of active connected companies\n\n### Odoo External API\n\n1. POST to `/json/2/\u003cmodel\u003e/\u003cmethod\u003e` with `Authorization: bearer \u003ckey\u003e` and named arguments in a JSON body. Add `X-Odoo-Database` when one host serves several databases\n2. Pass `fields` and `limit` on `search_read`. The default limit is every matching record\n3. Create invoices and bills on `account.move` with `move_type` set to `out_invoice` or `in_invoice`, then call `action_post`. A new move is a draft\n4. Keep to about one call a second with no parallel calls on Odoo Online, and batch records into one `create` call\n5. Ask the owner for a key on a dedicated bot user with the minimum access rights, and rotate it before its expiry date\n\n## Questions\n\n### Which is better for AI agents, Codat or Odoo External API?\n\nCodat scores 64.3 (B) on agent readiness against Odoo External API's 55.9 (C), and leads in 4 of 7 scored categories. Odoo External API leads on security \u0026 auth, payments \u0026 pricing and transparency \u0026 trust.\n\n### Do Codat and Odoo External API need an API key?\n\nBoth need an API key.\n\n### Can an agent call Codat and Odoo External API without installing anything?\n\nCodat has a hosted endpoint at https://api.codat.io. No hosted endpoint is listed for Odoo External API.\n\n### Are Codat and Odoo External API open source?\n\nNo open-source release is listed for Codat. Odoo External API is open source (Community edition LGPL-3.0. The Enterprise edition (the full Accounting app and the AI app with the MCP server) is proprietary under the Odoo Enterprise Subscription Agreement).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/codat-vs-odoo.json, and with the fewest tokens: https://www.anchorterminal.com/compare/codat-vs-odoo.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"codat\", \"b\": \"odoo\"}`. From a terminal: `anchor compare codat odoo`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/codat.json and https://www.anchorterminal.com/api/v1/tools/odoo.json\n\n## Other comparisons with Codat or Odoo External API\n\n- [Apideck Accounting API + MCP vs Odoo External API](https://www.anchorterminal.com/compare/apideck-accounting-vs-odoo.md)\n- [Codat vs FreeAgent API](https://www.anchorterminal.com/compare/codat-vs-freeagent.md)\n- [Codat vs FreshBooks API](https://www.anchorterminal.com/compare/codat-vs-freshbooks.md)\n- [Codat vs QuickBooks Online API + MCP](https://www.anchorterminal.com/compare/codat-vs-quickbooks-online.md)\n- [Codat vs Xero API + MCP](https://www.anchorterminal.com/compare/codat-vs-xero.md)\n- [Codat vs Zoho Books](https://www.anchorterminal.com/compare/codat-vs-zoho-books.md)\n- [FreeAgent API vs Odoo External API](https://www.anchorterminal.com/compare/freeagent-vs-odoo.md)\n- [FreshBooks API vs Odoo External API](https://www.anchorterminal.com/compare/freshbooks-vs-odoo.md)\n- [Merge Accounting API vs Odoo External API](https://www.anchorterminal.com/compare/merge-accounting-vs-odoo.md)\n- [Odoo External API vs QuickBooks Online API + MCP](https://www.anchorterminal.com/compare/odoo-vs-quickbooks-online.md)\n- [Odoo External API vs Rutter Accounting API](https://www.anchorterminal.com/compare/odoo-vs-rutter.md)\n- [Odoo External API vs Xero API + MCP](https://www.anchorterminal.com/compare/odoo-vs-xero.md)\n- [Odoo External API vs Zoho Books](https://www.anchorterminal.com/compare/odoo-vs-zoho-books.md)\n- [Codat vs Invoice Ninja API](https://www.anchorterminal.com/compare/codat-vs-invoice-ninja.md)\n- [Invoice Ninja API vs Odoo External API](https://www.anchorterminal.com/compare/invoice-ninja-vs-odoo.md)\n- [Apideck Accounting API + MCP vs Codat](https://www.anchorterminal.com/compare/apideck-accounting-vs-codat.md)\n- [Codat vs Merge Accounting API](https://www.anchorterminal.com/compare/codat-vs-merge-accounting.md)\n- [Codat vs Rutter Accounting API](https://www.anchorterminal.com/compare/codat-vs-rutter.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-09",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Codat vs Odoo External API",
        "url": ""
      }
    ],
    "description": "Codat scores 64.3 (B) on agent readiness against Odoo External API's 55.9 (C), and leads in 4 of 7 scored categories. Odoo External API leads on security \u0026 auth, payments \u0026 pricing and transparency \u0026 trust. Both do accounting ledger. Category scores, facts, verdicts and agent…",
    "facts": [
      "Codat B 64.3",
      "Odoo External API C 55.9",
      "scores"
    ],
    "h1": "Codat vs Odoo External API",
    "image": "https://www.anchorterminal.com/assets/og/compare-codat-vs-odoo.png",
    "path": "/compare/codat-vs-odoo",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Codat vs Odoo External API for AI agents, B 64.3 vs C 55.9",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/codat-vs-odoo"
  },
  "tokens": {
    "markdown": 2400,
    "slim": 680
  },
  "version": 1
}
