{
  "data": {
    "a": {
      "slug": "pennylane",
      "name": "Pennylane",
      "vendor": "Pennylane SAS",
      "vendorUrl": "https://www.pennylane.com",
      "kind": "http-api",
      "category": "accounting",
      "summary": "Pennylane is a French accounting and invoicing platform for companies and accounting firms. Its Company and Firm REST APIs cover invoices, supplier invoices, ledger entries, transactions and exports. A hosted read-only MCP server exposes the same books to AI assistants.",
      "url": "https://www.anchorterminal.com/tools/pennylane",
      "markdownUrl": "https://www.anchorterminal.com/tools/pennylane.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/pennylane.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/pennylane.json",
      "license": "Proprietary service under Pennylane's API agreement and customer terms",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://app.pennylane.com/api/external/v2",
      "packages": [],
      "auth": "mixed",
      "authNotes": "Bearer token on every call. Companies generate a Company API token under Settings, Connectivity, Developers, which needs the Essentiel plan or above and an admin role. Each token is tied to one company, is read only or read and write, expires after 1, 6 or 12 months or never, and can be deleted. Firms generate Firm API tokens. Integration partners use the OAuth 2.0 authorisation code grant after the Partnerships team issues a client ID and secret, with 24-hour access tokens and rotating 90-day refresh tokens. The MCP server uses OAuth 2.1 with PKCE and dynamic client registration, and the user signs in through a browser.",
      "pricing": "paid",
      "pricingNotes": "API and MCP access for companies needs the Essentiel plan or above, listed at 24 euros a month before VAT for one user on the pricing tab for sole traders and single-shareholder companies. Premium is 79 euros. Each plan has a 15-day trial with no commitment, and a sandbox can be created inside an account. Whether the trial needs a card and the prices for other company types were not established. Accounting firms get the MCP at no extra cost (https://www.pennylane.com/fr/tarifs, checked 2026-10-09).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the API docs, the MCP docs or the pricing page (checked 2026-10-09).",
        "endpoints": []
      },
      "toolCount": 31,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-09"
      },
      "docsUrl": "https://pennylane.readme.io/docs/api-overview",
      "llmsTxt": "https://pennylane.readme.io/llms.txt",
      "capabilities": [
        "accounting.ledger",
        "accounting.invoices",
        "accounting.bills",
        "accounting.reports"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "oauth",
        "openapi",
        "mcp",
        "llms-txt",
        "webhooks",
        "status-page"
      ],
      "lastRelease": "2026-09-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 66.3,
        "grade": "B",
        "agentReady": false,
        "rank": 297,
        "ranked": true,
        "rankOf": 950,
        "categoryRank": 4,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 66,
          "maintenance": 65,
          "payments": 20,
          "reliability": 75,
          "schema": 85,
          "security": 68,
          "transparency": 76
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-09"
        },
        "negative": 0,
        "verdict": "The v2 API has per-resource read and write scopes, an OpenAPI definition on every reference page, llms.txt and a breaking-change process that ran over 24 weeks. Access needs a paid Essentiel plan or partner approval, creation endpoints are not idempotent, and the API agreement lets Pennylane change or revoke the API without notice.",
        "bestFor": "An agent working on the books of French companies or an accounting firm's client portfolio, with French chart of accounts, FEC export, Factur-X e-invoicing and VAT returns.",
        "strengths": [
          "Scopes split each resource into `:readonly` and `:all`, for company tokens, firm tokens and OAuth apps",
          "Hosted MCP server at `https://mcp.pennylane.com/mcp` with 31 read-only tools, OAuth 2.1 with PKCE and dynamic client registration",
          "OpenAPI 3.0.1 definitions on each reference page, an llms.txt index and Markdown twins of every docs page",
          "The 2026 breaking changes ran in three phases over 24 weeks with an opt-in header, ending 1 July 2026",
          "ISO 27001 certificate published, EU hosting on AWS in Ireland, and a dated sub-processor list with 30 days' notice of additions"
        ],
        "weaknesses": [
          "The API agreement allows changes, suspension or revocation with or without notice and supplies the API as is",
          "Creation endpoints do not enforce idempotency, except supplier invoice imports",
          "API and MCP access for companies starts at the Essentiel plan, and OAuth apps need approval from the Partnerships team",
          "No official SDK was found, and the MCP server is not in the official MCP registry",
          "No security.txt, bug bounty or published disclosure policy was found",
          "The API agreement grants Pennylane an exclusive licence over API integrations and their source code on request"
        ],
        "agentNotes": [
          "Call `GET https://app.pennylane.com/api/external/v2/me` first to confirm the token, user and company context",
          "Stay under 25 requests per 5 seconds per token and wait for the `retry-after` value on a 429",
          "Do not retry a create after a timeout without checking first. Only supplier invoice imports are deduplicated",
          "Send `filter` and `sort` again with every `cursor`. The cursor stores position only",
          "Send amounts as strings such as \"120.00\", and ask for `:readonly` scopes when the task only reads",
          "Use the MCP server for reads only. It cannot create, edit or delete, and firm connections need `company_id`"
        ],
        "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": 66.3
          }
        ],
        "editorialScores": {
          "ergonomics": 66,
          "maintenance": 65,
          "payments": 20,
          "reliability": 75,
          "schema": 85,
          "security": 68,
          "transparency": 71
        },
        "provenanceScore": 80
      },
      "connect": {
        "http": "curl https://app.pennylane.com/api/external/v2/me \\\n  -H \"Authorization: Bearer $PENNYLANE_API_TOKEN\"",
        "claudeCode": "claude mcp add --transport http pennylane https://mcp.pennylane.com/mcp",
        "config": {
          "mcpServers": {
            "pennylane": {
              "url": "https://mcp.pennylane.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/accounting.ledger",
        "tool": "https://letme.dev/pennylane"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "Pennylane SAS",
        "domain": "pennylane.com",
        "domainRegistered": "1998-09-23",
        "endpointOnVendorDomain": true,
        "terms": "https://pennylane.readme.io/page/api-contract-terms",
        "privacy": "https://www.pennylane.com/fr/legal/privacy",
        "statusPage": "https://status.pennylane.com",
        "changelog": "https://pennylane.readme.io/changelog",
        "securityTxt": "none",
        "checked": "2026-10-09",
        "notes": [
          "The legal notice (updated 8 September 2026) names Pennylane, a société par actions simplifiée, SIREN 880 265 921 RCS Paris, 2-4 rue Jules Lefebvre, 75009 Paris. Pennylane GmbH sells the product in Germany.",
          "The API agreement (API Contract terms, last updated January 2024) governs API use and is cited by clause 26.9 of the customer terms. It gives a registered office in Cherbourg-en-Cotentin, which differs from the Paris address in the customer terms and legal notice.",
          "The customer terms for companies (version of 16 December 2025) are a PDF linked from https://www.pennylane.com/fr/conditions-generales, with the data processing agreement and the SLA as annexes.",
          "The privacy policy (updated 30 January 2026) covers processing where Pennylane is controller. Processing as processor is governed by the data processing agreement annexed to the customer terms.",
          "www.pennylane.com/.well-known/security.txt returns 404.",
          "The API answers on app.pennylane.com and the MCP server on mcp.pennylane.com. The API docs are hosted on pennylane.readme.io.",
          "RDAP for pennylane.com gives a registration date of 1998-09-23."
        ],
        "score": 80
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/pennylane.json",
      "live": {
        "slug": "pennylane",
        "probe": {
          "target": "https://app.pennylane.com/api/external/v2",
          "method": "get",
          "lastAt": "2026-10-10T02:55:05.478821158Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 76,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 111,
          "p95ms24h": 670,
          "samples24h": 115,
          "samples30d": 115,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 85,
              "ok": 85
            },
            {
              "date": "2026-10-10",
              "probes": 30,
              "ok": 30
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.pennylane.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-10T02:50:41.945863598Z"
        },
        "pages": [
          {
            "url": "https://pennylane.readme.io/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-09T18:43:10.597188172Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "baba0cf1ecaa"
          },
          {
            "url": "https://www.pennylane.com/fr/legal/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-09T18:52:57.370338236Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "2e89b0e31f0b"
          },
          {
            "url": "https://pennylane.readme.io/page/api-contract-terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-09T18:43:13.114667877Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "7815b7f4ccf6"
          }
        ],
        "updatedAt": "2026-10-10T02:55:05.478821158Z"
      }
    },
    "answer": "Pennylane scores 66.3 (B) on agent readiness against Zoho Books's 61.1 (C), and leads in 5 of 7 scored categories. Zoho Books leads on payments \u0026 pricing.",
    "b": {
      "slug": "zoho-books",
      "name": "Zoho Books",
      "vendor": "Zoho",
      "vendorUrl": "https://www.zoho.com/books/",
      "kind": "http-api",
      "category": "accounting",
      "summary": "Zoho Books is hosted accounting software from Zoho for small and mid-sized businesses. Agents reach it through the REST API v3, covering invoices, bills, payments, banking, journals and the chart of accounts behind OAuth 2.0.",
      "url": "https://www.anchorterminal.com/tools/zoho-books",
      "markdownUrl": "https://www.anchorterminal.com/tools/zoho-books.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/zoho-books.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/zoho-books.json",
      "license": "Proprietary service under Zoho's Terms of Service",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://www.zohoapis.com/books/v3",
      "packages": [],
      "auth": "oauth",
      "authNotes": "OAuth 2.0 only. A person registers a client in the Zoho developer console (a server-based application, or a self client for one's own organisation) and approves scopes, which narrow to one module and one operation. The access token lasts one hour and goes in `Authorization: Zoho-oauthtoken \u003ctoken\u003e`. The refresh token lasts until revoked. Every call also needs `organization_id`. Each data centre has its own accounts host and API domain. Registration is self-serve, with no app review or sales approval found for use inside one's own organisation.",
      "pricing": "freemium",
      "pricingNotes": "Free plan for one user and one accountant with 1,000 API requests a day, open to businesses with yearly revenue under $50,000. Paid plans cost $15 to $240 an organisation a month billed yearly in the US edition ($20 to $275 monthly) and have a 14-day trial. The plan sets the daily API cap, up to 10,000. No sandbox organisation was found, so an agent starts on the Free plan or a trial (https://www.zoho.com/us/books/pricing/, checked 2026-10-08).",
      "priceSummary": "$15 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the API docs, the OpenAPI files or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://www.zoho.com/books/api/v3/introduction/",
      "llmsTxt": "https://www.zoho.com/us/books/help/llms.txt",
      "openapi": "https://www.zoho.com/books/api/v3/openapi-all.zip",
      "capabilities": [
        "accounting.ledger",
        "accounting.invoices",
        "accounting.bills"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "oauth",
        "openapi",
        "mcp",
        "webhooks",
        "free-tier",
        "status-page",
        "bug-bounty",
        "soc2"
      ],
      "lastRelease": "2026-10-07",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 61.1,
        "grade": "C",
        "agentReady": false,
        "rank": 483,
        "ranked": true,
        "rankOf": 950,
        "categoryRank": 6,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 51,
          "maintenance": 56,
          "payments": 30,
          "reliability": 71,
          "schema": 71,
          "security": 68,
          "transparency": 75
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "The public OpenAPI files cover 885 operations with OAuth scopes per module and operation, and the Free plan allows 1,000 API requests a day. No report endpoint, official SDK, SLA or dated API changelog was found, and the documented token calls put the client secret in the URL.",
        "bestFor": "Small businesses already on Zoho that want an agent to raise invoices, record bills and payments, reconcile bank transactions and post journals with narrow scopes.",
        "strengths": [
          "OpenAPI 3.0.0 files for 45 resources and 885 operations download from the docs as `openapi-all.zip`",
          "OAuth scopes narrow to one module and one operation, such as `ZohoBooks.invoices.READ`",
          "Every API reference operation has a Markdown twin, such as `/books/api/v3/invoices/create-an-invoice.md`",
          "The Free plan includes 1,000 API requests a day per the plan comparison",
          "The API Usage dashboard lists recent calls by user, module, IP address and application"
        ],
        "weaknesses": [
          "No profit and loss, balance sheet or other report endpoint appears in the API docs or the OpenAPI files",
          "The documented token and refresh calls put the client secret and refresh token in the URL query string",
          "Daily caps are low, 1,000 requests on Free and 10,000 on the top three plans",
          "No official SDK, SLA, API deprecation policy or dated API changelog found in the reviewed pages",
          "429 is documented without a Retry-After header or backoff guidance"
        ],
        "agentNotes": [
          "Send `organization_id` as a query parameter on every call. Read it from `GET /organizations` first",
          "Use the `api_domain` returned with the token, since each of the nine data centres has its own host (zohoapis.com, zohoapis.eu, zohoapis.in and others)",
          "Send `Authorization: Zoho-oauthtoken \u003ctoken\u003e` and refresh hourly. Each user keeps at most 20 refresh tokens and the oldest is deleted",
          "Stay under 100 requests a minute and the plan's daily cap. Codes 44, 45 and 1070 on a 429 mean minute, day and concurrency limits",
          "To repeat an update safely, send `X-Unique-Identifier-Key`, `X-Unique-Identifier-Value` and `X-Upsert` with a unique custom field. Creates have no idempotency key"
        ],
        "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": 61.1
          }
        ],
        "editorialScores": {
          "ergonomics": 51,
          "maintenance": 56,
          "payments": 30,
          "reliability": 71,
          "schema": 71,
          "security": 68,
          "transparency": 54
        },
        "provenanceScore": 95
      },
      "connect": {
        "http": "curl -X GET 'https://www.zohoapis.com/books/v3/organizations' \\\n  -H \"Authorization: Zoho-oauthtoken $ZOHO_ACCESS_TOKEN\""
      },
      "letme": {
        "capability": "https://letme.dev/accounting.ledger",
        "tool": "https://letme.dev/zoho-books"
      },
      "sameCompany": [
        "zoho-zeptomail",
        "zoho-crm",
        "zoho-desk",
        "zoho-recruit",
        "zoho-people",
        "zoho-mail"
      ],
      "area": "domain-data",
      "unitPrices": [
        {
          "item": "Standard",
          "unit": "month",
          "usd": 15,
          "note": "per organisation, billed yearly; $20 billed monthly; 3 users, 2,000 API requests a day"
        },
        {
          "item": "Professional",
          "unit": "month",
          "usd": 40,
          "note": "per organisation, billed yearly; $50 billed monthly; 5 users, 5,000 API requests a day"
        },
        {
          "item": "Premium",
          "unit": "month",
          "usd": 60,
          "note": "per organisation, billed yearly; $70 billed monthly; 10 users, 10,000 API requests a day"
        },
        {
          "item": "Elite",
          "unit": "month",
          "usd": 120,
          "note": "per organisation, billed yearly; $150 billed monthly; 10 users, 10,000 API requests a day"
        },
        {
          "item": "Ultimate",
          "unit": "month",
          "usd": 240,
          "note": "per organisation, billed yearly; $275 billed monthly; 15 users, 10,000 API requests a day"
        },
        {
          "item": "Additional user",
          "unit": "seat-month",
          "usd": 2.5,
          "note": "billed yearly; $3 billed monthly; paid plans only"
        }
      ],
      "provenance": {
        "legalEntity": "Zoho Corporation Private Limited",
        "domain": "zoho.com",
        "domainRegistered": "2004-01-16",
        "domainNote": "API calls go to www.zohoapis.com and its regional equivalents, a Zoho domain other than zoho.com.",
        "endpointOnVendorDomain": true,
        "terms": "https://www.zoho.com/terms.html",
        "privacy": "https://www.zoho.com/privacy.html",
        "statusPage": "https://status.zoho.com",
        "changelog": "https://www.zoho.com/books/whats-new.html",
        "securityTxt": "valid",
        "checked": "2026-10-08",
        "notes": [
          "The Terms of Service (last updated 2 March 2022) are the service agreement for Zoho's online services. The contracting entity depends on the customer's region, Zoho Corporation Private Limited for India and Zoho Corporation for the United States (https://www.zoho.com/legal/zoho-contracting-entities.html).",
          "A separate Zoho Developer Agreement at https://www.zoho.com/developer/terms.html covers the developer tools.",
          "The privacy policy was last updated on 22 December 2025 and covers Zoho's websites and the products on them.",
          "security.txt at www.zoho.com gives a bug bounty contact, security@zohocorp.com, a policy link and an expiry of 30 June 2028.",
          "The changelog link is the product What's New page, newest entry 31 July 2026. No dated API changelog was found.",
          "RDAP for zoho.com gives a registration date of 2004-01-16."
        ],
        "score": 95
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/zoho-books.json",
      "live": {
        "slug": "zoho-books",
        "probe": {
          "target": "https://www.zohoapis.com/books/v3",
          "method": "get",
          "lastAt": "2026-10-10T02:55:17.097777139Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 439,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 447,
          "p95ms24h": 564,
          "samples24h": 249,
          "samples30d": 330,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 50,
              "ok": 50
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 30,
              "ok": 30
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.zoho.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-10T00:51:27.290437953Z"
        },
        "securityTxt": {
          "url": "https://zoho.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2028-06-30T23:59:59.000Z",
          "checkedAt": "2026-10-09T15:40:32.838784892Z"
        },
        "llmsTxt": {
          "url": "https://www.zoho.com/us/books/help/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-09T14:03:03.091340117Z"
        },
        "pages": [
          {
            "url": "https://www.zoho.com/books/whats-new.html",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-09T18:56:01.787801916Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "46dea34a4e0c"
          },
          {
            "url": "https://www.zoho.com/us/books/pricing/",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-09T18:56:31.834893798Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "0f13d7184599"
          },
          {
            "url": "https://www.zoho.com/privacy.html",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-10-09T18:56:23.852103607Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "08dac5e34d5e"
          },
          {
            "url": "https://www.zoho.com/terms.html",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-10-09T18:56:29.853621104Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "05eeda99f291"
          }
        ],
        "updatedAt": "2026-10-10T02:55:17.097777139Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Pennylane SAS",
        "b": "Zoho",
        "name": "Vendor"
      },
      {
        "a": "https://app.pennylane.com/api/external/v2",
        "b": "https://www.zohoapis.com/books/v3",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under Pennylane's API agreement and customer terms",
        "b": "Proprietary service under Zoho's Terms of Service",
        "name": "Licence"
      },
      {
        "a": "31",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-09-30",
        "b": "2026-10-07",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "2022-03-02",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "2025-12-22",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "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": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "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"
      }
    ],
    "faq": [
      {
        "answer": "Pennylane scores 66.3 (B) on agent readiness against Zoho Books's 61.1 (C), and leads in 5 of 7 scored categories. Zoho Books leads on payments \u0026 pricing.",
        "question": "Which is better for AI agents, Pennylane or Zoho Books?"
      },
      {
        "answer": "Pennylane takes an API key or an OAuth sign-in. Zoho Books uses an OAuth sign-in.",
        "question": "Do Pennylane and Zoho Books need an API key?"
      },
      {
        "answer": "Yes. Pennylane has a hosted endpoint at https://app.pennylane.com/api/external/v2 and Zoho Books at https://www.zohoapis.com/books/v3.",
        "question": "Can an agent call Pennylane and Zoho Books without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 85 against 71",
          "Agent ergonomics, 66 against 51",
          "Maintenance \u0026 community, 65 against 56"
        ],
        "also": null,
        "goodFor": "An agent working on the books of French companies or an accounting firm's client portfolio, with French chart of accounts, FEC export, Factur-X e-invoicing and VAT returns.",
        "slug": "pennylane",
        "watchFor": "The API agreement allows changes, suspension or revocation with or without notice and supplies the API as is"
      },
      {
        "aheadOn": [
          "Payments \u0026 pricing, 30 against 20"
        ],
        "also": null,
        "goodFor": "Small businesses already on Zoho that want an agent to raise invoices, record bills and payments, reconcile bank transactions and post journals with narrow scopes.",
        "slug": "zoho-books",
        "watchFor": "No profit and loss, balance sheet or other report endpoint appears in the API docs or the OpenAPI files"
      }
    ],
    "job": {
      "capability": "accounting.ledger",
      "name": "Accounting ledgers"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/apideck-accounting-vs-pennylane.json",
        "title": "Apideck Accounting API + MCP vs Pennylane",
        "url": "https://www.anchorterminal.com/compare/apideck-accounting-vs-pennylane"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apideck-accounting-vs-zoho-books.json",
        "title": "Apideck Accounting API + MCP vs Zoho Books",
        "url": "https://www.anchorterminal.com/compare/apideck-accounting-vs-zoho-books"
      },
      {
        "json": "https://www.anchorterminal.com/compare/codat-vs-pennylane.json",
        "title": "Codat vs Pennylane",
        "url": "https://www.anchorterminal.com/compare/codat-vs-pennylane"
      },
      {
        "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-pennylane.json",
        "title": "FreeAgent API vs Pennylane",
        "url": "https://www.anchorterminal.com/compare/freeagent-vs-pennylane"
      },
      {
        "json": "https://www.anchorterminal.com/compare/freeagent-vs-zoho-books.json",
        "title": "FreeAgent API vs Zoho Books",
        "url": "https://www.anchorterminal.com/compare/freeagent-vs-zoho-books"
      },
      {
        "json": "https://www.anchorterminal.com/compare/freshbooks-vs-pennylane.json",
        "title": "FreshBooks API vs Pennylane",
        "url": "https://www.anchorterminal.com/compare/freshbooks-vs-pennylane"
      },
      {
        "json": "https://www.anchorterminal.com/compare/freshbooks-vs-zoho-books.json",
        "title": "FreshBooks API vs Zoho Books",
        "url": "https://www.anchorterminal.com/compare/freshbooks-vs-zoho-books"
      },
      {
        "json": "https://www.anchorterminal.com/compare/merge-accounting-vs-pennylane.json",
        "title": "Merge Accounting API vs Pennylane",
        "url": "https://www.anchorterminal.com/compare/merge-accounting-vs-pennylane"
      },
      {
        "json": "https://www.anchorterminal.com/compare/merge-accounting-vs-zoho-books.json",
        "title": "Merge Accounting API vs Zoho Books",
        "url": "https://www.anchorterminal.com/compare/merge-accounting-vs-zoho-books"
      },
      {
        "json": "https://www.anchorterminal.com/compare/odoo-vs-pennylane.json",
        "title": "Odoo External API vs Pennylane",
        "url": "https://www.anchorterminal.com/compare/odoo-vs-pennylane"
      },
      {
        "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/pennylane-vs-quickbooks-online.json",
        "title": "Pennylane vs QuickBooks Online API + MCP",
        "url": "https://www.anchorterminal.com/compare/pennylane-vs-quickbooks-online"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pennylane-vs-rutter.json",
        "title": "Pennylane vs Rutter Accounting API",
        "url": "https://www.anchorterminal.com/compare/pennylane-vs-rutter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pennylane-vs-xero.json",
        "title": "Pennylane vs Xero API + MCP",
        "url": "https://www.anchorterminal.com/compare/pennylane-vs-xero"
      },
      {
        "json": "https://www.anchorterminal.com/compare/quickbooks-online-vs-zoho-books.json",
        "title": "QuickBooks Online API + MCP vs Zoho Books",
        "url": "https://www.anchorterminal.com/compare/quickbooks-online-vs-zoho-books"
      },
      {
        "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/xero-vs-zoho-books.json",
        "title": "Xero API + MCP vs Zoho Books",
        "url": "https://www.anchorterminal.com/compare/xero-vs-zoho-books"
      },
      {
        "json": "https://www.anchorterminal.com/compare/invoice-ninja-vs-pennylane.json",
        "title": "Invoice Ninja API vs Pennylane",
        "url": "https://www.anchorterminal.com/compare/invoice-ninja-vs-pennylane"
      },
      {
        "json": "https://www.anchorterminal.com/compare/invoice-ninja-vs-zoho-books.json",
        "title": "Invoice Ninja API vs Zoho Books",
        "url": "https://www.anchorterminal.com/compare/invoice-ninja-vs-zoho-books"
      }
    ],
    "scores": [
      {
        "by": 4,
        "edge": "pennylane",
        "key": "reliability",
        "name": "Reliability",
        "pennylane": 75,
        "weight": 16,
        "zoho-books": 71
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 14,
        "edge": "pennylane",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "pennylane": 85,
        "weight": 13,
        "zoho-books": 71
      },
      {
        "by": 15,
        "edge": "pennylane",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "pennylane": 66,
        "weight": 13,
        "zoho-books": 51
      },
      {
        "by": 0,
        "edge": "",
        "key": "security",
        "name": "Security \u0026 auth",
        "pennylane": 68,
        "weight": 14,
        "zoho-books": 68
      },
      {
        "by": 10,
        "edge": "zoho-books",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "pennylane": 20,
        "weight": 10,
        "zoho-books": 30
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 9,
        "edge": "pennylane",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "pennylane": 65,
        "weight": 7,
        "zoho-books": 56
      },
      {
        "by": 1,
        "edge": "pennylane",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "pennylane": 76,
        "weight": 7,
        "zoho-books": 75
      }
    ],
    "summary": "Pennylane scores 66.3 (B) on agent readiness against Zoho Books's 61.1 (C), and leads in 5 of 7 scored categories. Zoho Books leads on payments \u0026 pricing. Both do accounting ledgers.",
    "verdicts": {
      "pennylane": "The v2 API has per-resource read and write scopes, an OpenAPI definition on every reference page, llms.txt and a breaking-change process that ran over 24 weeks. Access needs a paid Essentiel plan or partner approval, creation endpoints are not idempotent, and the API agreement lets Pennylane change or revoke the API without notice.",
      "zoho-books": "The public OpenAPI files cover 885 operations with OAuth scopes per module and operation, and the Free plan allows 1,000 API requests a day. No report endpoint, official SDK, SLA or dated API changelog was found, and the documented token calls put the client secret in the URL."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/pennylane-vs-zoho-books",
    "json": "https://www.anchorterminal.com/compare/pennylane-vs-zoho-books.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/pennylane-vs-zoho-books.md",
    "slim": "https://www.anchorterminal.com/compare/pennylane-vs-zoho-books.min.md"
  },
  "markdown": "Pennylane scores 66.3 (B) on agent readiness against Zoho Books's 61.1 (C), and leads in 5 of 7 scored categories. Zoho Books leads on payments \u0026 pricing. Both do accounting ledgers.\n\n- Pennylane: grade B, 66.3/100, rank #297 of 950. Markdown https://www.anchorterminal.com/tools/pennylane.md · JSON https://www.anchorterminal.com/api/v1/tools/pennylane.json\n- Zoho Books: grade C, 61.1/100, rank #483 of 950. Markdown https://www.anchorterminal.com/tools/zoho-books.md · JSON https://www.anchorterminal.com/api/v1/tools/zoho-books.json\n- Best accounting and invoicing APIs for AI agents: https://www.anchorterminal.com/best/accounting/index.md\n- All 66 accounting comparisons: https://www.anchorterminal.com/compare/accounting/index.md\n\n## Which one, for what\n\n### Pennylane (B)\n\nGood for: An agent working on the books of French companies or an accounting firm's client portfolio, with French chart of accounts, FEC export, Factur-X e-invoicing and VAT returns.\n\nAhead on:\n- Schema \u0026 documentation, 85 against 71\n- Agent ergonomics, 66 against 51\n- Maintenance \u0026 community, 65 against 56\n\nWatch for: The API agreement allows changes, suspension or revocation with or without notice and supplies the API as is\n\n### Zoho Books (C)\n\nGood for: Small businesses already on Zoho that want an agent to raise invoices, record bills and payments, reconcile bank transactions and post journals with narrow scopes.\n\nAhead on:\n- Payments \u0026 pricing, 30 against 20\n\nWatch for: No profit and loss, balance sheet or other report endpoint appears in the API docs or the OpenAPI files\n\n\n## Score by category\n\n| Category | Weight | Pennylane | Zoho Books | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 75 | 71 | Pennylane +4 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 85 | 71 | Pennylane +14 |\n| Agent ergonomics | 13% (16.2 this run) | 66 | 51 | Pennylane +15 |\n| Security \u0026 auth | 14% (17.5 this run) | 68 | 68 | even |\n| Payments \u0026 pricing | 10% (12.5 this run) | 20 | 30 | Zoho Books +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 65 | 56 | Pennylane +9 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 76 | 75 | Pennylane +1 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **66.3 · B** | **61.1 · C** | |\n\n## Facts side by side\n\n| Fact | Pennylane | Zoho Books |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Pennylane SAS | Zoho |\n| Hosted endpoint | `https://app.pennylane.com/api/external/v2` | `https://www.zohoapis.com/books/v3` |\n| Transports | HTTP | HTTP |\n| Auth | OAuth or key | OAuth |\n| Pricing | Paid | Freemium |\n| x402 | no | no |\n| Licence | Proprietary service under Pennylane's API agreement and customer terms | Proprietary service under Zoho's Terms of Service |\n| Tools exposed | 31 | none |\n| Read-only variant documented | yes | no |\n| llms.txt | yes | yes |\n| Last release | 2026-09-30 | 2026-10-07 |\n| Terms last updated | no date given | 2022-03-02 |\n| Privacy policy last updated | no date given | 2025-12-22 |\n| Customer content may train models | not found in the text | yes |\n| Terms restrict automated access | not found in the text | not found in the text |\n| Terms restrict benchmarking | yes | yes |\n| Terms or service can change without notice | yes | not found in the text |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n\n## Verdicts\n\n**Pennylane.** The v2 API has per-resource read and write scopes, an OpenAPI definition on every reference page, llms.txt and a breaking-change process that ran over 24 weeks. Access needs a paid Essentiel plan or partner approval, creation endpoints are not idempotent, and the API agreement lets Pennylane change or revoke the API without notice.\n\n**Zoho Books.** The public OpenAPI files cover 885 operations with OAuth scopes per module and operation, and the Free plan allows 1,000 API requests a day. No report endpoint, official SDK, SLA or dated API changelog was found, and the documented token calls put the client secret in the URL.\n\n## Before you call either\n\n### Pennylane\n\n1. Call `GET https://app.pennylane.com/api/external/v2/me` first to confirm the token, user and company context\n2. Stay under 25 requests per 5 seconds per token and wait for the `retry-after` value on a 429\n3. Do not retry a create after a timeout without checking first. Only supplier invoice imports are deduplicated\n4. Send `filter` and `sort` again with every `cursor`. The cursor stores position only\n5. Send amounts as strings such as \"120.00\", and ask for `:readonly` scopes when the task only reads\n6. Use the MCP server for reads only. It cannot create, edit or delete, and firm connections need `company_id`\n\n### Zoho Books\n\n1. Send `organization_id` as a query parameter on every call. Read it from `GET /organizations` first\n2. Use the `api_domain` returned with the token, since each of the nine data centres has its own host (zohoapis.com, zohoapis.eu, zohoapis.in and others)\n3. Send `Authorization: Zoho-oauthtoken \u003ctoken\u003e` and refresh hourly. Each user keeps at most 20 refresh tokens and the oldest is deleted\n4. Stay under 100 requests a minute and the plan's daily cap. Codes 44, 45 and 1070 on a 429 mean minute, day and concurrency limits\n5. To repeat an update safely, send `X-Unique-Identifier-Key`, `X-Unique-Identifier-Value` and `X-Upsert` with a unique custom field. Creates have no idempotency key\n\n## Questions\n\n### Which is better for AI agents, Pennylane or Zoho Books?\n\nPennylane scores 66.3 (B) on agent readiness against Zoho Books's 61.1 (C), and leads in 5 of 7 scored categories. Zoho Books leads on payments \u0026 pricing.\n\n### Do Pennylane and Zoho Books need an API key?\n\nPennylane takes an API key or an OAuth sign-in. Zoho Books uses an OAuth sign-in.\n\n### Can an agent call Pennylane and Zoho Books without installing anything?\n\nYes. Pennylane has a hosted endpoint at https://app.pennylane.com/api/external/v2 and Zoho Books at https://www.zohoapis.com/books/v3.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/pennylane-vs-zoho-books.json, and with the fewest tokens: https://www.anchorterminal.com/compare/pennylane-vs-zoho-books.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"pennylane\", \"b\": \"zoho-books\"}`. From a terminal: `anchor compare pennylane zoho-books`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/pennylane.json and https://www.anchorterminal.com/api/v1/tools/zoho-books.json\n\n## Other comparisons with Pennylane or Zoho Books\n\n- [Apideck Accounting API + MCP vs Pennylane](https://www.anchorterminal.com/compare/apideck-accounting-vs-pennylane.md)\n- [Apideck Accounting API + MCP vs Zoho Books](https://www.anchorterminal.com/compare/apideck-accounting-vs-zoho-books.md)\n- [Codat vs Pennylane](https://www.anchorterminal.com/compare/codat-vs-pennylane.md)\n- [Codat vs Zoho Books](https://www.anchorterminal.com/compare/codat-vs-zoho-books.md)\n- [FreeAgent API vs Pennylane](https://www.anchorterminal.com/compare/freeagent-vs-pennylane.md)\n- [FreeAgent API vs Zoho Books](https://www.anchorterminal.com/compare/freeagent-vs-zoho-books.md)\n- [FreshBooks API vs Pennylane](https://www.anchorterminal.com/compare/freshbooks-vs-pennylane.md)\n- [FreshBooks API vs Zoho Books](https://www.anchorterminal.com/compare/freshbooks-vs-zoho-books.md)\n- [Merge Accounting API vs Pennylane](https://www.anchorterminal.com/compare/merge-accounting-vs-pennylane.md)\n- [Merge Accounting API vs Zoho Books](https://www.anchorterminal.com/compare/merge-accounting-vs-zoho-books.md)\n- [Odoo External API vs Pennylane](https://www.anchorterminal.com/compare/odoo-vs-pennylane.md)\n- [Odoo External API vs Zoho Books](https://www.anchorterminal.com/compare/odoo-vs-zoho-books.md)\n- [Pennylane vs QuickBooks Online API + MCP](https://www.anchorterminal.com/compare/pennylane-vs-quickbooks-online.md)\n- [Pennylane vs Rutter Accounting API](https://www.anchorterminal.com/compare/pennylane-vs-rutter.md)\n- [Pennylane vs Xero API + MCP](https://www.anchorterminal.com/compare/pennylane-vs-xero.md)\n- [QuickBooks Online API + MCP vs Zoho Books](https://www.anchorterminal.com/compare/quickbooks-online-vs-zoho-books.md)\n- [Rutter Accounting API vs Zoho Books](https://www.anchorterminal.com/compare/rutter-vs-zoho-books.md)\n- [Xero API + MCP vs Zoho Books](https://www.anchorterminal.com/compare/xero-vs-zoho-books.md)\n- [Invoice Ninja API vs Pennylane](https://www.anchorterminal.com/compare/invoice-ninja-vs-pennylane.md)\n- [Invoice Ninja API vs Zoho Books](https://www.anchorterminal.com/compare/invoice-ninja-vs-zoho-books.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-10",
    "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": "Pennylane vs Zoho Books",
        "url": ""
      }
    ],
    "description": "Pennylane scores 66.3 (B) to Zoho Books's 61.1 (C) for accounting ledgers. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Pennylane B 66.3",
      "Zoho Books C 61.1",
      "scores"
    ],
    "h1": "Pennylane vs Zoho Books",
    "image": "https://www.anchorterminal.com/assets/og/compare-pennylane-vs-zoho-books.png",
    "path": "/compare/pennylane-vs-zoho-books",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Pennylane vs Zoho Books for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/pennylane-vs-zoho-books"
  },
  "tokens": {
    "markdown": 2350,
    "slim": 630
  },
  "version": 1
}
