Documentation Index
Fetch the complete documentation index at: https://developer.rollfi.xyz/llms.txt
Use this file to discover all available pages before exploring further.
Employee Webhooks
- Overview: These webhooks represent changes in an employee’s verification and lifecycle state within the platform, from identity verification through payroll readiness and employment changes.
🔹 Employee KYC Status Webhook
Events
employee.kycstatus.insert — emitted when an employee record is first created. The payload returns the initial kycStatus of kyc not initiated, confirming the employee was saved successfully.
employee.kycstatus.update — emitted whenever an employee’s KYC verification status changes after creation.
Statuses
The kycStatus field indicates the current identity verification state of the employee.
| Status | Description |
|---|
kyc not initiated | The employee has been created and KYC has not yet been initiated. This status is returned by the insert webhook |
pending | KYC is currently being processed by the verification provider. |
passed | KYC verification has passed. This status is required before an employee’s status in the Rollfi system can progress to Active. |
failed | KYC verification has failed and requires follow-up. |
Example Payload
{
"trigger": {
"eventId": "6f91c2a4-8d31-4a1b-b5f4-91a2d7c4e810",
"eventType": "employee.kycstatus.update",
"eventTimeStamp": "01/07/2026 15:27:12"
},
"payload": [
{
"user": [
{
"user": "Alex Morgan",
"userId": "A12F45BC-9D31-4C9E-B28F-7F6E2C91D4A8",
"userReferenceId": "",
"companyId": "8E9F2B11-6A44-4D8C-B3A2-91F6D2E8C7A0",
"status": {
"userStatus": "Invite Sent"
},
"WorkerType": {
"WorkerType": "W2"
},
"firstName": "Alex",
"lastName": "Morgan",
"middleName": "",
"phoneNumber": "5551234567",
"kycStatus": "passed",
"jobTitle": "Quality Analyst",
"dateOfJoin": "2026-01-07",
"email": "alex.morgan@example.com",
"userWages": [
{
"userWageId": "E4D92C17-1B55-4C3E-A9D8-2F5B9A1C7E44",
"standardWorkingHours": 0.0,
"WageRate": 85.0,
"WageBasis": {
"WageBasis": "Per Month"
},
"paymentMethod": {
"PaymentMethod": "Check"
}
}
],
"bankAccounts": []
}
]
}
]
}
🔹 Employee Status Webhook
Events
employee.employeestatus.insert — emitted when an employee record is first created. The payload returns userStatus of Add Wage, confirming the employee was saved successfully.
employee.employeestatus.update — emitted whenever an employee’s status in the Rollfi system changes after creation.
Statuses
The userStatus field reflects the employee’s current status in the Rollfi system.
| Status | Description |
|---|
Add Wage | The employee has been created but does not yet have wage information. No platform invite has been sent. |
Invite Sent | The employee has been invited to join the platform and complete the remaining information required to activate payroll. |
Active | Employee KYC information, wages, and bank account details (if applicable) have been added, and the employee is ready for payroll. |
InActive | The employee has been deactivated for a period of time and can be reactivated using the activateUser API. |
Terminated | The employee has been terminated and can no longer be reactivated. |
Example Payload
{
"trigger": {
"eventId": "ce5beb7f-93b4-4f3f-bef6-9ce3bd4e574f",
"eventType": "employee.employeestatus.update",
"eventTimeStamp": "01/08/2026 12:21:54"
},
"payload": [
{
"user": [
{
"user": "Wfourtesttwo Testtt",
"userId": "8CA6403C-4667-4B0C-BBB8-929CA0D62350",
"userReferenceId": "",
"companyId": "46F9528D-2E48-446A-903F-CFADBE0D08F4",
"status": {
"userStatus": "Invite Sent"
},
"WorkerType": {
"WorkerType": "W2"
},
"firstName": "Wfourtesttwo",
"lastName": "Testtt",
"middleName": "",
"phoneNumber": "5636525874",
"kycStatus": "kyc not initiated",
"jobTitle": "HR",
"dateOfJoin": "2026-01-07",
"email": "Wfourtesttwo@mailsac.com",
"userWages": [
{
"userWageId": "E874BFF0-0D4F-492C-96CD-36808187749C",
"standardWorkingHours": 0.0,
"WageRate": 1500.0,
"WageBasis": {
"WageBasis": "Per Month"
},
"paymentMethod": {
"PaymentMethod": "Direct Deposit"
},
"employeeRefTaxExempt": "No, this employee is not tax exempt",
"employeeType": "Salary/Eligible for overtime",
"differentialPay": null,
"employmentStatus": "Full Time (30+ Hours per week)"
}
],
"userRemoteLocations": [],
"companyLocationCategory": {
"companyLocationCategory": "Office"
},
"companyLocation": {
"companyLocation": "Primary Residence",
"companyLocationId": "746398E0-B335-47C6-BF78-D268D034594E",
"Address1": "6875 Sand Lake Rd",
"Address2": "",
"City": "Orlando",
"Country": "US",
"State": "FL",
"Zipcode": "32819"
},
"stateCode": null,
"W4Informations": [],
"ssn": null,
"userRemoteLocation": null,
"stateW4Informations": [],
"bankAccounts": [],
"timeOffRequests": [],
"employeeGarnishments": []
}
]
}
]
}