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

# Create a business account

> This guide walks you through creating a business account with Equals using the Onboarding API.

# Create a business account

This guide walks you through creating a **business account** with Equals using the Onboarding API. Business accounts are for companies, sole traders, partnerships, charities, and other business entities.

For complete API specifications, field definitions, and request/response schemas, refer to the [API Reference documentation](/api-reference/onboarding/create-a-new-onboarding-application).

<Info>
  **Looking for Personal accounts?** If you're onboarding an individual for a personal account, see the [Create a personal account](/pages/accounts/tutorial/create-a-personal-account) guide instead.
</Info>

***

## Prerequisites

Before using the Onboarding API, ensure you have:

* A valid API key for authentication
* Information about the business you want to onboard
* Details of associated people (directors, UBOs, authorised signatory)
* Understanding of which KYC model applies to your integration

***

## Workflow overview

The business account onboarding flow:

1. **Create Associated People** — Add directors, UBOs, and authorised signatories
2. **Create Application** — Submit the business details and link associated people
3. **Update Application** (optional) — Modify details before submission
4. **Upload Application Documents** (optional) — Provide business documentation
5. **Upload Associated People Documents** (optional) — Provide identity documents
6. **Submit Application** — Finalise and trigger verification

***

## Understanding the onboarding process

**Why separate Create and Submit steps?**

The Onboarding API separates application creation from submission. This allows you to:

* Gradually collect customer information over multiple sessions
* Amend application details before final submission
* Validate data incrementally
* Upload supporting documents at your own pace

**Verification checks are only triggered upon submission, not when the application is created.**

***

## Step 1: Create associated people

**Endpoint:** `POST /v2/applications/associated-people`

For business applications, you must create associated people before creating the application. These are the individuals connected to the business.

### Types of associated people

| Role                            | Description                                    | When required                               |
| ------------------------------- | ---------------------------------------------- | ------------------------------------------- |
| **APPLICANT**                   | The authorised person applying for the account | Always required                             |
| **DIRECTOR**                    | A company director                             | Required for companies with directors       |
| **ULTIMATE\_BENEFICIAL\_OWNER** | Any person with 25%+ ownership                 | Always required, if Sole Trader set to 100% |

### Required fields by role

| Role                        | Required fields                                                                                                     |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| APPLICANT                   | First name(s), Last name(s), Date of birth, Nationalities, Residential address, Email address                       |
| DIRECTOR                    | First name(s), Last name(s), Date of birth                                                                          |
| ULTIMATE\_BENEFICIAL\_OWNER | First name(s), Last name(s), Date of birth, Nationalities, Residential address, Email address, Ownership percentage |

<Info>
  **Full legal name required:** The first name(s) and last name(s) must be the applicant's full legal name, as per their identity document.
</Info>

<Warning>
  **UBO Ownership Percentage:** When collecting ownership percentage, always use the **upper range**. For example, if a person owns between 25-50%, report 50%.
</Warning>

### Example request

```bash theme={null}
curl -X POST https://api.equalsmoney.com/v2/applications/associated-people \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "firstName": "John",
      "lastName": "Doe",
      "dateOfBirth": "1990-01-01",
      "emailAddress": "john.doe@example.com",
      "nationalities": ["GB"],
      "address": {
        "streetName": "High Street",
        "buildingNumber": "10",
        "postcode": "EC1A 1BB",
        "city": "London",
        "countryCode": "GB"
      }
    },
    {
      "firstName": "Jane",
      "lastName": "Smith",
      "dateOfBirth": "1985-05-15",
      "emailAddress": "jane.smith@example.com",
      "nationalities": ["GB"]
    }
  ]'
```

**Response:** Returns an array of created associated people with their IDs. **Save these IDs** to link them to your application in Step 2.

***

## Sole trader requirements

<Warning>
  **Important:** Although sole traders are individuals, they must use the **business application flow**, not `type: 'INDIVIDUAL'`.
</Warning>

Sole traders require:

1. **One** associated person record for the sole trader themselves
2. Link this person to the application with **both** roles:
   * `APPLICANT` (with `jobTitle`)
   * `ULTIMATE_BENEFICIAL_OWNER` (with `ownershipPercentage: 100`)

This is required because the sole trader is both the authorised signatory AND the sole owner of the business.

### Example: Linking a sole trader

