{
  "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 Salsa's 46.1 (D), and leads in 5 of 7 scored categories. Salsa leads on schema \u0026 documentation and security \u0026 auth.",
    "b": {
      "slug": "salsa",
      "name": "Salsa",
      "vendor": "Salsa Software Inc.",
      "vendorUrl": "https://www.salsa.dev",
      "kind": "http-api",
      "category": "payroll",
      "summary": "Embedded payroll from Salsa Software Inc. for software platforms. A partner's backend onboards employers and workers, sends pay data, previews and confirms payroll runs and reads pay statements through a REST API, while Salsa files taxes and moves money.",
      "url": "https://www.anchorterminal.com/tools/salsa",
      "markdownUrl": "https://www.anchorterminal.com/tools/salsa.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/salsa.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/salsa.json",
      "license": "Proprietary service. The website Terms of Use are public and the partner agreement isn't. The browser library @salsa-payroll/salsa-js on npm is MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.salsa.dev/api/rest/v1",
      "packages": [
        {
          "registry": "npm",
          "name": "@salsa-payroll/salsa-js"
        }
      ],
      "auth": "api-key",
      "authNotes": "A partner receives two bearer API tokens from Salsa after a sales contact, one for the sandbox and one for production. The docs say these tokens grant many privileges. From them a backend mints user tokens (JWT) at POST /api/rest/v1/auth/token, each with one of 12 roles in three tiers (basic, admin, super-admin, with onboarding variants), a list of up to 125 employers and a lifetime of 60 minutes by default, or up to 30 days for onboarding roles. Role limits are enforced at the API. No self-serve key page or key rotation procedure was found in the docs. This is embedded-payroll partner access. Salsa has no route into an employer's existing payroll account at another provider.",
      "pricing": "paid",
      "pricingNotes": "No public prices. salsa.dev has no pricing page (www.salsa.dev/pricing returns 404) and access starts with a contact form. The sandbox is issued by Salsa on request, so an agent can't start without a person contacting sales, and no free tier or trial was found. A Usage API reports confirmed payroll runs, worker payments, workers paid and tax filings per employer so a partner can bill its own customers, with no unit price published (checked 2026-10-08).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs index, the OpenAPI spec or the website (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 435,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://docs.salsa.dev",
      "llmsTxt": "https://docs.salsa.dev/llms.txt",
      "openapi": "https://docs.salsa.dev/openapi/salsadev.yaml",
      "capabilities": [
        "payroll.run",
        "payroll.embedded",
        "payroll.employees",
        "payroll.tax-filing",
        "payroll.contractors"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "api-key",
        "openapi",
        "llms-txt",
        "webhooks",
        "sandbox",
        "sales-led",
        "partner-access",
        "soc2"
      ],
      "lastRelease": "2026-10-07",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 46.1,
        "grade": "D",
        "agentReady": false,
        "rank": 651,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 7,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 48,
          "maintenance": 50,
          "payments": 5,
          "reliability": 36,
          "schema": 73,
          "security": 56,
          "transparency": 51
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "Salsa is reached as an embedded-payroll partner, not through an employer's existing payroll account. The REST API has a public OpenAPI 3.1 spec with 123 operations, a payroll preview, a separate confirm step and short-lived user tokens limited by role. Access starts with a sales conversation, and no public price, self-serve sandbox, status page or API changelog was found.",
        "bestFor": "A software platform that wants to sell payroll to its own business customers and can sign a partner agreement, with Salsa handling tax filing and money movement.",
        "strengths": [
          "Public OpenAPI 3.1 spec with 123 operations and 78 webhook events, last modified 7 October 2026, plus llms.txt and a Markdown copy of every docs page",
          "A payroll run is previewed, created as PENDING and paid only after a separate confirm call. A pending run can be deleted",
          "User tokens last 60 minutes by default, carry one of 12 roles in three tiers and name the employers they cover",
          "Audit entries record who changed what and when, with the actor shown as a user, an API client or the system",
          "Sandbox at api.sandbox.salsa.dev with mock-onboard endpoints that fill in employer and worker details for tests"
        ],
        "weaknesses": [
          "API tokens come from Salsa after a sales contact. No self-serve signup, public price, free tier or trial was found",
          "No status page, SLA, API changelog or deprecation policy was found on salsa.dev or docs.salsa.dev",
          "No Idempotency-Key header. The rate-limit page names 429 with no Retry-After or backoff guidance",
          "No server-side SDK. The only official package is the browser library Salsa.js, last published on 11 December 2025",
          "The signup link used across the docs, www.salsa.dev/get-a-demo, returned 404 on 8 October 2026",
          "No security.txt, disclosure policy, DPA or subprocessor list was found. SOC 2 Type 2 appears only as a badge image"
        ],
        "agentNotes": [
          "Use the sandbox token against https://api.sandbox.salsa.dev and the production token against https://api.salsa.dev. Each environment has its own token",
          "Call POST /payroll-runs/preview before creating a run, then confirm the PENDING run in a separate call. Confirming starts the employer debit",
          "Send your own externalId on every create. A repeat returns a uniqueness error, which is the only duplicate protection",
          "Make sure externalId values are unique across all employers, since each entity type has one namespace",
          "Mint a user token with the lowest role and the fewest employerIds the task needs, and keep the partner token on the server"
        ],
        "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": 46.1
          }
        ],
        "editorialScores": {
          "ergonomics": 48,
          "maintenance": 50,
          "payments": 5,
          "reliability": 36,
          "schema": 73,
          "security": 56,
          "transparency": 31
        },
        "provenanceScore": 70
      },
      "connect": {
        "http": "curl --location --request GET 'https://api.sandbox.salsa.dev/api/rest/v1/partner-pay-types' \\\n  --header 'Accept: application/json' \\\n  --header 'Authorization: Bearer ${YOUR_API_TOKEN}'"
      },
      "letme": {
        "capability": "https://letme.dev/payroll.run",
        "tool": "https://letme.dev/salsa"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "Salsa Software Inc.",
        "domain": "salsa.dev",
        "domainRegistered": "2021-08-06",
        "endpointOnVendorDomain": true,
        "terms": "https://www.salsa.dev/terms-of-use",
        "privacy": "https://www.salsa.dev/privacy-policy",
        "statusPage": "",
        "changelog": "https://www.salsa.dev/blog-category/product-updates",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The privacy policy (last modified 24 September 2025) names Salsa Software Inc., 169 Madison Ave #38368, New York, NY 10016, and says it doesn't cover data processed on behalf of platforms, which is governed by Salsa's agreements with them.",
          "The Terms of Use are dated 7 April 2022 and governed by California law. The partner agreement that covers API use isn't public.",
          "www.salsa.dev/.well-known/security.txt and docs.salsa.dev/.well-known/security.txt return 404.",
          "No status page is linked from salsa.dev or docs.salsa.dev. status.salsa.dev didn't connect. salsa.statuspage.io exists with two components marked \"(example)\" and a last update of 4 November 2022, and nothing ties it to this company.",
          "The changelog link is the product updates category of the blog, whose newest entry is 11 February 2026. docs.salsa.dev/changelog returns 404.",
          "RDAP for salsa.dev gives a registration date of 2021-08-06 and Squarespace Domains II LLC as registrar."
        ],
        "score": 70
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/salsa.json",
      "live": {
        "slug": "salsa",
        "probe": {
          "target": "https://api.salsa.dev/api/rest/v1",
          "method": "get",
          "lastAt": "2026-10-08T21:12:20.70344865Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 448,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 454,
          "p95ms24h": 517,
          "samples24h": 64,
          "samples30d": 64,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 64,
              "ok": 64
            }
          ]
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@salsa-payroll/salsa-js",
            "version": "0.3.0",
            "seenAt": "2026-10-08T16:28:07.049435331Z"
          }
        ],
        "npmWeekly": 435,
        "securityTxt": {
          "url": "https://salsa.dev/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:49.425969804Z"
        },
        "pages": [
          {
            "url": "https://www.salsa.dev/blog-category/product-updates",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:30:07.056601151Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "6c036ec0ed44"
          },
          {
            "url": "https://www.salsa.dev/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:30:09.140715304Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "08a0e2898a35"
          },
          {
            "url": "https://www.salsa.dev/terms-of-use",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:30:11.191316869Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "3bb24864bd0f"
          }
        ],
        "updatedAt": "2026-10-08T21:12:20.70344865Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Employment Hero Pty Ltd",
        "b": "Salsa Software Inc.",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "https://api.salsa.dev/api/rest/v1",
        "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 website Terms of Use are public and the partner agreement isn't. The browser library @salsa-payroll/salsa-js on npm is MIT",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-08",
        "b": "2026-10-07",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "2022-04-07",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "2025-09-24",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "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": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "6 stars",
        "b": "435 npm/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Employment Hero Payroll scores 50.4 (D) on agent readiness against Salsa's 46.1 (D), and leads in 5 of 7 scored categories. Salsa leads on schema \u0026 documentation and security \u0026 auth.",
        "question": "Which is better for AI agents, Employment Hero Payroll or Salsa?"
      },
      {
        "answer": "Employment Hero Payroll takes an API key or an OAuth sign-in. Salsa needs an API key.",
        "question": "Do Employment Hero Payroll and Salsa need an API key?"
      },
      {
        "answer": "No hosted endpoint is listed for Employment Hero Payroll. Salsa has a hosted endpoint at https://api.salsa.dev/api/rest/v1.",
        "question": "Can an agent call Employment Hero Payroll and Salsa without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 65 against 36",
          "Agent ergonomics, 53 against 48",
          "Payments \u0026 pricing, 10 against 5",
          "Maintenance \u0026 community, 68 against 50",
          "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, 73 against 51",
          "Security \u0026 auth, 56 against 46"
        ],
        "also": [
          "A hosted endpoint, with nothing to install"
        ],
        "goodFor": "A software platform that wants to sell payroll to its own business customers and can sign a partner agreement, with Salsa handling tax filing and money movement.",
        "slug": "salsa",
        "watchFor": "API tokens come from Salsa after a sales contact. No self-serve signup, public price, free tier or trial was found"
      }
    ],
    "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-salsa.json",
        "title": "Argyle vs Salsa",
        "url": "https://www.anchorterminal.com/compare/argyle-vs-salsa"
      },
      {
        "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-salsa.json",
        "title": "Finch vs Salsa",
        "url": "https://www.anchorterminal.com/compare/finch-vs-salsa"
      },
      {
        "json": "https://www.anchorterminal.com/compare/paychex-vs-salsa.json",
        "title": "Paychex vs Salsa",
        "url": "https://www.anchorterminal.com/compare/paychex-vs-salsa"
      },
      {
        "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-salsa.json",
        "title": "Check vs Salsa",
        "url": "https://www.anchorterminal.com/compare/check-payroll-vs-salsa"
      },
      {
        "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-zeal.json",
        "title": "Employment Hero Payroll vs Zeal",
        "url": "https://www.anchorterminal.com/compare/employment-hero-vs-zeal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/everee-vs-salsa.json",
        "title": "Everee vs Salsa",
        "url": "https://www.anchorterminal.com/compare/everee-vs-salsa"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gusto-vs-salsa.json",
        "title": "Gusto vs Salsa",
        "url": "https://www.anchorterminal.com/compare/gusto-vs-salsa"
      },
      {
        "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": 29,
        "edge": "employment-hero",
        "employment-hero": 65,
        "key": "reliability",
        "name": "Reliability",
        "salsa": 36,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 22,
        "edge": "salsa",
        "employment-hero": 51,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "salsa": 73,
        "weight": 13
      },
      {
        "by": 5,
        "edge": "employment-hero",
        "employment-hero": 53,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "salsa": 48,
        "weight": 13
      },
      {
        "by": 10,
        "edge": "salsa",
        "employment-hero": 46,
        "key": "security",
        "name": "Security \u0026 auth",
        "salsa": 56,
        "weight": 14
      },
      {
        "by": 5,
        "edge": "employment-hero",
        "employment-hero": 10,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "salsa": 5,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 18,
        "edge": "employment-hero",
        "employment-hero": 68,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "salsa": 50,
        "weight": 7
      },
      {
        "by": 9,
        "edge": "employment-hero",
        "employment-hero": 60,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "salsa": 51,
        "weight": 7
      }
    ],
    "summary": "Employment Hero Payroll scores 50.4 (D) on agent readiness against Salsa's 46.1 (D), and leads in 5 of 7 scored categories. Salsa leads on schema \u0026 documentation and security \u0026 auth. 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.",
      "salsa": "Salsa is reached as an embedded-payroll partner, not through an employer's existing payroll account. The REST API has a public OpenAPI 3.1 spec with 123 operations, a payroll preview, a separate confirm step and short-lived user tokens limited by role. Access starts with a sales conversation, and no public price, self-serve sandbox, status page or API 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-salsa",
    "json": "https://www.anchorterminal.com/compare/employment-hero-vs-salsa.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/employment-hero-vs-salsa.md",
    "slim": "https://www.anchorterminal.com/compare/employment-hero-vs-salsa.min.md"
  },
  "markdown": "Employment Hero Payroll scores 50.4 (D) on agent readiness against Salsa's 46.1 (D), and leads in 5 of 7 scored categories. Salsa leads on schema \u0026 documentation and security \u0026 auth. 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- Salsa: grade D, 46.1/100, rank #651 of 722. Markdown https://www.anchorterminal.com/tools/salsa.md · JSON https://www.anchorterminal.com/api/v1/tools/salsa.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 36\n- Agent ergonomics, 53 against 48\n- Payments \u0026 pricing, 10 against 5\n- Maintenance \u0026 community, 68 against 50\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### Salsa (D)\n\nGood for: A software platform that wants to sell payroll to its own business customers and can sign a partner agreement, with Salsa handling tax filing and money movement.\n\nAhead on:\n- Schema \u0026 documentation, 73 against 51\n- Security \u0026 auth, 56 against 46\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n\nWatch for: API tokens come from Salsa after a sales contact. No self-serve signup, public price, free tier or trial was found\n\n\n## Score by category\n\n| Category | Weight | Employment Hero Payroll | Salsa | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 65 | 36 | Employment Hero Payroll +29 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 51 | 73 | Salsa +22 |\n| Agent ergonomics | 13% (16.2 this run) | 53 | 48 | Employment Hero Payroll +5 |\n| Security \u0026 auth | 14% (17.5 this run) | 46 | 56 | Salsa +10 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 10 | 5 | Employment Hero Payroll +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 68 | 50 | Employment Hero Payroll +18 |\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** | **46.1 · D** | |\n\n## Facts side by side\n\n| Fact | Employment Hero Payroll | Salsa |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Employment Hero Pty Ltd | Salsa Software Inc. |\n| Hosted endpoint | no (local only) | `https://api.salsa.dev/api/rest/v1` |\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 website Terms of Use are public and the partner agreement isn't. The browser library @salsa-payroll/salsa-js on npm is MIT |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| Last release | 2026-10-08 | 2026-10-07 |\n| Terms last updated | no date given | 2022-04-07 |\n| Privacy policy last updated | no date given | 2025-09-24 |\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 | yes |\n| Popularity | 6 stars | 435 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**Salsa.** Salsa is reached as an embedded-payroll partner, not through an employer's existing payroll account. The REST API has a public OpenAPI 3.1 spec with 123 operations, a payroll preview, a separate confirm step and short-lived user tokens limited by role. Access starts with a sales conversation, and no public price, self-serve sandbox, status page or API 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### Salsa\n\n1. Use the sandbox token against https://api.sandbox.salsa.dev and the production token against https://api.salsa.dev. Each environment has its own token\n2. Call POST /payroll-runs/preview before creating a run, then confirm the PENDING run in a separate call. Confirming starts the employer debit\n3. Send your own externalId on every create. A repeat returns a uniqueness error, which is the only duplicate protection\n4. Make sure externalId values are unique across all employers, since each entity type has one namespace\n5. Mint a user token with the lowest role and the fewest employerIds the task needs, and keep the partner token on the server\n\n## Questions\n\n### Which is better for AI agents, Employment Hero Payroll or Salsa?\n\nEmployment Hero Payroll scores 50.4 (D) on agent readiness against Salsa's 46.1 (D), and leads in 5 of 7 scored categories. Salsa leads on schema \u0026 documentation and security \u0026 auth.\n\n### Do Employment Hero Payroll and Salsa need an API key?\n\nEmployment Hero Payroll takes an API key or an OAuth sign-in. Salsa needs an API key.\n\n### Can an agent call Employment Hero Payroll and Salsa without installing anything?\n\nNo hosted endpoint is listed for Employment Hero Payroll. Salsa has a hosted endpoint at https://api.salsa.dev/api/rest/v1.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/employment-hero-vs-salsa.json, and with the fewest tokens: https://www.anchorterminal.com/compare/employment-hero-vs-salsa.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"employment-hero\", \"b\": \"salsa\"}`. From a terminal: `anchor compare employment-hero salsa`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/employment-hero.json and https://www.anchorterminal.com/api/v1/tools/salsa.json\n\n## Other comparisons with Employment Hero Payroll or Salsa\n\n- [Argyle vs Employment Hero Payroll](https://www.anchorterminal.com/compare/argyle-vs-employment-hero.md)\n- [Argyle vs Salsa](https://www.anchorterminal.com/compare/argyle-vs-salsa.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 Salsa](https://www.anchorterminal.com/compare/finch-vs-salsa.md)\n- [Paychex vs Salsa](https://www.anchorterminal.com/compare/paychex-vs-salsa.md)\n- [Check vs Employment Hero Payroll](https://www.anchorterminal.com/compare/check-payroll-vs-employment-hero.md)\n- [Check vs Salsa](https://www.anchorterminal.com/compare/check-payroll-vs-salsa.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 Zeal](https://www.anchorterminal.com/compare/employment-hero-vs-zeal.md)\n- [Everee vs Salsa](https://www.anchorterminal.com/compare/everee-vs-salsa.md)\n- [Gusto vs Salsa](https://www.anchorterminal.com/compare/gusto-vs-salsa.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 Salsa",
        "url": ""
      }
    ],
    "description": "Employment Hero Payroll scores 50.4 (D) on agent readiness against Salsa's 46.1 (D), and leads in 5 of 7 scored categories. Salsa leads on schema \u0026 documentation and security \u0026 auth. Both do payroll run. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Employment Hero Payroll D 50.4",
      "Salsa D 46.1",
      "scores"
    ],
    "h1": "Employment Hero Payroll vs Salsa",
    "image": "https://www.anchorterminal.com/assets/og/compare-employment-hero-vs-salsa.png",
    "path": "/compare/employment-hero-vs-salsa",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Employment Hero Payroll vs Salsa for AI agents, D 50.4 vs D 46.1",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/employment-hero-vs-salsa"
  },
  "tokens": {
    "markdown": 2300,
    "slim": 730
  },
  "version": 1
}
