> ## 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.

# Bank Account Webhooks

* **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

| Status    | Description                                                           |
| --------- | --------------------------------------------------------------------- |
| `new`     | The bank account has been added and verification has not yet started. |
| `pending` | The bank account is undergoing verification or setup.                 |
| `ready`   | The 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

```json theme={null}
{
  "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

| Status        | Description                                                                                                              |
| ------------- | ------------------------------------------------------------------------------------------------------------------------ |
| `linkurlsent` | The employee's bank account is being linked with Plaid and a URL has been generated.                                     |
| `invitesent`  | The employee's bank account is being linked with Plaid and they have received an email asking them to add their account. |
| `new`         | The bank account has been added and verification has not yet started.                                                    |
| `pending`     | The bank account is undergoing verification or setup.                                                                    |
| `ready`       | The 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

```json theme={null}
{
  "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"
            }
          ]
        }
      ]
    }
  ]
}
```