```json theme={null}
{
  "associatedPeople": [
    {
      "associatedPersonId": "e9293471-5eb3-4dbc-916c-dbaf9e2deefd",
      "associationType": "APPLICANT",
      "jobTitle": "Owner"
    },
    {
      "associatedPersonId": "e9293471-5eb3-4dbc-916c-dbaf9e2deefd",
      "associationType": "ULTIMATE_BENEFICIAL_OWNER",
      "ownershipPercentage": 100
    }
  ]
}
```

***

## Step 2: Create application

**Endpoint:** `POST /v2/applications`

This endpoint creates a business application.

### Business application types

The `type` field determines what kind of business entity you're onboarding:

| Value                     | UK Market               | EU Market               | US Market                |
| ------------------------- | ----------------------- | ----------------------- | ------------------------ |
| SOLE\_TRADER              | Sole Trader             | Sole Proprietor         | Sole Proprietorship      |
| PRIVATE\_COMPANY          | Private Limited Company | GmbH, SARL, BV          | LLC / S Corporation      |
| PUBLIC\_COMPANY\_LISTED   | PLC (Listed)            | AG / SA / NV (Listed)   | C Corporation (Listed)   |
| PUBLIC\_COMPANY\_UNLISTED | PLC (Unlisted)          | AG / SA / NV (Unlisted) | C Corporation (Unlisted) |
| PARTNERSHIP               | Partnership / LP / LLP  | SNC / KG / SCS / CV     | GP / LP / LLP            |
| NON\_PROFIT               | Non Profit / Foundation | Non Profit / Foundation | 501(c)(3) Nonprofit      |
| SOCIAL\_ENTERPRISE        | CIC                     | SCIC / gGmbH            | Benefit Corporation, L3C |
| CHARITY                   | Charity                 | Charity                 | Charity                  |
| TRUST                     | Trust                   | Trust                   | Trust                    |
| PENSION                   | SIPP / SSAS             | Local pension schemes   | IRA / 401(k)             |
| FUND                      | Fund                    | Fund                    | Fund                     |

### Required information

#### Market and incorporation

| Field                    | Required    | Description                          |
| ------------------------ | ----------- | ------------------------------------ |
| `market`                 | Yes         | UK, EU, or US                        |
| `countryOfIncorporation` | Yes         | ISO 3166-1 country code              |
| `regionOfIncorporation`  | Conditional | Required for Germany, France, US     |
| `type`                   | Yes         | Business type (see table above)      |
| `registeredName`         | Yes         | Legal name of the company            |
| `registrationNumber`     | Conditional | Required if registered               |
| `tradingNames`           | Yes         | Array with at least one trading name |
| `incorporationDate`      | Yes         | Date of incorporation                |

#### Business profile

| Field                          | Required    | Description                                                                               |
| ------------------------------ | ----------- | ----------------------------------------------------------------------------------------- |
| `businessOverview`             | Yes         | Description of the business (1-1000 chars)                                                |
| `industry`                     | Yes         | Object with `main` and `sub` industry codes                                               |
| `employeeCount`                | Yes         | e.g., `ONE_TO_TEN`, `ELEVEN_TO_FIFTY`                                                     |
| `phoneNumber`                  | Yes         | Business phone number                                                                     |
| `website`                      | Conditional | Required if business has a website                                                        |
| `businessPromotionDescription` | Conditional | Required if no website to explain how the business acquires customers and promotes itself |

#### Addresses

Business applications need at least one address:

| Address type | When required                                 |
| ------------ | --------------------------------------------- |
| `REGISTERED` | Always required                               |
| `TRADING`    | Required if different from registered address |

You can include multiple trading addresses if the business operates from different locations.

#### Feature configuration

The `featureInformation` object determines account capabilities.

**If requesting PAYMENTS**, provide `paymentsInformation`:

* `purposes`, `accountFundingSource`, `estimatedPaymentCount` (monthly), `estimatedPaymentVolume` (annual)
* `inboundCurrencies`, `outboundCurrencies`
* `receivingCountries`, `sendingCountries`

**If requesting CARDS**, provide `cardsInformation`:

* `businessDisplayName` (max 15 characters, appears on cards)
* `purposes`, `estimatedAnnualSpend`, `numberOfCardsRequired`
* `cardsAreForEmployees`, `atmWithdrawalsRequired`

