payslip.finalised
A payslip reached final state and the figures are settled.
{
"id": "evt_01M61H8B90D8HFC35NJ4XY97R8",
"type": "payslip.finalised",
"timestamp": "2026-10-28T15:15:00.000Z",
"apiVersion": "2026-10-01",
"organisationId": "org-test-1",
"customerId": "customer-test-1",
"livemode": true,
"data": {
"organisationId": "org-test-1",
"payrollConfigId": "payroll-config-001",
"recipientDetails": {
"email": "jane.doe@example.com",
"phone": null
},
"payslip": {
"employeeDetails": {
"id": "employee-001",
"name": {
"title": "Ms",
"firstName": "Jane",
"lastName": "Doe",
"initials": "J",
"middleName": null
},
"email": "jane.doe@example.com",
"secondaryEmail": null,
"address": {
"line1": "1 Example Street",
"line2": null,
"city": "Exampletown",
"county": null,
"postcode": "AA1 1AA",
"countryCode": "GB"
},
"birthDate": "1990-01-01",
"birthGender": "Female",
"payrollId": "EMP001",
"employeeCode": null,
"hoursWorkedCategory": "Above30Hours",
"taxCode": {
"code": "1257L",
"effectiveDate": "2026-04-06",
"reason": "Standard",
"issuedBy": "HMRC",
"week1Month1": false
},
"nationalInsuranceCategory": "A",
"nationalInsuranceNumber": "AA000000A",
"passportNumber": null,
"starterDetails": {
"startDate": "2024-09-02",
"starterDeclaration": "ThisIsMyFirstJobSince6thApril",
"secondedDetails": null,
"alreadySentToHmrcFps": true
},
"studentDetails": {
"studentLoanDetails": {
"loanType": "Plan2",
"startDate": "2024-09-02",
"endDate": null
},
"postgraduateLoanDetails": null
},
"directorDetails": null,
"leaverDetails": null,
"workplaceDetails": {
"workplacePostcode": "AA1 1AB"
},
"bankAccounts": [
{
"accountNumber": "00000000",
"sortCode": "00-00-00",
"accountHolderName": "Jane Doe",
"isPrimaryPayrollAccount": true,
"allocationPercentage": 100
}
],
"department": "Operations",
"jobTitle": "Operations Coordinator",
"pensionDetails": {
"employeeId": "employee-001",
"pensionGroupId": "pension-group-001",
"employeePensionRate": 5,
"employerPensionRate": 3,
"pensionType": "NetPayArrangement",
"nationalInsuranceSavingFactor": 0,
"isQualifyingEarnings": true
},
"tags": [],
"isPaymentAfterLeaving": false
},
"employerDetails": {
"id": "org-test-1",
"organisationInformation": {
"organisationId": "org-test-1",
"createdBy": "user-001",
"createdDate": "2024-08-01T09:00:00.000Z",
"updatedBy": "user-001",
"updatedDate": "2026-04-06T09:00:00.000Z",
"name": {
"legalName": "Acme Ltd",
"tradingName": null
},
"organisationType": "Independent",
"companyRegistrationNumber": "00000000",
"businessType": "LimitedCompany",
"registredOfficeAddress": {
"line1": "100 Test Road",
"line2": "Suite 1",
"city": "Exampletown",
"county": null,
"postcode": "AA1 1AB",
"countryCode": "GB"
},
"correspondenceAddress": {
"line1": "100 Test Road",
"line2": "Suite 1",
"city": "Exampletown",
"county": null,
"postcode": "AA1 1AB",
"countryCode": "GB"
},
"companyContactDetails": {
"name": "Acme Ltd payroll",
"email": "payroll@example.com",
"phone": null
},
"primaryContactDetails": {
"name": "John Doe",
"email": "john.doe@example.com",
"phone": null
}
},
"taxReferenceNumbers": {
"employerPayeReference": {
"officeNumber": "000",
"referenceNumber": "AA00000"
},
"accountsOfficeReference": "000PA00000000",
"selfAssessmentUniqueTaxpayerReference": null,
"corporationTaxReferenceUniqueTaxpayerReference": null
}
},
"year": 2026,
"period": 7,
"payrollConfigId": "payroll-config-001",
"frequency": "Monthly",
"summaryItems": [
{
"id": "summary-item-001",
"description": "Salary",
"amount": 2500,
"type": "Employee",
"category": "Earning",
"payRate": 2500,
"payElementId": "pay-element-salary",
"unitName": "Month",
"units": 1,
"chargeRate": null,
"chargeUnits": null,
"chargeValue": null,
"chargeDescription": null,
"date": "2026-10-31",
"isNetDeduction": false,
"tags": [],
"unitType": "Amount",
"originalValue": null,
"lineItemSequence": null,
"courtOrderId": null,
"courtOrderType": null,
"canEdit": true,
"eligibility": null,
"paymentDetails": null,
"attachments": null,
"poNumber": null,
"clientId": null,
"invoiceId": null,
"billingStatus": "None",
"calculationFlags": {
"niType": "Niable",
"payType": "Payable",
"isPensionable": true,
"accrueHoliday": true,
"isClass1ANiable": false,
"subjectToNmwCheck": true,
"taxType": "Taxable"
},
"wasReducedByProtectedEarnings": false,
"tax": null,
"employeeNi": null,
"employeePension": null,
"studentLoan": null,
"postgraduateLoan": null,
"employerNi": null,
"employerClass1ANi": null,
"employerPension": null,
"apprenticeshipLevy": null,
"employmentAllowance": null,
"apprenticeshipLevyAllowance": null,
"pensionSacrificeAmount": null,
"pensionEmployerContribution": null,
"pensionLineType": null,
"ordinaryDebtDeducted": null,
"pensionMetadata": null
},
{
"id": "summary-item-002",
"description": "Employee pension",
"amount": 99,
"type": "Employee",
"category": "Deduction",
"payRate": 99,
"payElementId": "pay-element-pension",
"unitName": "Fixed",
"units": 1,
"chargeRate": null,
"chargeUnits": null,
"chargeValue": null,
"chargeDescription": null,
"date": "2026-10-31",
"isNetDeduction": false,
"tags": [],
"unitType": "Amount",
"originalValue": null,
"lineItemSequence": null,
"courtOrderId": null,
"courtOrderType": null,
"canEdit": true,
"eligibility": null,
"paymentDetails": null,
"attachments": null,
"poNumber": null,
"clientId": null,
"invoiceId": null,
"billingStatus": "None",
"calculationFlags": null,
"wasReducedByProtectedEarnings": false,
"tax": null,
"employeeNi": null,
"employeePension": 99,
"studentLoan": null,
"postgraduateLoan": null,
"employerNi": null,
"employerClass1ANi": null,
"employerPension": 59.4,
"apprenticeshipLevy": null,
"employmentAllowance": null,
"apprenticeshipLevyAllowance": null,
"pensionSacrificeAmount": null,
"pensionEmployerContribution": null,
"pensionLineType": null,
"ordinaryDebtDeducted": null,
"pensionMetadata": null
}
],
"forPeriod": {
"gross": 2500,
"grossTaxable": 2401,
"grossNi": 2500,
"grossForEmployerNi": 2500,
"grossForEmployerClass1ANi": 0,
"grossPensionable": 2500,
"grossForCourtOrders": 2014.14,
"tax": 270.7,
"ni": 116.16,
"pension": 99,
"employerNi": 312.5,
"employerClass1ANI": 0,
"employerPension": 59.4,
"studentLoan": 11,
"postgraduateLoan": 0,
"net": 2003.14,
"netDeductions": 0,
"totalPayable": 2003.14,
"totalEmployerCost": 2871.9,
"niBand": {
"A": {
"employeeNi": 116.16,
"employerNi": 312.5,
"totalNi": 428.66,
"grossForEmployeeNi": 2500,
"grossForEmployerNi": 2500,
"bandResults": null
}
},
"statutory": null,
"pensionContributionsByType": null,
"qualifyingEarningsForPension": 1980,
"apprenticeshipLevy": 0,
"employmentAllowance": 0,
"apprenticeshipLevyAllowance": 0,
"statutoryRecovery": null,
"isEmpty": false,
"pensionRefundsByType": null,
"employerPensionRefundsByType": null
},
"yearToDate": {
"gross": 17500,
"grossTaxable": 16807,
"grossNi": 17500,
"grossForEmployerNi": 17500,
"grossForEmployerClass1ANi": 0,
"grossPensionable": 17500,
"grossForCourtOrders": 14098.98,
"tax": 1894.9,
"ni": 813.12,
"pension": 693,
"employerNi": 2187.5,
"employerClass1ANI": 0,
"employerPension": 415.8,
"studentLoan": 77,
"postgraduateLoan": 0,
"net": 14021.98,
"netDeductions": 0,
"totalPayable": 14021.98,
"totalEmployerCost": 20103.3,
"niBand": {
"A": {
"employeeNi": 813.12,
"employerNi": 2187.5,
"totalNi": 3000.62,
"grossForEmployeeNi": 17500,
"grossForEmployerNi": 17500,
"bandResults": null
}
},
"statutory": null,
"pensionContributionsByType": null,
"qualifyingEarningsForPension": 13860,
"apprenticeshipLevy": 0,
"employmentAllowance": 0,
"apprenticeshipLevyAllowance": 0,
"statutoryRecovery": null,
"isEmpty": false,
"pensionRefundsByType": null,
"employerPensionRefundsByType": null
},
"forEmployment": {
"gross": 17500,
"grossTaxable": 16807,
"grossNi": 17500,
"grossForEmployerNi": 17500,
"grossForEmployerClass1ANi": 0,
"grossPensionable": 17500,
"grossForCourtOrders": 14098.98,
"tax": 1894.9,
"ni": 813.12,
"pension": 693,
"employerNi": 2187.5,
"employerClass1ANI": 0,
"employerPension": 415.8,
"studentLoan": 77,
"postgraduateLoan": 0,
"net": 14021.98,
"netDeductions": 0,
"totalPayable": 14021.98,
"totalEmployerCost": 20103.3,
"niBand": {
"A": {
"employeeNi": 813.12,
"employerNi": 2187.5,
"totalNi": 3000.62,
"grossForEmployeeNi": 17500,
"grossForEmployerNi": 17500,
"bandResults": null
}
},
"statutory": null,
"pensionContributionsByType": null,
"qualifyingEarningsForPension": 13860,
"apprenticeshipLevy": 0,
"employmentAllowance": 0,
"apprenticeshipLevyAllowance": 0,
"statutoryRecovery": null,
"isEmpty": false,
"pensionRefundsByType": null,
"employerPensionRefundsByType": null
},
"createdDate": "2026-10-20T09:15:00.000Z",
"createdBy": "user-001",
"updatedDate": "2026-10-28T15:15:00.000Z",
"updatedBy": "user-001",
"status": "Final",
"payslipMetadata": {
"notes": null,
"paymentDateOverwrite": null
},
"paymentDate": "2026-10-31",
"payPeriodStartDate": "2026-10-01",
"payPeriodEndDate": "2026-10-31",
"lateReason": null,
"alerts": [],
"lastEmailedAt": null,
"lastEmailedTo": null,
"lastEmailedBy": null,
"lastEmailedStatus": null,
"lastEmailError": null,
"versionId": null
},
"triggeredBy": "user-001"
},
"metadata": {
"resourceUrl": "https://api.flowpayroll.ai/v1/payslip/data/employee-001/2026/7",
"correlationId": "01K6B3N8Z4Q2W7X5Y9T1V3M6RA",
"documentUrl": "https://api.flowpayroll.ai/v1/payslip/data/employee-001/2026/7/file?frequency=Monthly",
"payloadStyle": "Full",
"payloadDowngraded": false,
"dateFormat": "yyyy-MM-dd",
"dateTimeFormat": "yyyy-MM-ddTHH:mm:ss.fffZ"
}
}Authorizations
FlowPayroll JWT (raw token, no Bearer prefix)
Headers
Unique id for this message. Use it as an idempotency key.
Unix seconds when this attempt was signed. Reject anything outside a five-minute tolerance to prevent replay.
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.
The event type, for routing without parsing the body.
The organisation this event belongs to.
The customer that owned the organisation when the event happened. Present on every delivery, and the routing key for a customer-scoped endpoint.
Our id for this delivery. Quote it in a support request.
1-based attempt counter.
Correlation id threaded through every FlowPayroll service.
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_01M61H8B90D8HFC35NJ4XY97R8",
"type": "payslip.finalised",
"timestamp": "2026-10-28T15:15:00.000Z",
"apiVersion": "2026-10-01",
"organisationId": "org-test-1",
"customerId": "customer-test-1",
"livemode": true,
"data": {
"organisationId": "org-test-1",
"payrollConfigId": "payroll-config-001",
"recipientDetails": {
"email": "jane.doe@example.com",
"phone": null
},
"payslip": {
"employeeDetails": {
"id": "employee-001",
"name": {
"title": "Ms",
"firstName": "Jane",
"lastName": "Doe",
"initials": "J",
"middleName": null
},
"email": "jane.doe@example.com",
"secondaryEmail": null,
"address": {
"line1": "1 Example Street",
"line2": null,
"city": "Exampletown",
"county": null,
"postcode": "AA1 1AA",
"countryCode": "GB"
},
"birthDate": "1990-01-01",
"birthGender": "Female",
"payrollId": "EMP001",
"employeeCode": null,
"hoursWorkedCategory": "Above30Hours",
"taxCode": {
"code": "1257L",
"effectiveDate": "2026-04-06",
"reason": "Standard",
"issuedBy": "HMRC",
"week1Month1": false
},
"nationalInsuranceCategory": "A",
"nationalInsuranceNumber": "AA000000A",
"passportNumber": null,
"starterDetails": {
"startDate": "2024-09-02",
"starterDeclaration": "ThisIsMyFirstJobSince6thApril",
"secondedDetails": null,
"alreadySentToHmrcFps": true
},
"studentDetails": {
"studentLoanDetails": {
"loanType": "Plan2",
"startDate": "2024-09-02",
"endDate": null
},
"postgraduateLoanDetails": null
},
"directorDetails": null,
"leaverDetails": null,
"workplaceDetails": {
"workplacePostcode": "AA1 1AB"
},
"bankAccounts": [
{
"accountNumber": "00000000",
"sortCode": "00-00-00",
"accountHolderName": "Jane Doe",
"isPrimaryPayrollAccount": true,
"allocationPercentage": 100
}
],
"department": "Operations",
"jobTitle": "Operations Coordinator",
"pensionDetails": {
"employeeId": "employee-001",
"pensionGroupId": "pension-group-001",
"employeePensionRate": 5,
"employerPensionRate": 3,
"pensionType": "NetPayArrangement",
"nationalInsuranceSavingFactor": 0,
"isQualifyingEarnings": true
},
"tags": [],
"isPaymentAfterLeaving": false
},
"employerDetails": {
"id": "org-test-1",
"organisationInformation": {
"organisationId": "org-test-1",
"createdBy": "user-001",
"createdDate": "2024-08-01T09:00:00.000Z",
"updatedBy": "user-001",
"updatedDate": "2026-04-06T09:00:00.000Z",
"name": {
"legalName": "Acme Ltd",
"tradingName": null
},
"organisationType": "Independent",
"companyRegistrationNumber": "00000000",
"businessType": "LimitedCompany",
"registredOfficeAddress": {
"line1": "100 Test Road",
"line2": "Suite 1",
"city": "Exampletown",
"county": null,
"postcode": "AA1 1AB",
"countryCode": "GB"
},
"correspondenceAddress": {
"line1": "100 Test Road",
"line2": "Suite 1",
"city": "Exampletown",
"county": null,
"postcode": "AA1 1AB",
"countryCode": "GB"
},
"companyContactDetails": {
"name": "Acme Ltd payroll",
"email": "payroll@example.com",
"phone": null
},
"primaryContactDetails": {
"name": "John Doe",
"email": "john.doe@example.com",
"phone": null
}
},
"taxReferenceNumbers": {
"employerPayeReference": {
"officeNumber": "000",
"referenceNumber": "AA00000"
},
"accountsOfficeReference": "000PA00000000",
"selfAssessmentUniqueTaxpayerReference": null,
"corporationTaxReferenceUniqueTaxpayerReference": null
}
},
"year": 2026,
"period": 7,
"payrollConfigId": "payroll-config-001",
"frequency": "Monthly",
"summaryItems": [
{
"id": "summary-item-001",
"description": "Salary",
"amount": 2500,
"type": "Employee",
"category": "Earning",
"payRate": 2500,
"payElementId": "pay-element-salary",
"unitName": "Month",
"units": 1,
"chargeRate": null,
"chargeUnits": null,
"chargeValue": null,
"chargeDescription": null,
"date": "2026-10-31",
"isNetDeduction": false,
"tags": [],
"unitType": "Amount",
"originalValue": null,
"lineItemSequence": null,
"courtOrderId": null,
"courtOrderType": null,
"canEdit": true,
"eligibility": null,
"paymentDetails": null,
"attachments": null,
"poNumber": null,
"clientId": null,
"invoiceId": null,
"billingStatus": "None",
"calculationFlags": {
"niType": "Niable",
"payType": "Payable",
"isPensionable": true,
"accrueHoliday": true,
"isClass1ANiable": false,
"subjectToNmwCheck": true,
"taxType": "Taxable"
},
"wasReducedByProtectedEarnings": false,
"tax": null,
"employeeNi": null,
"employeePension": null,
"studentLoan": null,
"postgraduateLoan": null,
"employerNi": null,
"employerClass1ANi": null,
"employerPension": null,
"apprenticeshipLevy": null,
"employmentAllowance": null,
"apprenticeshipLevyAllowance": null,
"pensionSacrificeAmount": null,
"pensionEmployerContribution": null,
"pensionLineType": null,
"ordinaryDebtDeducted": null,
"pensionMetadata": null
},
{
"id": "summary-item-002",
"description": "Employee pension",
"amount": 99,
"type": "Employee",
"category": "Deduction",
"payRate": 99,
"payElementId": "pay-element-pension",
"unitName": "Fixed",
"units": 1,
"chargeRate": null,
"chargeUnits": null,
"chargeValue": null,
"chargeDescription": null,
"date": "2026-10-31",
"isNetDeduction": false,
"tags": [],
"unitType": "Amount",
"originalValue": null,
"lineItemSequence": null,
"courtOrderId": null,
"courtOrderType": null,
"canEdit": true,
"eligibility": null,
"paymentDetails": null,
"attachments": null,
"poNumber": null,
"clientId": null,
"invoiceId": null,
"billingStatus": "None",
"calculationFlags": null,
"wasReducedByProtectedEarnings": false,
"tax": null,
"employeeNi": null,
"employeePension": 99,
"studentLoan": null,
"postgraduateLoan": null,
"employerNi": null,
"employerClass1ANi": null,
"employerPension": 59.4,
"apprenticeshipLevy": null,
"employmentAllowance": null,
"apprenticeshipLevyAllowance": null,
"pensionSacrificeAmount": null,
"pensionEmployerContribution": null,
"pensionLineType": null,
"ordinaryDebtDeducted": null,
"pensionMetadata": null
}
],
"forPeriod": {
"gross": 2500,
"grossTaxable": 2401,
"grossNi": 2500,
"grossForEmployerNi": 2500,
"grossForEmployerClass1ANi": 0,
"grossPensionable": 2500,
"grossForCourtOrders": 2014.14,
"tax": 270.7,
"ni": 116.16,
"pension": 99,
"employerNi": 312.5,
"employerClass1ANI": 0,
"employerPension": 59.4,
"studentLoan": 11,
"postgraduateLoan": 0,
"net": 2003.14,
"netDeductions": 0,
"totalPayable": 2003.14,
"totalEmployerCost": 2871.9,
"niBand": {
"A": {
"employeeNi": 116.16,
"employerNi": 312.5,
"totalNi": 428.66,
"grossForEmployeeNi": 2500,
"grossForEmployerNi": 2500,
"bandResults": null
}
},
"statutory": null,
"pensionContributionsByType": null,
"qualifyingEarningsForPension": 1980,
"apprenticeshipLevy": 0,
"employmentAllowance": 0,
"apprenticeshipLevyAllowance": 0,
"statutoryRecovery": null,
"isEmpty": false,
"pensionRefundsByType": null,
"employerPensionRefundsByType": null
},
"yearToDate": {
"gross": 17500,
"grossTaxable": 16807,
"grossNi": 17500,
"grossForEmployerNi": 17500,
"grossForEmployerClass1ANi": 0,
"grossPensionable": 17500,
"grossForCourtOrders": 14098.98,
"tax": 1894.9,
"ni": 813.12,
"pension": 693,
"employerNi": 2187.5,
"employerClass1ANI": 0,
"employerPension": 415.8,
"studentLoan": 77,
"postgraduateLoan": 0,
"net": 14021.98,
"netDeductions": 0,
"totalPayable": 14021.98,
"totalEmployerCost": 20103.3,
"niBand": {
"A": {
"employeeNi": 813.12,
"employerNi": 2187.5,
"totalNi": 3000.62,
"grossForEmployeeNi": 17500,
"grossForEmployerNi": 17500,
"bandResults": null
}
},
"statutory": null,
"pensionContributionsByType": null,
"qualifyingEarningsForPension": 13860,
"apprenticeshipLevy": 0,
"employmentAllowance": 0,
"apprenticeshipLevyAllowance": 0,
"statutoryRecovery": null,
"isEmpty": false,
"pensionRefundsByType": null,
"employerPensionRefundsByType": null
},
"forEmployment": {
"gross": 17500,
"grossTaxable": 16807,
"grossNi": 17500,
"grossForEmployerNi": 17500,
"grossForEmployerClass1ANi": 0,
"grossPensionable": 17500,
"grossForCourtOrders": 14098.98,
"tax": 1894.9,
"ni": 813.12,
"pension": 693,
"employerNi": 2187.5,
"employerClass1ANI": 0,
"employerPension": 415.8,
"studentLoan": 77,
"postgraduateLoan": 0,
"net": 14021.98,
"netDeductions": 0,
"totalPayable": 14021.98,
"totalEmployerCost": 20103.3,
"niBand": {
"A": {
"employeeNi": 813.12,
"employerNi": 2187.5,
"totalNi": 3000.62,
"grossForEmployeeNi": 17500,
"grossForEmployerNi": 17500,
"bandResults": null
}
},
"statutory": null,
"pensionContributionsByType": null,
"qualifyingEarningsForPension": 13860,
"apprenticeshipLevy": 0,
"employmentAllowance": 0,
"apprenticeshipLevyAllowance": 0,
"statutoryRecovery": null,
"isEmpty": false,
"pensionRefundsByType": null,
"employerPensionRefundsByType": null
},
"createdDate": "2026-10-20T09:15:00.000Z",
"createdBy": "user-001",
"updatedDate": "2026-10-28T15:15:00.000Z",
"updatedBy": "user-001",
"status": "Final",
"payslipMetadata": {
"notes": null,
"paymentDateOverwrite": null
},
"paymentDate": "2026-10-31",
"payPeriodStartDate": "2026-10-01",
"payPeriodEndDate": "2026-10-31",
"lateReason": null,
"alerts": [],
"lastEmailedAt": null,
"lastEmailedTo": null,
"lastEmailedBy": null,
"lastEmailedStatus": null,
"lastEmailError": null,
"versionId": null
},
"triggeredBy": "user-001"
},
"metadata": {
"resourceUrl": "https://api.flowpayroll.ai/v1/payslip/data/employee-001/2026/7",
"correlationId": "01K6B3N8Z4Q2W7X5Y9T1V3M6RA",
"documentUrl": "https://api.flowpayroll.ai/v1/payslip/data/employee-001/2026/7/file?frequency=Monthly",
"payloadStyle": "Full",
"payloadDowngraded": false,
"dateFormat": "yyyy-MM-dd",
"dateTimeFormat": "yyyy-MM-ddTHH:mm:ss.fffZ"
}
}