Skip to content
Last updated

Trade Finance

Introduction

Product specifications

Trade Finance is a product that enables your business customers to finance their trade purchases using a trade credit line issued by Solaris.

In the Trade Finance user flow, business customers apply for trade credit lines through your frontend; when Solaris accepts them, they can request payouts for individual business purchases in the form of trades. This allows businesses to make large purchases that they can then pay back after they have sold the items.

Customers can request trades in Euros and US Dollars.

Trades can be paid back over 30, 60, or 90 days. The customer must pay the full amount of the trade (and any fees you have attached) in one payment on the due date.

This guide explains how to onboard business customers for the Trade Financing product.


System prerequisites

Before integrating Solaris' Trade Finance product, you must implement the following requirements in your solution:

1. Technical setup

Set up your environment and get your authentication keys. For step-by-step instructions, check the Technical setup guide.

2. Legal and compliance screens

Build the necessary legal and compliance screens in your sign-up flow to collect your customers' consent to the necessary legal and compliance requirements.

Create the following screens and record your customers' 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' 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.

For step-by-step instructions, check the Legal and compliance screens guide.

The mentioned fields are part of the person resource in which all the customer data points are stored.


Webhooks

Solaris recommends subscribing to the following webhook events to better automate your processes:

  • BUSINESS_IDENTIFICATION: Triggered when the status of a business identification changes.
  • LEGAL_REPRESENTATIVE: Triggered when a legal representative is linked or unlinked to a business.
  • BENEFICIAL_OWNER: Triggered when a beneficial owner is linked or unlinked to a business.
  • IDENTIFICATION: Triggered when the status of a person identification changes.
  • BUSINESS_CHANGED: Triggered when one or more attributes of the business object change. Contains only business_id and no payload.
  • PERSON_CHANGED: Triggered when one or more attributes of the person object change. Contains only person_id and no payload.
  • BUSINESS_DELETED : Triggered when the business resource is deleted from our system.
  • PERSON_DELETED : Triggered when the person resource is deleted from our system.
  • IDENTIFICATION_SESSION: Triggered when the status changes for an identification session.

For detailed instructions on implementing Solaris webhooks, see the webhooks documentation.


Integration flow

Integration steps

Onboard business customers for Trade Finance by completing the following steps:

Business registration

  1. Collect the mandatory business data in your sign-up flow, and create a business resource for your customer by completing Step 1.
  2. Collect the mandatory data from each of the business' legal representatives, including the consent to the legal and regulatory requirements in your sign-up flow, and create a person resource and assign the legal representative role to this person by completing Step 2.
  3. Collect the mandatory data from each of the business' beneficial owner(s), including the FATCA relevance indication in your sign-up flow, and create a person resource and assign the beneficial owner role to this person by completing Step 3.
  4. Upload the required business documents by completing Step 4.

Trade Finance application

  1. Create a Trade Finance application for the business by completing Step 5.
  2. Attach the business's documents to the Trade Finance application.

Business identification process (BKYC)

  1. Trigger the business identification flow by completing Step 6.
  2. Redirect all of the business' legal representative(s) to complete the video identification process with IDnow.
  3. Implement the compliance questions endpoints related to the business' legal identification process. Make sure to redirect the questions (if any) to the business' legal representative(s) and provide the answers to Solaris on time.
  4. Ensure that the business' legal identification and the video identification of legal representative(s) are both successful.
  5. Ensure all the Customer Due Diligence related properties in the business object are green. In case of any red or yellow status value, abort the customer onboarding process.

Credit scoring

Solaris will run a credit risk assessment for the customer. If the assessment returns a positive result, then Solaris will issue the trade credit line. You can check the status and get the details using GET Retrieve a Trade Finance application. Afterward, the business can request individual trades within the credit line.

Trade requests

  1. When your customer requests a trade, submit the necessary information to Solaris using POST Request a trade.
  2. Collect the invoice for the trade purchase from the customer and attach it to the trade request using POST Attach document to trade.
  3. (Initial onboarding only) When Solaris approves the trade, create an account for the customer with the type CHECKING_BUSINESS_CREDITLINE. Then, attach it to the trade credit line.

Step 1: Collect business data and create business resource

The customer must provide the mandatory data points in your sign-up flow, including all the timestamps of the business's consent to the legal and compliance screens. Afterward, you pass all the data points to Solaris by creating a business resource to represent your customer.

API reference

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

Related webhook events

Important points about data collection
  • Review the special considerations for data collection highlighted in the onboarding requirements guide.
  • 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.

POST Create a business

Important points
  • 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.
  • There are certain mappings between the fields tax_country, sector, and legal_form. Check this section 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
  • balance_sheet_total
  • number_employees

Request URL:

POST /v1/businesses

View full API reference


Automatic data collection (Optional)

Simplify your customers' onboarding process by opting for the automatic data collection feature. With our external service provider, Business Registry, 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:

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

Example response

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

Click here to view the full API reference.

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. We cannot accept free input as it breaks automation.

Request URL:

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

Example response

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.

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

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

Response

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

GET Automatic business data collection (France)

Request URL

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

Response

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"
    }
  ]
}

Check the appendix for testing data for these endpoints.


After creating a business resource, you must create the natural person(s) associated with the business and assign them to their respective roles. The natural person(s) are represented in our system by a person resource that contains their data, and then you must assign each person a dedicated role. The mandatory roles are Legal Representative and Ultimate Beneficial Owner.

Important