#### Billing configuration (optional)

Set `configurationId` to link the account to a specific fee structure. This is an optional top-level string (maximum 36 characters) supplied by your implementation contact, it is typically an 11-digit numeric string (e.g., `12345678912`).

| Field             | Required | Description                                                                                   |
| ----------------- | -------- | --------------------------------------------------------------------------------------------- |
| `configurationId` | No       | Billing configuration ID. Links the account to a specific fee structure (e.g., `12345678912`) |

<Info>
  **When to include:** Only provide `configurationId` if your implementation contact has given you one. If omitted, the default billing configuration for your product is applied.
</Info>

#### Linking associated people

The `associatedPeople` array links individuals from Step 1 to the application:

| Association type            | Required field                |
| --------------------------- | ----------------------------- |
| `APPLICANT`                 | `jobTitle`                    |
| `DIRECTOR`                  | None                          |
| `ULTIMATE_BENEFICIAL_OWNER` | `ownershipPercentage` (0-100) |

<Info>
  **Note:** You can link the same person multiple times with different roles.
</Info>

### Example request

```bash theme={null}
curl -X POST https://api.equalsmoney.com/v2/applications \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "configurationId": "12345678912",
    "market": "UK",
    "countryOfIncorporation": "GB",
    "type": "PRIVATE_COMPANY",
    "registeredName": "Acme Ltd",
    "registrationNumber": "12345678",
    "tradingNames": ["Acme Trading"],
    "businessOverview": "We provide software services to SMEs across the UK.",
    "industry": {
      "main": "INFORMATION-AND-COMMUNICATION",
      "sub": "IT-AND-COMPUTER-SERVICES"
    },
    "employeeCount": "ELEVEN_TO_FIFTY",
    "incorporationDate": "2020-01-01",
    "phoneNumber": "+447911123456",
    "website": "https://acme.example.com",
    "featureInformation": {
      "requestedFeatures": ["PAYMENTS", "CARDS"],
      "cardsInformation": {
        "businessDisplayName": "ACME",
        "purposes": ["EMPLOYEE_INCENTIVES", "TRAVEL_EXPENSES_DOMESTIC"],
        "estimatedAnnualSpend": "100001-250000",
        "numberOfCardsRequired": "11-50",
        "cardsAreForEmployees": true,
        "atmWithdrawalsRequired": false
      },
      "paymentsInformation": {
        "purposes": ["RECEIVING-PAYMENTS-FROM-CUSTOMERS-AND-PAYING-SUPPLIERS"],
        "estimatedPaymentCount": "100-500",
        "estimatedPaymentVolume": "100001-250000",
        "inboundCurrencies": ["GBP", "EUR"],
        "outboundCurrencies": ["GBP", "EUR"],
        "receivingCountries": ["GB", "FR"],
        "sendingCountries": ["GB", "DE"]
      }
    },
    "addresses": [
      {
        "addressType": "REGISTERED",
        "streetName": "Upper Thames Street",
        "buildingNumber": "68",
        "buildingName": "Vintners Place",
        "postcode": "EC4V 3BJ",
        "city": "London",
        "countryCode": "GB"
      }
    ],
    "associatedPeople": [
      {
        "associatedPersonId": "e9293471-5eb3-4dbc-916c-dbaf9e2deefd",
        "associationType": "APPLICANT",
        "jobTitle": "Director"
      },
      {
        "associatedPersonId": "a1234567-8b90-4cde-f012-3456789abcde",
        "associationType": "DIRECTOR"
      },
      {
        "associatedPersonId": "b2345678-9c01-4def-0123-456789abcdef",
        "associationType": "ULTIMATE_BENEFICIAL_OWNER",
        "ownershipPercentage": 75
      }
    ]
  }'
```

**Response:** Returns the created application with an `id` and `status: 'DRAFT'`.

***

## Step 3: Update application (optional)

**Endpoint:** `PATCH /v2/applications/:applicationId`

You can update an application before submitting it.

**Validation rules:**

* You cannot change the application type
* You cannot add personal-specific fields to a business application
* Must maintain at least one REGISTERED or TRADING address

### Example request

```bash theme={null}
curl -X PATCH https://api.equalsmoney.com/v2/applications/{applicationId} \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "registeredName": "Acme Ltd Updated",
    "businessOverview": "Updated business description here."
  }'
```

***

