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

# Company Bank Account Linking

## Linking methods

Rollfi supports two main methods for linking company bank accounts.
A linked and verified company funding source is required for payroll processing.

### Option 1 - Manual linking with micro-deposit verification

Use this method when you want to collect account and routing details directly.

* Step 1: Add the account using [addCompanyBankAccount](https://developer.rollfi.xyz/api-reference/adminportal/addCompanyBankAccount).
* Step 2: Verify ownership using [verifyMicroDeposits](https://developer.rollfi.xyz/api-reference/adminportal/verifyMicroDeposits).

Required fields for `addCompanyBankAccount`:

1. `companyId`
2. `accountNumber`
3. `routingNumber`
4. `bankName`
5. `accountName`

Supported account types:

* `checking`
* `savings`

Sample request:

```json theme={null}
{
  "method": "addCompanyBankAccount",
  "companyFundingSourceEntity": {
    "companyId": "8A9B7683-8E02-494D-8422-963FD05EE785",
    "accountNumber": "9889890989",
    "routingNumber": "221982389",
    "bankName": "Chase Bank",
    "accountType": "savings",
    "accountName": "default"
  }
}
```

Sample verification request:

```json theme={null}
{
  "method": "verifyMicroDeposits",
  "companyId": "7F8DBF11-3551-426C-8820-434C8CC33664",
  "debitAmount1": 0.12,
  "debitAmount2": 0.15
}
```

### Option 2 - Plaid linking

Plaid linking for company bank accounts is supported directly through [addCompanyBankAccount](https://developer.rollfi.xyz/api-reference/adminportal/addcompanybankaccount).

Use `linkType` to specify the linking method:

* `Manual`
* `Plaid`
* `CustomProvider`

If `linkType` is `Plaid`, set `plaidOptions` to one of:

* `sendInviteByEmail`
* `generateURL`

For `sendInviteByEmail`, the invite is sent to the payroll admin by default. You can override the destination by providing `email`.

The initial valid Plaid link is reused for subsequent `addCompanyBankAccount` calls until it expires. Plaid links typically expire after 72 hours.

#### 🔹 Plaid URL flow

Use this flow when you want to surface the Plaid link in your own UI.

* Set `linkType` to `Plaid`.
* Set `plaidOptions` to `generateURL`.
* Use the `plaidLinkURL` from the response.

Sample request:

```json theme={null}
{
  "method": "addCompanyBankAccount",
  "linkType": "Plaid",
  "plaidOptions": "generateURL",
  "companyFundingSourceEntity": {
    "companyId": "03B5FD90-4A91-46D8-A892-CFB8F52A8E67"
  }
}
```

#### 🔹 Plaid invitation flow

Use this flow when you want Rollfi to email a one-time Plaid link to the company admin.

* Set `linkType` to `Plaid`.
* Set `plaidOptions` to `sendInviteByEmail`.
* Optionally provide `email` to override the payroll admin email. If omitted, the invite defaults to the payroll admin's email.

Sample request:

```json theme={null}
{
  "method": "addCompanyBankAccount",
  "linkType": "Plaid",
  "plaidOptions": "sendInviteByEmail",
  "email": "test@mailsac.com",
  "companyFundingSourceEntity": {
    "companyId": "03B5FD90-4A91-46D8-A892-CFB8F52A8E67"
  }
}
```

## Updating or replacing a company bank account

When a company needs to switch their funding source, deactivate it and add the replacement account separately.

Use [deactivateCompanyBankAccount](https://developer.rollfi.xyz/api-reference/adminportal/deactivateCompanyBankAccount) to retire the old account, then [addCompanyBankAccount](https://developer.rollfi.xyz/api-reference/adminportal/addCompanyBankAccount) to link the new one.

* A company should always have at least one active bank account on file.
* If the banking details change, treat it as a replacement rather than trying to reactivate the old account.
