{
  "data": {
    "a": {
      "slug": "employment-hero",
      "name": "Employment Hero Payroll",
      "vendor": "Employment Hero Pty Ltd",
      "vendorUrl": "https://employmenthero.com",
      "kind": "http-api",
      "category": "payroll",
      "summary": "Employment Hero Payroll (formerly KeyPay) is cloud payroll for Australia, New Zealand, the United Kingdom, Singapore and Malaysia. Its REST API covers businesses, employees, timesheets, leave, pay runs and reports, with an API key or OAuth 2.0.",
      "url": "https://www.anchorterminal.com/tools/employment-hero",
      "markdownUrl": "https://www.anchorterminal.com/tools/employment-hero.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/employment-hero.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/employment-hero.json",
      "repo": "https://github.com/Thinkei/keypay-dotnet-v2",
      "license": "Proprietary service under Employment Hero's General Terms. The `KeyPayV2` .NET client is MIT",
      "transports": [
        "http"
      ],
      "packages": [
        {
          "registry": "nuget",
          "name": "KeyPayV2"
        }
      ],
      "auth": "mixed",
      "authNotes": "Graded on the Payroll API. A user with a payroll login generates an API key under My Account, with no partner review, and sends it as the HTTP Basic username with a blank password. The key acts with that user's access, and Change API Key invalidates the old one. OAuth 2.0 is the other route. A support request with the application's name, callback URL and logo returns a client ID and secret, and the authorisation code grant at `/oauth/authorise` and `/oauth/token` returns a 24-hour access token and a 28-day refresh token. The spec names `read` and `write` scopes, and the guide's sample token shows an empty scope.",
      "pricing": "paid",
      "pricingNotes": "No charge for API calls was found. Access comes with an Employment Hero Payroll subscription. The Australian pricing page lists the Payroll plan at $10 with conditions, a minimum of 10 users and billing by user count, with prices stated as AUD ex. GST in the page's disclaimers. Employment Unlimited, which includes Payroll, is priced through sales. No free tier, trial or sandbox for Payroll was found on the pages read, so an agent starts only where a paying account exists (checked 2026-10-08).",
      "priceSummary": "Paid",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the API guides, the five Swagger files or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 6,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://api.keypay.com.au/",
      "openapi": "https://api.keypay.com.au/swagger-au.json",
      "capabilities": [
        "payroll.run",
        "payroll.employees",
        "payroll.embedded",
        "payroll.tax-filing",
        "payroll.contractors",
        "hr.time-off"
      ],
      "tags": [
        "hosted",
        "payroll",
        "api-key",
        "oauth",
        "openapi",
        "webhooks",
        "dotnet",
        "white-label",
        "australia",
        "new-zealand",
        "uk",
        "singapore",
        "malaysia",
        "status-page"
      ],
      "lastRelease": "2026-10-08",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 50.4,
        "grade": "D",
        "agentReady": false,
        "rank": 591,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 6,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 53,
          "maintenance": 68,
          "payments": 10,
          "reliability": 65,
          "schema": 51,
          "security": 46,
          "transparency": 60
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "Five public Swagger 2.0 files describe 660 to 821 operations per region, and any payroll user can generate an API key without a partner review. The key carries its user's whole access, no idempotency keys or API changelog were found, and the only official client is for .NET.",
        "bestFor": "An agent acting for an employer or bureau already on Employment Hero Payroll in Australia, New Zealand, the United Kingdom, Singapore or Malaysia, and white label partners who create businesses through the brand endpoints.",
        "strengths": [
          "Public Swagger 2.0 file for each of five regions, 728 operations for Australia and 821 for the United Kingdom, downloadable without a login",
          "A payroll user generates an API key under My Account with no partner review, and Change API Key invalidates the old one",
          "OData `$filter`, `$orderby`, `$top` and `$skip` on most GET operations, with `$top` capped at 100",
          "Pay run endpoints cover create, recalculate, warnings, approval start, finalise and unlock, so a run can be checked before it is finalised",
          "The .NET client is regenerated from the API, with commits on 52 separate days between 10 July and 8 October 2026"
        ],
        "weaknesses": [
          "An API key carries the whole access of the user who generated it. No per-key scopes were found",
          "No idempotency keys in the spec or guides, and 5 requests a second per key and IP address is the only documented limit",
          "No changelog, versioning policy or deprecation policy was found for the Payroll API",
          "Only 13 of 460 schema definitions in the Australian spec list required fields, and 711 of 728 operations document a 200 response and little else",
          "The developer forum's recent topics include spam, and several API questions from 2024 and 2025 show no replies"
        ],
        "agentNotes": [
          "Send the API key as the Basic auth username with a blank password, for example `curl -u {api_key}: https://api.yourpayroll.com.au/api/v2/user`",
          "Pick the Swagger file for the business's region (`swagger-au.json`, `swagger-nz.json`, `swagger-uk.json`, `swagger-sg.json`, `swagger-my.json`). Paths and models differ by region",
          "Stay under 5 requests a second per key and IP address. A 429 answered our test with `retry-after: 1`",
          "Page lists with `$skip` and `$top` (100 at most). Filter property names are capitalised, unlike the camelCase JSON",
          "Read `GET /api/v2/business/{businessId}/payrun/{payRunId}/warnings` before `POST .../finalise`. Finalise can lodge with the tax office and publish pay slips in the same call"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 50.4
          }
        ],
        "editorialScores": {
          "ergonomics": 53,
          "maintenance": 68,
          "payments": 10,
          "reliability": 65,
          "schema": 51,
          "security": 46,
          "transparency": 49
        },
        "provenanceScore": 71
      },
      "connect": {
        "install": "Install-Package KeyPayV2",
        "http": "curl -u {api_key}: https://api.yourpayroll.com.au/api/v2/user"
      },
      "letme": {
        "capability": "https://letme.dev/payroll.run",
        "tool": "https://letme.dev/employment-hero"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "Employment Hero Pty Ltd",
        "domain": "employmenthero.com",
        "domainRegistered": "2012-05-02",
        "endpointOnVendorDomain": false,
        "terms": "https://employmenthero.com/legals/terms-conditions/",
        "privacy": "https://employmenthero.com/legals/privacy-policy/",
        "statusPage": "https://status.employmenthero.com",
        "changelog": "",
        "securityTxt": "valid",
        "checked": "2026-10-08",
        "notes": [
          "The General Terms (effective 15 June 2026) name Employment Hero Pty Ltd and its affiliates, and define the EH Platform to include products reached through its APIs. They are the platform terms, and no separate API terms were found.",
          "The privacy policy is effective 3 June 2026 and points to a Data Processing Addendum effective 15 June 2026 at https://employmenthero.com/legals/privacy-policy/data-processing/.",
          "The API answers at api.yourpayroll.com.au and the documentation at api.keypay.com.au, both off employmenthero.com. RDAP for yourpayroll.com.au names the registrar only, so we could not confirm the registrant.",
          "https://employmenthero.com/.well-known/security.txt gives vuln@employmenthero.com, a policy link and an expiry of 31 December 2026.",
          "RDAP for employmenthero.com gives a registration date of 2012-05-02 and GoDaddy.com, LLC as registrar.",
          "No changelog for the Payroll API was found on the documentation site."
        ],
        "score": 71
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/employment-hero.json",
      "live": {
        "slug": "employment-hero",
        "vendorStatus": {
          "page": "https://status.employmenthero.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T21:06:03.50426119Z"
        },
        "updatedAt": "2026-10-08T21:06:03.50426119Z"
      }
    },
    "answer": "Employment Hero Payroll scores 50.4 (D) on agent readiness against Zeal's 45.4 (E), and leads in 5 of 7 scored categories. Zeal leads on schema \u0026 documentation and agent ergonomics.",
    "b": {
      "slug": "zeal",
      "name": "Zeal",
      "vendor": "Puzzl Group Inc.",
      "vendorUrl": "https://www.zeal.com",
      "kind": "http-api",
      "category": "payroll",
      "summary": "Zeal is an embedded payroll API for US staffing platforms, labour marketplaces and workforce software. Partners create employer companies, onboard W-2 employees and 1099 contractors, create pay cheques and contractor payments, preview payroll and pull reports.",
      "url": "https://www.anchorterminal.com/tools/zeal",
      "markdownUrl": "https://www.anchorterminal.com/tools/zeal.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/zeal.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/zeal.json",
      "repo": "https://github.com/zeal-corp/typescript-sdk",
      "license": "Proprietary service. The npm SDK declares MIT. The SDK repositories on GitHub carry no licence file",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.zeal.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@zeal-api/sdk"
        },
        {
          "registry": "pypi",
          "name": "zeal-api-sdk"
        }
      ],
      "auth": "api-key",
      "authNotes": "API keys, issued only to Zeal partners. Zeal's team creates the partner account after a demo request, then the Partner Dashboard at app.zeal.com shows one Test API key, one Production API key and the `partnerID`. Every call sends `Authorization: Bearer {apiKey}`, and most also need a `companyID`. A key covers every employer company under the partner, has no scopes, and is rolled from the dashboard, which invalidates the old key at once. Production payroll is switched on by Zeal (error code 0 until then). The agent chat and MCP endpoints need a key that Zeal has Agent-enabled. This is embedded-payroll partner access. An employer has no separate API route into its own Zeal payroll account.",
      "pricing": "paid",
      "pricingNotes": "No public prices. www.zeal.com/pricing returns 404 and every call to action asks for a demo. A test environment that moves no money exists, but its key comes only after Zeal creates a partner account, so an agent cannot start without a sales contact. No free tier or self-serve trial was found (checked 2026-10-08).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in llms-full.txt, the OpenAPI specs or the marketing site (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 0,
        "npmWeekly": 8,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://docs.zeal.com",
      "llmsTxt": "https://docs.zeal.com/llms.txt",
      "openapi": "https://docs.zeal.com/openapi/zeal-api.json",
      "capabilities": [
        "payroll.run",
        "payroll.embedded",
        "payroll.employees",
        "payroll.contractors",
        "payroll.tax-filing",
        "hr.onboarding"
      ],
      "tags": [
        "hosted",
        "api-key",
        "openapi",
        "llms-txt",
        "typescript",
        "python",
        "webhooks",
        "sandbox",
        "sales-led",
        "partner-only",
        "us-only",
        "soc2",
        "mcp"
      ],
      "lastRelease": "2026-07-31",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 45.4,
        "grade": "E",
        "agentReady": false,
        "rank": 658,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 8,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 63,
          "maintenance": 61,
          "payments": 0,
          "reliability": 42,
          "schema": 68,
          "security": 34,
          "transparency": 51
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "Graded on the partner REST API at api.zeal.com, which is the only access route. Three OpenAPI specs, llms.txt, a test environment that moves no money, a preview endpoint and a per-cheque approval flag are documented. Access starts with a demo request, prices are not published, each environment has one unscoped key, and no status page or working changelog was found.",
        "bestFor": "A US staffing platform, marketplace or workforce product that will sign a partnership and run payroll for many employers under its own brand, including daily and on-demand pay.",
        "strengths": [
          "Public OpenAPI 3.1 specs with 177 operations, plus llms.txt, llms-full.txt and a Markdown copy of every docs page",
          "Test keys run payroll end to end with no money moved and no tax filings, in an environment separate from production",
          "Preview endpoints return the gross-to-net breakdown before processing, and `approval_required` holds a cheque until `approved` is set",
          "`x-idempotency-key` header honoured for 24 hours, and 116 numbered error codes with messages",
          "Fern-generated TypeScript and Python SDKs (0.2.1, July 2026) that retry 408, 429 and 5xx with backoff"
        ],
        "weaknesses": [
          "No self-serve signup. Zeal's team creates the partner account after a demo request, and no price is published",
          "One test key and one production key per partner account, with no scopes and no read-only key",
          "No status page found, and the changelog linked from the home page and llms.txt returns 404",
          "The API has no version in the path or a header, and the main spec has 18 operations with no summary",
          "Webhooks carry the shared secret itself in `Puzzl-Signature`, not a signature of the payload",
          "No security.txt, disclosure policy, sub-processor list or DPA found on the public site"
        ],
        "agentNotes": [
          "Use the Test API key until a person has approved live payroll. Error code 0 (403) means the account has no production access",
          "Send `companyID` on almost every call and `partnerID` on partner-level calls, in the body for POST and PATCH and the query for GET",
          "Create cheques with `approval_required: true`, run POST /preview/checks, then PATCH /employeeCheck with `approved: true`. Without the flag Zeal processes pending cheques automatically",
          "Send `x-idempotency-key` on every create so a retry within 24 hours doesn't pay twice",
          "Previews and reports are jobs. Keep the `job_id` and poll GET /preview or GET /reports, or wait for the Job Queue webhook",
          "Check dates must be bank days and submitted before 2 PM Pacific two bank days ahead, or the call fails with code 89"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 45.4
          }
        ],
        "editorialScores": {
          "ergonomics": 63,
          "maintenance": 61,
          "payments": 0,
          "reliability": 42,
          "schema": 68,
          "security": 34,
          "transparency": 38
        },
        "provenanceScore": 64
      },
      "connect": {
        "install": "npm i -s @zeal-api/sdk",
        "http": "curl --request GET \\\n     --url 'https://api.zeal.com/companies?partnerID=YOUR_PARTNER_ID' \\\n     --header 'Accept: application/json' \\\n     --header 'Authorization: Bearer YOUR_API_KEY'"
      },
      "letme": {
        "capability": "https://letme.dev/payroll.run",
        "tool": "https://letme.dev/zeal"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "Puzzl Group Inc.",
        "domain": "zeal.com",
        "domainRegistered": "1995-07-03",
        "endpointOnVendorDomain": true,
        "terms": "https://www.zeal.com/legal?tab=terms-of-service",
        "privacy": "https://www.zeal.com/legal?tab=privacy-policy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The legal page names Puzzl Group Inc., a Delaware corporation, 80 Langton Street, San Francisco, CA 94103. Its privacy notice was last updated on 16 January 2026.",
          "The API answers at https://api.zeal.com and docs at docs.zeal.com (hosted on Mintlify). The help centre at support.zeal.com runs on Pylon.",
          "www.zeal.com/.well-known/security.txt and docs.zeal.com/.well-known/security.txt return 404.",
          "No status page is linked from the site, the docs or the help centre. status.zeal.com did not complete a TLS handshake on 8 October 2026.",
          "The changelog URL the site advertises, https://docs.zeal.com/changelog, returns 404, so the field is left empty.",
          "The legal page says banking services come from Bangor Savings Bank, Member FDIC.",
          "RDAP for zeal.com gives a registration date of 1995-07-03 and GoDaddy.com, LLC as registrar."
        ],
        "score": 64
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/zeal.json",
      "live": {
        "slug": "zeal",
        "probe": {
          "target": "https://api.zeal.com",
          "method": "get",
          "lastAt": "2026-10-08T21:12:26.455378082Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 598,
          "authRequired": false,
          "uptime24h": 98.44,
          "uptime30d": 98.44,
          "p50ms24h": 604,
          "p95ms24h": 681,
          "samples24h": 64,
          "samples30d": 64,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 64,
              "ok": 63
            }
          ]
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@zeal-api/sdk",
            "version": "0.2.1",
            "seenAt": "2026-10-08T16:35:37.1323379Z"
          },
          {
            "registry": "pypi",
            "name": "zeal-api-sdk",
            "version": "0.2.1",
            "released": "2026-07-31",
            "seenAt": "2026-10-08T16:35:39.815769205Z"
          }
        ],
        "githubStars": 0,
        "npmWeekly": 8,
        "pypiWeekly": 4,
        "securityTxt": {
          "url": "https://zeal.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:30.40067532Z"
        },
        "pages": [
          {
            "url": "https://www.zeal.com/legal?tab=privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:31:44.751983613Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ca2c8021bf60"
          },
          {
            "url": "https://www.zeal.com/legal?tab=terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:31:46.842036275Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ca2c8021bf60"
          }
        ],
        "updatedAt": "2026-10-08T21:12:26.455378082Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Employment Hero Pty Ltd",
        "b": "Puzzl Group Inc.",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "https://api.zeal.com",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under Employment Hero's General Terms. The `KeyPayV2` .NET client is MIT",
        "b": "Proprietary service. The npm SDK declares MIT. The SDK repositories on GitHub carry no licence file",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-08",
        "b": "2026-07-31",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "2026-01-16",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "2026-01-16",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "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": "6 stars",
        "b": "0 stars, 8 npm/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Employment Hero Payroll scores 50.4 (D) on agent readiness against Zeal's 45.4 (E), and leads in 5 of 7 scored categories. Zeal leads on schema \u0026 documentation and agent ergonomics.",
        "question": "Which is better for AI agents, Employment Hero Payroll or Zeal?"
      },
      {
        "answer": "Employment Hero Payroll takes an API key or an OAuth sign-in. Zeal needs an API key.",
        "question": "Do Employment Hero Payroll and Zeal need an API key?"
      },
      {
        "answer": "No hosted endpoint is listed for Employment Hero Payroll. Zeal has a hosted endpoint at https://api.zeal.com.",
        "question": "Can an agent call Employment Hero Payroll and Zeal without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 65 against 42",
          "Security \u0026 auth, 46 against 34",
          "Payments \u0026 pricing, 10 against 0",
          "Maintenance \u0026 community, 68 against 61",
          "Transparency \u0026 trust, 60 against 51"
        ],
        "also": null,
        "goodFor": "An agent acting for an employer or bureau already on Employment Hero Payroll in Australia, New Zealand, the United Kingdom, Singapore or Malaysia, and white label partners who create businesses through the brand endpoints.",
        "slug": "employment-hero",
        "watchFor": "An API key carries the whole access of the user who generated it. No per-key scopes were found"
      },
      {
        "aheadOn": [
          "Schema \u0026 documentation, 68 against 51",
          "Agent ergonomics, 63 against 53"
        ],
        "also": [
          "A hosted endpoint, with nothing to install"
        ],
        "goodFor": "A US staffing platform, marketplace or workforce product that will sign a partnership and run payroll for many employers under its own brand, including daily and on-demand pay.",
        "slug": "zeal",
        "watchFor": "No self-serve signup. Zeal's team creates the partner account after a demo request, and no price is published"
      }
    ],
    "job": {
      "capability": "payroll.run",
      "name": "Payroll run"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/argyle-vs-employment-hero.json",
        "title": "Argyle vs Employment Hero Payroll",
        "url": "https://www.anchorterminal.com/compare/argyle-vs-employment-hero"
      },
      {
        "json": "https://www.anchorterminal.com/compare/argyle-vs-zeal.json",
        "title": "Argyle vs Zeal",
        "url": "https://www.anchorterminal.com/compare/argyle-vs-zeal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/employment-hero-vs-finch.json",
        "title": "Employment Hero Payroll vs Finch",
        "url": "https://www.anchorterminal.com/compare/employment-hero-vs-finch"
      },
      {
        "json": "https://www.anchorterminal.com/compare/employment-hero-vs-paychex.json",
        "title": "Employment Hero Payroll vs Paychex",
        "url": "https://www.anchorterminal.com/compare/employment-hero-vs-paychex"
      },
      {
        "json": "https://www.anchorterminal.com/compare/finch-vs-zeal.json",
        "title": "Finch vs Zeal",
        "url": "https://www.anchorterminal.com/compare/finch-vs-zeal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/paychex-vs-zeal.json",
        "title": "Paychex vs Zeal",
        "url": "https://www.anchorterminal.com/compare/paychex-vs-zeal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/check-payroll-vs-employment-hero.json",
        "title": "Check vs Employment Hero Payroll",
        "url": "https://www.anchorterminal.com/compare/check-payroll-vs-employment-hero"
      },
      {
        "json": "https://www.anchorterminal.com/compare/check-payroll-vs-zeal.json",
        "title": "Check vs Zeal",
        "url": "https://www.anchorterminal.com/compare/check-payroll-vs-zeal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/employment-hero-vs-everee.json",
        "title": "Employment Hero Payroll vs Everee",
        "url": "https://www.anchorterminal.com/compare/employment-hero-vs-everee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/employment-hero-vs-gusto.json",
        "title": "Employment Hero Payroll vs Gusto",
        "url": "https://www.anchorterminal.com/compare/employment-hero-vs-gusto"
      },
      {
        "json": "https://www.anchorterminal.com/compare/employment-hero-vs-salsa.json",
        "title": "Employment Hero Payroll vs Salsa",
        "url": "https://www.anchorterminal.com/compare/employment-hero-vs-salsa"
      },
      {
        "json": "https://www.anchorterminal.com/compare/everee-vs-zeal.json",
        "title": "Everee vs Zeal",
        "url": "https://www.anchorterminal.com/compare/everee-vs-zeal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gusto-vs-zeal.json",
        "title": "Gusto vs Zeal",
        "url": "https://www.anchorterminal.com/compare/gusto-vs-zeal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/salsa-vs-zeal.json",
        "title": "Salsa vs Zeal",
        "url": "https://www.anchorterminal.com/compare/salsa-vs-zeal"
      }
    ],
    "scores": [
      {
        "by": 23,
        "edge": "employment-hero",
        "employment-hero": 65,
        "key": "reliability",
        "name": "Reliability",
        "weight": 16,
        "zeal": 42
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 17,
        "edge": "zeal",
        "employment-hero": 51,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13,
        "zeal": 68
      },
      {
        "by": 10,
        "edge": "zeal",
        "employment-hero": 53,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13,
        "zeal": 63
      },
      {
        "by": 12,
        "edge": "employment-hero",
        "employment-hero": 46,
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14,
        "zeal": 34
      },
      {
        "by": 10,
        "edge": "employment-hero",
        "employment-hero": 10,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10,
        "zeal": 0
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 7,
        "edge": "employment-hero",
        "employment-hero": 68,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7,
        "zeal": 61
      },
      {
        "by": 9,
        "edge": "employment-hero",
        "employment-hero": 60,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7,
        "zeal": 51
      }
    ],
    "summary": "Employment Hero Payroll scores 50.4 (D) on agent readiness against Zeal's 45.4 (E), and leads in 5 of 7 scored categories. Zeal leads on schema \u0026 documentation and agent ergonomics. Both do payroll run.",
    "verdicts": {
      "employment-hero": "Five public Swagger 2.0 files describe 660 to 821 operations per region, and any payroll user can generate an API key without a partner review. The key carries its user's whole access, no idempotency keys or API changelog were found, and the only official client is for .NET.",
      "zeal": "Graded on the partner REST API at api.zeal.com, which is the only access route. Three OpenAPI specs, llms.txt, a test environment that moves no money, a preview endpoint and a per-cheque approval flag are documented. Access starts with a demo request, prices are not published, each environment has one unscoped key, and no status page or working changelog was found."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/employment-hero-vs-zeal",
    "json": "https://www.anchorterminal.com/compare/employment-hero-vs-zeal.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/employment-hero-vs-zeal.md",
    "slim": "https://www.anchorterminal.com/compare/employment-hero-vs-zeal.min.md"
  },
  "markdown": "Employment Hero Payroll scores 50.4 (D) on agent readiness against Zeal's 45.4 (E), and leads in 5 of 7 scored categories. Zeal leads on schema \u0026 documentation and agent ergonomics. Both do payroll run.\n\n- Employment Hero Payroll: grade D, 50.4/100, rank #591 of 722. Markdown https://www.anchorterminal.com/tools/employment-hero.md · JSON https://www.anchorterminal.com/api/v1/tools/employment-hero.json\n- Zeal: grade E, 45.4/100, rank #658 of 722. Markdown https://www.anchorterminal.com/tools/zeal.md · JSON https://www.anchorterminal.com/api/v1/tools/zeal.json\n\n## Which one, for what\n\n### Employment Hero Payroll (D)\n\nGood for: An agent acting for an employer or bureau already on Employment Hero Payroll in Australia, New Zealand, the United Kingdom, Singapore or Malaysia, and white label partners who create businesses through the brand endpoints.\n\nAhead on:\n- Reliability, 65 against 42\n- Security \u0026 auth, 46 against 34\n- Payments \u0026 pricing, 10 against 0\n- Maintenance \u0026 community, 68 against 61\n- Transparency \u0026 trust, 60 against 51\n\nWatch for: An API key carries the whole access of the user who generated it. No per-key scopes were found\n\n### Zeal (E)\n\nGood for: A US staffing platform, marketplace or workforce product that will sign a partnership and run payroll for many employers under its own brand, including daily and on-demand pay.\n\nAhead on:\n- Schema \u0026 documentation, 68 against 51\n- Agent ergonomics, 63 against 53\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n\nWatch for: No self-serve signup. Zeal's team creates the partner account after a demo request, and no price is published\n\n\n## Score by category\n\n| Category | Weight | Employment Hero Payroll | Zeal | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 65 | 42 | Employment Hero Payroll +23 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 51 | 68 | Zeal +17 |\n| Agent ergonomics | 13% (16.2 this run) | 53 | 63 | Zeal +10 |\n| Security \u0026 auth | 14% (17.5 this run) | 46 | 34 | Employment Hero Payroll +12 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 10 | 0 | Employment Hero Payroll +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 68 | 61 | Employment Hero Payroll +7 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 60 | 51 | Employment Hero Payroll +9 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **50.4 · D** | **45.4 · E** | |\n\n## Facts side by side\n\n| Fact | Employment Hero Payroll | Zeal |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Employment Hero Pty Ltd | Puzzl Group Inc. |\n| Hosted endpoint | no (local only) | `https://api.zeal.com` |\n| Transports | HTTP | HTTP |\n| Auth | OAuth or key | API key |\n| Pricing | Paid | Paid |\n| x402 | no | no |\n| Licence | Proprietary service under Employment Hero's General Terms. The `KeyPayV2` .NET client is MIT | Proprietary service. The npm SDK declares MIT. The SDK repositories on GitHub carry no licence file |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| Last release | 2026-10-08 | 2026-07-31 |\n| Terms last updated | no date given | 2026-01-16 |\n| Privacy policy last updated | no date given | 2026-01-16 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | yes | yes |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | not found in the text | yes |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | 6 stars | 0 stars, 8 npm/wk |\n\n## Verdicts\n\n**Employment Hero Payroll.** Five public Swagger 2.0 files describe 660 to 821 operations per region, and any payroll user can generate an API key without a partner review. The key carries its user's whole access, no idempotency keys or API changelog were found, and the only official client is for .NET.\n\n**Zeal.** Graded on the partner REST API at api.zeal.com, which is the only access route. Three OpenAPI specs, llms.txt, a test environment that moves no money, a preview endpoint and a per-cheque approval flag are documented. Access starts with a demo request, prices are not published, each environment has one unscoped key, and no status page or working changelog was found.\n\n## Before you call either\n\n### Employment Hero Payroll\n\n1. Send the API key as the Basic auth username with a blank password, for example `curl -u {api_key}: https://api.yourpayroll.com.au/api/v2/user`\n2. Pick the Swagger file for the business's region (`swagger-au.json`, `swagger-nz.json`, `swagger-uk.json`, `swagger-sg.json`, `swagger-my.json`). Paths and models differ by region\n3. Stay under 5 requests a second per key and IP address. A 429 answered our test with `retry-after: 1`\n4. Page lists with `$skip` and `$top` (100 at most). Filter property names are capitalised, unlike the camelCase JSON\n5. Read `GET /api/v2/business/{businessId}/payrun/{payRunId}/warnings` before `POST .../finalise`. Finalise can lodge with the tax office and publish pay slips in the same call\n\n### Zeal\n\n1. Use the Test API key until a person has approved live payroll. Error code 0 (403) means the account has no production access\n2. Send `companyID` on almost every call and `partnerID` on partner-level calls, in the body for POST and PATCH and the query for GET\n3. Create cheques with `approval_required: true`, run POST /preview/checks, then PATCH /employeeCheck with `approved: true`. Without the flag Zeal processes pending cheques automatically\n4. Send `x-idempotency-key` on every create so a retry within 24 hours doesn't pay twice\n5. Previews and reports are jobs. Keep the `job_id` and poll GET /preview or GET /reports, or wait for the Job Queue webhook\n6. Check dates must be bank days and submitted before 2 PM Pacific two bank days ahead, or the call fails with code 89\n\n## Questions\n\n### Which is better for AI agents, Employment Hero Payroll or Zeal?\n\nEmployment Hero Payroll scores 50.4 (D) on agent readiness against Zeal's 45.4 (E), and leads in 5 of 7 scored categories. Zeal leads on schema \u0026 documentation and agent ergonomics.\n\n### Do Employment Hero Payroll and Zeal need an API key?\n\nEmployment Hero Payroll takes an API key or an OAuth sign-in. Zeal needs an API key.\n\n### Can an agent call Employment Hero Payroll and Zeal without installing anything?\n\nNo hosted endpoint is listed for Employment Hero Payroll. Zeal has a hosted endpoint at https://api.zeal.com.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/employment-hero-vs-zeal.json, and with the fewest tokens: https://www.anchorterminal.com/compare/employment-hero-vs-zeal.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"employment-hero\", \"b\": \"zeal\"}`. From a terminal: `anchor compare employment-hero zeal`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/employment-hero.json and https://www.anchorterminal.com/api/v1/tools/zeal.json\n\n## Other comparisons with Employment Hero Payroll or Zeal\n\n- [Argyle vs Employment Hero Payroll](https://www.anchorterminal.com/compare/argyle-vs-employment-hero.md)\n- [Argyle vs Zeal](https://www.anchorterminal.com/compare/argyle-vs-zeal.md)\n- [Employment Hero Payroll vs Finch](https://www.anchorterminal.com/compare/employment-hero-vs-finch.md)\n- [Employment Hero Payroll vs Paychex](https://www.anchorterminal.com/compare/employment-hero-vs-paychex.md)\n- [Finch vs Zeal](https://www.anchorterminal.com/compare/finch-vs-zeal.md)\n- [Paychex vs Zeal](https://www.anchorterminal.com/compare/paychex-vs-zeal.md)\n- [Check vs Employment Hero Payroll](https://www.anchorterminal.com/compare/check-payroll-vs-employment-hero.md)\n- [Check vs Zeal](https://www.anchorterminal.com/compare/check-payroll-vs-zeal.md)\n- [Employment Hero Payroll vs Everee](https://www.anchorterminal.com/compare/employment-hero-vs-everee.md)\n- [Employment Hero Payroll vs Gusto](https://www.anchorterminal.com/compare/employment-hero-vs-gusto.md)\n- [Employment Hero Payroll vs Salsa](https://www.anchorterminal.com/compare/employment-hero-vs-salsa.md)\n- [Everee vs Zeal](https://www.anchorterminal.com/compare/everee-vs-zeal.md)\n- [Gusto vs Zeal](https://www.anchorterminal.com/compare/gusto-vs-zeal.md)\n- [Salsa vs Zeal](https://www.anchorterminal.com/compare/salsa-vs-zeal.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": "Employment Hero Payroll vs Zeal",
        "url": ""
      }
    ],
    "description": "Employment Hero Payroll scores 50.4 (D) on agent readiness against Zeal's 45.4 (E), and leads in 5 of 7 scored categories. Zeal leads on schema \u0026 documentation and agent ergonomics. Both do payroll run. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Employment Hero Payroll D 50.4",
      "Zeal E 45.4",
      "scores"
    ],
    "h1": "Employment Hero Payroll vs Zeal",
    "image": "https://www.anchorterminal.com/assets/og/compare-employment-hero-vs-zeal.png",
    "path": "/compare/employment-hero-vs-zeal",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Employment Hero Payroll vs Zeal for AI agents, D 50.4 vs E 45.4",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/employment-hero-vs-zeal"
  },
  "tokens": {
    "markdown": 2300,
    "slim": 680
  },
  "version": 1
}
