---
title: "Approve a payroll run (admin/approver only)"
method: POST
path: "/payroll/approve"
tags: ["Payroll"]
---

# Approve a payroll run (admin/approver only)

`POST /payroll/approve`

NOT available to API keys — requires an interactive admin/approver session. Approves a drafted payroll run for payment and reporting. API keys (even write-scoped ones) receive 403.

## Request body

- object
  - `customer_id` string — Target company. Optional for single-company sessions.
  - `period` string, required — Payroll period, `YYYY-MM`.
  - `run_id` string, required — The drafted run to approve.
  - `idempotency_key` string — Client-chosen key to deduplicate retries.

## Response `200`

Updated payroll workspace with the approved run.

- PayrollWorkspaceData — The payroll workspace for a period: employees, employer settings, and runs. Amounts are integer cents; rates are basis points. Interior shapes beyond the top level vary and are returned as-is.

## Other responses

- `401` — Missing or invalid bearer token.
- `403` — Insufficient scope or role — e.g. a read-scoped key on a mutating method, or an API key on an admin/approver-only endpoint.

---

[API](https://skmtc.net/lastaccountingcompany/apis/lac-customer-api.md) · [All operations](https://skmtc.net/lastaccountingcompany/apis/lac-customer-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/lastaccountingcompany/lac-customer-api/versions/52e277b4f031/schema)
