Skip to content

Create payroll run

POST/payroll/runs

Creates a new payroll run for the specified pay period. After creation, the run enters draft status while calculations are computed. Trigger the approval workflow once the run is verified and anomalies are resolved.

Request

Request body

Content type application/json (required).

FieldTypeRequiredDescription
namestringYes

Max length: 255

period_startstring (date)Yes
period_endstring (date)Yes
pay_datestring (date)Yes
currencystringNo

Default: "GHS" · Max length: 3

notesstringNo

Example

{
  "name": "April 2026 Payroll",
  "period_start": "2026-04-01",
  "period_end": "2026-04-30",
  "pay_date": "2026-04-30",
  "currency": "GHS",
  "notes": "First run after Q1 salary review."
}

Responses

201 Payroll run created in draft status

Content type application/json, object · PayrollRunV1.

FieldTypeRequiredDescription
idintegerNo
namestringNo

Human-readable label for this run (e.g. "April 2026 Payroll").

period_startstring (date)No
period_endstring (date)No
pay_datestring (date)No

Date on which employee payments are to be disbursed.

statusstringNo

One of: "draft", "pending_approval", "approved", "paid", "cancelled"

employee_countinteger, nullableNo

Number of employees included in this run.

gross_totalnumber (float), nullableNo
net_totalnumber (float), nullableNo
currencystringNo

Max length: 3

notesstring, nullableNo
created_atstring (date-time)No

422 Validation failed — check period dates or currency code

Example request

curl -X POST "https://{tenant}.faciotech.net/api/v1/payroll/runs" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"name": "April 2026 Payroll", "period_start": "2026-04-01", "period_end": "2026-04-30", "pay_date": "2026-04-30", "currency": "GHS", "notes": "First run after Q1 salary review."}'
Loading