A business must have at least one natural person attached to it in the capacity of legal representative or beneficial owner or both simultaneously.


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.

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.

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.

For each of the business' legal representatives, you must collect the following mandatory information and pass them to Solaris by creating a person resource.

API reference

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

Related webhook events

Important points about data collection
  • Review the special requirements in the Onboarding requirements guide.
  • 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.
  • 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

Request URL:

POST /v1/persons

View full API reference


For each person resource you created in the previous step, you must create a legal_representative resource, and set the value of the legal_representative attribute to its associated person_id.

POST Create legal representative

API reference

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

Related webhook events

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:

POST /v1/businesses/{business_id}/legal_representatives

Click here to view the full API reference.

Check the FAQ for more information about legal representatives.


Step 3: Create Ultimate Beneficial Owner(s)

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.

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.

3.1 Create person resource(s) for each beneficial owner

For each of the business' beneficial owners, you must collect the following mandatory information and pass them to Solaris by creating 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.
  • 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:

  • first_name
  • last_name
  • address
    • line_1
    • line_2
    • postal_code
    • city
    • state
    • country
  • birth_date
  • nationality

Request URL:

POST /v1/persons

View full API reference


3.2 Create beneficial owner resource(s)

For each person resource you created in the previous step, you must create a beneficial_owner resource, and set the value of the person_id attribute to the id of the associated person resource.

POST Create beneficial owner

API reference

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

Related webhook events

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:

POST /v1/businesses/{business_id}/beneficial_owners

Click here to view the full API reference.

Check the FAQ for more information about beneficial owners.


Step 4: Upload business documents

In this step, you must do the following:

  • Collect the required documents from the business in your sign-up flow. The required documents depend on different factors, such as the business's legal form, sector, etc. Check the appendix for a list of required documents per legal form.
  • Upload the documents to Solaris by creating document resources for all the collected documents and attach them to the business.

You have to make a separate API request for each document and specify the document_type. See the appendix for a list of possible values for this field.

API reference

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

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

POST /v1/businesses/{business_id}/documents

Click here to view the full API reference


Step 5: Create Trade Finance application

Now you must create a Trade Finance application for the customer. Submit the following data points in the API call listed below:

  • requested_credit_line: The amount of money requested for the business's trade credit line (in Euro cents).
  • recipient_iban: IBAN of the account where the trade loans should be paid out.
  • partner_score: An optional scoring value to apply to the Trade Finance application. The value A will cause the application to be accepted automatically.
  • partner_reference_number: Your internal reference number for the Trade Finance application.
  • partner_contact_number: The telephone number of a contact person in your organization.
  • partner_contact_name: The name of a contact person in your organization.
  • nominal_interest_rate: The nominal interest rate to apply to the trade credit line, expressed as a value between 0.0 (i.e., 0%) and 1.0 (i.e., 100%) with up to four decimal places. For example, 0.01 would apply a nominal interest rate of 1% to the trade credit line.
  • identification_id: ID of the relevant business identification.
  • creditreform_score: The score calculated for the business by a credit risk agency (e.g., Credit Reform).
  • creditreform_pd: The probability of default calculated for the business by a credit risk agency (e.g., Credit Reform).
  • application_date: The date when the business submitted the application.

POST Create Trade Finance application

Request URL:

POST /v1/businesses/{business_id}/trade_finance_applications

Example request:

{
    "requested_credit_line":
    {
        "value": 100000,
        "currency": "EUR",
        "unit": "cents"
    },
    "recipient_iban": "DE32110101001000000029",
    "partner_score": "B",
    "partner_reference_number": "3738dbd0-a547-4c11-99e7-770066a39292",
    "partner_contact_number": "+49303003000",
    "partner_contact_name": "Magda Musterfrau",
    "nominal_interest_rate": 0.02,
    "identification_id": "4c74c804eaea5d2a2d64ef400a27a4d3bid",
    "creditreform_score": 0.02,
    "creditreform_pd": 0.3,
    "application_date": "2022-05-31"
}

Example response:

The API will return the trade_finance_application resource. It will have an initial status value of PENDING. Solaris will run a credit risk assessment on the business and then decide on the application. Use the GET endpoint below to check on the application status.

{
    "status_detail": "Application is created",
    "status": "PENDING",
    "requested_credit_line":
    {
        "value": 100000,
        "unit": "cents",
        "currency": "EUR"
    },
    "recipient_iban": "DE11200144559095555555",
    "partner_score": "B",
    "partner_reference_number": "3738dbd0-a547-4c11-99e7-770066a39292",
    "partner_contact_number": "+49303003000",
    "partner_contact_name": "Magda Musterfrau",
    "nominal_interest_rate": 0.02,
    "identification_id": "4c74c804eaea5d2a2d64ef400a27a4d3bid",
    "id": "fb7e312ee0e24148b2bc90c0cbe565bc",
    "creditreform_score": 0.02,
    "creditreform_pd": "0.3",
    "application_date": "2022-05-31"
}

View full API reference

POST Attach documents to Trade Finance application

You must call this endpoint to attach the business's documents to their Trade Finance application. Note that you must have previously uploaded these documents as described in Step 4. For each document, you must specify its type and the id returned when you uploaded it.

Request URL:

POST /v1/businesses/{business_id}/trade_finance_applications/{id}/documents

Example request:

{
    "type": "xml/credit_summary",
    "document_id": "6bb6aea0c0c9058412cd43b0b58c3e92cdoc"
}

Example response:

HTTP/1.1 204 No Content

