> ## Documentation Index
> Fetch the complete documentation index at: https://apidocs.hopnow.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Virtual Account Onboarding

<div className="hop-lede">Start with <span className="hop-strong">whose account you are onboarding</span>, then identify whether the virtual account holder is a <span className="hop-strong">business or an individual</span>. Your customer model determines which account to use; the holder's identity determines the verification requirements.</div>

## Choose your customer model

### Direct customers

Use your existing account to open virtual accounts in your own name. Retrieve its `id` with [List Accounts](/fx/api-reference/accounts/list-accounts), then set or complete your identity profile with [Update Account](/fx/api-reference/accounts/update-account-identity).

### Platform customers

Use [Create Account](/fx/api-reference/accounts/create-account) to create one account per end customer, supplying that customer's identity profile. For a business, you can include associated persons in the same request. If the end customer already has an account, reuse it. Their virtual accounts are opened in their name.

To open virtual accounts for your platform itself, use your existing fee-collection account and your platform's own identity profile.

## Identify the virtual account holder

Both customer models use the same identity types. Set `type` to `business` or `individual` when creating or updating the account's identity profile. Once set, this identity type cannot be changed.

| Holder | Identity `type` | Verification and signing |
| - | - | - |
| [Business](#business-account) | `business` | Verify the business and its associated persons. An associated person with `is_signer: true` signs agreements; pass their ID as `signer_id`. |
| [Individual](#individual-account) | `individual` | Verify the individual. There are no associated persons. The individual signs for themselves; omit `signer_id`. |

Business and individual describe the account holder's identity. The virtual account group's `type` selects a service from [List Group Types](/fx/api-reference/virtual-account-groups/list-group-types).

## Accounts, groups and virtual accounts

An **account** stores the identity of the business or individual selected above.

A **virtual account group** tracks that account's onboarding requirements, approval, and activation for a group type. You can onboard the same account for multiple group types, with one group per type. Each group is onboarded and enabled separately. Repeating [Create Virtual Account Group](/fx/api-reference/virtual-account-groups/create-group) for the same account and type returns the existing group.

A **virtual account** belongs to one group and provides bank details in the account holder's name, with its own balance in one currency. Once the group has `onboarding_status: approved` and `status: enabled`, you can [create virtual accounts](/fx/api-reference/virtual-accounts/create-virtual-account) in its supported currencies, including multiple virtual accounts in the same currency.

## Complete onboarding

Follow the business or individual flow below for the account you selected. If its identity profile and any associated persons are already complete, continue to **Open the group**.

After you open the group, [Get Virtual Account Group](/fx/api-reference/virtual-account-groups/get-group) returns the outstanding `requirements`. Clear them item by item. Hop submits the account for review automatically; there is no submit call.

<div className="hop-flow hop-flow-steps">
  <div className="hop-legend" aria-label="Flow legend">
    <span className="hop-legend-item"><span className="hop-chip hop-chip-platform">You</span>the API caller</span>
    <span className="hop-legend-item"><span className="hop-chip hop-chip-hop">Hop</span>automatic</span>
    <span className="hop-legend-item"><span className="hop-chip hop-chip-customer">Bank</span>partner bank</span>
  </div>
</div>

### Business account

<div className="hop-flow hop-flow-steps">
  <ol className="hop-steps">
    <li className="hop-step-phase">Identity</li>

    <li className="hop-step-row">
      <span className="hop-step-n">1</span>
      <span className="hop-chip hop-chip-platform">You</span>

      <div className="hop-step-body">
        <a href="/fx/api-reference/accounts/update-account-identity" className="hop-step-title">Set the account identity: legal name, registration number, incorporation date, registered address</a>
        <span className="hop-step-pills"><span className="hop-pill hop-post"><span className="hop-method">PATCH</span>/customers/\{cid}/accounts/\{aid}</span></span>
      </div>
    </li>

    <li className="hop-step-row">
      <span className="hop-step-n">2</span>
      <span className="hop-chip hop-chip-platform">You</span>

      <div className="hop-step-body">
        <a href="/fx/api-reference/associated-persons/create-associated-person" className="hop-step-title">Add the people behind the entity: at least one with <code>is\_signer</code></a>
        <span className="hop-step-pills"><span className="hop-pill hop-post"><span className="hop-method">POST</span>/accounts/\{aid}/associated-persons</span> <span className="hop-pill hop-object">aap\_</span></span>
      </div>
    </li>

    <li className="hop-step-phase">Open the group</li>

    <li className="hop-step-row">
      <span className="hop-step-n">3</span>
      <span className="hop-chip hop-chip-platform">You</span>

      <div className="hop-step-body">
        <a href="/fx/api-reference/virtual-account-groups/create-group" className="hop-step-title">Open the group: safe to call before the identity is set, it just comes back with a requirement</a>
        <span className="hop-step-pills"><span className="hop-pill hop-post"><span className="hop-method">POST</span>/accounts/\{aid}/virtual-account-groups</span> <span className="hop-pill hop-object">vag\_</span></span>
      </div>
    </li>

    <li className="hop-step-row">
      <span className="hop-step-n">4</span>
      <span className="hop-chip hop-chip-hop">Hop</span>

      <div className="hop-step-body">
        <span className="hop-step-title">Raises the agreements the entity must sign</span>
        <span className="hop-step-pills"><span className="hop-pill hop-object">agr\_</span></span>
      </div>
    </li>

    <li className="hop-step-phase">Clear requirements</li>

    <li className="hop-step-row">
      <span className="hop-step-n">5</span>
      <span className="hop-chip hop-chip-platform">You</span>

      <div className="hop-step-body">
        <a href="/fx/api-reference/virtual-account-groups/get-group" className="hop-step-title">Read what is outstanding. This list drives everything that follows</a>
        <span className="hop-step-pills"><span className="hop-pill hop-get"><span className="hop-method">GET</span>/virtual-account-groups/\{gid}</span> <span className="hop-pill hop-webhook">requirements\[]</span></span>
      </div>
    </li>

    <li className="hop-step-row">
      <span className="hop-step-n">6</span>
      <span className="hop-chip hop-chip-platform">You</span>

      <div className="hop-step-body">
        <a href="/fx/api-reference/virtual-account-groups/submit-agreement-actions" className="hop-step-title">Accept the agreements, naming the signer</a>
        <span className="hop-step-pills"><span className="hop-pill hop-post"><span className="hop-method">POST</span>/\{gid}/agreements/actions</span> <span className="hop-pill hop-webhook">signer\_id required</span></span>
      </div>
    </li>

    <li className="hop-step-row">
      <span className="hop-step-n">7</span>
      <span className="hop-chip hop-chip-platform">You</span>

      <div className="hop-step-body">
        <a href="/fx/api-reference/virtual-account-groups/upload-document" className="hop-step-title">Upload each requested document against its requirement key</a>
        <span className="hop-step-pills"><span className="hop-pill hop-post"><span className="hop-method">POST</span>/\{gid}/documents</span> <span className="hop-pill hop-object">doc\_</span></span>
      </div>
    </li>

    <li className="hop-step-phase">Review</li>

    <li className="hop-step-row">
      <span className="hop-step-n">8</span>
      <span className="hop-chip hop-chip-hop">Hop</span>

      <div className="hop-step-body">
        <span className="hop-step-title">Submits the entity once nothing is outstanding. No call from you</span>
        <span className="hop-step-pills"><span className="hop-pill hop-webhook">under\_review</span></span>
      </div>
    </li>

    <li className="hop-step-row">
      <span className="hop-step-n">9</span>
      <span className="hop-chip hop-chip-customer">Bank</span>

      <div className="hop-step-body">
        <span className="hop-step-title">Verifies the entity and its people, then approves or asks for more</span>
        <span className="hop-step-pills"><span className="hop-pill hop-webhook">approved · action\_needed</span></span>
      </div>
    </li>

    <li className="hop-step-phase">Go live</li>

    <li className="hop-step-row">
      <span className="hop-step-n">10</span>
      <span className="hop-chip hop-chip-hop">Hop</span>

      <div className="hop-step-body">
        <span className="hop-step-title">Enables the group. Virtual accounts can now be created</span>
        <span className="hop-step-pills"><span className="hop-pill hop-webhook">status: enabled</span></span>
      </div>
    </li>

    <li className="hop-step-row">
      <span className="hop-step-n">11</span>
      <span className="hop-chip hop-chip-platform">You</span>

      <div className="hop-step-body">
        <a href="/fx/api-reference/virtual-accounts/create-virtual-account" className="hop-step-title">Create a virtual account in the currency you need</a>
        <span className="hop-step-pills"><span className="hop-pill hop-post"><span className="hop-method">POST</span>/\{gid}/virtual-accounts</span> <span className="hop-pill hop-object">va\_</span></span>
      </div>
    </li>

    <li className="hop-step-row">
      <span className="hop-step-n">12</span>
      <span className="hop-chip hop-chip-customer">Bank</span>

      <div className="hop-step-body">
        <span className="hop-step-title">Issues the bank details; the virtual account leaves <code>pending</code></span>
        <span className="hop-step-pills"><span className="hop-pill hop-rail">IBAN · account number</span></span>
      </div>
    </li>
  </ol>
</div>

### Individual account

<div className="hop-flow hop-flow-steps">
  <ol className="hop-steps">
    <li className="hop-step-phase">Identity</li>

    <li className="hop-step-row">
      <span className="hop-step-n">1</span>
      <span className="hop-chip hop-chip-platform">You</span>

      <div className="hop-step-body">
        <a href="/fx/api-reference/accounts/update-account-identity" className="hop-step-title">Set the account identity: name, date of birth, nationality, address, tax residence and due-diligence answers</a>
        <span className="hop-step-pills"><span className="hop-pill hop-post"><span className="hop-method">PATCH</span>/customers/\{cid}/accounts/\{aid}</span></span>
      </div>
    </li>

    <li className="hop-step-phase">Open the group</li>

    <li className="hop-step-row">
      <span className="hop-step-n">2</span>
      <span className="hop-chip hop-chip-platform">You</span>

      <div className="hop-step-body">
        <a href="/fx/api-reference/virtual-account-groups/create-group" className="hop-step-title">Open the group. No associated persons are needed for an individual</a>
        <span className="hop-step-pills"><span className="hop-pill hop-post"><span className="hop-method">POST</span>/accounts/\{aid}/virtual-account-groups</span> <span className="hop-pill hop-object">vag\_</span></span>
      </div>
    </li>

    <li className="hop-step-row">
      <span className="hop-step-n">3</span>
      <span className="hop-chip hop-chip-hop">Hop</span>

      <div className="hop-step-body">
        <span className="hop-step-title">Raises the agreements the person must sign</span>
        <span className="hop-step-pills"><span className="hop-pill hop-object">agr\_</span></span>
      </div>
    </li>

    <li className="hop-step-phase">Clear requirements</li>

    <li className="hop-step-row">
      <span className="hop-step-n">4</span>
      <span className="hop-chip hop-chip-platform">You</span>

      <div className="hop-step-body">
        <a href="/fx/api-reference/virtual-account-groups/get-group" className="hop-step-title">Read what is outstanding. For an individual this is profile fields and identity documents</a>
        <span className="hop-step-pills"><span className="hop-pill hop-get"><span className="hop-method">GET</span>/virtual-account-groups/\{gid}</span> <span className="hop-pill hop-webhook">requirements\[]</span></span>
      </div>
    </li>

    <li className="hop-step-row">
      <span className="hop-step-n">5</span>
      <span className="hop-chip hop-chip-platform">You</span>

      <div className="hop-step-body">
        <a href="/fx/api-reference/virtual-account-groups/submit-agreement-actions" className="hop-step-title">Accept the agreements: omit <code>signer\_id</code>, the person signs as themselves</a>
        <span className="hop-step-pills"><span className="hop-pill hop-post"><span className="hop-method">POST</span>/\{gid}/agreements/actions</span> <span className="hop-pill hop-webhook">no signer\_id</span></span>
      </div>
    </li>

    <li className="hop-step-row">
      <span className="hop-step-n">6</span>
      <span className="hop-chip hop-chip-platform">You</span>

      <div className="hop-step-body">
        <a href="/fx/api-reference/virtual-account-groups/upload-document" className="hop-step-title">Upload each requested document against its requirement key</a>
        <span className="hop-step-pills"><span className="hop-pill hop-post"><span className="hop-method">POST</span>/\{gid}/documents</span> <span className="hop-pill hop-object">doc\_</span></span>
      </div>
    </li>

    <li className="hop-step-phase">Review</li>

    <li className="hop-step-row">
      <span className="hop-step-n">7</span>
      <span className="hop-chip hop-chip-hop">Hop</span>

      <div className="hop-step-body">
        <span className="hop-step-title">Submits the person once nothing is outstanding. No call from you</span>
        <span className="hop-step-pills"><span className="hop-pill hop-webhook">under\_review</span></span>
      </div>
    </li>

    <li className="hop-step-row">
      <span className="hop-step-n">8</span>
      <span className="hop-chip hop-chip-customer">Bank</span>

      <div className="hop-step-body">
        <span className="hop-step-title">Verifies the person, then approves or asks for more</span>
        <span className="hop-step-pills"><span className="hop-pill hop-webhook">approved · action\_needed</span></span>
      </div>
    </li>

    <li className="hop-step-phase">Go live</li>

    <li className="hop-step-row">
      <span className="hop-step-n">9</span>
      <span className="hop-chip hop-chip-hop">Hop</span>

      <div className="hop-step-body">
        <span className="hop-step-title">Enables the group. Virtual accounts can now be created</span>
        <span className="hop-step-pills"><span className="hop-pill hop-webhook">status: enabled</span></span>
      </div>
    </li>

    <li className="hop-step-row">
      <span className="hop-step-n">10</span>
      <span className="hop-chip hop-chip-platform">You</span>

      <div className="hop-step-body">
        <a href="/fx/api-reference/virtual-accounts/create-virtual-account" className="hop-step-title">Create a virtual account in the currency you need</a>
        <span className="hop-step-pills"><span className="hop-pill hop-post"><span className="hop-method">POST</span>/\{gid}/virtual-accounts</span> <span className="hop-pill hop-object">va\_</span></span>
      </div>
    </li>

    <li className="hop-step-row">
      <span className="hop-step-n">11</span>
      <span className="hop-chip hop-chip-customer">Bank</span>

      <div className="hop-step-body">
        <span className="hop-step-title">Issues the bank details; the virtual account leaves <code>pending</code></span>
        <span className="hop-step-pills"><span className="hop-pill hop-rail">IBAN · account number</span></span>
      </div>
    </li>
  </ol>
</div>

## What each requirement means

Everything after the group is opened is driven by the `requirements` list on [Get Virtual Account Group](/fx/api-reference/virtual-account-groups/get-group). Four kinds appear:

| `type` | What to do |
| - | - |
| `account_profile` | Fields are missing from the identity profile. `account_profile.required` means the account has no complete profile yet; other keys name the fields still needed. Clear both with [Update Account](/fx/api-reference/accounts/update-account-identity). |
| `associated_person` | Either the account has no associated persons yet, or a named person is missing details. Business accounts only. |
| `document` | A file is needed. `accepted_document_types` says which, and `associated_person_id` says whose when it targets a person. |

Saving an identity profile or an associated person resumes onboarding on its own, so poll the group rather than re-creating anything.

## Troubleshooting

| Signal | Meaning | Do this | |
| - | - | - | - |
| `onboarding_status` is `rejected` or `closed` | Terminal: the group never leaves it, and a new one cannot be opened for the same provider on that account. | N/A | |
| `action_needed` with an empty `requirements` list | The provider has not yet told Hop what it wants. | Poll; the list fills in. | |
| An `associated_person` requirement on an account with no people | No individual associated with the account. | Add a person with [Create Associated Person](/fx/api-reference/associated-persons/create-associated-person). | |
