List payroll anomalies
GET/payroll/anomalies
Returns all detected payroll anomalies for the tenant. Anomalies are automatically flagged during payroll calculation (e.g. implausible overtime, duplicate time events, negative net pay, missing bank details). All open anomalies must be resolved before a payroll run can be approved.
Request
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
status | string | No | Filter by anomaly resolution status. Defaults to "open". One of: |
run_id | integer | No | Filter anomalies belonging to a specific payroll run. |
Responses
200 List of payroll anomalies
Content type application/json, array of object · PayrollAnomalyV1.
| Field | Type | Required | Description |
|---|---|---|---|
id | integer | No | |
employee_id | integer, nullable | No | |
run_id | integer, nullable | No | |
type | string | No | Machine-readable anomaly type code (e.g. "overtime_implausible", "negative_net_pay"). |
description | string | No | Human-readable description of the detected issue. |
status | string | No | One of: |
severity | string | No | Severity classification of the anomaly. One of: |
resolution_notes | string, nullable | No | |
detected_at | string (date-time) | No | |
resolved_at | string (date-time), nullable | No |
Example
[
{
"id": 5,
"employee_id": 42,
"run_id": 14,
"type": "overtime_implausible",
"description": "Employee 42 has 68 hours logged this week — exceeds 60-hour weekly cap.",
"status": "open",
"severity": "high",
"detected_at": "2026-04-08T09:30:00Z"
}
]
Example request
curl -X GET "https://{tenant}.faciotech.net/api/v1/payroll/anomalies" \
-H "Accept: application/json"