View full API reference

GET Retrieve Trade Finance application

This endpoint retrieves information about a Trade Finance application. Use this endpoint to check on the application status.

Example request:

GET /v1/businesses/{business_id}/trade_finance_applications/{application_id}

Example response:

{
    "status_detail": "Application is created",
    "status": "PENDING",
    "requested_credit_line":
    {
        "value": 100000,
        "unit": "cents",
        "currency": "EUR"
    },
    "recipient_iban": "DE11200144559095555555",
    "partner_score": "B",
    "partner_reference_number": "3738dbd0-a547-4c11-99e7-770066a39292",
    "partner_contact_number": "+49303003000",
    "partner_contact_name": "Magda Musterfrau",
    "nominal_interest_rate": 0.02,
    "identification_id": "4c74c804eaea5d2a2d64ef400a27a4d3bid",
    "id": "fb7e312ee0e24148b2bc90c0cbe565bc",
    "creditreform_score": 0.02,
    "creditreform_pd": "0.3",
    "application_date": "2022-05-31"
}

View full API reference


Step 6: Complete the business identification (BKYC) process

In this step, must do the following:

  • Trigger the business identification process to identify the business legal entity and all legal representative(s). This process is called BKYC.
  • Make sure all the business' legal representative(s) are successfully identified.
  • Implement the endpoints related to compliance questions.

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:

Related webhook events

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

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


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 webhook.
  2. Call the GET Retrieve a business identification 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

