{
  "data": {
    "category": {
      "area": "domain-data",
      "capabilities": [
        "payroll.run",
        "payroll.employees",
        "payroll.embedded",
        "payroll.tax-filing",
        "payroll.contractors"
      ],
      "description": "Payroll run through an API. Embedded payroll that a software platform builds on, and APIs that reach an employer's existing payroll account. Compared on what can be read and written, how a payroll is previewed and approved, and the partner or approval steps before access.",
      "json": "https://www.anchorterminal.com/categories/payroll.json",
      "name": "Payroll infrastructure",
      "slug": "payroll",
      "test": "One test employer with three workers in each listing's sandbox. The same tasks run through its API (onboard a worker, enter hours, preview a payroll, approve it, read the pay statements). We check the calculation preview, approval steps and the onboarding needed for production. In this run listings are graded from public evidence against the published checklist.",
      "title": "Payroll APIs and embedded payroll for AI agents",
      "toolCount": 5,
      "tools": [
        "finch",
        "check-payroll",
        "gusto",
        "salsa",
        "zeal"
      ],
      "url": "https://www.anchorterminal.com/categories/payroll"
    },
    "tools": [
      {
        "slug": "finch",
        "name": "Finch",
        "vendor": "Profound Platform Inc. (dba Finch)",
        "vendorUrl": "https://www.tryfinch.com",
        "kind": "http-api",
        "category": "payroll",
        "summary": "Finch is a unified API for reading an employer's existing HR and payroll system, run by Profound Platform Inc. in San Francisco. Applications read directory, employment and pay data from 250+ systems and write payroll deductions.",
        "url": "https://www.anchorterminal.com/tools/finch",
        "markdownUrl": "https://www.anchorterminal.com/tools/finch.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/finch.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/finch.json",
        "repo": "https://github.com/Finch-API/finch-api-node",
        "license": "Proprietary service under Finch's Master Service Agreement. The SDKs and the MCP server on GitHub are Apache-2.0",
        "transports": [
          "http",
          "stdio"
        ],
        "remoteUrl": "https://api.tryfinch.com",
        "packages": [
          {
            "registry": "npm",
            "name": "@tryfinch/finch-api"
          },
          {
            "registry": "npm",
            "name": "@tryfinch/finch-api-mcp"
          },
          {
            "registry": "pypi",
            "name": "finch-api"
          }
        ],
        "auth": "oauth",
        "authNotes": "A person signs up for the Developer Dashboard and receives a `client_id` and `client_secret` for a free sandbox application. Access to an employer's data then needs that employer's administrator to sign in through Finch Connect and approve the requested products. The authorisation code is exchanged at POST /auth/token for a bearer access token tied to that one connection and those products. The token does not expire and is revoked with POST /disconnect. Connect sessions are created with HTTP Basic auth using the client ID and secret. The SSN permission needs Finch's approval, and Gusto and TriNet need a one-time security review before going live. The MCP server reads the access token from `FINCH_ACCESS_TOKEN`.",
        "pricing": "paid",
        "pricingNotes": "Starter is $65 a month per connection, month to month, for 24 providers, up to 15 connections and read-only organisation and payroll data. Pro and Premier are sold through sales, with volume discounts from 25 connections a month, all 250+ providers, deduction writes and assisted integrations. A sandbox with mock data is free with a Dashboard signup, so an agent's owner can start without a contract, and Provider Sandboxes allow five connections to provider demo accounts. All production connections are billable (checked 2026-10-08).",
        "priceSummary": "Paid",
        "where": "both",
        "x402": {
          "level": "no",
          "evidence": "No x402, MPP or L402 in the documentation index, the OpenAPI specification or the pricing page (checked 2026-10-08).",
          "endpoints": []
        },
        "toolCount": 2,
        "popularity": {
          "githubStars": null,
          "npmWeekly": 16128,
          "pypiWeekly": 25524,
          "asOf": "2026-10-08"
        },
        "docsUrl": "https://developer.tryfinch.com",
        "llmsTxt": "https://developer.tryfinch.com/llms.txt",
        "openapi": "https://developer.tryfinch.com/openapi.json",
        "capabilities": [
          "payroll.employees",
          "payroll.contractors",
          "hr.employees",
          "hr.org",
          "hr.documents"
        ],
        "tags": [
          "hosted",
          "unified-api",
          "payroll-data",
          "hris",
          "oauth",
          "openapi",
          "llms-txt",
          "mcp",
          "sandbox",
          "webhooks",
          "python",
          "typescript",
          "java",
          "go",
          "ruby",
          "status-page",
          "sla",
          "soc2"
        ],
        "lastRelease": "2026-10-05",
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 71.6,
          "grade": "BB",
          "agentReady": true,
          "rank": 99,
          "ranked": true,
          "rankOf": 629,
          "categoryRank": 1,
          "methodology": "0.4",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 71,
            "maintenance": 84,
            "payments": 30,
            "reliability": 84,
            "schema": 87,
            "security": 66,
            "transparency": 74
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "medium",
            "date": "2026-10-08"
          },
          "negative": 0,
          "verdict": "Graded on the REST API. An employer grants each connection named product permissions, and limits, error codes and a 99.9 per cent uptime SLA are published. Finch reads payroll and writes deductions but cannot run a payroll. Access tokens never expire, no idempotency keys were found, and writes and most providers need a sales-led plan.",
          "bestFor": "An application that needs to read employees, pay runs and pay statements from whatever payroll or HR system an employer already uses, or to write benefit deductions back.",
          "strengths": [
            "One OpenAPI 3.1 file covers 55 operations, and llms.txt indexes the documentation with every page served as Markdown",
            "Each access token is tied to one employer connection and limited to the products that employer approved, with SSN as a separate permission needing Finch's approval",
            "Rate limits are published per endpoint (20 or 12 requests a minute per application), with 429 errors that name which limit was hit",
            "A 99.90 per cent monthly uptime SLA with service credits is published for plans whose order form includes it",
            "Official SDKs for Node, Python, Java, Kotlin, Go and Ruby, with Node 10.8.2 and Python 2.8.3 released in the last 50 days",
            "A public DPA dated 7 August 2026, and a trust centre naming six sub-processors with hosting in AWS us-west-2"
          ],
          "weaknesses": [
            "Finch cannot create, preview or approve a payroll. Writes are limited to deductions and contributions, on Pro and Premier plans",
            "An access token does not expire until the connection is disconnected, and no rotation method was found in the reviewed documentation",
            "No idempotency keys were found, and no `Retry-After` header is documented on 429 responses",
            "Data is synced, not live. Automated integrations refresh every 24 hours and assisted integrations every 7 days",
            "Starter is $65 a month per connection for 24 providers and 15 connections. The other 250+ providers and deduction writes have no public price",
            "The MCP server is labelled beta, runs locally over stdio and is not in the official MCP registry"
          ],
          "agentNotes": [
            "Send `Finch-API-Version: 2020-09-17` and `Authorization: Bearer \u003caccess_token\u003e` on every request. A request without the version header fails with 400",
            "Call GET /introspect first to see the connection's products, status and whether it is automated or assisted before choosing endpoints",
            "Treat a 202 response as data not ready, not as data. Retry with backoff, and expect up to 14 days for an assisted connection's first sync",
            "Stay under 20 requests a minute on organisation endpoints and 12 on pay endpoints across all tokens. Batch IDs, and on 429 wait 60 seconds",
            "After a deduction write, poll the job by `job_id` until it completes before enrolling individuals. Enrolment overwrites an existing enrolment",
            "Start the MCP server with `--code-allow-http-gets` or a token without the benefits product when only reads are intended"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 0,
          "avgRating": 0,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "medium",
              "grade": "BB",
              "methodology": "0.4",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 71.6
            }
          ],
          "editorialScores": {
            "ergonomics": 71,
            "maintenance": 84,
            "payments": 30,
            "reliability": 84,
            "schema": 87,
            "security": 66,
            "transparency": 65
          },
          "provenanceScore": 82
        },
        "connect": {
          "install": "pip install finch-api",
          "http": "curl https://api.tryfinch.com/employer/directory \\\n  -H 'Authorization: Bearer \u003caccess_token\u003e' \\\n  -H 'Finch-API-Version: 2020-09-17'",
          "config": {
            "mcpServers": {
              "finch_api": {
                "args": [
                  "-y",
                  "@tryfinch/finch-api-mcp"
                ],
                "command": "npx",
                "env": {
                  "FINCH_ACCESS_TOKEN": "\u003ca specific connection's access token\u003e"
                }
              }
            }
          }
        },
        "letme": {
          "capability": "https://letme.dev/payroll.employees",
          "tool": "https://letme.dev/finch"
        },
        "area": "domain-data",
        "unitPrices": [
          {
            "item": "Starter, one employer connection",
            "unit": "account-month",
            "usd": 65,
            "note": "read-only, 24 providers, up to 15 connections. Pro and Premier priced by sales"
          }
        ],
        "provenance": {
          "legalEntity": "Profound Platform Inc. (dba Finch)",
          "domain": "tryfinch.com",
          "domainRegistered": "2020-03-30",
          "endpointOnVendorDomain": true,
          "terms": "https://www.tryfinch.com/legal/msa",
          "privacy": "https://www.tryfinch.com/legal/privacy",
          "statusPage": "https://status.tryfinch.com",
          "changelog": "https://developer.tryfinch.com/changelog",
          "securityTxt": "none",
          "checked": "2026-10-08",
          "notes": [
            "The Master Service Agreement (last updated 7 August 2026) names Profound Platform Inc. (dba Finch), a Delaware corporation. The site footer reads Finch Inc.",
            "The site also publishes Terms of Service dated 24 March 2022 at tryfinch.com/legal/terms, which cover the website and self-serve use, a DPA dated 7 August 2026 at /legal/dpa and a Service Level Description at /legal/sla.",
            "The privacy policy (effective 31 July 2025) gives the address 2261 Market Street #4127, San Francisco, CA 94114, and says Finch processes developer customers' end-user data only on their behalf.",
            "www.tryfinch.com/.well-known/security.txt and tryfinch.com/.well-known/security.txt return 404.",
            "The API answers at api.tryfinch.com and Finch Connect at connect.tryfinch.com.",
            "RDAP for tryfinch.com gives a registration date of 2020-03-30 and Squarespace Domains II LLC as registrar."
          ],
          "score": 82
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/finch.json",
        "live": {
          "slug": "finch",
          "probe": {
            "target": "https://api.tryfinch.com",
            "method": "get",
            "lastAt": "2026-10-08T17:36:36.041396741Z",
            "lastOk": true,
            "lastStatus": 400,
            "lastMs": 457,
            "authRequired": false,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 457,
            "p95ms24h": 490,
            "samples24h": 2,
            "samples30d": 2,
            "days": [
              {
                "date": "2026-10-08",
                "probes": 2,
                "ok": 2
              }
            ]
          },
          "vendorStatus": {
            "page": "https://status.tryfinch.com",
            "indicator": "none",
            "summary": "All Systems Operational",
            "checkedAt": "2026-10-08T17:39:03.575529638Z"
          },
          "updatedAt": "2026-10-08T17:39:03.575529638Z"
        }
      },
      {
        "slug": "check-payroll",
        "name": "Check",
        "vendor": "Check Technologies, Inc.",
        "vendorUrl": "https://www.checkhq.com",
        "kind": "http-api",
        "category": "payroll",
        "summary": "Check is an embedded payroll API from Check Technologies in New York. Software platforms build US payroll on it for their own customers, with tax calculation, payment and filing handled by Check. Access is by partner agreement.",
        "url": "https://www.anchorterminal.com/tools/check-payroll",
        "markdownUrl": "https://www.anchorterminal.com/tools/check-payroll.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/check-payroll.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/check-payroll.json",
        "repo": "https://github.com/check-technologies/mcp-server-check",
        "license": "Proprietary service under Check's terms of service and partner agreement. The MCP server and CLI on GitHub are MIT",
        "transports": [
          "http"
        ],
        "remoteUrl": "https://api.checkhq.com",
        "packages": [],
        "auth": "mixed",
        "authNotes": "A partner API key sent as `Authorization: Bearer`, one for sandbox and one for production, issued by Check after a request through its sales contact. The key carries the whole partner account, with no per-key scopes found. Check says unused keys expire, last activity is shown and IP restrictions can be set through the account team. Integration partners get OAuth tokens (authorisation code grant, with refresh tokens) limited to one employer and one permission level, after a Check partner authorises them. The hosted MCP server accepts the API key or a Console OAuth login that runs with the Console user's permissions. This listing grades embedded-payroll partner access. Check has no route to an existing employer's payroll account outside a partner platform.",
        "pricing": "paid",
        "pricingNotes": "No public prices. checkhq.com/pricing returns 404 and the site's buttons open a sales contact form. A sandbox exists at sandbox.checkhq.com under a Sandbox User Agreement, but the documentation says to request an API key from Check, so an agent can't start without a person contacting sales. Production needs a partner agreement. The Usage API reports billable companies, employees and contractors each month, with no unit price published (checked 2026-10-08).",
        "priceSummary": "Paid",
        "where": "hosted",
        "x402": {
          "level": "no",
          "evidence": "No x402, MPP or L402 in the documentation index, the API reference pages read or the website (checked 2026-10-08).",
          "endpoints": []
        },
        "toolCount": null,
        "popularity": {
          "githubStars": 18,
          "npmWeekly": null,
          "pypiWeekly": null,
          "asOf": "2026-10-08"
        },
        "docsUrl": "https://docs.checkhq.com",
        "llmsTxt": "https://docs.checkhq.com/llms.txt",
        "capabilities": [
          "payroll.run",
          "payroll.employees",
          "payroll.embedded",
          "payroll.tax-filing",
          "payroll.contractors"
        ],
        "tags": [
          "hosted",
          "embedded-payroll",
          "us-payroll",
          "api-key",
          "oauth",
          "mcp",
          "llms-txt",
          "sandbox",
          "webhooks",
          "sales-led",
          "partner-approval",
          "status-page",
          "bug-bounty",
          "soc2"
        ],
        "lastRelease": "2026-10-07",
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 67.5,
          "grade": "B",
          "agentReady": false,
          "rank": 193,
          "ranked": true,
          "rankOf": 629,
          "categoryRank": 2,
          "methodology": "0.4",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 83,
            "maintenance": 72,
            "payments": 5,
            "reliability": 80,
            "schema": 78,
            "security": 74,
            "transparency": 62
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "medium",
            "date": "2026-10-08"
          },
          "negative": 0,
          "verdict": "Graded as embedded payroll through a partner API key, not access to an existing employer's payroll account. The API has idempotency keys on writes, a required preview before approval and queryable request logs. No price is public, a sandbox key comes through Check's sales team, and one API key carries the whole partner account.",
          "bestFor": "A software platform that wants to sell US payroll inside its own product and can sign a partnership, with Check handling tax calculation, money movement and filings.",
          "strengths": [
            "`X-Idempotency-Key` is accepted on writes and stored for 24 hours, and a 429 carries `Retry-After` with `RateLimit-Limit` and `RateLimit-Remaining` on every authenticated response",
            "A payroll must have a succeeded preview before approval, and `preview_started_at` makes approval fail with 409 `preview_superseded` if the preview is stale",
            "Every response carries `X-Request-Log-Id`, and GET /logs returns request logs with SSNs, bank account numbers and the `Authorization` header redacted",
            "The MCP server starts with three meta-tools over 270 tools, with read-only mode, toolset filters and optional confirmation for destructive tools",
            "llms.txt indexes the documentation, and each page is served as Markdown with an OpenAPI 3.1 fragment per operation"
          ],
          "weaknesses": [
            "No public price and no self-serve signup. The documentation says to request an API key through Check's sales contact",
            "An API key carries the whole partner account. No per-key scopes or read-only keys were found in the reviewed documentation",
            "No official SDK in a general programming language was found. The CLI and MCP server install from a git clone, not from PyPI",
            "No SLA is published. The terms of service make no representation about uptime unless agreed in writing",
            "No sub-processor list, hosting location or published DPA text was found, and the privacy policy states no retention periods"
          ],
          "agentNotes": [
            "Use https://sandbox.checkhq.com with the sandbox key and https://api.checkhq.com with the production key. A key is not valid across environments",
            "Preview a payroll before approving it, then pass `preview_started_at` to POST /payrolls/{id}/approve so a stale preview fails with 409",
            "Send `X-Idempotency-Key` on every write. Keys expire after 24 hours, so list the resource before retrying later than that",
            "On 429 wait for `Retry-After`. The limit is 10 requests a second in sandbox and for partners paying fewer than 1,000 payees a month, with 100 concurrent requests",
            "Connect the MCP server with `?read_only=true` or `X-MCP-Readonly: true` unless writes are intended. In production, approving a payroll moves money"
          ],
          "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": 67.5
            }
          ],
          "editorialScores": {
            "ergonomics": 83,
            "maintenance": 72,
            "payments": 5,
            "reliability": 80,
            "schema": 78,
            "security": 74,
            "transparency": 38
          },
          "provenanceScore": 86
        },
        "connect": {
          "http": "curl -X POST https://sandbox.checkhq.com/companies \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer \u003cAPI_KEY\u003e' \\\n  -d '{\"address\": {\"line1\": \"20 W 34th St\", \"postal_code\": \"10001\", \"city\": \"New York\", \"state\": \"NY\"}, \"start_date\": \"2020-05-20\", \"trade_name\": \"Good Web Design\", \"legal_name\": \"Good Web Design, Inc.\"}'",
          "claudeCode": "claude mcp add --transport http check https://mcp.sandbox.checkhq.com/check/mcp \\\n  --header \"Authorization: Bearer your-api-key-here\"",
          "config": {
            "mcpServers": {
              "check": {
                "type": "url",
                "url": "https://mcp.sandbox.checkhq.com/check/mcp"
              }
            }
          }
        },
        "letme": {
          "capability": "https://letme.dev/payroll.run",
          "tool": "https://letme.dev/check-payroll"
        },
        "area": "domain-data",
        "provenance": {
          "legalEntity": "Check Technologies, Inc.",
          "domain": "checkhq.com",
          "domainRegistered": "2006-10-28",
          "endpointOnVendorDomain": true,
          "terms": "https://www.checkhq.com/company/terms",
          "privacy": "https://www.checkhq.com/company/privacy",
          "statusPage": "https://status.checkhq.com",
          "changelog": "https://www.checkhq.com/resources/changelog",
          "securityTxt": "none",
          "checked": "2026-10-08",
          "notes": [
            "The privacy policy (effective 18 April 2024) names Check Technologies, Inc., 228 Park Ave. S, PMB 14961, New York, NY 10003. The site footer also names Check Payments LLC (NMLS #2103307).",
            "The terms of service are dated 3 September 2021. Sandbox use is also governed by a Sandbox User Agreement at checkhq.com/company/sandbox-user-agreement.",
            "www.checkhq.com/.well-known/security.txt and checkhq.com/.well-known/security.txt return 404. The security page sends vulnerability reports to a bug bounty at federacy.com/check.",
            "The API answers at api.checkhq.com and sandbox.checkhq.com, and the hosted MCP server at mcp.checkhq.com and mcp.sandbox.checkhq.com.",
            "RDAP for checkhq.com gives a registration date of 2006-10-28 and Squarespace Domains II LLC as registrar."
          ],
          "score": 86
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/check-payroll.json",
        "live": {
          "slug": "check-payroll",
          "probe": {
            "target": "https://api.checkhq.com",
            "method": "get",
            "lastAt": "2026-10-08T17:36:32.936658386Z",
            "lastOk": true,
            "lastStatus": 200,
            "lastMs": 1040,
            "authRequired": false,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 728,
            "p95ms24h": 1040,
            "samples24h": 25,
            "samples30d": 25,
            "days": [
              {
                "date": "2026-10-08",
                "probes": 25,
                "ok": 25
              }
            ]
          },
          "vendorStatus": {
            "page": "https://status.checkhq.com",
            "indicator": "none",
            "summary": "All Systems Operational",
            "checkedAt": "2026-10-08T17:38:15.489912499Z"
          },
          "githubStars": 18,
          "securityTxt": {
            "url": "https://checkhq.com/.well-known/security.txt",
            "state": "none",
            "checkedAt": "2026-10-08T15:38:31.878118114Z"
          },
          "updatedAt": "2026-10-08T17:38:15.489912499Z"
        }
      },
      {
        "slug": "gusto",
        "name": "Gusto",
        "vendor": "Gusto, Inc.",
        "vendorUrl": "https://gusto.com",
        "kind": "http-api",
        "category": "payroll",
        "summary": "Gusto Embedded Payroll is a REST API for running US payroll inside another product, covering company and worker onboarding, payroll calculation and submission, tax filing and contractor payments. Production access needs a partnership with Gusto. A demo environment is self-serve.",
        "url": "https://www.anchorterminal.com/tools/gusto",
        "markdownUrl": "https://www.anchorterminal.com/tools/gusto.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/gusto.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/gusto.json",
        "repo": "https://github.com/Gusto/gusto-typescript-client",
        "license": "Proprietary service under Gusto's API Policy and Developer Terms of Service. The API clients on GitHub are MIT, and the React SDK and the Gusto CLI are Apache-2.0",
        "transports": [
          "http"
        ],
        "packages": [
          {
            "registry": "npm",
            "name": "@gusto/embedded-api"
          },
          {
            "registry": "npm",
            "name": "@gusto/embedded-react-sdk"
          },
          {
            "registry": "pypi",
            "name": "gusto-embedded"
          }
        ],
        "auth": "oauth",
        "authNotes": "Graded on the Embedded Payroll API, which needs a partnership. A developer signs up at dev.gusto.com, creates an organisation and an application, and gets a client ID and secret for the demo environment. POST /oauth/token with `grant_type` system_access returns a two-hour system token for partner-level calls, and creating a partner-managed company returns an access and refresh token pair for that company alone. Scopes are assigned by Gusto, and production keys follow commercial, security and implementation reviews. Access to an existing employer's Gusto account is separate. Partner apps use the App Integrations API with the OAuth 2.0 authorisation code grant after Production Pre-Approval and a security review. A customer's own company is reached through the Gusto CLI or the Gusto MCP server, which sign in by OAuth with dynamic client registration and PKCE.",
        "pricing": "paid",
        "pricingNotes": "No price could be read. gusto.com and embedded.gusto.com answered our reader with a bot check, and the developer docs carry no figures. The introduction says commercial conversations are required before production, and an invoices endpoint returns the active companies used to calculate a partner's invoice. The demo environment is open to any developer with a Developer Portal account, with generated demo companies and no contract (checked 2026-10-08).",
        "priceSummary": "Paid",
        "where": "local",
        "x402": {
          "level": "no",
          "evidence": "No x402, MPP or L402 in the developer docs, the API reference or the llms.txt index (checked 2026-10-08).",
          "endpoints": []
        },
        "toolCount": null,
        "popularity": {
          "githubStars": 2,
          "npmWeekly": 24731,
          "pypiWeekly": null,
          "asOf": "2026-10-08"
        },
        "docsUrl": "https://docs.gusto.com/embedded-payroll/docs/introduction",
        "llmsTxt": "https://docs.gusto.com/llms.txt",
        "capabilities": [
          "payroll.run",
          "payroll.employees",
          "payroll.embedded",
          "payroll.tax-filing",
          "payroll.contractors",
          "hr.onboarding",
          "hr.time-off"
        ],
        "tags": [
          "hosted",
          "payroll",
          "oauth",
          "partner-approval",
          "sandbox",
          "llms-txt",
          "webhooks",
          "typescript",
          "python",
          "java",
          "csharp",
          "ruby",
          "mcp",
          "cli",
          "status-page"
        ],
        "lastRelease": "2026-10-01",
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 63.3,
          "grade": "B",
          "agentReady": false,
          "rank": 283,
          "ranked": true,
          "rankOf": 629,
          "categoryRank": 3,
          "methodology": "0.4",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 82,
            "maintenance": 76,
            "payments": 15,
            "reliability": 58,
            "schema": 86,
            "security": 60,
            "transparency": 61
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "medium",
            "date": "2026-10-08"
          },
          "negative": 0,
          "verdict": "This listing covers the Embedded Payroll API. Every reference page carries an OpenAPI 3.1 definition, payroll is calculated as a preview before submission, and each API version gets 12 months of deprecation support. Production needs commercial and security approval, no price was readable, and the status page lists 11 incidents between 14 July and 5 October 2026, five marked major.",
          "bestFor": "A software platform that wants to run US payroll for its own customers and can pass Gusto's partner reviews.",
          "strengths": [
            "Each of 317 reference pages serves an OpenAPI 3.1 definition as Markdown, and llms.txt indexes both documentation projects",
            "Payroll runs in steps (prepare, calculate, submit). Calculate returns a preview with `submission_blockers` before any money moves",
            "Each API version gets 12 months of phased support after deprecation, with dates published and `Deprecation`, `Sunset` and `Link` response headers",
            "Company access tokens work for one company only, expire after two hours and rotate the refresh token on use",
            "Rate limit of 200 requests a minute per application and user, with `Retry-After` and `X-RateLimit-*` headers on responses"
          ],
          "weaknesses": [
            "Production keys need commercial, security and implementation reviews with Gusto's partnerships team, and the docs say not all use cases are supported",
            "The Embedded API status page lists 11 incidents between 14 July and 5 October 2026, five marked major, one titled a complete outage",
            "No price was readable. gusto.com and embedded.gusto.com answered our reader with a bot check, and the docs carry no figures",
            "Idempotency keys were found only on the People Batch endpoint. Other POST calls rely on the caller not repeating them",
            "The five API clients are labelled beta, and the README warns of breaking changes without notice"
          ],
          "agentNotes": [
            "Develop against https://api.gusto-demo.com. Production at https://api.gusto.com needs keys Gusto issues after its reviews",
            "Send `X-Gusto-API-Version: 2026-06-15` on every call. Without it the application's minimum version applies",
            "Send the resource's current `version` with every PUT, and only the fields to change. A stale version returns 409",
            "Calculate and submit return 202. Poll GET on the payroll until `calculated_at` is set or the status is processed, and read `submission_blockers` first",
            "For a company already on Gusto, the Embedded API is the wrong route. Use the Gusto CLI or the MCP server at https://mcp.api.gusto.com, which draft payroll but can't submit it"
          ],
          "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": 63.3
            }
          ],
          "editorialScores": {
            "ergonomics": 82,
            "maintenance": 76,
            "payments": 15,
            "reliability": 58,
            "schema": 86,
            "security": 60,
            "transparency": 44
          },
          "provenanceScore": 77
        },
        "connect": {
          "install": "npm add @gusto/embedded-api",
          "http": "curl --location --request POST 'https://api.gusto-demo.com/oauth/token' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n  \"client_id\": \"{{client_id}}\",\n  \"client_secret\": \"{{client_secret}}\",\n  \"grant_type\": \"system_access\"\n}'"
        },
        "letme": {
          "capability": "https://letme.dev/payroll.run",
          "tool": "https://letme.dev/gusto"
        },
        "area": "domain-data",
        "provenance": {
          "legalEntity": "Gusto, Inc.",
          "domain": "gusto.com",
          "domainRegistered": "1995-08-23",
          "endpointOnVendorDomain": true,
          "terms": "https://gusto.com/about/terms/developer-terms-of-service",
          "privacy": "",
          "statusPage": "https://gustoapi.statuspage.io",
          "changelog": "https://docs.gusto.com/embedded-payroll/changelog",
          "securityTxt": "unknown",
          "checked": "2026-10-08",
          "notes": [
            "The NOTICE file in Gusto/gusto-cli reads Copyright 2026 Gusto, Inc.",
            "Production calls go to https://api.gusto.com. The demo environment is on a separate domain, api.gusto-demo.com.",
            "The terms URL is the one named in the OpenAPI definitions on the reference pages. gusto.com answered our reader with a bot check, so the terms, the privacy policy and /.well-known/security.txt weren't read.",
            "The API Policy published in the docs is dated 11 July 2022 and refers to Gusto's Privacy Policy without a readable link.",
            "RDAP for gusto.com gives a registration date of 1995-08-23.",
            "The docs embed https://gustoapi.statuspage.io as the API status page. status.gusto.com covers the Gusto product and also lists an API component."
          ],
          "score": 77
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/gusto.json",
        "live": {
          "slug": "gusto",
          "vendorStatus": {
            "page": "https://gustoapi.statuspage.io",
            "indicator": "none",
            "summary": "All Systems Operational",
            "checkedAt": "2026-10-08T17:24:29.982818447Z"
          },
          "versions": [
            {
              "registry": "github",
              "name": "Gusto/gusto-typescript-client",
              "version": "gusto_embedded_v_2025_11_15/v0.3.2",
              "released": "2026-10-01",
              "seenAt": "2026-10-08T16:15:29.553541966Z"
            },
            {
              "registry": "npm",
              "name": "@gusto/embedded-api",
              "version": "0.16.2",
              "seenAt": "2026-10-08T16:15:25.588820008Z"
            },
            {
              "registry": "npm",
              "name": "@gusto/embedded-react-sdk",
              "version": "0.56.5",
              "seenAt": "2026-10-08T16:15:29.142122622Z"
            },
            {
              "registry": "pypi",
              "name": "gusto-embedded",
              "version": "0.2.4",
              "released": "2025-04-16",
              "seenAt": "2026-10-08T16:15:29.349450484Z"
            }
          ],
          "githubStars": 2,
          "npmWeekly": 24731,
          "pypiWeekly": 104,
          "securityTxt": {
            "url": "https://gusto.com/.well-known/security.txt",
            "state": "unknown",
            "checkedAt": "2026-10-08T15:38:35.992448629Z"
          },
          "updatedAt": "2026-10-08T17:24:29.982818447Z"
        }
      },
      {
        "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": 565,
          "ranked": true,
          "rankOf": 629,
          "categoryRank": 4,
          "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-08T17:36:44.829993606Z",
            "lastOk": true,
            "lastStatus": 401,
            "lastMs": 451,
            "lastNote": "asks for credentials",
            "authRequired": true,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 458,
            "p95ms24h": 539,
            "samples24h": 25,
            "samples30d": 25,
            "days": [
              {
                "date": "2026-10-08",
                "probes": 25,
                "ok": 25
              }
            ]
          },
          "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"
          },
          "updatedAt": "2026-10-08T17:36:44.829993606Z"
        }
      },
      {
        "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": 569,
          "ranked": true,
          "rankOf": 629,
          "categoryRank": 5,
          "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-08T17:36:49.711066817Z",
            "lastOk": true,
            "lastStatus": 200,
            "lastMs": 626,
            "authRequired": false,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 585,
            "p95ms24h": 700,
            "samples24h": 25,
            "samples30d": 25,
            "days": [
              {
                "date": "2026-10-08",
                "probes": 25,
                "ok": 25
              }
            ]
          },
          "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"
          },
          "updatedAt": "2026-10-08T17:36:49.711066817Z"
        }
      }
    ]
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/categories/payroll",
    "json": "https://www.anchorterminal.com/categories/payroll.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/categories/payroll.md",
    "slim": "https://www.anchorterminal.com/categories/payroll.min.md"
  },
  "markdown": "Payroll run through an API. Embedded payroll that a software platform builds on, and APIs that reach an employer's existing payroll account. Compared on what can be read and written, how a payroll is previewed and approved, and the partner or approval steps before access.\n\n- Tools ranked: 5 · agent-ready (BB or better): 1 · accept x402: 0 · hosted endpoints: 4 · desk reviews by the panel: 0\n- JSON: https://www.anchorterminal.com/api/v1/tools.json (list) · https://www.anchorterminal.com/api/v1/rankings.json (ranked) · https://www.anchorterminal.com/api/v1/x402.json (payable) · https://www.anchorterminal.com/api/v1/capabilities.json (by capability)\n- Grades run AA, A, BB, B, C, D, E, F · methodology: https://www.anchorterminal.com/benchmark/\n\n- Capabilities in this category: payroll.run, payroll.employees, payroll.embedded, payroll.tax-filing, payroll.contractors\n- https://letme.dev/payroll.run picks the top-graded tool in this list and says how to call it direct; calling through letme comes later (https://www.anchorterminal.com/letme/index.md)\n\n## Ranking\n\n| # | Tool | Vendor | Kind | Category | Grade | Score | Confidence | x402 | Auth | Where | Reviews | Page |\n| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |\n| 99 | Finch | Profound Platform Inc. (dba Finch) | HTTP API | Payroll | BB | 71.6 | medium | no | OAuth | hosted + local | none | https://www.anchorterminal.com/tools/finch.md |\n| 193 | Check | Check Technologies, Inc. | HTTP API | Payroll | B | 67.5 | medium | no | OAuth or key | hosted | none | https://www.anchorterminal.com/tools/check-payroll.md |\n| 283 | Gusto | Gusto, Inc. | HTTP API | Payroll | B | 63.3 | medium | no | OAuth | local | none | https://www.anchorterminal.com/tools/gusto.md |\n| 565 | Salsa | Salsa Software Inc. | HTTP API | Payroll | D | 46.1 | medium | no | API key | hosted | none | https://www.anchorterminal.com/tools/salsa.md |\n| 569 | Zeal | Puzzl Group Inc. | HTTP API | Payroll | E | 45.4 | medium | no | API key | hosted | none | https://www.anchorterminal.com/tools/zeal.md |\n\nScores are from public evidence against the published checklist (https://www.anchorterminal.com/benchmark/), with Performance and Task success pending. p95 latency and context cost come from our probes, which haven't run yet.\n\n## Summaries\n\n### 99. Finch, BB (71.6)\n\nFinch is a unified API for reading an employer's existing HR and payroll system, run by Profound Platform Inc. in San Francisco. Applications read directory, employment and pay data from 250+ systems and write payroll deductions. Graded on the REST API. An employer grants each connection named product permissions, and limits, error codes and a 99.9 per cent uptime SLA are published. Finch reads payroll and writes deductions but cannot run a payroll. Access tokens never expire, no idempotency keys were found, and writes and most providers need a sales-led plan.\n\n- Page: https://www.anchorterminal.com/tools/finch · Markdown: https://www.anchorterminal.com/tools/finch.md · JSON: https://www.anchorterminal.com/api/v1/tools/finch.json\n- Capabilities: payroll.employees, payroll.contractors, hr.employees, hr.org, hr.documents · endpoint: `https://api.tryfinch.com`\n\n### 193. Check, B (67.5)\n\nCheck is an embedded payroll API from Check Technologies in New York. Software platforms build US payroll on it for their own customers, with tax calculation, payment and filing handled by Check. Access is by partner agreement. Graded as embedded payroll through a partner API key, not access to an existing employer's payroll account. The API has idempotency keys on writes, a required preview before approval and queryable request logs. No price is public, a sandbox key comes through Check's sales team, and one API key carries the whole partner account.\n\n- Page: https://www.anchorterminal.com/tools/check-payroll · Markdown: https://www.anchorterminal.com/tools/check-payroll.md · JSON: https://www.anchorterminal.com/api/v1/tools/check-payroll.json\n- Capabilities: payroll.run, payroll.employees, payroll.embedded, payroll.tax-filing, payroll.contractors · endpoint: `https://api.checkhq.com`\n\n### 283. Gusto, B (63.3)\n\nGusto Embedded Payroll is a REST API for running US payroll inside another product, covering company and worker onboarding, payroll calculation and submission, tax filing and contractor payments. Production access needs a partnership with Gusto. A demo environment is self-serve. This listing covers the Embedded Payroll API. Every reference page carries an OpenAPI 3.1 definition, payroll is calculated as a preview before submission, and each API version gets 12 months of deprecation support. Production needs commercial and security approval, no price was readable, and the status page lists 11 incidents between 14 July and 5 October 2026, five marked major.\n\n- Page: https://www.anchorterminal.com/tools/gusto · Markdown: https://www.anchorterminal.com/tools/gusto.md · JSON: https://www.anchorterminal.com/api/v1/tools/gusto.json\n- Capabilities: payroll.run, payroll.employees, payroll.embedded, payroll.tax-filing, payroll.contractors, hr.onboarding, hr.time-off\n\n### 565. Salsa, D (46.1)\n\nEmbedded 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. 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- Page: https://www.anchorterminal.com/tools/salsa · Markdown: https://www.anchorterminal.com/tools/salsa.md · JSON: https://www.anchorterminal.com/api/v1/tools/salsa.json\n- Capabilities: payroll.run, payroll.embedded, payroll.employees, payroll.tax-filing, payroll.contractors · endpoint: `https://api.salsa.dev/api/rest/v1`\n\n### 569. Zeal, E (45.4)\n\nZeal 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. 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- Page: https://www.anchorterminal.com/tools/zeal · Markdown: https://www.anchorterminal.com/tools/zeal.md · JSON: https://www.anchorterminal.com/api/v1/tools/zeal.json\n- Capabilities: payroll.run, payroll.embedded, payroll.employees, payroll.contractors, payroll.tax-filing, hr.onboarding · endpoint: `https://api.zeal.com`\n\n## How we test this category\n\nOne test employer with three workers in each listing's sandbox. The same tasks run through its API (onboard a worker, enter hours, preview a payroll, approve it, read the pay statements). We check the calculation preview, approval steps and the onboarding needed for production. In this run listings are graded from public evidence against the published checklist. This test hasn't run yet, so Task success is pending and the grades here come from the categories assessed from public evidence.\n\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": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Payroll infrastructure",
        "url": ""
      }
    ],
    "description": "5 payroll infrastructure listings ranked by the Anchor benchmark. Leader Finch (BB). Payroll run through an API. Embedded payroll that a software platform builds on, and APIs that reach an employer's existing payroll account. Compared on what can be read and written, how a payroll is previewed and approved, and the partner or approval steps before access.",
    "facts": [
      "Finch BB",
      "Check B",
      "Gusto B"
    ],
    "h1": "Payroll APIs and embedded payroll for AI agents",
    "image": "https://www.anchorterminal.com/assets/og/categories-payroll.png",
    "path": "/categories/payroll",
    "published": "",
    "section": "tools",
    "title": "Payroll APIs and embedded payroll for AI agents, ranked",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/categories/payroll"
  },
  "tokens": {
    "markdown": 2100,
    "slim": 330
  },
  "version": 1
}
