# Onboard a business (Digital Banking & Cards)

This guide provides step-by-step instructions for onboarding new business customers for Digital Banking and Cards products using the Solaris API. You will learn which information is mandatory and which endpoints and webhooks to integrate.

For a comprehensive overview of onboarding requirements, check the [Onboarding requirements guide](/guides/get-started/onboarding-requirements/).

### Business onboarding overview

Onboarding a business requires creating multiple resources to represent the legal entity and the natural persons associated with it.

#### Business information

You must manage two distinct streams of data simultaneously:

| Information Stream | Description | Target Resource |
|  --- | --- | --- |
| **Business Information** | Details about the legal entity (e.g., name, registration number, tax info). | The company or organization (`business` resource). |
| **Person Information** | Personal details of the individuals who own, represent, or act for the business. | Legal representatives, beneficial owners, and authorized persons (`person` resource). |


#### Business identification

Verification occurs at two levels:

* **Legal identification:** Solaris verifies the legal entity.
* **Video identification:** The service provider (IDnow) identifies the natural persons. Note that only persons assigned to specific roles require video identification.


#### Business entities and roles

**The Business Resource**

In the API, a `business` represents the legal entity (the company). The `business` is the account holder and owner of the funds. A business must have at least one natural person attached to it.

**The Person Resource**

Natural persons (humans) are represented by `person` resources. They do not own the account but are authorized to act on behalf of the `business`.

**Roles**

You must assign a specific role to every person attached to a business. A single person can hold multiple roles (e.g., a Legal Representative who is also a Beneficial Owner).

The following roles are available:

* **Legal Representative:** Represents the company legally.
* **Ultimate Beneficial Owner (UBO):** Owns or controls the company.
* **Authorized Person:** Authorized to access the account (usually the Legal Representative, but can be others).
* **Signee:** Restricted role for signing documents or viewing info.


Important
You **must** assign at least one **Legal Representative** and one **Ultimate Beneficial Owner** to every business customer.

## System prerequisites

Before starting the onboarding process, implement the following prerequisites:

**1. Technical setup:**

Set up your environment and get your authentication keys. For step-by-step instructions, check the [Technical setup guide](/guides/get-started/technical-setup).

**2. Legal and compliance screens:**

Build the following legal and compliance screens into your sign-up flow. The linked [Legal and compliance screens guide](/guides/get-started/onboarding-requirements/1-legal-compliance-screens) contains detailed instructions for each.

The following screens are required to onboard **B2B customers** for Digital Banking & Cards:

1. **[Terms and Conditions](/guides/get-started/onboarding-requirements/1-legal-compliance-screens/#solaris-terms--conditions):** Present Solaris's T&Cs and collect the customer's consent.
2. **[Customer information](/guides/get-started/onboarding-requirements/1-legal-compliance-screens/#customer-information):** Inform the customer about data processing and collect their consent.
3. **[Business tax declaration](/guides/get-started/onboarding-requirements/1-legal-compliance-screens/#business-tax-information):** Display the required tax declaration text and collect the business's tax information.
4. **[FATCA indication](/guides/get-started/onboarding-requirements/1-legal-compliance-screens/#business-customers):** Determine if the business is subject to US tax law (FATCA).
5. **[Self-declaration as a politically exposed person (PEP)](/guides/get-started/onboarding-requirements/1-legal-compliance-screens/#self-declaration-as-a-politically-exposed-person-pep-screen):** Collect a PEP declaration for all relevant persons. *(Only for customers in France, Italy, and Spain)*
6. **[Compliance screen](/guides/get-started/onboarding-requirements/1-legal-compliance-screens/#compliance-disclaimer-screen):** Display Solaris's compliance disclaimer before starting the identification process.


Record the customer's consent on each screen as a UTC timestamp (e.g., `2019-01-01T00:00:00Z`). Afterward, you must pass each timestamp in its respective field to Solaris.

- Collect the customer's consent to Solaris's Terms and Conditions and store the timestamp in the `terms_conditions_signed_at` field.
- Collect the customer's consent to data processing and store the timestamp in the `data_terms_signed_at` field.
- Collect the customer's FATCA indication and store it in the `fatca_relevant` field. Store the timestamp in the `fatca_crs_confirmed_at` field.


Note
- All legal representative(s) of the business, beneficial owner(s) and authorized person(s) must consent to FATCA related fields.
- Only legal representative(s) and authorized person(s) on the account must consent to Solaris' terms and conditions and data terms fields.


## Integration overview

The following diagram outlines the integration process for onboarding business customers. Click on each step to jump to the relevant section.


```mermaid
flowchart TD
    %% --- Chart Structure ---

    subgraph P1 ["Phase 1: Business & Person Registration"]
        A1("Step 1:<br/>Collect Business Data &<br/>Create Business Resource") --> A2("Step 2:<br/>Upload Business Documents")
        A2 --> A3("Step 3:<br/>Create Legal Representatives")
        A3 --> A4("Step 4:<br/>Create Beneficial Owners")
        A4 --> A5("Step 5:<br/>Create Tax Identifications")
    end

    subgraph P2 ["Phase 2: Identification & Due Diligence (BKYC & CDD)"]
        B1("Step 6.1:<br/>Trigger Business Identification (BKYC)") --> B2("Step 6.2:<br/>Implement Manual<br/>Video Identification")
        B2 --> B3("Step 6.3:<br/>Implement<br/>Compliance Questions")
        B3 --> B4("Step 6.4:<br/>Verify CDD Statuses")
        B4 --> B5("Step 6.5:<br/>Verify Business<br/>FATCA Relevance")
        B5 --> B6{BKYC/CDD<br/>Check}
    end
    
    subgraph P3 ["Phase 3: Account & Card Activation"]
        C1("Step 7:<br/>Create Business Account") --> C2("Step 8:<br/>Create Authorized Persons")
        C2 --> C3("Step 9:<br/>Create & Activate Card")
        C3 --> C4("Step 10:<br/>Create Other Optional Roles")
    end
    
    D[Abort Onboarding]

    %% --- Connections between Phases ---
    P1 --> P2
    B6 -->|successful| P3
    B6 -->|failed| D
    
    %% --- Inline Style Definitions ---
    style A1 fill:#f2f2f2,color:#1b2230,stroke:#c8cdd6,stroke-width:2px
    style A2 fill:#f2f2f2,color:#1b2230,stroke:#c8cdd6,stroke-width:2px
    style A3 fill:#f2f2f2,color:#1b2230,stroke:#c8cdd6,stroke-width:2px
    style A4 fill:#f2f2f2,color:#1b2230,stroke:#c8cdd6,stroke-width:2px
    style A5 fill:#f2f2f2,color:#1b2230,stroke:#c8cdd6,stroke-width:2px
    style B1 fill:#f2f2f2,color:#1b2230,stroke:#c8cdd6,stroke-width:2px
    style B2 fill:#f2f2f2,color:#1b2230,stroke:#c8cdd6,stroke-width:2px
    style B3 fill:#f2f2f2,color:#1b2230,stroke:#c8cdd6,stroke-width:2px
    style B4 fill:#f2f2f2,color:#1b2230,stroke:#c8cdd6,stroke-width:2px
    style B5 fill:#f2f2f2,color:#1b2230,stroke:#c8cdd6,stroke-width:2px
    style C1 fill:#f2f2f2,color:#1b2230,stroke:#c8cdd6,stroke-width:2px
    style C2 fill:#f2f2f2,color:#1b2230,stroke:#c8cdd6,stroke-width:2px
    style C3 fill:#f2f2f2,color:#1b2230,stroke:#c8cdd6,stroke-width:2px
    style C4 fill:#f2f2f2,color:#1b2230,stroke:#c8cdd6,stroke-width:2px
    
    style B6 fill:#dedbd3,color:#1b2230,stroke:#5e6a7a,stroke-width:2px
    style D fill:#ffc2ad,color:#1b2230,stroke:#5d5746,stroke-width:2px
    
    %% --- Clickable Links ---
    click A1 "#step-1-collect-business-data-and-create-business-resource"
    click A2 "#step-2-upload-business-documents"
    click A3 "#step-3-create-legal-representatives"
    click A4 "#step-4-create-beneficial-owners"
    click A5 "#step-5-create-tax-identifications"
    click B1 "#61-business-identification"
    click B2 "#62-manual-video-identification"
    click B3 "#63-compliance-questions"
    click B4 "#64-customer-due-diligence"
    click B5 "#65-screening-for-fatca-indicia"
    click C1 "#step-7-create-business-account"
    click C2 "#step-8-create-authorized-persons"
    click C3 "#step-9-create-and-activate-card"
    click C4 "#step-10-create-other-optional-roles"
```

| Category | Step | Description |
|  --- | --- | --- |
| **Business Registration** | [Step 1](#step-1-collect-business-data-and-create-business-resource) | Collect mandatory business data and create a business resource. |
| **Business Registration** | [Step 2](#step-2-upload-business-documents) | Collect required documents and create document resources. |
| **Person Registration** | [Step 3](#step-3-create-legal-representatives) | **3.1.** Collect data and create person resources for all legal representatives.**3.2.** Assign the legal representative role. |
| **Person Registration** | [Step 4](#step-4-create-beneficial-owners) | **4.1.** Collect data and create person resources for all beneficial owners.**4.2.** Assign the beneficial owner role. |
| **Tax Info** | [Step 5](#step-5-create-tax-identifications) | **5.1.** Create business tax identification.**5.2.** Create person tax identifications for all related persons. |
| **Identification** | [Step 6](#step-6-complete-the-business-identification-bkyc-and-due-diligence-process) | **6.1.** Trigger Business KYC (BKYC) and video identification.**6.2.** Implement manual video ID.**6.3.** Handle compliance questions.**6.4.** Verify Customer Due Diligence (CDD) status.**6.5.** Verify FATCA status. |
| **Account** | [Step 7](#step-7-create-business-account) | Create an account opening request. |
| **Auth. Persons** | [Step 8](#step-8-create-authorized-persons) | Add all legal representatives as authorized persons on the account. |
| **Cards** | [Step 9](#step-9-create-and-activate-card) | Create and activate the business card. |
| **Optional** | [Step 10](#step-10-create-other-optional-roles) | Add optional roles (e.g., Signees, other Authorized Persons). |


### Sequence diagram

To view a larger version, right-click the image and select "Open in a new tab".

![Diagram: Business onboarding - sequence diagram](/assets/business-onboarding-flow.47b48ab88b4275bf9c22ad015b1cf41f4f6a4b44ad96fad3b236a489069c20fe.71c3202d.svg)

### Webhooks

Solaris recommends subscribing to the following webhook events to better automate your processes. For detailed instructions on implementing Solaris webhooks, check the [webhooks documentation](/api-reference/webhooks/).

- [ACCOUNT_BLOCK](/api-reference/onboarding/webhooks/webhook-events/paths/account_block/post)
- [ACCOUNT_CLOSURE_REQUEST](/api-reference/onboarding/webhooks/webhook-events/paths/account_closure/post)
- [ACCOUNT_CLOSURE](/api-reference/onboarding/webhooks/webhook-events/paths/account_closure/post)
- [BENEFICIAL_OWNER](/api-reference/onboarding/webhooks/webhook-events/paths/beneficial_owner/post)
- [BOOKING](/api-reference/onboarding/webhooks/webhook-events/paths/booking/post)
- [BUSINESS_CHANGED](/api-reference/onboarding/webhooks/webhook-events/paths/business_changed/post)
- [BUSINESS_DELETED](/api-reference/onboarding/webhooks/webhook-events/paths/business_deleted/post)
- [BUSINESS_SEIZURE_CREATED](/api-reference/onboarding/webhooks/webhook-events/paths/business_seizure_created/post)
- [BUSINESS_SEIZURE_DELETED](/api-reference/onboarding/webhooks/webhook-events/paths/business_seizure_deleted/post)
- [BUSINESS_SEIZURE_FULFILLED](/api-reference/onboarding/webhooks/webhook-events/paths/business_seizure_fulfilled/post)
- [BUSINESS_SEIZURE_UPDATED](/api-reference/onboarding/webhooks/webhook-events/paths/business_seizure_updated/post)
- [BUSINESS_IDENTIFICATION](/api-reference/onboarding/webhooks/webhook-events/paths/business_identification/post)
- [BUSINESS_TAX_IDENTIFICATION_CHANGED](/api-reference/onboarding/webhooks/webhook-events/paths/business_tax_identification_changed/post)
- [CARD_LIFECYCLE_EVENT](/api-reference/onboarding/webhooks/webhook-events/paths/card_lifecycle_event/post)
- [CARD_AUTHORIZATION](/api-reference/onboarding/webhooks/webhook-events/paths/card_authorization/post)
- [CARD_AUTHORIZATION_DECLINE_V2](/api-reference/onboarding/webhooks/webhook-events/paths/card_authorization_decline_v2/post)
- [CARD_AUTHORIZATION_RESOLUTION](/api-reference/onboarding/webhooks/webhook-events/paths/card_authorization_resolved/post)
- [CARD_FRAUD_CASE_PENDING](/api-reference/onboarding/webhooks/webhook-events/paths/card_fraud_case_pending/post)
- [CARD_FRAUD_CASE_TIMEOUT](/api-reference/onboarding/webhooks/webhook-events/paths/card_fraud_case_timeout/post)
- [IDENTIFICATION](/api-reference/onboarding/webhooks/webhook-events/paths/identification/post)
- [LEGAL_REPRESENTATIVE](/api-reference/onboarding/webhooks/webhook-events/paths/legal_representative/post)
- [PERSON_CHANGED](/api-reference/onboarding/webhooks/webhook-events/paths/person_changed/post)
- [PERSON_DELETED](/api-reference/onboarding/webhooks/webhook-events/paths/person_deleted/post)
- [PERSON_SEIZURE_CREATED](/api-reference/onboarding/webhooks/webhook-events/paths/person_seizure_created/post)
- [PERSON_SEIZURE_DELETED](/api-reference/onboarding/webhooks/webhook-events/paths/person_seizure_deleted/post)
- [PERSON_SEIZURE_FULFILLED](/api-reference/onboarding/webhooks/webhook-events/paths/person_seizure_fulfilled/post)
- [PERSON_SEIZURE_UPDATED](/api-reference/onboarding/webhooks/webhook-events/paths/person_seizure_updated/post)
- [PERSON_MOBILE_NUMBER_CREATED](/api-reference/onboarding/webhooks/webhook-events/paths/person_mobile_number_created/post)
- [PERSON_MOBILE_NUMBER_DELETED](/api-reference/onboarding/webhooks/webhook-events/paths/person_mobile_number_deleted/post)
- [PERSON_TAX_IDENTIFICATION_CHANGED](/api-reference/onboarding/webhooks/webhook-events/paths/person_tax_identification_changed/post)
- [POSTBOX_ITEM_CREATED](/api-reference/onboarding/webhooks/webhook-events/paths/postbox_item_created/post)
- [SCA_CHALLENGE](/api-reference/onboarding/webhooks/webhook-events/paths/sca_challenge/post)


### Mandatory features

You must integrate all mandatory features highlighted in the [Onboarding requirements guide](/guides/get-started/onboarding-requirements/6-mandatory-features/#digital-banking--cards) before going live.

## Step 1: Collect business data and create business resource

Collect mandatory data points in your sign-up flow, including timestamps for the business's consent to the [legal and compliance screens](#system-prerequisites).

Pass this data to Solaris by creating a [business resource](/guides/get-started/onboarding-requirements/2-data-collection/#customer-data-resource-types).

### API reference

For a complete list of endpoints, properties, and examples related to the `business` resource, visit the following links:

- [Business resource API reference](/api-reference/onboarding/businesses/#tag/Businesses):
  - [POST Create business](/api-reference/onboarding/businesses/#tag/Businesses/paths/~1v1~1businesses/post)
  - [GET Retrieve business](/api-reference/onboarding/businesses/#tag/Businesses/paths/~1v1~1businesses~1%7Bid%7D/get)
  - [PATCH Update business](/api-reference/onboarding/businesses/#tag/Businesses/paths/~1v1~1businesses~1%7Bid%7D/patch)


**Related webhook events**

- [BUSINESS_CHANGED](/api-reference/onboarding/webhooks/webhook-events/paths/business_changed/post)
- [BUSINESS_DELETED](/api-reference/onboarding/webhooks/webhook-events/paths/business_deleted/post)


Important points about data collection
- Review the special considerations for data collection highlighted in the [onboarding requirements guide](/guides/get-started/onboarding-requirements/2-data-collection/#important-considerations-for-data-collection).
- You must submit the information exactly as it appears in official documents.
- When testing in the Sandbox, ensure that each business you create has unique values for `name`, `postal_code`, `legal_form`, and `registration_number` (if provided). If you create over 1000 identical business resources, the API returns a `400` error.


### Create business

Important
- The mandatory data points required for businesses may differ depending on the country in which you're opening the account. The following example outlines the mandatory fields for Germany. For information about other countries, please refer to the [Onboarding requirements guide](/guides/get-started/onboarding-requirements/2-data-collection/#business-customers-b2b)
- There are certain mappings between the fields `tax_country`, `sector`, and `legal_form`. Check this [section](/guides/get-started/onboarding-requirements/2-data-collection/#sector-tax-country-and-legal-form-mapping) for more information.


This endpoint creates a business resource for your customer. You must collect the following mandatory data points from the customer in your sign-up flow and pass it to Solaris in the request body of this endpoint:

- `name`
- `address`
  - `line_1`
  - `line_2`
  - `postal_code`
  - `city`
  - `country`
- `sector`
- `legal_form`
- `nace_code`
- `foundation_date`
- `crs_company_type` or `registration_type`
- `business_purpose`
- `tax_information`
  - `tax_country`
  - `tax_confirmation`
  - `registration_issuer`: For Germany, it must be preceded by AMTSGERICHT (e.g., AMTSGERICHT Berlin).
  - `registration_number`
- `registration_district`
- `terms_conditions_signed_at`
- `data_terms_signed_at`
- `fatca_relevant`
- `fatca_crs_confirmed_at`


**Request URL**:


```shell
POST /v1/businesses
```

[Click here to view the full API reference.](/api-reference/onboarding/businesses/#tag/Businesses/paths/~1v1~1businesses/post)

### Automatic data collection (Optional)

Simplify your customers' onboarding process by opting for the automatic data collection feature. With our external service provider, [Business Registry](https://www.kompany.com/search), customers can enter the country and company name, and the remaining business data fields will be automatically filled out.

Info
Automated data collection is an optional step that improves user experience. For more information on this feature and its associated cost, contact your Partner Manager.

#### GET Search for business commercial registration

The customer enters the company's name and country on your frontend and you pass this information using the following endpoint to automatically fetch the business' `registration_issuer` and `registration_number`:

Info
This endpoint might be slow in certain markets.

**Request URL:**


```shell
GET /v1/commercial_registrations/search_by_name?country={{}}&name={{}}
```

**Example response**


```json Example Response
[
    {
        "name": "EWIV für Unternehmensberatung",
        "registration_number": "HRA 201632",
        "registration_issuer": "AMTSGERICHT Lüneburg"
    }
]
```

[Click here to view the full API reference.](/api-reference/onboarding/businesses/#tag/Business-Registrations/paths/~1v1~1commercial_registrations~1search_by_name/get)

#### GET Automatic business data collection

Info
If the previous endpoint cannot retrieve the registration number, you must allow the user to enter it manually.

Use the following endpoint to automatically retrieve the remaining business details after obtaining the `registration_issuer` and `registration_number` from the response of the previous endpoint:

Important
- **Cost:** This endpoint has an associated cost per request. Contact your Partner Manager for more information.
- **Prefix (Germany):** For companies in Germany, you must add `AMTSGERICHT` before the value of the `registration_issuer` (e.g., `AMTSGERICHT MÜNCHEN`).
- **Registration Number:** You must enter the complete registration number, including the letters at the beginning (e.g., `HRB 12345`). Inputting `12345` alone will not work.
- **Registration Issuer:** For the `registration_issuer`, we expect one of the Business Registry offices from the list available in [Appendix V](/guides/get-started/digital-banking/onboard-business/#appendix-v-business-registry-offices). We cannot accept free input as it breaks automation.


**Request URL**:


```shell
GET /v1/commercial_registrations/find?registration_number={{}}&registration_issuer={{}}
```

**Example response**


```json Example Response
{
  "name": "FLOOR 13 GmbH",
  "address": {
    "country": "DE",
    "postal_code": "86919",
    "city": "Utting a.Ammersee",
    "line_1": "Seestraße 9",
    "line_2": ""
  },
  "legal_form": "GMBH",
  "tax_country": "DE",
  "registration_number": "HRB 198673",
  "registration_issuer": "AMTSGERICHT MÜNCHEN",
  "registration_date": "2012-05-09",
  "registry_updated_at": "2015-11-17",
  "legal_representatives": [
    {
      "first_name": "Stefan",
      "last_name": "Schneider"
    }
  ],
  "commercial_registry_industry_key": [
      "66.19.0 - Sonstige mit Finanzdienstleistungen verbundene Tätigkeiten",
      "70.10.9 - Sonstige Verwaltung und Führung von Unternehmen und Betrieben",
      "70.22.0 - Unternehmensberatung",
      "73.11.0 - Werbeagenturen"
  ]
}
```

[Click here to view the full API reference.](/api-reference/onboarding/businesses/#tag/Business-Registrations/paths/~1v1~1commercial_registrations~1find/get)

#### Foreign companies examples

If the company is not registered in Germany, you can still use this service for companies in other countries. The following examples describe how to find the business registration details for a French company.

Info
The field `registration_issuer` is only required for companies in Germany.

**GET Search for business commercial registration (France)**

**Request URL**


```shell
GET v1/commercial_registrations/search_by_name?name=PARISOL&country=FR
```

**Response**


```json Example Response
{
  "name": "PARISOL",
  "registration_number": "513 937359",
  "registration_issuer": null
}
```

**GET Automatic business data collection (France)**

**Request URL**


```shell
GET  /v1/commercial_registrations/find?registration_number=513937359&country=FR
```

**Response**


```json Example Response
{
  "name": "PARISOL",
  "address": {
    "country": "FR",
    "postal_code": null,
    "city": "NANTERRE",
    "line_1": "RUE D ARRAS 18",
    "line_2": ""
  },
  "legal_form": null,
  "tax_country": "FR",
  "registration_number": "513 937359",
  "registration_issuer": null,
  "registration_date": "2009-07-27",
  "registry_updated_at": null,
  "legal_representatives": [
    {
      "first_name": "Stefan",
      "last_name": "Schneider"
    }
  ]
}
```

Testing data
Check the [appendix](#appendix-iii-testing-samples-for-get-search-for-business-commercial-registration) for testing data for these endpoints.

## Step 2: Upload business documents

Create [document resources](/guides/get-started/onboarding-requirements/4-document-collection/#document-resource-types) and attach them to the business to verify its identity. These documents are mandatory and vary based on legal form and sector. Refer to the [appendix](#appendix-ii-bkyc-required-documents) for a list of required documents.

You must make a separate API request for each document and specify the `document_type`. See the [appendix](#document-types) for a list of possible values.

### API reference

For a complete list of endpoints, properties, and examples related to the `business document` resource, visit the following links:

- [Business Documents API Reference Documentation](/api-reference/onboarding/businesses/#tag/Business-documents):
  - [POST Create a business document](/api-reference/onboarding/businesses/#tag/Business-documents/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1documents/post)
  - [GET Retrieve a business document](/api-reference/onboarding/businesses/#tag/Business-documents/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1documents~1%7Bid%7D/get)
  - [GET Download business document](/api-reference/onboarding/businesses/#tag/Business-documents/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1documents~1%7Bid%7D~1file/get)
  - [PATCH Update a business document](/api-reference/onboarding/businesses/#tag/Business-documents/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1documents~1%7Bid%7D/patch)
  - [DELETE Delete a business document](/api-reference/onboarding/businesses/#tag/Business-documents/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1documents~1%7Bid%7D/delete)


#### POST Upload a document

This endpoint uploads a document and links it to the business with the `business_id` specified in the request URL.

Add the following properties to the request body:

- `document_type`: The document type. For a list of possible values, see the API reference.
- `file`: The file to be uploaded.


Info
The request body of this endpoint is a `multipart/form-data` content type. Parameters are transmitted as form-data, not as a raw JSON string.

**Request URL**


```shell
POST /v1/businesses/{business_id}/documents
```

[Click here to view the full API reference](/api-reference/onboarding/businesses/#tag/Business-documents/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1documents/post)

## Step 3: Create Legal Representatives

Once the `business` resource is created, you must create the associated natural persons and assign them roles.

In this step, collect the mandatory data points from the business' legal representative(s) and create a `person` object for each representative. Then, create a `legal_representative` resource and link it to the corresponding `person` object.

### What is a legal representative?

Legal representatives can be natural persons (individuals) or legal entities (businesses) appointed by a company to act on its behalf. The legal representative(s) of a company may be, for instance, its general manager(s) or its managing director(s). The names of a business' legal representatives are usually recorded in the company's commercial register.

Important
- A business must have at least one legal representative.
- If a business has more than one legal representative, you must create and link **all of them** to the `business` object in the Solaris system to prevent delays during the business identification process.


#### Legal representatives as legal entities

A business' legal representative can be a legal entity instead of a natural person. For example, the legal representative of a GbR company could be another GmbH or AG company.

In this case, you must do the following:

1. Collect the business data of the legal entity acting as the legal representative and create a business resource for it.
2. The natural persons who are the legal representatives of **that** legal entity are the ones who must go through the KYC flow.


### 3.1 Create person resource(s) for each legal representative

Collect the mandatory information for each legal representative and create a person resource.

**API reference**

For a complete list of endpoints, properties, and examples related to the `person` resource, visit the following links:

- [Person resource API reference](/api-reference/onboarding/persons/#tag/Persons)
  - [POST Create person](/api-reference/onboarding/persons/#tag/Persons/paths/~1v1~1persons/post)
  - [GET Retrieve a person](/api-reference/onboarding/persons/#tag/Persons/paths/~1v1~1persons~1%7Bid%7D/get)
  - [PATCH Update person](/api-reference/onboarding/persons/#tag/Persons/paths/~1v1~1persons~1%7Bid%7D/patch)


**Related webhook events**

- [`PERSON_CHANGED`](/api-reference/onboarding/webhooks/webhook-events/paths/person_changed/post)
- [`PERSON_DELETED`](/api-reference/onboarding/webhooks/webhook-events/paths/person_deleted/post)


Important points about data collection
- Review the special requirements in the [Onboarding requirements guide](/guides/get-started/onboarding-requirements/2-data-collection/#important-considerations-for-data-collection).
- Submit information exactly as it appears in official documents.
- **Sandbox Testing:** Ensure that each person you create has unique values for `first_name`, `last_name`, `birth_city`, and `birth_date`. If you create over 1000 identical person resources, the API will return a `400` error.
- **Privacy:** Do not use real personal data when testing in Sandbox.


#### POST Create person (Legal representative)

Important points
- The mandatory data points for legal representatives depend on the country in which you're opening the account. The following example shows the mandatory data points for **Germany**. For other countries, check the [Onboarding requirements guide](/guides/get-started/onboarding-requirements/2-data-collection/#legal-representatives)
- You have to create a separate `person` object for each legal representative associated with the business.


Call this endpoint to create a person resource for the business' legal representative. You must collect the following mandatory data points in your sign-up flow and pass it to Solaris in the request body of this endpoint:

- `salutation`
- `first_name`
- `last_name`
- `address`
  - `line_1`
  - `line_2`
  - `postal_code`
  - `city`
  - `state`
  - `country`
- `birth_date`
- `birth_city`
- `birth_country`
- `nationality`
- `mobile_number`
- `terms_and_conditions_signed_at`
- `data_terms_signed_at`
- `fatca_relevant`
- `fatca_crs_confirmed_at`


**Request URL:**


```shell
POST /v1/persons
```

[Click here to view the full API reference](/api-reference/onboarding/persons/#tag/Persons/paths/~1v1~1persons/post)

### 3.2 Create legal representative resource(s)

For each person resource created, create a `legal_representative` resource linking the `person_id`.

Important
Solaris **only** supports legal representatives with the `type_of_representation` set to `ALONE`.

### API reference

For a complete list of endpoints, properties, and examples related to the `legal_representative` resource, visit the following links:

- [Business Legal Representative resource API reference](/api-reference/onboarding/businesses/#tag/Business-legal-representatives):
  - [POST Create a business legal representative](/api-reference/onboarding/businesses/#tag/Business-legal-representatives/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1legal_representatives/post)
  - [GET Index a business legal representatives](/api-reference/onboarding/businesses/#tag/Business-legal-representatives/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1legal_representatives/get)
  - [PATCH Update a business legal representative](/api-reference/onboarding/businesses/#tag/Business-legal-representatives/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1legal_representatives~1%7Bid%7D/patch)


**Related webhook events**

- [LEGAL_REPRESENTATIVE](/api-reference/onboarding/webhooks/webhook-events/paths/legal_representative/post)


#### POST Create legal representative

Call this method to create a `legal_representative` resource on the business and link a `person` to the business as a legal representative.

**Attributes**

- `type_of_representation`: A `legal_representative` could have a `type_of_representation`, which indicates whether this legal representative can make decisions alone or jointly with other legal representatives. This attribute is optional. Possible values are `ALONE`, `JOINT`, or `OTHER`.
- `power_of_attorney_confirmed_at`: In case of `JOINT` representation, legal representatives need to confirm the power of attorney's timestamp in the `power_of_attorney_confirmed_at` attribute.


**Request URL:**


```shell
POST /v1/businesses/{business_id}/legal_representatives
```

[Click here to view the full API reference.](/api-reference/onboarding/businesses/#tag/Business-legal-representatives/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1legal_representatives/post)

Check the [FAQ](#legal-representative-faqs) for more information about legal representatives.

## Step 4: Create Beneficial Owners

In this step:

- Collect the mandatory data points from the business' beneficial owner(s) and create a `person` object for each beneficial owner.
- Create a `beneficial_owner` resource and assign it to its corresponding `person` object.
- Display the definition of the beneficial owner in your UI.


Important
- If a business has more than one beneficial owner, you must create and link **all of them** to the corresponding `business` object to avoid delays during the business identification process.
- A beneficial owner MUST be a natural person and CANNOT be another company.


### What is a Beneficial Owner?

The Beneficial Owners (BO) are **natural** persons who, directly or indirectly, own more than 25% of a company's shares.

According to the German Money Laundering Act (Geldwäschegesetz - GwG), a Beneficial Owner is a natural person who:

- Ultimately owns or controls the business.
- On whose behalf a transaction is ultimately carried out.
- On whose behalf a business relationship is ultimately established.


Important
- The beneficial owner **must** be a **natural** person (individual) and not a legal entity (company). If your business is owned by another company (holding or corporate structure), you need to follow the trail of indirect ownership until you find an individual.
- After a thorough investigation, if no individual owns directly or indirectly more than 25% of the company's voting shares, you must add the legal representative(s) as `fictitious` beneficial owners.
- Beneficial owners don't require video identification.
- For more information about beneficial owners, check the FAQ in the appendices section.


### Beneficial owner legal definition

Ensure that the beneficial owner's full definitions and the checkbox are available to your customers in your sign-up flow.

**Full definition in English**

> The ultimate beneficial owner in the sense of the German Money Laundering Act (Geldwäschegesetz - GwG) is the natural person who ultimately owns or controls the contracting party, or on whose behalf a transaction is ultimately carried out or a business relationship is ultimately established. This particularly includes:
1. In case of legal persons, foundations without legal capacity and, in the case of other companies, any natural person who directly or indirectly holds more than a 25% share of the capital, controls more than 25% of the voting rights or exercises control in any comparable manner (+). Establishing the identity of the beneficial owner can be waived, though, for companies that are listed in an organised market in the EU with in accordance with Sec on 2 para. 5 of the Securities Trading Act or, in case of listed companies from a third country, if they are subject to EU-equivalent transparency requirements regarding voting rights or equivalent international standards;
2. In case of foundations or other legal arrangements with legal capacity (or similar) used to manage or distribute assets or property as trustee (trust management), or through which third parties are instructed with the management or distribution of assets or property, the ultimate beneficial owner is:

- any natural person who is a trustor/settlor, trustee or protector, if applicable
- any natural person who is a member of the board of the foundation,
- any natural person designated as a beneficiary,
- the group of natural persons in whose favour the assets are mainly to be administered or distributed, provided that the natural person who is to be the ultimate beneficial owner of the assets or property has not yet been determined
- any natural person who, by any other means, directly or indirectly exercises control over the asset management or property or the distribution of income.

1. In the event of acting on behalf of another party, the ultimate beneficial owner includes the party upon whose initiative the transaction is performed. If the contracting party acts as a trustee, he also acts on behalf of another party.
(+) Indirect control exists particularly if corresponding shares are held by one or more associations pursuant to Sec on 20 para. 1 GwG which are controlled by a natural person. Control exists particularly if the natural person can directly or indirectly exert a controlling influence on the association pursuant to Sec on 20 para. 1 GwG. Sec on 290 para. 2 to 4 German Commercial Code (Handelsgesetzbuch - HGB) applies mutatis mutandis to the existence of a controlling influence. If, after extensive audits have been performed and without the facts according to Sec on 43 para. 1 GwG applying, no natural person has been identified or if there is any doubt that the identified person is the ultimate beneficial owner, the ultimate beneficial owner shall be the legal representative, managing partner or partner of the contracting party.



**Full definition in German**

> Wirtschaftlich Berechtigter im Sinne des Geldwäschegesetzes, ist die natürliche Person, in deren Eigentum oder unter deren Kontrolle der Vertragspartner letztlich steht, oder auf deren Veranlassung eine Transaktion letztlich durchgeführt oder eine Geschäftsbeziehung letztlich begründet wird. Hierzu zählen insbesondere:
1. Bei juristischen Personen, außerrechtsfähigen Stiftungen und bei sonstigen Gesellschaften jede natürliche Person, welche unmittelbar oder mittelbar mehr als 25 Prozent der Kapitalanteile hält, mehr als 25 Prozent der Stimmrechte kontrolliert oder auf vergleichbare Weise Kontrolle ausübt(2). Auf die Abklärung des wirtschaftlich Berechtigten kann aber verzichtet werden bei Gesellschaften, die innerhalb der EU an einem organisierten Markt im Sinne des § 2 Abs. 5 des Wertpapierhandelsgesetzes notiert sind, oder bei börsennotierten Unternehmen aus einem Drittstaat, wenn sie dem Gemeinschaftsrecht entsprechenden Transparenzanforderungen im Hinblick auf Stimmrechtsanteile oder gleichwertigen internationalen Standards unterliegen;
2. Bei rechtsfähigen Stiftungen und Rechtsgestaltungen, mit denen treuhänderisch Vermögen verwaltet oder verteilt oder die Verwaltung oder Verteilung durch Dritte beauftragt wird, oder diesen vergleichbaren Rechtsformen zählt zu den wirtschaftlich Berechtigten:

- jede natürliche Person, die als Treugeber, Verwalter von Trusts (Trustee) oder Protektor, sofern vorhanden,
- jede natürliche Person, die Mitglied des Vorstands der Stiftung ist,
- jede natürliche Person, die als Begünstigte bestimmt worden ist,
- die Gruppe von natürlichen Personen, zu deren Gunsten das Vermögen hauptsächlich verwaltet oder verteilt werden soll, sofern die natürliche Person, die Begünstigte des verwalteten Vermögens werden soll, noch nicht bestimmt ist,
- jede natürliche Person, die auf sonstige Weise unmittelbar oder mittelbar beherrschenden Einfluss auf die Vermögensverwaltung oder Ertragsverteilung ausübt.

1. Bei Handeln auf Veranlassung zählt zu den wirtschaftlich Berechtigten derjenige, auf dessen Veranlassung die Transaktion durchgeführt wird. Soweit der Vertragspartner als Treuhänder handelt, handelt er ebenfalls auf Veranlassung.



### 4.1 Create person resource(s) for each beneficial owner

Collect the mandatory information for each beneficial owner and create a person resource.

#### POST Create person (Beneficial owner)

Important points
- The mandatory data points for beneficial owners depend on the country in which you're opening the account. The following example shows the mandatory data points for **Germany**. For other countries, check the [Onboarding requirements guide](/guides/get-started/onboarding-requirements/2-data-collection/#beneficial-owners)
- You have to create a separate `person` object for each beneficial owner associated with the business.


Call this endpoint to create a person resource for the business' beneficial owner. You must collect the following mandatory data points in your sign-up flow and pass it to Solaris in the request body of this endpoint:

- `salutation`
- `first_name`
- `last_name`
- `address`
  - `line_1`
  - `line_2`
  - `postal_code`
  - `city`
  - `state`
  - `country`
- `birth_date`
- `nationality`
- `fatca_relevant`
- `fatca_crs_confirmed_at`


**Request URL:**


```shell
POST /v1/persons
```

[Click here to view the full API reference](/api-reference/onboarding/persons/#tag/Persons/paths/~1v1~1persons/post)

### 4.2 Create beneficial owner resource(s)

For each person resource created, create a `beneficial_owner` resource linking the `person_id`.

### API reference

For a complete list of endpoints, properties, and examples related to the `beneficial_owner` resource, visit the following links:

- [Business Beneficial Owner resource API reference](/api-reference/onboarding/businesses/#tag/Beneficial-Owners):
  - [POST Create a business beneficial owner](/api-reference/onboarding/businesses/#tag/Beneficial-Owners/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1beneficial_owners/post)
  - [GET Retrieve a business beneficial owner](/api-reference/onboarding/businesses/#tag/Beneficial-Owners/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1beneficial_owners~1%7Bid%7D/get)
  - [PATCH Update a business beneficial owner](/api-reference/onboarding/businesses/#tag/Beneficial-Owners/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1beneficial_owners~1%7Bid%7D/patch)


**Related webhook events**

- [BENEFICIAL_OWNER](/api-reference/onboarding/webhooks/webhook-events/paths/beneficial_owner/post)


#### POST Create beneficial owner

Call this method to create a `beneficial_owner` resource on the business and link a `person` to the business as a beneficial owner. You must add the following properties in the request body of this endpoint:

- `person_id`: The ID of the person resource you created for the beneficial owner.
- `voting_share`: The beneficial owner's voting share in the business.


Info
Please note is that if you're creating a fictitious beneficial owner, the `voting_share` is not required.

**Request URL:**


```shell
POST /v1/businesses/{business_id}/beneficial_owners
```

[Click here to view the full API reference.](/api-reference/onboarding/businesses/#tag/Beneficial-Owners/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1beneficial_owners/post)

Check the [FAQ](#beneficial-owner-faqs) for more information about beneficial owners.

## Step 5: Create tax identifications

Collect relevant [tax information](/guides/get-started/onboarding-requirements/3-tax-information/) and create tax identification resources for:

1. The business legal entity.
2. All natural persons associated with the business.


Important points about tax information
Submitting the tax information of your customers is a requirement to open a bank account in all of Solaris branches. However, note the following:

* You can open the bank account for customers in Germany (DE branch) before they provide tax information. However, you must submit the customer's tax information to Solaris within **90 days** of opening the account. Otherwise, Solaris will block the customer's account with the reason `MISSING_TAX_INFORMATION` until you submit the required tax information.
* If a customer has multiple tax residencies (i.e., taxable in multiple countries), you must create a separate tax identification resource for each tax residency and specify **only** one of them as `primary`.
* The first `tax_identification` to be submitted for a `person` or a `business` must be the primary tax identification. If another `tax_identification` with the value of `primary` set to `true` is created, it will set the `primary` value of the previously created `tax_identification` to `false`.
* A `person` or `business` may only have one `tax_identification` per `country`.
* When creating a `tax_identification`, explicitly collect the `country` value from the user and do not default to their physical residence (i.e., the `country` property of the `person` resource).
* Check the [Onboarding requirements guide](/guides/get-started/onboarding-requirements/3-tax-information#tax-identification-number-tin-per-country) for more information about the TIN requirements per country.


### 5.1 Business tax identification

Collect tax information for the business entity and create a business tax identification resource.

### API reference

For a complete list of endpoints, properties, and examples related to the `business tax identification` resource, visit the following links:

- [Business tax identifications API reference](/api-reference/onboarding/businesses/#tag/Business-tax-identifications):
  - [POST Create business tax identification](/api-reference/onboarding/businesses/#tag/Business-tax-identifications/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1tax_identifications/post)
  - [GET Retrieve business tax identification ](/api-reference/onboarding/businesses/#tag/Business-tax-identifications/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1tax_identifications~1%7Bid%7D/get)
  - [PATCH Update business tax identification ](/api-reference/onboarding/businesses/#tag/Business-tax-identifications/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1tax_identifications~1%7Bid%7D/patch)


**Related webhook events**

- [BUSINESS_TAX_IDENTIFICATION_CHANGED](/api-reference/onboarding/webhooks/webhook-events/paths/business_tax_identification_changed/post)


#### POST Create business tax identification

Call this endpoint to create a business tax identification for the business with the `business_id` specified in the request URL. Collect the following tax information from the business and pass them to Solaris in the request body:

- `number`
- `country`
- `primary`


If the business has not submitted their TIN to your solution yet (i.e., the value of `number` is `null`), then include the following properties in the request:

- `reason_no_tin`: Possible values are `NOT_ASSIGNED_YET`, `NOT_ASSIGNED_BY_COUNTRY`, `OTHER`.
- `reason_description`: Applies only if the `reason_no_tin` is `OTHER`.
- `tax_id_type`: (Only for Spain) Possible values are `NIE` and `NIF`.


**Request URL**


```shell
POST /v1/businesses/{business_id}/tax_identifications
```

[Click here to view the full API reference.](/api-reference/onboarding/businesses/#tag/Business-tax-identifications/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1tax_identifications/post)

#### Business tax declaration

Ensure your UI meets the requirements for collecting tax information as detailed in the [Legal and compliance screens guide](/guides/get-started/onboarding-requirements/1-legal-compliance-screens/#business-tax-information).

### 5.2 Person tax identification(s)

Collect tax information from all natural persons linked to the business and create a person tax identification for each.

Important
This is **mandatory** for all branches. You must create a `person` tax identification for all **legal representatives**, **beneficial owners**, and **authorized persons**.

### API reference

For a complete list of endpoints, properties, and examples related to the `person tax identification` resource, visit the following links:

- [Person tax identifications API reference](/api-reference/onboarding/persons/#tag/Person-tax-identifications):
  - [POST Create person tax identification](/api-reference/onboarding/persons/#tag/Person-tax-identifications/paths/~1v1~1persons~1%7Bperson_id%7D~1tax_identifications/post)
  - [GET Retrieve person tax identification ](/api-reference/onboarding/persons/#tag/Person-tax-identifications/paths/~1v1~1persons~1%7Bperson_id%7D~1tax_identifications~1%7Bid%7D/get)
  - [PATCH Update person tax identification ](/api-reference/onboarding/persons/#tag/Person-tax-identifications/paths/~1v1~1persons~1%7Bperson_id%7D~1tax_identifications~1%7Bid%7D/patch)


**Related webhook events**

- [PERSON_TAX_IDENTIFICATION_CHANGED](/api-reference/onboarding/webhooks/webhook-events/paths/person_tax_identification_changed/post)


#### POST Create person tax identification

Call this endpoint to create a person tax identification for the customer with the `person_id` specified in the request URL. Collect the following tax information from your customers and pass them to Solaris in the request body:

- `number`
- `country`
- `primary`


If the customer has not submitted their TIN to your solution yet (i.e., the value of `number` is `null`), then include the following properties in the request:

- `reason_no_tin`: Possible values are `NOT_ASSIGNED_YET`, `NOT_ASSIGNED_BY_COUNTRY`, `OTHER`.
- `reason_description`: Applies only if the `reason_no_tin` is `OTHER`.
- `tax_id_type`: (Only for Spain) Possible values are `NIE` and `NIF`.


**Request example:**


```shell
POST /v1/persons/{person_id}/tax_identifications
```

[Click here to view the full API reference.](/api-reference/onboarding/persons/#tag/Person-tax-identifications/paths/~1v1~1persons~1%7Bperson_id%7D~1tax_identifications/post)

### Tax ID testing data

You can use the following test values for the TIN to test these endpoints on Sandbox:

| Country | TIN testing values |
|  --- | --- |
| DE | 48954371207 |
| FR | 3023217600053 |
| IT | SSSNNN31B28X000C |
| ES | Test data can be generated from this [website](https://testingdatagenerator.com/doi.html) |


## Compliance disclaimer screen

Before starting identification, your solution must display the Solaris compliance disclaimer and collect the customer's agreement.

Refer to the UI requirements and legal text in the [Legal and compliance screens guide](/guides/get-started/onboarding-requirements/1-legal-compliance-screens/#compliance-disclaimer-screen).

## Step 6: Complete the business identification (BKYC) and due diligence process

In this phase, you must:

1. **Trigger Identification**: Start the [business identification](#61-business-identification) process and ensure all legal representatives complete video identification via IDnow.
2. **Manual Video ID**: Implement [manual video identification](#62-manual-video-identification) endpoints.
3. **Compliance Questions**: Implement [compliance questions](#63-compliance-questions) endpoints and forward any questions to the legal representatives.
4. **Due Diligence**: Ensure all natural persons pass [customer due diligence (CDD)](#64-customer-due-diligence) checks.
5. **FATCA**: Complete [FATCA-related checks](#65-screening-for-fatca-indicia).


### 6.1 Business identification

#### What is BKYC?

Solaris' BKYC solution uses RESTful APIs to perform a series of identification and compliance checks for business customers.

#### How does BKYC work?

The business identification consists of two asynchronous processes:

* **Legal identification:** The Solaris Banking Operations team verifies the completeness and accuracy of the data submitted by the business customer. They ensure that all legal representatives and ultimate beneficial owners are disclosed and linked to the business.
* **Video identification:** All of the business' legal representatives and authorized persons must undergo a video identification session with IDnow to validate their data against their identification documents.


Important
* The business must pass **both** of these checks before the business identification process is successful.
* Only legal representatives and authorized persons must undergo video identification. Ultimate beneficial owners (UBOs) are **exempt** from this requirement.


**API reference**

For a complete list of endpoints, properties, and examples related to business identification (BKYC), visit the following links:

- [Business identification API reference](/api-reference/identity/identifications/#tag/Business-identifications):
  - [POST Create business identification](/api-reference/identity/identifications/#tag/Business-identifications/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1identifications/post)
  - [GET Retrieve business identification](/api-reference/identity/identifications/#tag/Business-identifications/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1identifications~1%7Bbusiness_identification_id%7D/get)


**Related webhook events**

- [BUSINESS_IDENTIFICATION](/api-reference/onboarding/webhooks/webhook-events/paths/business_identification/post)
- [IDENTIFICATION](/api-reference/onboarding/webhooks/webhook-events/paths/identification/post)


#### POST Initiate business identification

Call this endpoint to initiate the business identification process, which automatically triggers both the **legal identification** of the business and the **video identification** of applicable natural person(s). Specify the identification `method` in the request body. The default method is `idnow`.

**Request URL**


```shell
POST /v1/businesses/{business_id}/identifications
```

**Response**

Returns an identification object with a unique `id` representing the business identification resource and its overall `status`. Additionally, the payload contains individual identification objects for the video identification sessions of legal representatives, including their respective resource `id`, IDnow `status`, `reference`, and `url` for completing the process.

The payload also provides information on the legal identification process, including its dedicated `legal_identification_status`. Monitor the progress of this process by calling the API, particularly the `legal_identification_missing_information` field, where Solaris highlights compliance questions requiring answers from the business.

[Click here to view the full API reference](/api-reference/identity/identifications/#tag/Business-identifications/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1identifications/post)

### 6.2 Manual video identification

While the initial business identification process automatically triggers video identification for the known legal representatives, you may need to initiate this process manually. This occurs if new legal representatives are discovered during the legal review or if an initial identification attempt fails.

Trigger video identification manually in the following cases:

1. **New legal representatives:** If the legal review uncovers new representatives, you will receive a [`LEGAL_REPRESENTATIVE`](/api-reference/onboarding/webhooks/webhook-events/paths/legal_representative/post) webhook event containing the new `legal_representative_id`. You must then initiate a video identification with IDnow and redirect the person to the provided URL.
2. **Failed attempts:** If a video identification fails, you must manually trigger a new identification session.


**API reference**

- [Customer identification (KYC) API reference](/api-reference/identity/identifications)


Prerequisites
- This guide focuses on video identification with **IDnow**.
- Ensure you have completed the [IDnow technical prerequisites](/guides/kyc/videoident/#idnow-integration) (e.g., mobile SDKs or web redirects).


**Related webhook events**

- [`IDENTIFICATION`](/api-reference/onboarding/webhooks/webhook-events/paths/identification/post)


### Create identification

Call this endpoint to initialize the identification process. You must specify the method (`idnow`) and the customer's preferred language.

**Required fields:**

- `method`: Set to `idnow`.
- `language`: `EN` or `DE`.
- `proof_of_address_type`: Required if the ID document does not show the address (e.g., Passport).
- `proof_of_address_issued_at`: Required if providing a proof of address (must be < 6 months old).


Creating the resource does **not** start the video call. You must trigger it in the next step.

**Request example**


```json
// POST /v1/persons/{person_id}/identifications
{
  "method": "idnow",
  "language": "DE",
  "proof_of_address_type": "GAS_BILL",
  "proof_of_address_issued_at": "2022-09-21"
}
```

**Response example**

Returns an identification object with status `created`.


```json
{
    "id": "6dc54352d6793a892e0702850d07b831cidt",
    "status": "created",
    "method": "idnow",
    ...
}
```

[Click here to view the full API reference](/api-reference/identity/identifications/#tag/Person-identifications/paths/~1v1~1persons~1%7Bperson_id%7D~1identifications/post).

Custom Flows
The method `idnow_custom` allows for a customized IDnow flow. If you are interested in offering this to your customers, contact your Partner Manager.

### Check supported documents

Before redirecting the customer, check which documents are supported for their country. This avoids user frustration if they attempt to use an unsupported ID.

**Request URL**


```shell
GET /v1/persons/{person_id}/identifications/{id}/supported_documents
```

[Click here to view the full API reference](/api-reference/identity/identifications/#tag/Person-identifications/paths/~1v1~1persons~1%7Bperson_id%7D~1identifications~1%7Bid%7D~1supported_documents/get)

### Trigger identification request

Call this endpoint to generate the required tokens and URLs for the IDnow session.

**Request URL**


```shell
PATCH /v1/persons/{person_id}/identifications/{id}/request
```

**Response example**

The status changes to `pending`. The response contains two critical fields depending on your integration type:

- `url`: Use this for **Web** integrations (redirect the user here). **Valid for 14 days.**
- `reference`: Use this token for **Mobile SDK** (iOS/Android) integrations.



```json
{
    "id": "6dc54352d6793a892e0702850d07b831cidt",
    "reference": "TST-KCCEY",
    "url": "[https://go.test.idnow.de/solarisbankvideoidentsandbox/identifications/](https://go.test.idnow.de/solarisbankvideoidentsandbox/identifications/)...",
    "status": "pending",
    ...
}
```

[Click here to view the full API reference](/api-reference/identity/identifications/#tag/Person-identifications/paths/~1v1~1persons~1%7Bperson_id%7D~1identifications~1%7Bid%7D~1request/patch).

### The IDnow session


```mermaid
flowchart LR
    A[Start] --> B{Integration Type?}
    B -- Web --> C[Redirect User to 'url']
    B -- Mobile SDK --> D[Init SDK with 'reference']
    C --> E[IDnow Session]
    D --> E
    E --> F{Outcome}
    F -- Success --> G[Webhook: IDENTIFICATION]
    F -- Failure --> H[Retry / Abort]
```

Once you redirect the customer (Web) or initialize the SDK (Mobile), the IDnow session begins.

1. **Consent & Setup:** The customer lands on an IDnow-branded page. They must consent to Terms & Conditions and confirm they have a valid ID document ready.
2. **Mobile Verification:** The customer provides a mobile number. The IDnow agent sends an SMS OTP to this number during the call to verify possession.
3. **Video Call:** The agent connects via video to verify the customer's face and ID document live.
4. **Data Update:** If the agent detects missing or incorrect data (e.g., name spelling), they will update the record directly. These changes are automatically reflected in the `person` resource.


### Retrieve identification status

Once the webhook `IDENTIFICATION` signals success, retrieve the final data.

Use the `?include_documents=true` query parameter to download the images of the ID document and the user's face.

**Request URL**


```shell
GET /v1/persons/{person_id}/identifications/{id}
```

[Click here to view the full API reference](/api-reference/identity/identifications/#tag/Person-identifications/paths/~1v1~1persons~1%7Bperson_id%7D~1identifications~1%7Bid%7D/get).

### Other utility endpoints

- [List IDnow attempts](/api-reference/identity/identifications/#tag/Person-identifications/paths/~1v1~1persons~1%7Bperson_id%7D~1identifications~1%7Bid%7D~1idnow_attempts/get) (Audit log of failed/aborted calls)
- [Upload additional documents](/api-reference/onboarding/persons/#tag/Person-documents/paths/~1v1~1persons~1%7Bperson_id%7D~1identifications~1%7Bid%7D~1document_upload/post)


### 6.3 Compliance questions

During the legal identification process, Solaris' legal and compliance team may require additional information from your customers, including answers to certain compliance questions and/or additional documents.

#### How to identify compliance questions and documents?

1. If Solaris needs further clarification during the business identification, you will receive a notification on the [`BUSINESS_IDENTIFICATION`](/api-reference/onboarding/webhooks/webhook-events/paths/business_identification/post) webhook.
2. Call the [GET Retrieve a business identification](/api-reference/identity/identifications/#tag/Business-identifications/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1identifications~1%7Bbusiness_identification_id%7D/get) endpoint to retrieve the required details.


**Only compliance questions**

If Solaris has compliance questions for the business, the field `legal_identification_missing_information` contains only `COMPLIANCE_QUESTIONS`. In this case, collect answers from the customer on your frontend. We recommend setting **document upload as optional** to allow the customer to add supporting documents if needed.

**Example payload**


```json
{
  "legal_identification_status": "information_required",
  "legal_identification_missing_information": [
    "COMPLIANCE_QUESTIONS"
  ]
}
```

**Both compliance questions & documents**

If Solaris requires both answers to compliance questions and documents, the field `legal_identification_missing_information` contains `COMPLIANCE_QUESTIONS` and a `document_type` (e.g., `FOUNDATION_DOCUMENT`). In this case, collect the answers and the mandatory documents. You must set **document upload as mandatory** on your frontend and submit the document to Solaris using the [POST Create a Business Document endpoint](/api-reference/onboarding/businesses/#tag/Business-documents/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1documents/post).

**Example payload**


```json Example Payload
{
  "legal_identification_status": "information_required",
  "legal_identification_missing_information": [
    "COMPLIANCE_QUESTIONS",
    "FOUNDATION_DOCUMENT"
  ]
}
```

#### How to retrieve compliance questions and provide answers?

If the status indicates missing information, follow this flow to resolve it:


```mermaid
stateDiagram-v2
    direction LR
    [*] --> information_required: Legal Review Paused
    
    state "Resolution Loop" as Resolution {
        information_required --> FetchQuestions: GET /questions
        FetchQuestions --> SubmitAnswer: POST /answers
        SubmitAnswer --> SubmitAnswer: Repeat for all questions
    }

    SubmitAnswer --> pending: PATCH /mark_as_ready
    pending --> [*]: Legal Review Resumes
```

To retrieve the questions and submit answers, use the following endpoints:

#### GET Retrieve compliance questions

To get the compliance questions, call the following endpoint:

**Request URL**


```shell
GET /v1/businesses/{business_id}/identifications/{business_identification_id}/legal_identification/questions
```

**Response example**

The API call returns an object that includes the question(s) with a unique ID and the corresponding text. You must redirect these questions to your customers and retrieve their answers as part of your workflow. Provide a dedicated page for answering all questions separately.


```json Example Payload
{
  "question_id": "ebb463137becc09788dfe21fc066e670qstn",
  "question_text": "Please provide the license for security / guarding services (Bewachungsgewerbe): § 34a GewO",
  "legal_identification_id": "14eb210435e09ab7f6a06c8b9b86ce27lid",
  "business_identification_id": "4c74c804eaea5d2a2d64ef400a27a4d3bid",
  "business_id": "880bbac68a34add190786b9c74f4c82fcbiz",
  "answer_id": null,
  "answer_text": "string",
  "asked_at": "2021-07-16T13:38:06.000Z",
  "answered_at": null
}
```

[Click here to view the full API reference](/api-reference/identity/identifications/#tag/Business-identifications/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1identifications~1%7Bbusiness_identification_id%7D~1legal_identification~1questions/get).

#### Create answers for compliance questions

After receiving the compliance question answers from the customer, call the following endpoint to share them with Solaris. Make a separate API call for each answer.

**Request URL**

Provide the answer in the request body.


```shell
POST /v1/businesses/{business_id}/identifications/{business_identification_id}/legal_identification/questions/{question_id}/answers
```

[Click here to view the full API reference](/api-reference/identity/identifications/#tag/Business-identifications/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1identifications~1%7Bbusiness_identification_id%7D~1legal_identification~1questions~1%7Bquestion_id%7D~1answers/post).

#### PATCH Update business legal identification

Call this method to update the legal identification and mark it as ready to resume the identification process after adding all answers and documents. This endpoint changes the `legal_identification_status` from `information_required` to `pending`.

**Request URL**


```shell
PATCH /v1/businesses/{business_id}/identifications/{id}/legal_identification/mark_as_ready
```

[Click here to view the full API reference](/api-reference/identity/identifications/#tag/Business-identifications/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1identifications~1%7Bbusiness_identification_id%7D~1legal_identification~1mark_as_ready/patch).

### 6.4 Customer due diligence

Solaris conducts risk screening (Customer Due Diligence) on the business, legal representatives, beneficial owners, and authorized persons. Results are returned in the **GET person** or **GET business** resources.

All entities must have a `green` status to proceed. For details, see the [Customer Due Diligence guide](/guides/kyc/cdd).

### 6.5 Screening for FATCA indicia

To comply with the [Foreign Account Tax Compliance Act (FATCA)](https://www.irs.gov/businesses/corporations/foreign-account-tax-compliance-act-fatca), Solaris is required to perform checks to determine whether the customer is subject to US tax law. These checks are in addition to the self-declaration during the Legal and Compliance screen.

To perform the FATCA checks, parse the `person` and `identification` resources using the following endpoints:

- [GET Retrieve person](/api-reference/onboarding/persons/#tag/Persons/paths/~1v1~1persons~1%7Bid%7D/get)
- [GET Retrieve person identification](/api-reference/identity/identifications/#tag/Person-identifications/paths/~1v1~1persons~1%7Bperson_id%7D~1identifications~1%7Bid%7D/get)


#### Hard criteria

To determine the customer's FATCA relevance, you must screen for the following **hard criteria**:

- Has the customer provided a US passport as their identification document? Check the `legitimation_country` attribute on the identification resource.
- Is the customer a citizen of the US? Check the `nationality` attribute.
- Has the customer provided a residential address in the US, the US Minor Outlying Islands, or the US Virgin Islands? Check the `country` attribute.
- Was the customer born in the US, the US Minor Outlying Islands, or the US Virgin Islands? Check the `birth_country` attribute.


**When to reject the customer**

If any of these hard criteria attributes have the value of `US` or `USA`, **you must deny banking services to the customer and stop the onboarding process**. Failure to screen for these hard FATCA criteria may cause ongoing operational burdens for Solaris customer support.

#### Soft criteria

To further determine the customer's FATCA relevance, screen for the following **soft criteria**:

- Has the customer provided a US mobile number? Check the `mobile_number` attribute. US mobile numbers have a country code of +1.
- Is the customer's only address a PO box or a c/o address? Check the `address_line_1` and `address_line_2` attributes.


**When to reject the customer**

- If the answer is "Yes" to any of the **soft criteria,** ask the customer to clarify their phone number and/or address.
  - If the customer provides a non-US phone number and a physical address, you may onboard them.
- If the customer **does not** provide a non-US phone number and a physical address, you **may not onboard them.**


Failure to screen for soft FATCA criteria may cause ongoing operational burdens for Solaris customer support.

Important
Note that Solaris periodically checks FATCA relevance for existing customers. If a customer's FATCA relevance changes to `true`, Solaris's Customer Support team will provide further instructions.

### Identification statuses

There are three key statuses in the business identification process:

1. **Solarisident status**: Tracks the overall legal and video identification. Initially `created`, becomes `successful` upon completion.
2. **Legal identification status**: Tracks the verification of the legal entity. Initially `created`.
3. **Video identification status**: A unique object for each person. The IDnow status remains `pending` until the person completes video identification.


See the appendices for status values.

### Validity of identification documents (Spain & Italy)

To comply with regulatory requirements, Solaris must keep copies of valid identification documents for active customers in its **Italy** and **Spain** branches. This requirement applies to the following customer segments:

- Retail customers
- Freelancers & Sole proprietors
- Businesses' legal representatives
- Authorized persons on a business or a retail account


**How will you be notified of the expiry of ID documents?**

In Italy and Spain, Solaris stores the expiry date of a customer's identification document and calculates a follow-up date to notify you before it expires. You'll receive a webhook notification on the event `POTENTIAL_ACCOUNT_BLOCKING` 30 days before the expiry date, and then every 30 days until 90 days after the expiry.

The webhook payload includes the `blocking_date`, which is the date by which the account will be blocked if the customer has not identified again with a valid ID document, and the reason for the account blocking is set to `IDENTIFICATION_DOCUMENT_EXPIRED`.

**What should you do?**

After receiving a notification on the `POTENTIAL_ACCOUNT_BLOCKING` webhook event, you should take the following steps:

1. Create a new identification resource for the customer and specify the identification `method` using the [POST Create an identification](/api-reference/identity/identifications/#tag/Person-identifications/paths/~1v1~1persons~1%7Bperson_id%7D~1identifications/post).
2. Request the identification for the customer by calling [PATCH Request an identification](/api-reference/identity/identifications/#tag/Person-identifications/paths/~1v1~1persons~1%7Bperson_id%7D~1identifications~1%7Bid%7D~1request/patch).
3. Notify the customer that they must complete the KYC flow with their new valid ID document.
4. After successful KYC, Solaris will store the expiry date of the new ID document and calculates a new follow-up date.


If the customer did not identify with a valid ID document within 90 days after the expiry date, the customer's account will be blocked with the reason `IDENTIFICATION_DOCUMENT_EXPIRED`. If a new ID document is submitted, the account will be unblocked.

**Which KYC method to use?**

For the re-identification due to expired ID documents, you can choose between the following methods:

- [Fourthline](/guides/kyc/fourthline/)
- IDnow AutoIdent


**Proceed to the next steps only when:**

* The identification status is `successful`.
* All CDD checks have a `green` status.
* FATCA screening confirms the customer is not liable for US taxes.


## Step 7: Create business account

Congratulations
You have successfully completed the business identification process. You can now open a business account for the customer.

Present the customer with a button to open their account using the specific formulations below:

**English**

> Order / Open account (subject to a charge)


**German**

> Bestellen / Konto eröffnen (zahlungspflichtig)


(Consult your Onboarding Project Manager if you wish to use different text.)

### Account opening and management

* [Account opening guide](/guides/digital-banking/account-opening/)
* [Account management guide](/guides/digital-banking/account-management/)
* [Account management API reference](/api-reference/digital-banking/account-management/)


## Step 8: Create authorized person(s)

An authorized person is a natural person who can act on the account and receive authorization challenges (2FA).

* **Legal representatives** are authorized by default but must be explicitly added as an `authorized_person` in the system.
* **Other persons** can be authorized by a legal representative (see [Step 10](#step-10-create-other-optional-roles)).


### API reference

* [Business Authorized Persons API reference](/api-reference/onboarding/businesses/#tag/Authorized-persons)


#### POST Create authorized person

Legal representatives can be added as `authorized_person` without extra authorization. Adding *other* persons requires approval via 2FA.

**Request example:**

Add the `person_id` of the legal representative.


```json
// POST /v1/businesses/{business_id}/accounts/{account_id}/authorized_persons
{
  "authorized_person_id": "3b8cfd40fb4dce5a231251ea06a014cper"
}
```

**Example response:**


```json
{
  "id": "568b5241afd0ce435c56ea0efef2bd0dcpea",
  "authorized_person_id": "3b8cfd40fb4dce5a231251ea06a014cper"
}
```

## Step 9: Create and activate card

Once onboarded, you can create a card for the customer. See the [Cards Creation and Servicing guide](/guides/cards/creation-and-servicing/#how-to-issue-a-card) for instructions.

The business card holder is the business' legal representative.

## Step 10: Create other optional roles

You can add optional roles based on your use case:

* **Additional Authorized Person**: A person who is not a legal representative but can act on the account.
* **Signee**: A person with specific rights (view info, sign documents) but not full authorization power.


### Create additional authorized person(s)

In this step, you can add other persons who are not legal representatives as `authorized_person` on the business account.

SCA Required
This action is sensitive and triggers a **Change Request**. The Legal Representative must approve this action using 2FA (SMS or Device Signing).

* See [The Change Request Process](/guides/authentication/strong-customer-authentication#the-change-request-process) for the full authorization flow.


Prerequisites
* You must create the `person` resource first.
* The person must be video identified (see [Manual video identification](#62-manual-video-identification)).


**Request URL:**


```shell
POST /v1/businesses/{business_id}/accounts/{account_id}/authorized_persons
```

**Response example:**

Returns a URL to authorize the action.


```json
{
  "id": "d6c778822b2d7bd3b778935bcfd0d1d3csc",
  "status": "AUTHORIZATION_REQUIRED",
  "updated_at": "2017-07-15T14:04:35.000Z",
  "url": ":env/v1/change_requests/:id/authorize"
}
```

#### POST Authorize adding an additional authorized person

Call the `url` from the previous response. Specify the `person_id` of the legal representative authorizing the request.


```json
// POST /v1/change_requests/{change_request_id}/authorize
{
  "person_id":"5af2ea4271038d5c53e68ccbf4fe43b3cper",
  "delivery_method": "mobile_number"
}
```

This sends a 6-digit OTP to the legal representative's verified mobile number.

#### POST Confirm adding an additional authorized person

Confirm the request with the OTP (`tan`).


```json
// POST /v1/change_requests/{change_request_id}/confirm
{
  "person_id":"5af2ea4271038d5c53e68ccbf4fe43b3cper",
  "tan": "123456"
}
```

### Create signee

Signees are optional roles added after successful business identification.

#### POST Create signee

Assign the `signee` role to a `person` linked to the `business`.

You must create the `person` resource first.

**Request URL:**


```shell
POST /v1/businesses/{business_id}/signees
```

[Click here to view the full API reference](/api-reference/onboarding/businesses/#tag/Business-signees/paths/~1v1~1businesses~1%7Bbusiness_id%7D~1signees/post).

## What's next?

Congratulations! You have successfully onboarded a business, identified the legal representatives, and opened an account.

**Critical Next Step: Authentication**
The Legal Representative cannot log in or authorize payments yet. You must now implement the security framework:

1. **[Bind a Device](/guides/authentication/device-binding/):** Prompt the Legal Representative to link their smartphone to the user account.
  * **Choice:** You can implement either the **SMS OTP** flow or the **Activation Code (QR)** flow.
  * **Requirement:** This binding is mandatory for Strong Customer Authentication (SCA).
2. **[Implement Login & SCA](/guides/authentication/strong-customer-authentication/):** Set up the flows for logging in and authorizing transactions using the bound device.


## Appendix I: Enums

### Annual income range

To set the value of `annual_income_range`, you may offer the customer a drop-down list with the following numeric values for each range:

| Range | Value |
|  --- | --- |
| `RANGE_1` | < 20000 |
| `RANGE_2` | 20000 - 40000 |
| `RANGE_3` | 40000 - 60000 |
| `RANGE_4` | 60000 - 100000 |
| `RANGE_5` | 100000 - 200000 |
| `RANGE_6` | 200000 - 400000 |
| `RANGE_7` | > 400000 |


### CRS company type

The field `crs_company_type` is required to collect mandatory tax information and create the business `tax_identification` resource. The following table includes the possible values for this field and their descriptions:

| Enum | Description |
|  --- | --- |
| `FE_REPORTING` | Reporting Financial Institution. |
| `FE_NON_REPORTING` | Non-Reporting Financial Institution. |
| `NFE_ACTIVE_OTHER` | Active NFE (Non-Financial Entity) - A corporation whose shares are regularly traded on at least one recognized stock exchange (or an affiliate), a government entity, an international organization, a central bank, or a legal entity wholly owned by one of these. |
| `NFE_PASSIVE` | Passive NFE - A non-active Non-Financial Entity. |
| `NFE_PASSIVE_INVESTMENT` | Passive NFE (Investment) - An Investment Entity that is a Financial Institution in a jurisdiction not participating in the CRS and is managed by another Financial Institution. |


### Document types

The following table includes the possible values for the field `document_type` and their descriptions.

| Enum | Description |
|  --- | --- |
| `ANNUAL_FINANCIAL_STATEMENT` | A business or company's annual financial statement. |
| `KYC_REPORT` | The KYC report generated after successful customer identification. |
| `ID_DOCUMENT` | A person's identification document, such as a passport or ID card. |
| `SIGNATURE` | A signature sample. |
| `PICTURE` | A picture or scanned document of any other type. |
| `QES_DOCUMENT` | A document related to a Qualified Electronic Signature (QES). |
| `SIGNED_CONTRACT` | A signed contract of any kind. |
| `SIGNED_QES_DOCUMENT` | A document signed by a Qualified Electronic Signature (QES). |
| `REGISTER_APPLICATION` | A document proving the application for registration (Gründungsurkunde), used for companies "in formation". |
| `REGISTER_CHECK` | A register check. |
| `REGISTER_EXTRACT` | A commercial register excerpt or similar document. |
| `FOUNDATION_DOCUMENT` | The foundation document of a company or business. |
| `SCHUFA_COMPACT_REPORT` | A compact SCHUFA report. |
| `SCHUFA_GWG_REPORT` | A GWG (Money Laundering Act) SCHUFA report. |
| `SCHUFA_FULL_REPORT` | A full SCHUFA report about a person. |
| `SCHUFA_SHORT_REPORT` | A short SCHUFA report about a person. |
| `CREDIT_AGENCY_REPORT` | A report issued by a credit agency. |
| `SHARE_HOLDERS_AGREEMENT` | A shareholder agreement. |
| `SHAREHOLDERS_LIST` | A list of shareholders. |
| `TRADING_LICENSE` | A trading license. |
| `TRANSPARENCY_REGISTER_EXTRACT` | An extract from the transparency register. |
| `INVOICE` | An invoice of any kind. |
| `OTHER` | Any other type of document. |
| `VIDEO` | A video of any kind. |
| `VAT_CERTIFICATE` | VAT registration certificate. |


### NACE code

The Statistical Classification of Economic Activities in the European Community (NACE) is the industry standard classification system used in the European Union.

NACE uses four hierarchical levels:

- **Level 1:** 21 sections identified by alphabetical letters A to U.
- **Level 2:** 88 divisions identified by two-digit numerical codes (01 to 99).
- **Level 3:** 272 groups identified by three-digit numerical codes (01.1 to 99.0).
- **Level 4:** 629 classes identified by four-digit numerical codes (01.11 to 99.00).


The first four digits (the first four levels) are consistent across all European countries. National implementations may introduce additional levels. The fifth digit might vary by country, and suppliers of databases sometimes add further digits.

**Example**

If the NACE code **A 01.11** (Growing of cereals (except rice), leguminous crops and oil seeds) applies to the business, supply the value as follows:

`nace_code = "A 01.11"`

**Reference List**

Visit the [Eurostat Reference Data](https://showvoc.op.europa.eu/#/datasets/ESTAT_Statistical_Classification_of_Economic_Activities_in_the_European_Community_Rev._2/data) site for the full list of NACE code values required for your implementation. The list is available in multiple languages.

**Requirements**

- **Mandatory:** NACE codes are required for B2B and freelancer customers in **Germany**, **Italy**, and **Spain**.
- **Excluded:** For **France**, NACE codes are not used. The *CODE NAF* system is used instead.


Info
Using NACE codes replaces the fields `industry` and `industry_key`.

### Tax country

The following table includes the possible values for the field `tax_country`.

| Enum | Description |
|  --- | --- |
| `AT` | Austria |
| `BE` | Belgium |
| `CZ` | Czech Republic |
| `DE` | Germany |
| `ES` | Spain |
| `FR` | France |
| `GB` | United Kingdom |
| `IT` | Italy |
| `LU` | Luxembourg |
| `NL` | The Netherlands |
| `PT` | Portugal |


### Sector

The following table includes the possible values for the field `sector`.

| Enum |
|  --- |
| `ECONOMICALLY_SELF_EMPLOYED` |
| `ECONOMIC_DEPENDENT` |
| `FOREIGN_COMPANIES` |
| `FOREIGN_ECONOMIC_DEPENDENT` |
| `FOREIGN_PRIVATE_INDIVIDUAL` |
| `FOREIGN_SELF_EMPLOYED_PRIVATE_PERSON` |
| `GERMAN_BANKS` |
| `MUNICIPALITY_AND_MUNICIPALITY_ASSOCIATION` |
| `OTHER_COMPANIES` |
| `OTHER_COMPANIES_WORKMAN` |
| `OTHER_PRIVATE_INDIVIDUAL` |


### Legal form

The selected value for the field `tax_country` influences the accepted values for the field `legal_form`. The following lists show the possible values for `legal_form` for each `tax_country`.

**Austria (AT)**

- `AT_SE`
- `AT_OHG`
- `AT_KG`
- `AT_AG`
- `AT_GESMBH`
- `AT_EG`
- `AT_GBR`
- `AT_EV`
- `AT_SOLE_PROPRIETORSHIP`
- `AT_SELF_EMPLOYED`
- `AT_AMT`
- `AT_KOR`
- `AT_STIFTUNGEN`
- `AT_GMBH`
- `AT_GMBH_CO_KG`


**Belgium (BE)**

- `BE_SNC`
- `BE_SCS`
- `BE_SA`
- `BE_SPRL`
- `BE_SE`
- `BE_SCA`
- `BE_SC`
- `BE_SCRI`
- `BE_SEP`
- `BE_SF`
- `BE_SPRLU`
- `BE_SOLE_PROPRIETORSHIP`
- `BE_SELF_EMPLOYED`


**Bulgaria (BG)**

- `BG_AD`
- `BG_OOD`
- `BG_KDA`
- `BG_KD`
- `BG_SD`
- `BG_SELF_EMPLOYED`
- `BG_SOLE_PROPRIETORSHIP`


**Croatia (HR)**

- `HR_DD`
- `HR_DOO`
- `HR_JDOO`
- `HR_KD`
- `HR_JTD`
- `HR_SELF_EMPLOYED`
- `HR_SOLE_PROPRIETORSHIP`
- `HR_ORTA`


**Czech Republic (CZ)**

- `CZ_AS`
- `CZ_SRO`
- `CZ_KS`
- `CZ_VOS`
- `CZ_DRUZSTVO`
- `CZ_FYZICKA_OSOBA`
- `CZ_SOLE_PROPRIETORSHIP`
- `CZ_SELF_EMPLOYED`


**France (FR)**

- `FR_AE`
- `FR_EI`
- `FR_SNC`
- `FR_SCS`
- `FR_SA`
- `FR_SAS`
- `FR_SARL`
- `FR_SE`
- `FR_SCA`
- `FR_EURL`
- `FR_SC`
- `FR_SCOP`
- `FR_SELARL`
- `FR_SOLE_PROPRIETORSHIP`
- `FR_SELF_EMPLOYED`


**Germany & Others (Default)**
Solaris accepts the following legal forms for companies in Germany and other countries not specified in this list:

- `AG`
- `EG`
- `EK`
- `EV`
- `NEV`
- `GBR`
- `GMBH`
- `GMBH_CO_KG`
- `GMBH_I_GR`
- `KG`
- `KGAA`
- `LTD`
- `MUNICIPALITY`
- `MUNICIPAL_COMPANY`
- `NONE`
- `OHG`
- `PARTG`
- `PRIVATE_PERSON`
- `SAVINGS_BANK`
- `SE`
- `SELF_EMPLOYED`
- `SOLE_PROPRIETORSHIP`
- `UG`
- `UG_I_GR`
- `FOREIGN_CORPORATION`
- `ADOR`
- `AMT`
- `KDOR`
- `STIFTUNGEN`
- `SECOKG`
- `AGCOKG`


**Hungary (HU)**

- `HU_NYRT`
- `HU_KFT`
- `HU_BT`
- `HU_KKT`
- `HU_SOLE_PROPRIETORSHIP`
- `HU_SELF_EMPLOYED`
- `HU_ORTA`


**Italy (IT)**

- `IT_SE`
- `IT_SNC`
- `IT_SAS`
- `IT_SPA`
- `IT_SRL`
- `IT_SAPA`
- `IT_SCPA`
- `IT_SCARL`
- `IT_SCOP`
- `IT_SS`
- `IT_SOLE_PROPRIETORSHIP`
- `IT_SELF_EMPLOYED`


**Luxembourg (LU)**

- `LU_SNC`
- `LU_SCS`
- `LU_SA`
- `LU_SARL`
- `LU_SE`
- `LU_SCA`
- `LU_SCSP`
- `LU_SARLS`
- `LU_SC`
- `LU_SCOP`
- `LU_SOLE_PROPRIETORSHIP`
- `LU_SELF_EMPLOYED`
- `LU_SECA`
- `LU_ASBL`
- `LU_FON`
- `LU_SP`


**Poland (PL)**

- `PL_SA`
- `PL_SPZOO`
- `PL_SE`
- `PL_SKA`
- `PL_SPK`
- `PL_SPJ`
- `PL_SELF_EMPLOYED`
- `PL_OTHER`


**Portugal (PT)**

- `PT_SNC`
- `PT_SC`
- `PT_SA`
- `PT_LDA`
- `PT_SE`
- `PT_SUNI`
- `PT_EIRL`
- `PT_SCIV`
- `PT_COP`
- `PT_SOLE_PROPRIETORSHIP`
- `PT_SELF_EMPLOYED`


**Romania (RO)**

- `RO_SA`
- `RO_SRL`
- `RO_SCA`
- `RO_SCS`
- `RO_SNC`
- `RO_SELF_EMPLOYED`
- `RO_SOLE_PROPRIETORSHIP`


**Serbia (RS)**

- `RS_AD`
- `RS_DOO`
- `RS_KD`
- `RS_OD`
- `RS_SELF_EMPLOYED`
- `RS_SOLE_PROPRIETORSHIP`


**Slovenia (SI)**

- `SI_DD`
- `SI_DOO`
- `SI_KDD`
- `SI_KD`
- `SI_DNO`
- `SI_SELF_EMPLOYED`
- `SI_SOLE_PROPRIETORSHIP`


**Spain (ES)**

- `ES_SRC`
- `ES_SC`
- `ES_SA`
- `ES_SAS`
- `ES_SRL`
- `ES_SE`
- `ES_SCA`
- `ES_SLNE`
- `ES_SAU`
- `ES_SLU`
- `ES_SPRO`
- `ES_SCOP`
- `ES_SOLE_PROPRIETORSHIP`
- `ES_SELF_EMPLOYED`


**Switzerland (CH)**

- `CH_DE_AG`
- `CH_FR_SA`
- `CH_IT_SA`
- `CH_DE_GMBH`
- `CH_FR_SARL`
- `CH_IT_SAGL`
- `CH_SE`
- `CH_DE_KOMAG`
- `CH_FR_SCA`
- `CH_IT_SACA`
- `CH_DE_KG`
- `CH_FR_SCM`
- `CH_IT_SAC`
- `CH_DE_KIG`
- `CH_FR_SNC`
- `CH_IT_SNC`
- `CH_DE_EG`
- `CH_FR_SS`
- `CH_IT_SS`
- `CH_SELF_EMPLOYED`
- `CH_SOLE_PROPRIETORSHIP`
- `CH_DE_KMG`


**The Netherlands (NL)**

- `NL_VOF`
- `NL_CV`
- `NL_NV`
- `NL_BV`
- `NL_SE`
- `NL_CVOA`
- `NL_COPV`
- `NL_MTS`
- `NL_SOLE_PROPRIETORSHIP`
- `NL_SELF_EMPLOYED`
- `NL_VERENIGING`
- `NL_STICHT`


**Turkey (TR)**

- `TR_ADI_SIR`
- `TR_AS`
- `TR_LS`
- `TR_KOM_STI`
- `TR_KOLL_STI`
- `TR_SELF_EMPLOYED`
- `TR_SOLE_PROPRIETORSHIP`


**United Kingdom (GB)**

- `GB_SE`
- `GB_PARTNERSHIP`
- `GB_LP`
- `GB_PLC`
- `GB_LTD`
- `GB_COPS`
- `GB_UAS`
- `GB_PRCU`
- `GB_PUCU`
- `GB_SOLE_PROPRIETORSHIP`
- `GB_SELF_EMPLOYED`


### Sector, tax country, and legal form mapping

Dependencies exist between the fields `tax_country`, `sector`, and `legal_form`. The value selected for one field determines the accepted values for the next.

The following sections outline these dependencies.

#### Tax country and sector mapping

The selected value for the field `tax_country` influences the accepted values for the field `sector`. The following table gives an overview about the mapping of values between the field `tax_country` and `sector`.

| Tax country | Allowed values for sector |
|  --- | --- |
| `DE` | * `ECONOMICALLY_SELF_EMPLOYED`
* `ECONOMIC_DEPENDENT`
* `GERMAN_BANKS`
* `MUNICIPALITY_AND_MUNICIPALITY_ASSOCIATION`
* `OTHER_COMPANIES_WORKMAN`
* `OTHER_COMPANIES`
* `OTHER_PRIVATE_INDIVIDUAL`

 |
| All other countries | * `FOREIGN_COMPANIES`
* `FOREIGN_ECONOMIC_DEPENDENT`
* `FOREIGN_PRIVATE_INDIVIDUAL`
* `FOREIGN_SELF_EMPLOYED_PRIVATE_PERSON`

 |


#### Sector and legal form mapping

The selected value for the field `sector` influences the accepted values for the field `legal_form`. The following table gives an overview about the mapping of values between the field `sector` and `legal_form`.

| Sector | Allowed values for legal form |
|  --- | --- |
| `OTHER_COMPANIES` | * `AG`
* `EG`
* `GBR`
* `GMBH_CO_KG`
* `GMBH_I_GR`
* `GMBH`
* `KG`
* `KGAA`
* `LTD`
* `OHG`
* `PARTG`
* `SE`
* `UG_I_GR`
* `UG`

 |
| `OTHER_COMPANIES_WORKMAN` | * `EK`
* `GBR`
* `LTD`
* `SELF_EMPLOYED`
* `SOLE_PROPRIETORSHIP`

 |
| `FOREIGN_COMPANIES` | * `FOREIGN_CORPORATION`
* `NONE`

 |
| `GERMAN_BANKS` | * `SAVINGS_BANK`

 |
| `MUNICIPALITY_AND_MUNICIPALITY_ASSOCIATION` | * `MUNICIPALITY`
* `MUNICIPAL_COMPANY`

 |
| `ECONOMICALLY_SELF_EMPLOYED` | * `EK`
* `GBR`
* `SELF_EMPLOYED`
* `SOLE_PROPRIETORSHIP`

 |
| `NON_PROFIT_ORGANIZATION` | * `EV`
* `NEV`

 |


### IDnow status

The following table includes the possible values for the field `status` for the video identification process carried out by IDnow and the related description of each status.

| Status | Description |
|  --- | --- |
| `created` | The identification resource has been created for the customer. |
| `pending` | The identification process has been triggered, and the video identification URL and reference have been generated. Redirect the customer to the URL to complete the identification. |
| `pending_failed` | The identification is currently under review by the provider. You **cannot** offer banking services to the customer at this stage. |
| `successful` | The video identification was successful. The customer can be onboarded. Note that the customer's data might have been updated during the identification session. |
| `aborted` | The customer aborted the identification process. They can retry using the same URL. |
| `canceled` | The provider canceled the video identification. The customer should retry using the same URL. |
| `failed` | The identification was unsuccessful. You **cannot** onboard the customer or offer any banking services to them. |
| `expired` | The identification link has expired (validity period passed). You must create a new identification request. |


IDnow provides a reason whenever the identification has a `canceled` or `aborted` status. No reason is disclosed for the final `failed` status.

### Legal identification status

The following table includes the possible values for the field `legal_identification_status`. This status tracks the progress of the legal checks performed by Solaris on the business entity.

| Status | Description |
|  --- | --- |
| `created` | The legal identification has been initiated and will be conducted shortly. |
| `information_required` | Solaris is missing one or more required documents or information. Check the `legal_identification_missing_information` array to see what is missing. |
| `pending` | The legal review is currently in progress. This status is set after you call the `mark_as_ready` endpoint. |
| `blocked_internally` | The legal identification is put on hold due to additional internal checks. |
| `successful` | The legal identification was completed successfully. |
| `failed` | The legal identification failed. Check the `legal_identification_reason` field for details. |
| `expired` | The legal identification was not completed within the required timeframe (90 days). |


### Solarisident status

The following table includes the possible values for the field `status`, which refers to the overall status of the business identification process (BKYC). This includes the legal identification of the business entity carried out by Solaris and the video identification of the business's natural persons.

| Status | Description |
|  --- | --- |
| `created` | The business identification resource has been created. The legal review and video identification steps will begin shortly. |
| `pending` | The business identification is currently in progress. This may mean Solaris is reviewing the legal documents or waiting for the legal representatives to complete their video identification. |
| `successful` | Both steps of the business identification process (legal review and video identifications) were completed successfully. |
| `failed` | The business identification process failed and will not continue. To understand why, check the status of the `legal_identification` or the individual video identifications. |
| `expired` | The business identification process was not completed within the allowed timeframe (usually 6 months). Either the legal identification or one of the video identifications was not finished on time. |


## Appendix II: BKYC required documents

The following table lists the required documents for identification for each legal form.

Info
For all registered legal forms, customers must input their business data (`registration_number` and `registration_issuer`).

Once the customer enters this data, Solaris automatically retrieves the required company documents, eliminating the need to request them during the onboarding flow.

Important
Inaccurate data (`registration_number` and `registration_issuer`) causes automated retrieval to fail. In this case, you must request documents manually from the customer using the request information and request document endpoints.

Solaris may request further documents during the onboarding process depending on factors such as legal entities acting as beneficial owners, complex business structures, or specific service types.

| Legal Form | Documents required | Document Type | Data can be retrieved by Solaris |
|  --- | --- | --- | --- |
| ADÖR | Register extract | REGISTER_EXTRACT | Yes - Automated |
| ADÖR | Articles of Association (Satzung) | FOUNDATION_DOCUMENT | No |
| AG | Register extract | REGISTER_EXTRACT | Yes - Automated |
| AG | "Aktionärsliste" for AG or AG/SE as General Partner | SHAREHOLDER_LIST | No |
| AG | Articles of Association (Satzung) | FOUNDATION_DOCUMENT | No |
| AG_CO_KG | Register extract | REGISTER_EXTRACT | Yes - Automated |
| AG_CO_KG | "Aktionärsliste" for AG or AG/SE as General Partner | SHAREHOLDER_LIST | No |
| AG_CO_KG | Articles of Association (Satzung) for AG/SE as General Partner | FOUNDATION_DOCUMENT | No |
| EG | Register extract | REGISTER_EXTRACT | Yes - Automated |
| EG | Articles of Association (Satzung) | FOUNDATION_DOCUMENT | No |
| EK | Register extract | REGISTER_EXTRACT | Yes - Automated |
| GbR | Gesellschaftsvertrag (partnership/shareholder agreement) | OTHER or SHAREHOLDER_AGREEMENT | No |
| eGbR | Register extract | REGISTER_EXTRACT | Yes - Automated |
| eGbR | Gesellschaftsvertrag (partnership/shareholder agreement) | OTHER or SHAREHOLDER_AGREEMENT | No |
| Gemeinde | Articles of Association (Satzung) | FOUNDATION_DOCUMENT | No |
| gGmbH | Register extract | REGISTER_EXTRACT | Yes - Automated |
| gGmbH | List of Shareholders | SHAREHOLDER_LIST | Yes - Automated |
| GMBH | Register extract | REGISTER_EXTRACT | Yes - Automated |
| GMBH | List of Shareholders | SHAREHOLDER_LIST | Yes - Automated |
| GMBH_CO_KG | Register extract | REGISTER_EXTRACT | Yes - Automated |
| GMBH_CO_KG | Shareholderlist for GmbH/UG General Partner | SHAREHOLDER_LIST | No |
| GMBH_I_GR | Articles of Association (Satzung) | FOUNDATION_DOCUMENT | No |
| GMBH_I_GR | Gesellschaftsvertrag (partnership/shareholder agreement) | OTHER or SHAREHOLDER_AGREEMENT | No |
| GMBH_I_GR | Notariell beglaubigte Urkundenrolle/Musterprotokoll | OTHER | No |
| gUG | Register extract | REGISTER_EXTRACT | Yes - Automated |
| gUG | List of Shareholders | SHAREHOLDER_LIST | Yes - Automated |
| KDOR | Articles of Association (Satzung) | FOUNDATION_DOCUMENT | No |
| KG | Register extract | REGISTER_EXTRACT | Yes - Automated |
| KGAA | Register extract | REGISTER_EXTRACT | Yes - Automated |
| KGAA | Articles of Association (Satzung) | FOUNDATION_DOCUMENT | No |
| LTD | Register extract | REGISTER_EXTRACT | Yes - Automated |
| LTD | List of Shareholders | SHAREHOLDER_LIST | No |
| LTD | Articles of Association (Satzung) | FOUNDATION_DOCUMENT | No |
| NEV | List of Shareholders (List of Board members) | SHAREHOLDER_LIST | No |
| NEV | Articles of Association (Satzung) | FOUNDATION_DOCUMENT | No |
| OHG | Register extract | REGISTER_EXTRACT | Yes - Automated |
| PARTG | Register extract | REGISTER_EXTRACT | Yes - Automated |
| PARTG | Gesellschaftsvertrag (Partnerschaftsvertrag) | OTHER or SHAREHOLDER_AGREEMENT | No |
| SE | Register extract | REGISTER_EXTRACT | Yes - Automated |
| SE | List of Shareholders | SHAREHOLDER_LIST | No |
| SE_CO_KG | Register extract | REGISTER_EXTRACT | Yes - Automated |
| SE_CO_KG | "Aktionärsliste" for AG or AG/SE as General Partner | SHAREHOLDER_LIST | No |
| SE_CO_KG | Articles of Association (Satzung) for AG/SE as General Partner | FOUNDATION_DOCUMENT | No |
| SE_CO_KG | Gesellschaftsvertrag (partnership/shareholder agreement) | OTHER or SHAREHOLDER_AGREEMENT | No |
| SOLE_PROPRIETORSHIP | Register extract | REGISTER_EXTRACT | No |
| Stiftungen | Articles of Association (Satzung) | FOUNDATION_DOCUMENT | No |
| Stiftungen | Trustee Agreement / Stiftungssatzung or Statement signed by the Legal Representatives | OTHER | No |
| UG | Register extract | REGISTER_EXTRACT | Yes - Automated |
| UG | List of Shareholders | SHAREHOLDER_LIST | Yes - Automated |
| UG_CO_KG | Register extract | REGISTER_EXTRACT | Yes - Automated |
| UG_CO_KG | Shareholderlist for GmbH/UG General Partner | SHAREHOLDER_LIST | No |
| UG_CO_KG | Gesellschaftsvertrag (partnership/shareholder agreement) | OTHER or SHAREHOLDER_AGREEMENT | No |
| UG_I_GR | Articles of Association (Satzung) | FOUNDATION_DOCUMENT | No |
| UG_I_GR | Gesellschaftsvertrag (partnership/shareholder agreement) | OTHER or SHAREHOLDER_AGREEMENT | No |
| UG_I_GR | Notariell beglaubigte Urkundenrolle/Musterprotokoll | OTHER | No |


## Appendix III: Testing samples for GET Search for business commercial registration

The following table includes testing samples for the `GET Search for business commercial registration` endpoint, including values for the fields `country`, `registration_number`, `registration_issuer`, and `name`.

| Country | Registration number | Registration issuer | Company name |
|  --- | --- | --- | --- |
| DE | HRA204605 | Oldenburg (Oldenburg) | Stiftung St. Josef-Stift |
| DE | HRB18686 | Bonn | Tekcor 1. V V UG |
| DE | HRA201632 | Lüneburg | EWIV für Unternehmensberatung |
| DE | HRA12751 | Dortmund | Industrial Mercantile International Co. |
| DE | HRB39889 | Berlin (Charlottenburg) | OKV-Ostdeutsche Kommunalversicherung auf Gegenseitigkeit |
| DE | HRA928 | Koblenz | Hans Leininger, Textilgroßhandlung |
| DE | HRA551344 | Ulm | Ravensburger Verkehrs- und Versorgungsbetriebe |
| DE | GnR729 | Landshut | BürgerEnergie Niederbayern eG |
| ES | A31239833 | ---- | BEKO ERROTA SAL |
| ES | A82234113 | ---- | HOTEL BAHIA TROPICAL SA |
| ES | D92943109 | ---- | MICHAEL SCHMIDT Y CIA ENERGIA SOLAR [...] |
| ES | B40547747 | ---- | CACTUS DIGITAL SIGNAGE SOCIEDAD LIMITADA |
| ES | V54433230 | ---- | EL SECRETO DE SUS OJOS AIE |
| ES | B93050672 | ---- | PURAENVIDIA CONSULTING SL |
| ES | G83086751 | ---- | BARCLAYS GESTION FI |
| ES | B57761249 | ---- | GRUPO SA VINYA IBIZA, SOCIEDAD LIMITADA |
| ES | A79102331 | ---- | UNIDAD EDITORIAL SA |
| FR | 304141732 | ---- | ROGER & GALLET |
| FR | 790241467 | ---- | SR SIGNALETIC |
| FR | 807956966 | ---- | MENTON PARC AUTO |
| FR | 321470072 | ---- | GROUP ETUD CONSTR HAB CONSEIL |
| FR | 642050199 | ---- | AUTOMOBILES CITROEN |
| FR | 330034968 | ---- | INNOVATION ANIMATION CULTURE TOURISME |
| FR | 388843930 | ---- | RISKAUDIT IRSN-GRS INTERNATIONAL |
| FR | 332856574 | ---- | JEAN BAPTISTE POLIZZI |
| FR | 702006230 | ---- | SOFILOGIS |
| FR | 521753418 | ---- | HOLMES AND TOOLS |
| IT | BA543920 | ---- | FONDAZIONE NICOLA E VITO ANTONIO RUGGIERI |
| IT | TP131030 | ---- | MAIORANA GIUSEPPE PICCOLO IMPRENDITORE EDILE |
| IT | BA520383 | ---- | SPECIAL CARS SRL |
| IT | BI11627 | ---- | ALLEANZA COOPERATIVA TORINESE*A.C.T. |
| IT | MI152555 | ---- | UNICREDIT SERVICES S.C.P.A |
| IT | BS505351 | ---- | FUNGHI ENERGIA & SALUTE S.R.L. |
| IT | RM1046737 | ---- | CONSORZIO G.T.I. - GRUPPO TECNOLOGIE INTEGRATE IN LIQUIDAZIONE |
| IT | ME239092 | ---- | RUACH S.C. A R.L. - CONSORZIO STABILE |


For non-`DE` companies, the `registration_issuer` field is not necessary.

## Appendix IV: License requirements

The following table lists industries connected with license requirements depending on the services provided by the business customer. Upload the license with `document_type` as `OTHER`.

| Industries that require licenses |
|  --- |
| Alcoholic Beverages (Ausschanklizenz) |
| Brokerage or Consultancy on Financial Investments |
| Waste/ Rubbish Collection, Transportation, Trade, or Brokerage |
| Insurance broker / Insurance advisor |
| Fee-based financial investment advisor |
| Realtor (Immobilienmakler) |
| Real Estate Loan Brokerage (Immobiliardarlehensvermittler) |
| Residential Property Manager (Wohnimmobilienverwalter) |
| Site supervisor (Baubetreuer) |
| Property developer (Bauträger, Bauherr) |
| Drones |
| Tour Operator (Reisevermittler) |
| Labour Leasing (Arbeitnehmerüberlassung) |
| Tax Advisor/ Tax Consultancy (Steuerberater) |
| Taxi Business (Taxenverkehr/ Taxiservice) |
| Provision of Ambulatory (Non-stationary) Care |
| Geriatric Nurses (Altenpflegerinnen und Altenpfleger) |
| Employment Agency (Arbeitsvermittlung) |
| Auctioneer/ auction houses (Auktionator) |
| Gastronomy Establishments Without Alcoholic Beverages |
| Accommodation Establishments (Beherbergungsbetriebe) |
| Loan brokerage (Darlehensvermittler) |
| Wholesale of Medicinal Products |
| Road Haulage (Güterkraftverkehr) |
| Ambulance Services (Krankentransport) |
| Trade Fairs, Exhibitions, Markets |
| Pawn Shops (Pfandleihgewerbe) |
| Podiatrist/ Medical Podiatrist |
| Showman on Funfairs (Reisegewerbe) |
| Pension Advisor (Rentenberater) |
| Pest Control (Schädlingsbekämpfung) |
| Debtor and consumer insolvency advisor |
| Covid Test Centre (Corona Schnelltestzentrum) |
| Payment service providers (Zahlungsdienstleister) |


## Appendix V: Business Registry offices

| Register Court |
|  --- |
| Aachen |
| Altenburg |
| Amberg |
| Ansbach |
| Apolda |
| Arnsberg |
| Arnstadt |
| Arnstadt Zweigstelle Ilmenau |
| Aschaffenburg |
| Augsburg |
| Aurich |
| Bad Hersfeld |
| Bad Homburg v.d.H. |
| Bad Kreuznach |
| Bad Oeynhausen |
| Bad Salzungen |
| Bamberg |
| Bayreuth |
| Berlin (Charlottenburg) |
| Bielefeld |
| Bochum |
| Bonn |
| Braunschweig |
| Bremen |
| Chemnitz |
| Coburg |
| Coesfeld |
| Cottbus |
| Darmstadt |
| Deggendorf |
| Dortmund |
| Dresden |
| Duisburg |
| Düren |
| Düsseldorf |
| Eisenach |
| Erfurt |
| Eschwege |
| Essen |
| Flensburg |
| Frankfurt am Main |
| Frankfurt/Oder |
| Freiburg |
| Friedberg |
| Fritzlar |
| Fulda |
| Fürth |
| Gelsenkirchen |
| Gera |
| Gießen |
| Gotha |
| Göttingen |
| Greiz |
| Gütersloh |
| Hagen |
| Hamburg |
| Hamm |
| Hanau |
| Hannover |
| Heilbad Heiligenstadt |
| Hildburghausen |
| Hildesheim |
| Hof |
| Homburg |
| Ingolstadt |
| Iserlohn |
| Jena |
| Kaiserslautern |
| Kassel |
| Kempten (Allgäu) |
| Kiel |
| Kleve |
| Koblenz |
| Köln |
| Königstein |
| Korbach |
| Krefeld |
| Landau |
| Landshut |
| Langenfeld |
| Lebach |
| Leipzig |
| Lemgo |
| Limburg |
| Lübeck |
| Ludwigshafen a.Rhein (Ludwigshafen) |
| Lüneburg |
| Mainz |
| Mannheim |
| Marburg |
| Meiningen |
| Memmingen |
| Merzig |
| Mönchengladbach |
| Montabaur |
| Mühlhausen |
| München |
| Münster |
| Neubrandenburg |
| Neunkirchen |
| Neuruppin |
| Neuss |
| Nordhausen |
| Nürnberg |
| Offenbach am Main |
| Oldenburg (Oldenburg) |
| Osnabrück |
| Ottweiler |
| Paderborn |
| Passau |
| Pinneberg |
| Pößneck |
| Pößneck Zweigstelle Bad Lobenstein |
| Potsdam |
| Recklinghausen |
| Regensburg |
| Rostock |
| Rudolstadt |
| Saarbrücken |
| Saarlouis |
| Schweinfurt |
| Schwerin |
| Siegburg |
| Siegen |
| Sömmerda |
| Sondershausen |
| Sonneberg |
| Stadthagen |
| Stadtroda |
| Steinfurt |
| Stendal |
| St. Ingbert (St Ingbert) |
| Stralsund |
| Straubing |
| Stuttgart |
| St. Wendel (St Wendel) |
| Suhl |
| Tostedt |
| Traunstein |
| Ulm |
| Völklingen |
| Walsrode |
| Weiden i. d. OPf. |
| Weimar |
| Wetzlar |
| Wiesbaden |
| Wittlich |
| Wuppertal |
| Würzburg |
| Zweibrücken |


## Appendix VI: FAQs

### Legal Representative FAQs

**The company I am about to register is a „Gesellschaft mit beschränkter Haftung“ (GmbH) – who is my legal representative?**

> The easiest and surest way to figure that out is to check your current register excerpt (Handelsregisterauszug). It lists all the official legal representatives you must submit. As a further indication, these people must also be listed in the Imprint of your website (Impressum).


**The Legal Representative has sole representation rights – do I need to add the other legal representatives as well?**

> Yes. Even though this legal representative could conclude the process on behalf of the company alone in the following steps, Solaris needs the complete set of information for regulatory purposes. Therefore, enter the information for all legal representatives associated with the business.


**One of our legal representatives is currently unavailable – do we need to reach them to complete the process?**

> Yes. All legal representative(s) must be identified in a video identification session to complete the business identification process (BKYC).


**Our legal representatives are about to change soon – shall I include the new ones already?**

> No; submit the information as it is currently written in the official register. If you already know that these individuals will change, inform your Onboarding Manager immediately.


**Why do I have to submit all legal representatives here?**

> As a bank, Solaris must keep a record of the companies it works with and verify the provided information. The law stipulates that Solaris must collect this information for all legal representatives.


### Beneficial Owner FAQs

**What is a “Beneficial Owner”?**

> A "Beneficial Owner" is a natural person (an individual) who directly or indirectly owns more than 25% of a legal entity's voting shares. Ultimately, it is the person who benefits from the agreement and holds decision-making power. It can never be another company; Solaris must identify the natural person behind any corporate ownership.


**The company has no beneficial owners – how should I proceed?**

> If a thorough investigation shows that no individual directly or indirectly holds more than 25% of the voting shares, Solaris is required to identify the **legal representatives** as "fictitious" beneficial owners. Enter their information accordingly.


**I don't know the ownership structure of the company – how shall I proceed?**

> The ownership structure is determined in the shareholder agreement (*Gesellschaftsvertrag*), signed when founding the entity. Any changes should be noted in amendments or updates to this contract. Consult these documents to verify ownership.


**Another company owns the company – what shall I do now?**

> Submit the information of the natural person (individual) who owns that shareholder company. If the shareholder is also a company (holding or corporate structure), follow the trail of indirect ownership until you find an individual or the ownership is diluted below 25%.


**What do you mean by direct or indirectly & how do I calculate that?**

> **Direct ownership:** A natural person owns voting shares in the business directly.
**Indirect ownership:** A person owns an entity that, in turn, owns a part of the business. You must also calculate ownership if entities are stacked (multi-level hierarchy) or if one individual holds shares via multiple entities. To determine the indirect quota, multiply the ownership percentages through each level of the hierarchy. If the total exceeds 25%, that person is a beneficial owner.


> **Example:**
**Adello GmbH** is the company being identified.
* **Shareholders of Adello GmbH:**
  * Peter: 30% (Direct BO)
  * Susi: 10%
  * Anne: 10%
  * **Toscana GmbH:** 50%
* **Shareholders of Toscana GmbH:**
  * Hugo: 75%
  * Marie: 25%

**Resulting Beneficial Owners of Adello GmbH:**
* **Peter:** Yes (Direct owner with >25%)
* **Hugo:** Yes (Indirect owner). Calculation: 50% (Toscana's share in Adello) x 75% (Hugo's share in Toscana) = **37.5%**.
* **Marie:** No. Calculation: 50% x 25% = **12.5%** (Below the 25% threshold).



**We have different kinds of shares – which shares are the decisive ones?**

> Use the shares with **voting power**, as the beneficial owner is defined by their ability to control the company's decisions.


**Does the UBO need to do something, for instance, sign something or perform a video identification?**

> No. Submit the information exactly as stated in their official documents (ID card or passport). Beneficial owners do **not** need to perform a video identification or sign documents during this process.