{
  "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.

Example payload

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:

Resolution Loop

Legal Review Paused

GET /questions

POST /answers

Repeat for all questions

PATCH /mark_as_ready

Legal Review Resumes

information_required

FetchQuestions

SubmitAnswer

pending

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

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.

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.

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.

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

Click here to view the full API reference.

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

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

Click here to view the full API reference.


Customer Due Diligence

Solaris conducts risk screening and customer vetting checks, known as the Customer Due Diligence process, on the business legal entity. The results are returned in the GET business resource. For more information, check the Customer Due Diligence guide.

In case of any red or yellow status value for any of the CDD-related properties, you must abort the customer onboarding process. You can proceed with the remaining steps only if all the CDD-related properties have a green status value.


Step 7: Request the first trade

Once Solaris approves the customer's Trade Finance application, they can start requesting financing for their business purchases in the form of trades. Call the following endpoint to create a trade:

POST Request a trade

This endpoint creates a trade. You must provide the following information:

  • trade_purpose: The purpose of the trade.
  • trade_origin_country: The seller's ISO 3166-1 alpha-2 country code.
  • trade_company_website: The seller's website.
  • trade_company_registration: The seller's company registration number.
  • trade_company_name: The company name of the seller.
  • trade_company_address: The seller's address.
  • seller_bank_account_details: An object containing information about the seller's bank account. This depends on your implementation; ask your Onboarding Project Manager for more information.
  • requested_trade_currency: The currency requested for the trade by the customer. Can be EUR or USD.
  • requested_payout_amount: The amount to be paid out to the customer (i.e., the value of the trade), in Euro cents.
  • reason_for_extension: A reason to postpone the payback process beyond the original deadline.
  • partner_score: A score that you calculate for the customer, which controls auto-approval behavior. (A triggers auto-approval)
  • partner_reviewer: The individual in your organization who reviewed the trade.
  • original_invoice_amount: The original amount listed on the invoice of the trade.
  • original_invoice_number: An alphanumeric identifier generated by the seller for the invoice.
  • order_reference: (For non-Euro trades) A reference for you to match the trade with the generated currency conversion order.
  • invoice_date: The date when the invoice must be paid.
  • incoterm: The relevant incoterm that applies to the trade.
  • fx_rate: (For non-Euro trades) The foreign exchange (FX) rate to apply to the trade.
  • financing_term: The number of days from the payout of the loan when the customer must pay it back. Can be 30, 60, or 90.
  • business_trade_no: A serial number you may generate to identify the trade.

Request URL:

POST /v1/businesses/{business_id}/trade_credit_line/trades

Example request:

{
    "trade_purpose": "Buying machinery",
    "trade_origin_country": "DE",
    "trade_company_website": "docs.solarisbank.com",
    "trade_company_registration": "HRB 168180 B",
    "trade_company_name": "SolarisDealz GmbH",
    "trade_company_address": "Cuvrystraße 53, 10997 Berlin",
    "seller_bank_account_details":
    {
        "iban": "DE11200144559095555555"
    },
    "requested_trade_currency": "EUR",
    "requested_payout_amount":
    {
        "value": 50000,
        "unit": "cents",
        "currency": "EUR"
    },
    "reason_for_extension": "No moneys",
    "partner_score": "A",
    "partner_reviewer": "Ray Liotta",
    "original_invoice_number": "AAA1223731",
    "original_invoice_amount":
    {
        "value": 1000,
        "unit": "cents",
        "currency": "EUR"
    },
    "order_reference": "string",
    "invoice_date": "2022-05-31",
    "incoterm": "CFR",
    "fx_rate": 0.03,
    "financing_term": 30,
    "business_trade_no": "e3b3ecd1-72b5-4786-9588-15671b035b42"
}

Example response:

The API returns the trade resource, which will have an initial status of PENDING. Use the GET endpoint to check on the status.

{
    "trade_purpose": "Buying machinery",
    "trade_origin_country": "DE",
    "trade_company_website": "docs.solarisbank.com",
    "trade_company_registration": "HRB 168180 B",
    "trade_company_name": "SolarisDealz GmbH",
    "trade_company_address": "Cuvrystraße 53, 10997 Berlin",
    "status_detail": "string",
    "status": "PENDING",
    "seller_bank_account_details":
    {
        "Payout amount": "7654,80",
        "Payout Currency": "EUR",
        "Another entry": "Another value"
    },
    "requested_payout_amount":
    {
        "value": 50000,
        "unit": "cents",
        "currency": "EUR"
    },
    "reason_for_extension": "No moneys",
    "partner_score": "A",
    "partner_reviewer": "Max Mustermann",
    "original_invoice_number": "AAA1223731",
    "original_invoice_amount":
    {
        "value": 1000,
        "unit": "cents",
        "currency": "EUR"
    },
    "order_reference": "string",
    "invoice_date": "2022-05-31",
    "incoterm": "CFR",
    "id": "80620f0c57594a2cac337f401889bf6f",
    "fx_rate": 0.03,
    "financing_term": 30,
    "documents":
    [
        {
            "type": "invoice",
            "document_id": "6bb6aea0c0c9058412cd43b0b58c3e92cdoc",
            "created_at": "2018-10-18T15:57:01.000000Z"
        }
    ],
    "business_trade_no": "e3b3ecd1-72b5-4786-9588-15671b035b42",
    "beneficiary_id": "e0277fae750a4c849660da873f94cbiz"
}

View full API reference

GET Retrieve a trade

This endpoint returns information about a trade. Use this endpoint to check on the status of an open trade request.

Request URL:

GET /v1/businesses/{business_id}/trade_credit_line/trades/{id}

Example response:

{
    "trade_purpose": "Buying machinery",
    "trade_origin_country": "DE",
    "trade_company_website": "docs.solarisbank.com",
    "trade_company_registration": "HRB 168180 B",
    "trade_company_name": "SolarisDealz GmbH",
    "trade_company_address": "Cuvrystraße 53, 10997 Berlin",
    "status_detail": "string",
    "status": "PENDING",
    "seller_bank_account_details":
    {
        "Payout amount": "7654,80",
        "Payout Currency": "EUR",
        "Another entry": "Another value"
    },
    "requested_payout_amount":
    {
        "value": 50000,
        "unit": "cents",
        "currency": "EUR"
    },
    "reason_for_extension": "No moneys",
    "partner_score": "A",
    "partner_reviewer": "Max Mustermann",
    "original_invoice_number": "AAA1223731",
    "original_invoice_amount":
    {
        "value": 1000,
        "unit": "cents",
        "currency": "EUR"
    },
    "order_reference": "string",
    "invoice_date": "2022-05-31",
    "incoterm": "CFR",
    "id": "80620f0c57594a2cac337f401889bf6f",
    "fx_rate": 0.03,
    "financing_term": 30,
    "documents":
    [
        {
            "type": "invoice",
            "document_id": "6bb6aea0c0c9058412cd43b0b58c3e92cdoc",
            "created_at": "2018-10-18T15:57:01.000000Z"
        }
    ],
    "business_trade_no": "e3b3ecd1-72b5-4786-9588-15671b035b42",
    "beneficiary_id": "e0277fae750a4c849660da873f94cbiz"
}

View full API reference


Step 8: Attach documents to the trade

Call the following endpoint to attach the relevant documentation (e.g., the invoice) to the trade:

POST Attach document to trade

Adds a supporting document (e.g., the trade invoice) to a trade. Note that you must first upload these documents using the POST Upload a document for a business described in Step 4.

Request URL:

POST /v1/businesses/{business_id}/trade_credit_line/trades/{trade_id}/documents

Example request:

{
    "type": "invoice",
    "document_id": "6bb6aea0c0c9058412cd43b0b58c3e92cdoc"
}

Example response:

HTTP/1.1 204 No Content

View full API reference


Step 9: Attach payback plan to the trade

Next, you must amend the trade resource with information about when the trade should be paid out, when the trade must be paid back, and the charges that the customer must pay.

PUT Attach payback plan to trade

Request URL:

PUT /v1/businesses/{business_id}/trade_credit_line/trades/{trade_id}/payback_plan

Example request:

{
    "payout_date": "2020-01-01",
    "payback_date": "2020-01-31",
    "partner_transaction_charges_expected":
    {
        "value": 1250,
        "unit": "cents",
        "currency": "EUR"
    },
    "other_charges":
    {
        "value": 6700,
        "unit": "cents",
        "currency": "EUR"
    },
    "customer_fees_expected":
    {
        "value": 10000,
        "unit": "cents",
        "currency": "EUR"
    }
}

Example response:

HTTP/1.1 204 No Content

View full API reference


Step 10: Create Trade Finance bank account (first trade only)

Finally, when Solaris approves the customer's first trade, you must create a Trade Finance bank account for the customer and attach it to their trade credit line.

POST Create business account

See the API reference for the full list of values you must provide in this request.

  • On sandbox, always use CHECKING_BUSINESS as an account type with an automatically allocated 1000 EUR credit line, which allows you to test endpoints without running into the insufficient funds problem.
  • On production, use the account type CHECKING_BUSINESS_CREDITLINE.

If the company for whom you are opening a business account is in foundation (i.e., in Gründung), then the account will be active for 15 weeks. If the company does not transition to "founded" during this period, then Solaris will put a DEBIT_BLOCK on the account.

Request URL:

POST /businesses/{business_id}/accounts

Example response

HTTP/1.1 201 Created
{
  "id": "8e98fe2c6b0df0cdeff56517494abbadcacc",
  "iban": "DE87110101001000057123",
  "bic": "SOBKDEBBXXX",
  "type": "CHECKING_BUSINESS",
  "purpose": "primary",
  "balance": {
    "value": 0,
    "unit": "cents",
    "currency": "EUR"
  },
  "available_balance": {
    "value": 0,
    "unit": "cents",
    "currency": "EUR"
  },
  "locking_status": "NO_BLOCK",
  "locking_reasons": [],
  "account_limit": {
    "value": 0,
    "unit": "cents",
    "currency": "EUR"
  },
  "business_id": "880bbac68a34add190786b9c74f4c82fcbiz",
  "status": "ACTIVE",
  "closure_reasons": null
}

View full API reference

PATCH Attach account to trade credit line

Use this method to attach the account you just created to the business's trade credit line.

Request URL:

PATCH /v1/businesses/{business_id}/trade_credit_line

Example request:

{
    "account_id": "efdd8c5e7ec0b4e36768c6de39e6cfc0cacc"
}

Example response:

{
    "requested_credit_line":
    {
        "amount": 100000,
        "unit": "cents",
        "currency": "EUR"
    },
    "nominal_interest_rate": 0.02,
    "business_id": "e0277fae750a4c849660da873f94cbiz",
    "account_id": "5526853938474f3e92b22a03ea57a544cacc"
}

View full API reference


Next steps

Congratulations! You have implemented Solaris' Trade Finance product.

Check the following appendices section for additional information on enums and testing data.

For an overview of Solaris' lending products, check the lending products overview page.

Useful resources

Check the following links for additional related guides and API reference documentation.


Appendix I: Enums

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:

EnumDescription
FE_REPORTINGReporting Financial Institution.
FE_NON_REPORTINGNon-Reporting Financial Institution.
NFE_ACTIVE_OTHERActive 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_PASSIVEPassive NFE - A non-active Non-Financial Entity.
NFE_PASSIVE_INVESTMENTPassive 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.

EnumDescription
ANNUAL_FINANCIAL_STATEMENTA business or company's annual financial statement.
KYC_REPORTThe KYC report generated after successful customer identification.
ID_DOCUMENTA person's identification document, such as a passport or ID card.
SIGNATUREA signature sample.
PICTUREA picture or scanned document of any other type.
QES_DOCUMENTA document related to a Qualified Electronic Signature (QES).
SIGNED_CONTRACTA signed contract of any kind.
SIGNED_QES_DOCUMENTA document signed by a Qualified Electronic Signature (QES).
REGISTER_APPLICATIONA document proving the application for registration (Gründungsurkunde), used for companies "in formation".
REGISTER_CHECKA register check.
REGISTER_EXTRACTA commercial register excerpt or similar document.
FOUNDATION_DOCUMENTThe foundation document of a company or business.
SCHUFA_COMPACT_REPORTA compact SCHUFA report.
SCHUFA_GWG_REPORTA GWG (Money Laundering Act) SCHUFA report.
SCHUFA_FULL_REPORTA full SCHUFA report about a person.
SCHUFA_SHORT_REPORTA short SCHUFA report about a person.
CREDIT_AGENCY_REPORTA report issued by a credit agency.
SHARE_HOLDERS_AGREEMENTA shareholder agreement.
SHAREHOLDERS_LISTA list of shareholders.
TRADING_LICENSEA trading license.
TRANSPARENCY_REGISTER_EXTRACTAn extract from the transparency register.
INVOICEAn invoice of any kind.
OTHERAny other type of document.
VIDEOA video of any kind.
VAT_CERTIFICATEVAT registration certificate.

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.

StatusDescription
createdThe identification resource has been created for the customer.
pendingThe 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_failedThe identification is currently under review by the provider. You cannot offer banking services to the customer at this stage.
successfulThe video identification was successful. The customer can be onboarded. Note that the customer's data might have been updated during the identification session.
abortedThe customer aborted the identification process. They can retry using the same URL.
canceledThe provider canceled the video identification. The customer should retry using the same URL.
failedThe identification was unsuccessful. You cannot onboard the customer or offer any banking services to them.
expiredThe 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.

Identification documents

  1. List of accepted passports for video identification via IDnow: here
  2. List of accepted passports for postIdent: here
  3. Search for an identification document: here

List of passports with address

The following table lists all ID types that include the bearer's address, which you can use to perform identification without having to provide a proof of address document.

DocumentIssuer CountryType (ID/PP)
BGR-AO-01005BulgariaPassport
CHN-AO-04003ChinaPassport
HRV-BO-02001CroatiaID
HRV-AO-02001CroatiaPassport
CZE-BO-04001Czech RepublicID
CZE-BO-04002Czech RepublicID
FRA-BO-02002FranceID
FRA-AO-03001-03003FrancePassport
DEU-BO-01003GermanyID
DEU-BO-02001GermanyID
IND-AO-01001IndiaPassport
ITA-BO-04003ItalyID
ITA-BO-03004ItalyID
ITA-BO-03002ItalyID
ITA-BO-03001ItalyID
ITA-BO-03003ItalyID
MLT-BO-02001MaltaID
MLT-BO-03001MaltaID
MAR-AO-02001MoroccoPassport
POL-BO-02001-02003PolandID
SGP-BO-01001-ASingaporeID
SGP-BO-01001SingaporeID
SVK-BO-02001SlovakiaID
SVK-BO-05001SlovakiaID
SVK-BO-04001SlovakiaID
SVN-AO-02001-02003SloveniaPassport
SVN-AO-02004SloveniaPassport
SVN-BO-02001SloveniaID
SVN-AO-01004SloveniaPassport
ESP-BO-03001SpainID
ESP-BO-05001SpainID

Tax country

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

EnumDescription
ATAustria
BEBelgium
CZCzech Republic
DEGermany
ESSpain
FRFrance
GBUnited Kingdom
ITItaly
LULuxembourg
NLThe Netherlands
PTPortugal

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

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

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

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.

SectorAllowed 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

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.

StatusDescription
createdThe legal identification has been initiated and will be conducted shortly.
information_requiredSolaris is missing one or more required documents or information. Check the legal_identification_missing_information array to see what is missing.
pendingThe legal review is currently in progress. This status is set after you call the mark_as_ready endpoint.
blocked_internallyThe legal identification is put on hold due to additional internal checks.
successfulThe legal identification was completed successfully.
failedThe legal identification failed. Check the legal_identification_reason field for details.
expiredThe legal identification was not completed within the required timeframe (90 days).

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

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.

StatusDescription
createdThe business identification resource has been created. The legal review and video identification steps will begin shortly.
pendingThe 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.
successfulBoth steps of the business identification process (legal review and video identifications) were completed successfully.
failedThe business identification process failed and will not continue. To understand why, check the status of the legal_identification or the individual video identifications.
expiredThe 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.

Registration district and registration issuer

The following are the possible values for the fields registration_district and registration_issuer. These fields are only relevant for customers in Germany.

  • AACHEN
  • ALTENBURG
  • AMBERG
  • AMTSGERICHT
  • ANSBACH
  • APOLDA
  • ARNSBERG
  • ARNSTADT
  • ARNSTADT_ZWEIGSTELLE_ILMENAU
  • ASCHAFFENBURG
  • AUGSBURG
  • AURICH
  • BAD_HERSFELD
  • BAD_HOMBURG_VDH
  • BAD_KREUZNACH
  • BAD_OEYNHAUSEN
  • BAD_SALZUNGEN
  • BAMBERG
  • BAYREUTH
  • BERLIN_CHARLOTTENBURG
  • BIELEFELD
  • BOCHUM
  • BONN
  • BRAUNSCHWEIG
  • BREMEN
  • CHEMNITZ
  • COBURG
  • COESFELD
  • COTTBUS
  • DARMSTADT
  • DEGGENDORF
  • DORTMUND
  • DRESDEN
  • DUISBURG
  • DUEREN
  • DUESSELDORF
  • EISENACH
  • ERFURT
  • ESCHWEGE
  • ESSEN
  • FLENSBURG
  • FRANKFURT_AM_MAIN
  • FRANKFURT_ODER
  • FREIBURG
  • FRIEDBERG
  • FRITZLAR
  • FULDA
  • FUERTH
  • GELSENKIRCHEN
  • GERA
  • GIESSEN
  • GOTHA
  • GOETTINGEN
  • GREIFSWALD
  • GREIZ
  • GUESTROW
  • GUETERSLOH
  • HAGEN
  • HAMBURG
  • HAMM
  • HANAU
  • HANNOVER
  • HEILBAD_HEILIGENSTADT
  • HILDBURGHAUSEN
  • HILDESHEIM
  • HOF
  • HOMBURG
  • INGOLSTADT
  • ISERLOHN
  • JENA
  • KAISERSLAUTERN
  • KASSEL
  • KEMPTEN_ALLGAUE
  • KIEL
  • KLEVE
  • KOBLENZ
  • KOELN
  • KOENIGSTEIN
  • KORBACH
  • KREFELD
  • LANDAU
  • LANDSHUT
  • LEBACH
  • LEIPZIG
  • LEMGO
  • LIMBURG
  • LUEBECK
  • LUDWIGSHAFEN_A_RHEIN_LUDWIGSHAFEN
  • LUDWIGSLUST
  • LUENEBURG
  • MAINZ
  • MANNHEIM
  • MARBURG
  • MEININGEN
  • MEMMINGEN
  • MERZIG
  • MOENCHENGLADBACH
  • MONTABAUR
  • MUEHLHAUSEN
  • MUENCHEN
  • MUENSTER
  • NEUBRANDENBURG
  • NEUNKIRCHEN
  • NEURUPPIN
  • NEUSS
  • NORDHAUSEN
  • NUERNBERG
  • OFFENBACH_AM_MAIN
  • OLDENBURG_OLDENBURG
  • OSNABRUECK
  • OTTWEILER
  • PADERBORN
  • PASEWALK
  • PASSAU
  • PINNEBERG
  • POESSNECK
  • POESSNECK_ZWEIGSTELLE_BAD_LOBENSTEIN
  • POTSDAM
  • RECKLINGHAUSEN
  • REGENSBURG
  • RIBNITZ_DAMGARTEN
  • ROSTOCK
  • RUDOLSTADT
  • RUDOLSTADT_ZWEIGSTELLE_SAALFELD
  • SAARBRUECKEN
  • SAARLOUIS
  • SCHWEINFURT
  • SCHWERIN
  • SIEGBURG
  • SIEGEN
  • SOEMMERDA
  • SONDERSHAUSEN
  • SONNEBERG
  • ST_INGBERT_ST_INGBERT
  • ST_WENDEL_ST_WENDEL
  • STADTHAGEN
  • STADTRODA
  • STEINFURT
  • STENDAL
  • STRALSUND
  • STRAUBING
  • STUTTGART
  • SUHL
  • TOSTEDT
  • TRAUNSTEIN
  • ULM
  • VOELKLINGEN
  • WALSRODE
  • WAREN_MUERITZ
  • WEIDEN_ID_OPF
  • WEIMAR
  • WETZLAR
  • WIESBADEN
  • WISMAR
  • WITTLICH
  • WUPPERTAL
  • WUERZBURG
  • ZWEIBRUECKEN

Registration type

  • AT_FB_CD
  • AT_GEM_CD
  • AT_IDENT_CD
  • AT_LAE_CD
  • AT_ZVR_CD
  • BE_OND_CD
  • BG_BULSTAT_CD
  • BG_OTHER_CD
  • BG_UIC_CD
  • BG_VAT_CD
  • CY_DRCOR_CD
  • CY_NOTAP_CD
  • CY_TIC_CD
  • CY_VAT_CD
  • CZ_ICO_CD
  • CZ_NID_CD
  • DE_GNR_CD
  • DE_HRA_CD
  • DE_HRB_CD
  • DE_NOTAP_CD
  • DE_PR_CD
  • DE_VR_CD
  • DK_CVR_CD
  • DK_FT_CD
  • DK_NOTAP_CD
  • EE_FON_CD
  • EE_RG_CD
  • ES_NIF_CD
  • FI_ALV_CD
  • FI_NOTAP_CD
  • FI_SIRA_CD
  • FI_Y_CD
  • FR_CIB FR_SIREN_CD
  • GEN_IPF_CD
  • GEN_NBR_ENTTY_CD
  • GEN_NCB_ENTTY_CD
  • GEN_NSA_ENTTY_CD
  • GEN_NSI_ENTTY_CD
  • GEN_OTHER_CD
  • GEN_PS_CD
  • GEN_TAX_CD
  • GEN_TRD_RGSTR_ENTTY_CD
  • GEN_VAT_CD
  • GR_AFM_CD
  • GR_IMO_CD
  • HR_MB_CD
  • HR_MBS_CD
  • HR_OIB_CD
  • HU_CEG_CD
  • HU_FB_CD
  • HU_KOZ_CD
  • HU_TOR_CD
  • IE_CRO_CD
  • IE_VAT_CD
  • IT_CCIAA_CD
  • IT_CF_CD
  • IT_UCITS_CD
  • LT_INV_CD
  • LT_JAR_CD
  • LU_RSC_CD
  • LV_FON_CD
  • LV_NBR_CD
  • LV_VAT_CD
  • MT_CNUM_CD
  • MT_OLE_CD
  • MT_VAT_CD
  • NL_KVK_CD
  • NL_RSIN_CD
  • PL_KRS_CD
  • PL_NIP_CD
  • PL_REGON_CD
  • PL_VAT_CD
  • PT_FSA_CD
  • PT_NIF_CD
  • RO_CUI_CD
  • RO_TAX_CD
  • RO_TRN_CD
  • SE_FIN_CD
  • SE_MOM_CD
  • SE_ORG_CD
  • SI_DAV_CD
  • SI_DDV_CD
  • SI_MAT_CD
  • SK_ICO_CD

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 FormDocuments requiredDocument TypeData can be retrieved by Solaris
ADÖRRegister extractREGISTER_EXTRACTYes - Automated
ADÖRArticles of Association (Satzung)FOUNDATION_DOCUMENTNo
AGRegister extractREGISTER_EXTRACTYes - Automated
AG"Aktionärsliste" for AG or AG/SE as General PartnerSHAREHOLDER_LISTNo
AGArticles of Association (Satzung)FOUNDATION_DOCUMENTNo
AG_CO_KGRegister extractREGISTER_EXTRACTYes - Automated
AG_CO_KG"Aktionärsliste" for AG or AG/SE as General PartnerSHAREHOLDER_LISTNo
AG_CO_KGArticles of Association (Satzung) for AG/SE as General PartnerFOUNDATION_DOCUMENTNo
EGRegister extractREGISTER_EXTRACTYes - Automated
EGArticles of Association (Satzung)FOUNDATION_DOCUMENTNo
EKRegister extractREGISTER_EXTRACTYes - Automated
GbRGesellschaftsvertrag (partnership/shareholder agreement)OTHER or SHAREHOLDER_AGREEMENTNo
eGbRRegister extractREGISTER_EXTRACTYes - Automated
eGbRGesellschaftsvertrag (partnership/shareholder agreement)OTHER or SHAREHOLDER_AGREEMENTNo
GemeindeArticles of Association (Satzung)FOUNDATION_DOCUMENTNo
gGmbHRegister extractREGISTER_EXTRACTYes - Automated
gGmbHList of ShareholdersSHAREHOLDER_LISTYes - Automated
GMBHRegister extractREGISTER_EXTRACTYes - Automated
GMBHList of ShareholdersSHAREHOLDER_LISTYes - Automated
GMBH_CO_KGRegister extractREGISTER_EXTRACTYes - Automated
GMBH_CO_KGShareholderlist for GmbH/UG General PartnerSHAREHOLDER_LISTNo
GMBH_I_GRArticles of Association (Satzung)FOUNDATION_DOCUMENTNo
GMBH_I_GRGesellschaftsvertrag (partnership/shareholder agreement)OTHER or SHAREHOLDER_AGREEMENTNo
GMBH_I_GRNotariell beglaubigte Urkundenrolle/MusterprotokollOTHERNo
gUGRegister extractREGISTER_EXTRACTYes - Automated
gUGList of ShareholdersSHAREHOLDER_LISTYes - Automated
KDORArticles of Association (Satzung)FOUNDATION_DOCUMENTNo
KGRegister extractREGISTER_EXTRACTYes - Automated
KGAARegister extractREGISTER_EXTRACTYes - Automated
KGAAArticles of Association (Satzung)FOUNDATION_DOCUMENTNo
LTDRegister extractREGISTER_EXTRACTYes - Automated
LTDList of ShareholdersSHAREHOLDER_LISTNo
LTDArticles of Association (Satzung)FOUNDATION_DOCUMENTNo
NEVList of Shareholders (List of Board members)SHAREHOLDER_LISTNo
NEVArticles of Association (Satzung)FOUNDATION_DOCUMENTNo
OHGRegister extractREGISTER_EXTRACTYes - Automated
PARTGRegister extractREGISTER_EXTRACTYes - Automated
PARTGGesellschaftsvertrag (Partnerschaftsvertrag)OTHER or SHAREHOLDER_AGREEMENTNo
SERegister extractREGISTER_EXTRACTYes - Automated
SEList of ShareholdersSHAREHOLDER_LISTNo
SE_CO_KGRegister extractREGISTER_EXTRACTYes - Automated
SE_CO_KG"Aktionärsliste" for AG or AG/SE as General PartnerSHAREHOLDER_LISTNo
SE_CO_KGArticles of Association (Satzung) for AG/SE as General PartnerFOUNDATION_DOCUMENTNo
SE_CO_KGGesellschaftsvertrag (partnership/shareholder agreement)OTHER or SHAREHOLDER_AGREEMENTNo
SOLE_PROPRIETORSHIPRegister extractREGISTER_EXTRACTNo
StiftungenArticles of Association (Satzung)FOUNDATION_DOCUMENTNo
StiftungenTrustee Agreement / Stiftungssatzung or Statement signed by the Legal RepresentativesOTHERNo
UGRegister extractREGISTER_EXTRACTYes - Automated
UGList of ShareholdersSHAREHOLDER_LISTYes - Automated
UG_CO_KGRegister extractREGISTER_EXTRACTYes - Automated
UG_CO_KGShareholderlist for GmbH/UG General PartnerSHAREHOLDER_LISTNo
UG_CO_KGGesellschaftsvertrag (partnership/shareholder agreement)OTHER or SHAREHOLDER_AGREEMENTNo
UG_I_GRArticles of Association (Satzung)FOUNDATION_DOCUMENTNo
UG_I_GRGesellschaftsvertrag (partnership/shareholder agreement)OTHER or SHAREHOLDER_AGREEMENTNo
UG_I_GRNotariell beglaubigte Urkundenrolle/MusterprotokollOTHERNo

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.

CountryRegistration numberRegistration issuerCompany name
DEHRA204605Oldenburg (Oldenburg)Stiftung St. Josef-Stift
DEHRB18686BonnTekcor 1. V V UG
DEHRA201632LüneburgEWIV für Unternehmensberatung
DEHRA12751DortmundIndustrial Mercantile International Co.
DEHRB39889Berlin (Charlottenburg)OKV-Ostdeutsche Kommunalversicherung auf Gegenseitigkeit
DEHRA928KoblenzHans Leininger, Textilgroßhandlung
DEHRA551344UlmRavensburger Verkehrs- und Versorgungsbetriebe
DEGnR729LandshutBürgerEnergie Niederbayern eG
ESA31239833----BEKO ERROTA SAL
ESA82234113----HOTEL BAHIA TROPICAL SA
ESD92943109----MICHAEL SCHMIDT Y CIA ENERGIA SOLAR [...]
ESB40547747----CACTUS DIGITAL SIGNAGE SOCIEDAD LIMITADA
ESV54433230----EL SECRETO DE SUS OJOS AIE
ESB93050672----PURAENVIDIA CONSULTING SL
ESG83086751----BARCLAYS GESTION FI
ESB57761249----GRUPO SA VINYA IBIZA, SOCIEDAD LIMITADA
ESA79102331----UNIDAD EDITORIAL SA
FR304141732----ROGER & GALLET
FR790241467----SR SIGNALETIC
FR807956966----MENTON PARC AUTO
FR321470072----GROUP ETUD CONSTR HAB CONSEIL
FR642050199----AUTOMOBILES CITROEN
FR330034968----INNOVATION ANIMATION CULTURE TOURISME
FR388843930----RISKAUDIT IRSN-GRS INTERNATIONAL
FR332856574----JEAN BAPTISTE POLIZZI
FR702006230----SOFILOGIS
FR521753418----HOLMES AND TOOLS
ITBA543920----FONDAZIONE NICOLA E VITO ANTONIO RUGGIERI
ITTP131030----MAIORANA GIUSEPPE PICCOLO IMPRENDITORE EDILE
ITBA520383----SPECIAL CARS SRL
ITBI11627----ALLEANZA COOPERATIVA TORINESE*A.C.T.
ITMI152555----UNICREDIT SERVICES S.C.P.A
ITBS505351----FUNGHI ENERGIA & SALUTE S.R.L.
ITRM1046737----CONSORZIO G.T.I. - GRUPPO TECNOLOGIE INTEGRATE IN LIQUIDAZIONE
ITME239092----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

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.