## Step 4: Upload application documents (optional)

**Endpoint:** `POST /v2/applications/:applicationId/documents`

Upload documents to support the business verification process.

**Request:** Multipart form data with:

* `purpose` — Document purpose (e.g., `'PROOF_OF_FORMATION'`, `'PROOF_OF_OWNERSHIP_STRUCTURE'`, `'OTHER'`)
* `file` — The document file (accepts media and document file types, maximum file size is 10MB)

Please refer to the KYC Pack for more information on documents we will expect to receive based on your company type.

<Warning>
  **Note:** Additional information may be requested by the `KybInformationRequested` webhook after application submission.
</Warning>

### Example request

```bash theme={null}
curl -X POST https://api.equalsmoney.com/v2/applications/{applicationId}/documents \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -F "purpose=PROOF_OF_FORMATION" \
  -F "file=@certificate_of_incorporation.pdf"
```

**File requirements:** Media and document file types accepted, maximum 10MB.

***

## Step 5: Upload associated people documents (optional)

**Endpoint:** `POST /v2/applications/associated-people/:associatedPersonId/documents`

Upload identity documents for associated people (directors, UBOs, applicants).

**Request:** Multipart form data with:

* `purpose` — Document purpose (e.g., `'PROOF_OF_IDENTITY'`, `'PROOF_OF_ADDRESS'`, `'OTHER'`)
* `file` — The document file (accepts media and document file types, maximum file size is 10MB)

### Document upload requirements by KYC model

| KYC model             | Document upload requirements                                                                                                                            |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Managed by Equals** | Document upload via API is **optional**. A portal link will be generated for your customer to complete a guided ID verification journey.                |
| **Hybrid**            | Upload documents via API to support the verification process. This should include a Proof of Identity and Proof of Address, unless otherwise specified. |
| **Delegated**         | Upload certified identity documents via API.                                                                                                            |

<Warning>
  **Note:** Additional information may be requested by the `KybInformationRequested` webhook after application submission.
</Warning>

### Example request

```bash theme={null}
curl -X POST https://api.equalsmoney.com/v2/applications/associated-people/{associatedPersonId}/documents \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -F "purpose=PROOF_OF_IDENTITY" \
  -F "file=@passport.pdf"
```

***

## Step 6: Submit application

**Endpoint:** `POST /v2/applications/:applicationId/submit`

This finalises the application and submits it for review. Once submitted, the application status changes to `'SUBMITTED'` and cannot be modified.

<Warning>
  **Important:** Verification checks are triggered at this point. For the Managed by Equals KYC model, associated people will receive instructions to complete their verification journey.
</Warning>

### Example request

```bash theme={null}
curl -X POST https://api.equalsmoney.com/v2/applications/{applicationId}/submit \
  -H "Authorization: ApiKey YOUR_API_KEY"
```

**Response:** Returns the application with `status: 'SUBMITTED'`.

***

## Validation rules and common errors

### Address validation

Business applications must have at least one `REGISTERED` or `TRADING` address.

### Associated people validation

* Must have at least one `APPLICANT`
* All UBOs with 25%+ ownership must be included
* `ownershipPercentage` required for UBOs
* `jobTitle` required for APPLICANTs

### Type validation

You cannot add personal-specific fields to a business application.

**Error:** `"Cannot update business application with personal-specific fields: ..."`

### Authentication errors

**Error:** `401 Unauthorized`

* Verify your Authorization header uses: `Authorization: ApiKey YOUR_API_KEY`
* Check that your API key is valid

***

## Best practices

1. **Create associated people first**: Always create associated people before the application
2. **Verify data**: Use GET endpoints to verify data before submission
3. **Handle errors**: Check validation error responses for specific field issues
4. **Test with DRAFT status**: Applications start with `status: 'DRAFT'` — use this to test
5. **Understand your KYC model**: Know which verification model applies to your integration
6. **Reference the API spec**: For complete field specifications, refer to the [API Reference documentation](/api-reference/onboarding/create-a-new-onboarding-application)

***

## Next steps

After submitting your application, you'll receive webhook notifications as it progresses through review. See [Onboarding webhooks](/pages/accounts/tutorial/onboarding-webhooks) to learn which events to expect and in what order.

For complete API specifications, refer to the [API Reference documentation](/api-reference/onboarding/create-a-new-onboarding-application).
