{
 "categories": [
  "payroll",
  "hr"
 ],
 "deployment": "saas",
 "evidence": [
  {
   "date": "2026-10-14",
   "fact": "homepage",
   "note": "zenegy.com presents Zenegy as Danish accounting, payroll, and expense software, and describes scalable payroll integrated with Skat.",
   "source": "https://zenegy.com/",
   "tier": "declared"
  },
  {
   "date": "2026-10-14",
   "fact": "vendor",
   "note": "The homepage identifies the product as Zenegy.",
   "source": "https://zenegy.com/",
   "tier": "declared"
  },
  {
   "date": "2026-10-14",
   "fact": "license",
   "note": "The homepage prices the combined platform from 49 DKK per month. No public free plan was stated on the opened page.",
   "source": "https://zenegy.com/",
   "tier": "declared"
  },
  {
   "date": "2026-10-14",
   "fact": "modalities.api.exists",
   "note": "The payroll guide documents create, control, report, and run endpoints for a Danish payroll run.",
   "source": "https://developers.zenegy.com/docs/payroll",
   "tier": "declared"
  },
  {
   "date": "2026-10-14",
   "fact": "modalities.api.kinds[0]",
   "note": "Authenticated calls are HTTP requests to https://api.zenegy.com with Authorization: Bearer. The payroll guide uses JSON bodies.",
   "source": "https://developers.zenegy.com/docs/authentication",
   "tier": "declared"
  },
  {
   "date": "2026-10-14",
   "fact": "modalities.api.auth[0]",
   "note": "Zenegy uses OAuth 2.0 authorization code. Production Payroll-DK authorize and token hosts are https://auth.zenegy.com. The token response includes an access token and a refresh token.",
   "source": "https://developers.zenegy.com/docs/authentication",
   "tier": "declared"
  },
  {
   "date": "2026-10-14",
   "fact": "modalities.api.coverage",
   "note": "The guide covers draft, control, and run for Danish payroll types, including Skat filing. Numbers is a different API host. Running payroll requires an SMS verification code.",
   "source": "https://developers.zenegy.com/docs/payroll",
   "tier": "declared"
  },
  {
   "date": "2026-10-14",
   "fact": "modalities.data_access.export[0]",
   "note": "The token response is JSON, and payroll reads are HTTP GET calls with a bearer token.",
   "source": "https://developers.zenegy.com/docs/authentication",
   "tier": "declared"
  },
  {
   "date": "2026-10-14",
   "fact": "modalities.data_access.export[1]",
   "note": "Control reports other than payslips are CSV, except the deviation report which can be PDF or CSV. Payslips are a zip.",
   "source": "https://developers.zenegy.com/docs/payroll",
   "tier": "declared"
  },
  {
   "date": "2026-10-14",
   "fact": "modalities.data_access.import[0]",
   "note": "Create payroll accepts a JSON body with type, dates, and selected employee ids.",
   "source": "https://developers.zenegy.com/docs/payroll",
   "tier": "declared"
  },
  {
   "date": "2026-10-14",
   "fact": "verdict.scores.api",
   "note": "Draft and control are documented HTTP operations. The run step needs a verification code from an SMS to the logged-in user, so unattended completion is gated.",
   "source": "https://developers.zenegy.com/docs/payroll",
   "tier": "declared"
  },
  {
   "date": "2026-10-14",
   "fact": "freshness.watch[0].url",
   "note": "Opened the Payroll API guide, including payroll types, control reports, and the verification-code run step.",
   "source": "https://developers.zenegy.com/docs/payroll",
   "tier": "declared"
  },
  {
   "date": "2026-10-14",
   "fact": "freshness.watch[1].url",
   "note": "Opened the authentication guide, including Payroll-DK production hosts and the authorization-code token exchange.",
   "source": "https://developers.zenegy.com/docs/authentication",
   "tier": "declared"
  },
  {
   "date": "2026-10-14",
   "fact": "freshness.watch[2].url",
   "note": "Opened the Zenegy homepage, including the payroll description and the from-49-DKK price.",
   "source": "https://zenegy.com/",
   "tier": "declared"
  }
 ],
 "freshness": {
  "last_verified": "2026-10-14",
  "volatility": "medium",
  "watch": [
   {
    "type": "docs",
    "url": "https://developers.zenegy.com/docs/payroll"
   },
   {
    "type": "docs",
    "url": "https://developers.zenegy.com/docs/authentication"
   },
   {
    "type": "product",
    "url": "https://zenegy.com/"
   }
  ]
 },
 "homepage": "https://zenegy.com/",
 "id": "zenegy-payroll",
 "license": "commercial",
 "modalities": {
  "agent_docs": {
   "llms_txt": "unknown"
  },
  "api": {
   "auth": [
    "oauth2"
   ],
   "coverage": "partial",
   "docs": "https://developers.zenegy.com/docs/payroll",
   "exists": true,
   "kinds": [
    "rest"
   ]
  },
  "cli": {
   "exists": "unknown"
  },
  "computer_use": {
   "issues": [],
   "viability": "unknown"
  },
  "data_access": {
   "export": [
    "json",
    "csv"
   ],
   "import": [
    "json"
   ]
  },
  "extensibility": {
   "scripting": [],
   "webhooks": "unknown"
  },
  "integrations": {
   "make": "unknown",
   "n8n": "unknown",
   "power_automate": "unknown",
   "zapier": "unknown"
  },
  "mcp": {
   "first_party": "unknown",
   "third_party": [],
   "verdict": "unknown"
  },
  "rpa": {
   "drivability": "unknown",
   "notes": "No repeatable UI probe was run. Draft, control, and run steps for Danish payroll are documented on the Zenegy Payroll API.\n",
   "ui_stack": [
    "web-dom"
   ],
   "vendor_support": []
  },
  "sdk": {
   "exists": "unknown",
   "languages": [],
   "official": "unknown"
  }
 },
 "name": "Zenegy Payroll",
 "platforms": [
  "web"
 ],
 "related": {
  "alternatives": [
   "visma-lonn"
  ],
  "our_products": []
 },
 "schema_version": 1,
 "score_version": 1,
 "status": "active",
 "vendor": "Zenegy",
 "verdict": {
  "best_path": "api",
  "scores": {
   "api": 6,
   "cli": null,
   "computer_use": null,
   "integrations": null,
   "mcp": null,
   "overall": 6,
   "rpa": null
  },
  "summary": "Zenegy Payroll is automatable today through the Payroll API, up to the point where a payroll run needs a verification code. This record is Zenegy Payroll for Denmark. It is not Zenegy Numbers, Zenegy Expense, or Visma L\u00f8n. The homepage sells accounting, payroll, and expenses from 49 DKK per month and says payroll is integrated with Skat. Payroll-DK production auth is https://auth.zenegy.com and the API host is https://api.zenegy.com. Numbers uses a different production API host on the same authentication page. The documented user flow is OAuth 2.0 authorization code. The authorize URL is https://auth.zenegy.com/auth/authorize with response_type=code. The code is exchanged at POST https://auth.zenegy.com/auth/token. The token response is JSON with token_type bearer, a refresh token, and company_id. The example expires_in is 1799. Later calls send Authorization: Bearer. The payroll guide documents monthly, biweekly, B-income, and zero-filing runs, including eIndkomst reporting to Skat. Create payroll accepts a JSON body and returns a payroll id in DraftPreview. Control and report endpoints follow. Payslips download as a zip. Other opened report types are CSV, except the deviation report which can be PDF or CSV. Running the payroll requires ControlFinished status and a verificationCode. The code is requested from POST /api/verification, which sends an SMS to the logged-in user. A company can have only one active payroll per payroll type. No first-party MCP page was opened. iPaaS catalogs were not opened. Computer-use viability is unassessed. The API scores 6 and is the best path. The SMS verification step is the material limit on an unattended run.\n"
 }
}