Skip to main content

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.

  • Overview: These webhooks represent changes to bank accounts connected within the Rollfi system. They indicate when a bank account is created, undergoing verification, or ready for use.

🔹 Company Bank Account Status Webhook

Events

  • companybankaccount.companybankaccountstatus.insert — emitted when a company bank account is first created. The payload includes the initial new status, confirming the funding source was saved successfully.
  • companybankaccount.companybankaccountstatus.update — emitted whenever the status of an existing company bank account changes.

Statuses

StatusDescription
newThe bank account has been added and verification has not yet started.
pendingThe bank account is undergoing verification or setup.
readyThe bank account has been verified and is ready for use.
Note: Payroll cannot proceed until the company funding source reaches the ready status.

Example Payload

{
  "trigger": {
    "eventId": "9a7f4c21-3b5a-4a8c-9f6e-1d2e8b9c4a77",
    "eventType": "companybankaccount.companybankaccountstatus.insert",
    "eventTimeStamp": "01/06/2026 19:05:02"
  },
  "payload": [
    {
      "Company": [
        {
          "company": "Acme Operations LLC",
          "companyID": "9F3A1C7E-5B22-4D91-8E6A-2C9E47B8A103",
          "businessWebsite": "https://www.acme-operations.com",
          "registration": {
            "isTermsAccepted": true
          },
          "CompanyLocations": [],
          "KYBInformations": [],
          "kycStatus": "passed",
          "BankAccounts": [
            {
              "companyFundingSourceEntityId": "E6237EA0-FA05-4AD6-A4AE-7E4360E876C9",
              "bankName": "Chase",
              "accountName": "Primary Operating Account",
              "accountNumber": "XXXXXXXXX4321",
              "accountType": "checking",
              "status": "pending",
              "bankBalance": 2500.00
            }
          ],
          "PaySchedules": [],
          "StateTaxRegistrations": []
        }
      ]
    }
  ]
}

🔹 Employee Bank Account Status Webhook

Events

  • employeebankaccount.employeebankaccountstatus.insert — emitted when an employee bank account is first created. The payload returns the initial status of new, confirming the pay account was saved successfully.
  • employeebankaccount.employeebankaccountstatus.update — emitted whenever the status of an existing employee bank account changes.

Statuses

StatusDescription
linkurlsentThe employee’s bank account is being linked with Plaid and a URL has been generated.
invitesentThe employee’s bank account is being linked with Plaid and they have received an email asking them to add their account.
newThe bank account has been added and verification has not yet started.
pendingThe bank account is undergoing verification or setup.
readyThe bank account has been verified and is ready for use.
Notes: Because direct deposit employees require a linked bank account, the employee bank account must reach the ready status before the employee can become Active and be added to payroll. linkurlsent and invitesent are additional statuses when adding a bank account using plaid, and will not be included in the manual bank account webhooks. These are the first account statuses when linking with Plaid.

⚠️ Important:

  • userPayAccountEntityId, bankName, accountName, accountNumber, payPercentage and accountType are not returned in the webhook for Plaid account linking. These fields are only populated once the employee finishes linking.

Example Payload

{
  "trigger": {
    "eventId": "4e8f2b91-5d64-4c0a-9c61-3b8e2c7d9f44",
    "eventType": "employeebankaccount.employeebankaccountstatus.update",
    "eventTimeStamp": "01/07/2026 13:28:41"
  },
  "payload": [
    {
      "user": [
        {
          "user": "Alex Morgan",
          "userId": "A12F45BC-9D31-4C9E-B28F-7F6E2C91D4A8",
          "companyId": "8E9F2B11-6A44-4D8C-B3A2-91F6D2E8C7A0",
          "status": {
            "userStatus": "Invite Sent"
          },
          "WorkerType": {
            "WorkerType": "W2"
          },
          "firstName": "Alex",
          "lastName": "Morgan",
          "phoneNumber": "5551234567",
          "kycStatus": "passed",
          "jobTitle": "Quality Analyst",
          "dateOfJoin": "2026-01-07",
          "email": "alex.morgan@example.com",
          "userWages": [
            {
              "userWageId": "E4D92C17-1B55-4C3E-A9D8-2F5B9A1C7E44",
              "WageRate": 85.0,
              "WageBasis": {
                "WageBasis": "Per Month"
              },
              "paymentMethod": {
                "PaymentMethod": "Direct Deposit"
              }
            }
          ],
          "bankAccounts": [
            {
              "userPayAccountEntityId": "CBA649D6-8047-483F-A66F-0F5C745E3C3A",
              "bankName": "First Platypus Bank",
              "accountName": "Primary Checking",
              "accountNumber": "XXXXXXXXX1111",
              "payPercentage": 100.0,
              "accountType": "checking",
              "status": "pending",
              "accountPriority": "Primary"
            }
          ]
        }
      ]
    }
  ]
}