payroll_run.reopened
A locked pay run was unlocked for correction. Its payslips in scope are reopened one by one, each announced as a payslip event, and the run is locked again afterwards.
{
"id": "evt_01M63JFR5080T3WKRSVRSA0EH4",
"type": "payroll_run.reopened",
"timestamp": "2026-10-29T10:15:00.000Z",
"apiVersion": "2026-10-01",
"organisationId": "org-test-1",
"customerId": "customer-test-1",
"livemode": true,
"data": {
"payrollRunEntryBaseData": {
"organisationId": "org-test-1",
"organisationName": {
"legalName": "Acme Ltd",
"tradingName": null
},
"payFrequency": "Monthly",
"year": 2026,
"period": "7",
"payrollConfigId": "payroll-config-001",
"periodStart": "2026-10-06",
"periodEnd": "2026-11-05",
"payPeriodStart": "2026-10-01",
"payPeriodEnd": "2026-10-31",
"paymentDate": "2026-10-31"
},
"lockCycle": 1,
"scope": "Employees",
"employeeIds": [
"employee-001"
],
"reason": "Overtime missed for one employee",
"unlockedBy": "user-001",
"unlockedDate": "2026-10-29T10:15:00.000Z"
},
"metadata": {
"resourceUrl": "https://api.flowpayroll.ai/v1/payslip/payrun/payroll-config-001/2026/7",
"correlationId": "01K6B3N8Z4Q2W7X5Y9T1V3M6RA",
"documentUrl": null,
"payloadStyle": "Full",
"payloadDowngraded": false,
"dateFormat": "yyyy-MM-dd",
"dateTimeFormat": "yyyy-MM-ddTHH:mm:ss.fffZ"
}
}Headers
Space-delimited signatures over {id}.{timestamp}.{body}: every v1,{base64} HMAC-SHA256 entry, then every v1a,{base64} ed25519 entry. Verify v1a with the endpoint's public key, which we recommend because a receiver holding only a public key cannot sign events, or v1 with the signing secret, comparing in constant time. More than one of each appears during a secret rotation; accepting any match rotates with no downtime.
Body
The signed event envelope. The body is byte-identical across every delivery attempt; verify the signature against these raw bytes.
Response
Any 2xx acknowledges receipt. Respond quickly and do the work asynchronously: an attempt that has not finished within 15 seconds counts as failed.
Was this page helpful?
{
"id": "evt_01M63JFR5080T3WKRSVRSA0EH4",
"type": "payroll_run.reopened",
"timestamp": "2026-10-29T10:15:00.000Z",
"apiVersion": "2026-10-01",
"organisationId": "org-test-1",
"customerId": "customer-test-1",
"livemode": true,
"data": {
"payrollRunEntryBaseData": {
"organisationId": "org-test-1",
"organisationName": {
"legalName": "Acme Ltd",
"tradingName": null
},
"payFrequency": "Monthly",
"year": 2026,
"period": "7",
"payrollConfigId": "payroll-config-001",
"periodStart": "2026-10-06",
"periodEnd": "2026-11-05",
"payPeriodStart": "2026-10-01",
"payPeriodEnd": "2026-10-31",
"paymentDate": "2026-10-31"
},
"lockCycle": 1,
"scope": "Employees",
"employeeIds": [
"employee-001"
],
"reason": "Overtime missed for one employee",
"unlockedBy": "user-001",
"unlockedDate": "2026-10-29T10:15:00.000Z"
},
"metadata": {
"resourceUrl": "https://api.flowpayroll.ai/v1/payslip/payrun/payroll-config-001/2026/7",
"correlationId": "01K6B3N8Z4Q2W7X5Y9T1V3M6RA",
"documentUrl": null,
"payloadStyle": "Full",
"payloadDowngraded": false,
"dateFormat": "yyyy-MM-dd",
"dateTimeFormat": "yyyy-MM-ddTHH:mm:ss.fffZ"
}
}