{
  "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-08T19:52:48.243499388Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 77,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 70,
          "p95ms24h": 157,
          "samples24h": 27,
          "samples30d": 27,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 27,
              "ok": 27
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.codat.io",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T19:50:31.48060163Z"
        },
        "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-08T19:52:48.243499388Z"
      }
    },
    "answer": "Codat scores 64.3 (B) on agent readiness against Rutter Accounting API's 55.6 (C), and leads in 5 of 7 scored categories. Rutter Accounting API leads on payments \u0026 pricing.",
    "b": {
      "slug": "rutter",
      "name": "Rutter Accounting API",
      "vendor": "Rutter",
      "vendorUrl": "https://www.rutter.com",
      "kind": "http-api",
      "category": "accounting",
      "summary": "Unified API for accounting, commerce and payment platforms, aimed at lenders and financial software developers.",
      "url": "https://www.anchorterminal.com/tools/rutter",
      "markdownUrl": "https://www.anchorterminal.com/tools/rutter.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/rutter.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/rutter.json",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://production.rutterapi.com/versioned",
      "packages": [],
      "auth": "api-key",
      "authNotes": "HTTP Basic auth with your client_id and client_secret, plus an `access_token` query parameter naming the connection, which you get from the Exchange Tokens endpoint after a user links through Rutter Link. Every call needs an `X-Rutter-Version` header (2024-08-31 is current). The sandbox at sandbox.rutterapi.com uses the same scheme.",
      "pricing": "paid",
      "pricingNotes": "A free starter plan gives sandbox data and a 30-day trial for a proof of concept against QuickBooks, Xero, FreshBooks and Zoho Books, with no card. Production access to every platform, including NetSuite, QuickBooks Desktop and Sage Intacct, is a custom quote from sales, with a 99.9 per cent monthly uptime SLA and one-hour response on critical issues. No per-connection price is published (https://www.rutter.com/pricing).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.rutter.com/rest/2024-08-31/basics",
      "openapi": "https://docs.rutter.com/rest/2024-08-31/spec",
      "capabilities": [
        "accounting.unified",
        "accounting.ledger",
        "accounting.invoices",
        "accounting.bills",
        "accounting.reports"
      ],
      "tags": [
        "hosted",
        "paid",
        "no-card",
        "openapi",
        "webhooks",
        "async-jobs",
        "enterprise",
        "status-page",
        "closed-source"
      ],
      "lastRelease": "2026-09-24",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 55.6,
        "grade": "C",
        "agentReady": false,
        "rank": 506,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 8,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 67,
          "maintenance": 62,
          "payments": 20,
          "reliability": 67,
          "schema": 79,
          "security": 36,
          "transparency": 48
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Idempotency-Key header on writes, and prefer_sync writes that fall back to async after 30 seconds. Production prices are quote-only.",
        "bestFor": "Lenders, spend-management and fintech products that read ledgers alongside commerce and payment platforms, and that need writes an agent can retry safely.",
        "strengths": [
          "Idempotency-Key header on writes, and prefer_sync writes that fall back to async after 30 seconds",
          "Error codes 450, 451, 452 and 550 that separate the platform's failure from Rutter's",
          "OpenAPI spec per dated API version, with an upgrade guide listing breaking changes",
          "30-day sandbox trial with QuickBooks, Xero, FreshBooks and Zoho Books, no card",
          "99.9 per cent monthly uptime SLA published on the pricing page"
        ],
        "weaknesses": [
          "Production prices are quote-only",
          "Terms and privacy policy are Google Drive PDFs, and no legal entity is named on the site",
          "The per-connection access_token travels as a URL query parameter",
          "Four API incidents in September 2026, including about 25 hours of high latency and errors on 3 and 4 September",
          "No SDK, llms.txt or MCP server from the vendor"
        ],
        "agentNotes": [
          "Send X-Rutter-Version: 2024-08-31 on every call",
          "Send an Idempotency-Key on every create so a retry after a timeout doesn't write twice",
          "Use response_mode=prefer_sync and handle the 202 async_response anyway",
          "Treat 452 as the ledger throttling you and 429 as Rutter's 500-per-10-seconds organisation limit",
          "Keep access_token out of logged URLs. The docs only show it as a query parameter"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3,
        "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.6
          }
        ],
        "editorialScores": {
          "ergonomics": 67,
          "maintenance": 62,
          "payments": 20,
          "reliability": 67,
          "schema": 79,
          "security": 36,
          "transparency": 26
        },
        "provenanceScore": 69
      },
      "connect": {
        "http": "curl \"https://sandbox.rutterapi.com/versioned/accounting/invoices?access_token=$RUTTER_ACCESS_TOKEN\" \\\n  -u \"$RUTTER_CLIENT_ID:$RUTTER_CLIENT_SECRET\" -H \"X-Rutter-Version: 2024-08-31\""
      },
      "letme": {
        "capability": "https://letme.dev/accounting.unified",
        "tool": "https://letme.dev/rutter"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "Rutter",
        "domain": "rutter.com",
        "domainRegistered": "1996-10-28",
        "domainNote": "rutter.com was registered in 1996, long before the company, so the domain was bought later. The API runs on rutterapi.com.",
        "endpointOnVendorDomain": false,
        "terms": "https://drive.google.com/file/d/1J77WNI4JS_WjFiXn9NgQVBy_N_unqpCn/view",
        "privacy": "https://drive.google.com/file/d/1uZ76Be9jAih5g8kj8bKEAApCnMb6TQVL/view",
        "statusPage": "https://status.rutterapi.com",
        "changelog": "https://docs.rutter.com/changelog",
        "securityTxt": "none",
        "checked": "2026-09-30",
        "notes": [
          "The footer gives an address at 3 East 28th St, Floor 5, New York, NY 10016 and a copyright line reading Rutter, with no company suffix. We couldn't read the Google Drive PDFs to confirm the legal name.",
          "The API and status page live on rutterapi.com while the site and docs are on rutter.com. Both are the vendor's.",
          "A trust centre at trust.rutter.com holds the security documentation."
        ],
        "score": 69
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/rutter.json",
      "live": {
        "slug": "rutter",
        "probe": {
          "target": "https://production.rutterapi.com/versioned",
          "method": "get",
          "lastAt": "2026-10-08T19:53:01.101150843Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 366,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 322,
          "p95ms24h": 421,
          "samples24h": 272,
          "samples30d": 1941,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-06",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 225,
              "ok": 225
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.rutterapi.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T19:51:01.97635579Z"
        },
        "securityTxt": {
          "url": "https://rutter.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:39.831711655Z"
        },
        "domain": {
          "domain": "rutter.com",
          "registered": "1996-10-28",
          "source": "https://rdap.verisign.com/com/v1/domain/rutter.com",
          "checkedAt": "2026-10-04T13:03:31.134242543Z"
        },
        "pages": [
          {
            "url": "https://docs.rutter.com/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:19:24.513399195Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "92fa990bcd51"
          },
          {
            "url": "https://www.rutter.com/pricing",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-08T18:30:05.029738727Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "4091577edbf3"
          },
          {
            "url": "https://drive.google.com/file/d/1uZ76Be9jAih5g8kj8bKEAApCnMb6TQVL/view",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:20:01.243630609Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "d009b71cc585"
          },
          {
            "url": "https://drive.google.com/file/d/1J77WNI4JS_WjFiXn9NgQVBy_N_unqpCn/view",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:19:58.873478248Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ca761d70fc05"
          }
        ],
        "updatedAt": "2026-10-08T19:53:01.101150843Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Codat Limited",
        "b": "Rutter",
        "name": "Vendor"
      },
      {
        "a": "https://api.codat.io",
        "b": "https://production.rutterapi.com/versioned",
        "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": "none",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-01",
        "b": "2026-09-24",
        "name": "Last release"
      },
      {
        "a": "2022-09-05",
        "b": "couldn't be read",
        "name": "Terms last updated"
      },
      {
        "a": "2025-04-01",
        "b": "couldn't be read",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "couldn't be read",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "couldn't be read",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "couldn't be read",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "couldn't be read",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "couldn't be read",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "2.7k npm/wk, 222 PyPI/wk",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "3/5 (2)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Codat scores 64.3 (B) on agent readiness against Rutter Accounting API's 55.6 (C), and leads in 5 of 7 scored categories. Rutter Accounting API leads on payments \u0026 pricing.",
        "question": "Which is better for AI agents, Codat or Rutter Accounting API?"
      },
      {
        "answer": "Both need an API key.",
        "question": "Do Codat and Rutter Accounting API need an API key?"
      },
      {
        "answer": "Yes. Codat has a hosted endpoint at https://api.codat.io and Rutter Accounting API at https://production.rutterapi.com/versioned.",
        "question": "Can an agent call Codat and Rutter Accounting API without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 80 against 67",
          "Agent ergonomics, 81 against 67",
          "Security \u0026 auth, 49 against 36",
          "Maintenance \u0026 community, 75 against 62",
          "Transparency \u0026 trust, 71 against 48"
        ],
        "also": null,
        "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": [
          "Payments \u0026 pricing, 20 against 10"
        ],
        "also": [
          "Free to start without a card"
        ],
        "goodFor": "Lenders, spend-management and fintech products that read ledgers alongside commerce and payment platforms, and that need writes an agent can retry safely.",
        "slug": "rutter",
        "watchFor": "Production prices are quote-only"
      }
    ],
    "job": {
      "capability": "accounting.unified",
      "name": "Accounting unified"
    },
    "others": [
      {
        "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-odoo.json",
        "title": "Codat vs Odoo External API",
        "url": "https://www.anchorterminal.com/compare/codat-vs-odoo"
      },
      {
        "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-rutter.json",
        "title": "FreeAgent API vs Rutter Accounting API",
        "url": "https://www.anchorterminal.com/compare/freeagent-vs-rutter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/freshbooks-vs-rutter.json",
        "title": "FreshBooks API vs Rutter Accounting API",
        "url": "https://www.anchorterminal.com/compare/freshbooks-vs-rutter"
      },
      {
        "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/quickbooks-online-vs-rutter.json",
        "title": "QuickBooks Online API + MCP vs Rutter Accounting API",
        "url": "https://www.anchorterminal.com/compare/quickbooks-online-vs-rutter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/rutter-vs-xero.json",
        "title": "Rutter Accounting API vs Xero API + MCP",
        "url": "https://www.anchorterminal.com/compare/rutter-vs-xero"
      },
      {
        "json": "https://www.anchorterminal.com/compare/rutter-vs-zoho-books.json",
        "title": "Rutter Accounting API vs Zoho Books",
        "url": "https://www.anchorterminal.com/compare/rutter-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-rutter.json",
        "title": "Invoice Ninja API vs Rutter Accounting API",
        "url": "https://www.anchorterminal.com/compare/invoice-ninja-vs-rutter"
      },
      {
        "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/apideck-accounting-vs-rutter.json",
        "title": "Apideck Accounting API + MCP vs Rutter Accounting API",
        "url": "https://www.anchorterminal.com/compare/apideck-accounting-vs-rutter"
      },
      {
        "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/merge-accounting-vs-rutter.json",
        "title": "Merge Accounting API vs Rutter Accounting API",
        "url": "https://www.anchorterminal.com/compare/merge-accounting-vs-rutter"
      }
    ],
    "scores": [
      {
        "by": 13,
        "codat": 80,
        "edge": "codat",
        "key": "reliability",
        "name": "Reliability",
        "rutter": 67,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 2,
        "codat": 77,
        "edge": "rutter",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "rutter": 79,
        "weight": 13
      },
      {
        "by": 14,
        "codat": 81,
        "edge": "codat",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "rutter": 67,
        "weight": 13
      },
      {
        "by": 13,
        "codat": 49,
        "edge": "codat",
        "key": "security",
        "name": "Security \u0026 auth",
        "rutter": 36,
        "weight": 14
      },
      {
        "by": 10,
        "codat": 10,
        "edge": "rutter",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "rutter": 20,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 13,
        "codat": 75,
        "edge": "codat",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "rutter": 62,
        "weight": 7
      },
      {
        "by": 23,
        "codat": 71,
        "edge": "codat",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "rutter": 48,
        "weight": 7
      }
    ],
    "summary": "Codat scores 64.3 (B) on agent readiness against Rutter Accounting API's 55.6 (C), and leads in 5 of 7 scored categories. Rutter Accounting API leads on payments \u0026 pricing. Both do accounting unified.",
    "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.",
      "rutter": "Idempotency-Key header on writes, and prefer_sync writes that fall back to async after 30 seconds. Production prices are quote-only."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/codat-vs-rutter",
    "json": "https://www.anchorterminal.com/compare/codat-vs-rutter.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/codat-vs-rutter.md",
    "slim": "https://www.anchorterminal.com/compare/codat-vs-rutter.min.md"
  },
  "markdown": "Codat scores 64.3 (B) on agent readiness against Rutter Accounting API's 55.6 (C), and leads in 5 of 7 scored categories. Rutter Accounting API leads on payments \u0026 pricing. Both do accounting unified.\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- Rutter Accounting API: grade C, 55.6/100, rank #506 of 722. Markdown https://www.anchorterminal.com/tools/rutter.md · JSON https://www.anchorterminal.com/api/v1/tools/rutter.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 67\n- Agent ergonomics, 81 against 67\n- Security \u0026 auth, 49 against 36\n- Maintenance \u0026 community, 75 against 62\n- Transparency \u0026 trust, 71 against 48\n\nWatch for: No public price. The pricing page returns 404 and fees are set in an order form\n\n### Rutter Accounting API (C)\n\nGood for: Lenders, spend-management and fintech products that read ledgers alongside commerce and payment platforms, and that need writes an agent can retry safely.\n\nAhead on:\n- Payments \u0026 pricing, 20 against 10\n\nAlso in its favour:\n- Free to start without a card\n\nWatch for: Production prices are quote-only\n\n\n## Score by category\n\n| Category | Weight | Codat | Rutter Accounting API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 80 | 67 | Codat +13 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 77 | 79 | Rutter Accounting API +2 |\n| Agent ergonomics | 13% (16.2 this run) | 81 | 67 | Codat +14 |\n| Security \u0026 auth | 14% (17.5 this run) | 49 | 36 | Codat +13 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 10 | 20 | Rutter Accounting API +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 75 | 62 | Codat +13 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 71 | 48 | Codat +23 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **64.3 · B** | **55.6 · C** | |\n\n## Facts side by side\n\n| Fact | Codat | Rutter Accounting API |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Codat Limited | Rutter |\n| Hosted endpoint | `https://api.codat.io` | `https://production.rutterapi.com/versioned` |\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 | none |\n| Read-only variant documented | no | no |\n| llms.txt | no | no |\n| Last release | 2026-10-01 | 2026-09-24 |\n| Terms last updated | 2022-09-05 | couldn't be read |\n| Privacy policy last updated | 2025-04-01 | couldn't be read |\n| Customer content may train models | not found in the text | couldn't be read |\n| Terms restrict automated access | not found in the text | couldn't be read |\n| Terms restrict benchmarking | yes | couldn't be read |\n| Terms or service can change without notice | not found in the text | couldn't be read |\n| Arbitration or class-action waiver | not found in the text | couldn't be read |\n| Popularity | 2.7k npm/wk, 222 PyPI/wk | none |\n| Agent reviews | none | 3/5 (2) |\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**Rutter Accounting API.** Idempotency-Key header on writes, and prefer_sync writes that fall back to async after 30 seconds. Production prices are quote-only.\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### Rutter Accounting API\n\n1. Send X-Rutter-Version: 2024-08-31 on every call\n2. Send an Idempotency-Key on every create so a retry after a timeout doesn't write twice\n3. Use response_mode=prefer_sync and handle the 202 async_response anyway\n4. Treat 452 as the ledger throttling you and 429 as Rutter's 500-per-10-seconds organisation limit\n5. Keep access_token out of logged URLs. The docs only show it as a query parameter\n\n## Questions\n\n### Which is better for AI agents, Codat or Rutter Accounting API?\n\nCodat scores 64.3 (B) on agent readiness against Rutter Accounting API's 55.6 (C), and leads in 5 of 7 scored categories. Rutter Accounting API leads on payments \u0026 pricing.\n\n### Do Codat and Rutter Accounting API need an API key?\n\nBoth need an API key.\n\n### Can an agent call Codat and Rutter Accounting API without installing anything?\n\nYes. Codat has a hosted endpoint at https://api.codat.io and Rutter Accounting API at https://production.rutterapi.com/versioned.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/codat-vs-rutter.json, and with the fewest tokens: https://www.anchorterminal.com/compare/codat-vs-rutter.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"codat\", \"b\": \"rutter\"}`. From a terminal: `anchor compare codat rutter`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/codat.json and https://www.anchorterminal.com/api/v1/tools/rutter.json\n\n## Other comparisons with Codat or Rutter Accounting API\n\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 Odoo External API](https://www.anchorterminal.com/compare/codat-vs-odoo.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 Rutter Accounting API](https://www.anchorterminal.com/compare/freeagent-vs-rutter.md)\n- [FreshBooks API vs Rutter Accounting API](https://www.anchorterminal.com/compare/freshbooks-vs-rutter.md)\n- [Odoo External API vs Rutter Accounting API](https://www.anchorterminal.com/compare/odoo-vs-rutter.md)\n- [QuickBooks Online API + MCP vs Rutter Accounting API](https://www.anchorterminal.com/compare/quickbooks-online-vs-rutter.md)\n- [Rutter Accounting API vs Xero API + MCP](https://www.anchorterminal.com/compare/rutter-vs-xero.md)\n- [Rutter Accounting API vs Zoho Books](https://www.anchorterminal.com/compare/rutter-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 Rutter Accounting API](https://www.anchorterminal.com/compare/invoice-ninja-vs-rutter.md)\n- [Apideck Accounting API + MCP vs Codat](https://www.anchorterminal.com/compare/apideck-accounting-vs-codat.md)\n- [Apideck Accounting API + MCP vs Rutter Accounting API](https://www.anchorterminal.com/compare/apideck-accounting-vs-rutter.md)\n- [Codat vs Merge Accounting API](https://www.anchorterminal.com/compare/codat-vs-merge-accounting.md)\n- [Merge Accounting API vs Rutter Accounting API](https://www.anchorterminal.com/compare/merge-accounting-vs-rutter.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "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 Rutter Accounting API",
        "url": ""
      }
    ],
    "description": "Codat scores 64.3 (B) on agent readiness against Rutter Accounting API's 55.6 (C), and leads in 5 of 7 scored categories. Rutter Accounting API leads on payments \u0026 pricing. Both do accounting unified. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Codat B 64.3",
      "Rutter Accounting API C 55.6",
      "scores"
    ],
    "h1": "Codat vs Rutter Accounting API",
    "image": "https://www.anchorterminal.com/assets/og/compare-codat-vs-rutter.png",
    "path": "/compare/codat-vs-rutter",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Codat vs Rutter Accounting API for AI agents, B 64.3 vs C 55.6",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/codat-vs-rutter"
  },
  "tokens": {
    "markdown": 2200,
    "slim": 730
  },
  "version": 1
}
