Business Fronting Factoring

This guide explains the integration process of Solaris' business fronting loans product, including the mandatory information you need to collect from your customers and the necessary endpoints and webhooks you need to integrate into your solution.

What's factoring?

Factoring, also known as accounts receivable financing, is when a company sells its account receivables or invoices to a financial provider (i.e., a factor). The factor buys these receivables or invoices in cash from the company and handles the collection directly from the debtor (i.e., the company's customer who owes the money). Many companies resort to factoring as a financing solution to solve their short-term liquidity needs.

Product overview

Solaris' business fronting factoring solution combines the logic of fronting with factoring as a financing solution in a single product.

As a Solaris partner integrating this product, you can offer your business customers factoring transactions, in which they can sell their invoices or receivables in exchange for cash.

In this case, Solaris acts as a fronting and factoring bank, which buys these receivables directly from your customer (factoring) and then sells these receivables back to you (fronting). Afterward, you would be responsible for the debt collection.

Available markets

Business fronting factoring is currently only available for business customers in Germany.

How does it work?

A fronting factoring transaction involves the following parties. Each party has its dedicated role and responsibilities.

Role In business relationship with Responsibilites
Solaris partner - Solaris
- Seller
- Debtor
As a Solaris partner, you're responsible for:

- Commissioning and selling this product to your business customers.
- Integrating this product into your solution, including all endpoints and webhooks.
- Collecting the required data from the customer and doing your credit risk scoring and due diligence.
- Collecting the receivables from the debtor after Solaris buys the receivables from your customer and sells them back to you.
Seller - Solaris partner
- Solaris
- Debtor
The seller is your business customer that wants to factor their receivables using the Solaris fronting factoring solution. The seller is responsible for:

- Submitting all required data points and documents.
- Completing the BKYC process and passing the scoring process successfully.
Debtor - Seller
- Solaris partner
The debtor is the seller's customer who originally bought a service or product from the seller and is responsible for:

- Paying the receivables amount to you instead of the seller.
Solaris - Partner
- Seller
As the fronting and factoring bank, Solaris is responsible for:

- Handling the regulatory and compliance requirements for customer onboarding, such as BKYC and credit risk checks.
- Buying the receivables from the seller and then selling them back to you as the partner.
- Facilitating and executing the money flow between the different accounts related to the factoring transaction via API calls.

The following diagram gives a high-level overview of the fronting factoring process and how it works between the different parties:

Diagram: Fronting factoring process

Accounts

The following accounts are used in a fronting factoring transaction:

Account Owned by Description
Settlement account Solaris A Solaris account linked to your partner ID, from which the receivable amount is transferred to the seller.
Collateral account Solaris partner A Solaris account under your name. The balance of this account must equal the receivable amount to be factored and paid to the seller; otherwise, the payout will fail.
Seller account Seller The seller's account to which Solaris will transfer the factored amount.
Debt collection account Solaris partner An internal or external account managed by you and to which the debtor transfers the receivable amount.
Fee collection account Solaris partner An internal or external account managed by you and to which Solaris transfers the factoring interest.
Debtor account Debtor The debtor account from which the receivable amount is transferred to your debt collection account.

Money flow

Once you onboard the seller and they successfully pass the scoring process and BKYC flow, you can trigger partial loan payouts using Solaris' fronting APIs.

The following example shows the money flow of a fronting factoring transaction, in which:

  • the full receivable amount = 10,000 EUR,
  • retention fee = 1,000 EUR, and
  • factoring interest = 500 EUR.

Diagram: Fronting factoring money flow

note
  • You can freely define the amounts of initial payout, retention fee, and factoring interest in the factoring agreement with the seller and Solaris. However, all partial payouts cannot exceed the full amount of receivables.
  • As soon as the factoring application is approved and the BKYC is successful, you can trigger the partial loan payouts via Solaris APIs as you see fit, independent from the debt collection from the debtor.
  • You're solely responsible for the debt collection. Solaris does not take any part in this phase.

System prerequisites

Before integrating Solaris' business fronting factoring 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. The Legal and compliance screens guide contains step-by-step instructions on how to create these screens and what they must contain.

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

  • Collect the customer's consent to Solarisbank'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.
note

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. For detailed instructions on implementing Solaris webhooks, check the webhooks documentation.


Integration overview

The following diagram gives a high-level overview of the integration process for business fronting factoring:

Start
Start
Business registration
Collect business data and create business resource
Collect business data and create busines...
Upload BKYC documents
Upload BKYC documents
Create business' legal representative(s)
Create business' legal representative(s)
Create business' beneficial owner(s)
Create business' beneficial owner(s)
Business identification (BKYC)
Create and trigger business identification
Create and trigger business identification
BKYC
BKYC
successful
successful
failed
failed
Legal identification
Legal identification
Video identification
Video identification
Sign the factoring framework agreement with the customer and upload it to the business 
Sign the factoring framework agreement wi...
Fronting factoring application
Create business fronting factoring application
Create business fronting factoring applic...
Upload required documents and link them to application
Upload required documents and link them t...
Link the business identification to the application
Link the business identification to the a...
BKYC successful & application approved
BKYC successful & application approved
failed
failed
Scoring
Scoring
approved
approved
rejected
rejected
Factored amount payouts & collection
Create a loan linked to the fronting factoring application
Create a loan linked to the fronting fact...
Create a partial payout to purchase receivables from seller 
1st payout: tag= INITIAL_PAYOUT
Create a partial payout to purchase recei...
Create a partial payout to transfer retention fee to the seller 
2nd payout: tag= RETENTION_FEE
Create a partial payout to transfer reten...
Create a partial payout to transfer factoring interest to your account 
3rd payout: tag= FACTORING_INTEREST
Create a partial payout to transfer facto...
Collect the receivables amount from the debtor 
Collect the receivables amount from the d...
End
End
Text is not SVG - cannot display

You can integrate Solaris' business fronting factoring product by completing the 9 steps explained in the following sections. Here's an overview of these 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), and create a person resource and assign the beneficial owner role to this person by completing Step 3.
  4. Upload the BKYC required documents by completing Step 4.

Business identification process (BKYC)

  1. Trigger the business identification flow by completing Step 5.
  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.

Fronting factoring application

  1. Create a business fronting factoring application by completing Step 6.
  2. Upload the required documents and link them to the application by completing Step 7.
  3. Link the identification to the fronting factoring application by completing Step 8.

Loan payout and money flow

  1. If the identification and scoring processes succeed, sign a framework agreement with the customer to outline the business relationship.
  2. Create a loan and trigger partial payout by completing Step 9.
  3. Solaris transfers the factored amount (minus the hold-up fee) from the settlement account to the seller's account.
  4. The factored amount is settled from your collateral account and repaid to Solaris' settlement account.
  5. The debtor pays the receivables amount directly to your debt collection account.
  6. Trigger another partial loan payout by calling [POST Create partial loan payout] with the tag RETENTION_FEE and Solaris will transfer the retention fee to the seller's account.
  7. Trigger the final partial loan payout with the tag FACTORING_INTEREST and Solaris will transfer the interest amount to your fee collection account.
note

After successful onboarding, the customer will be in a continuous business relationship with Solaris and can apply for subsequent factoring of receivables.

Sequence diagram

The following sequence diagram gives an overview of the integration flow:

Diagram: Business fronting factoring flow

You can find detailed descriptions of these steps and their related endpoints in the following sections.


Step 1: Collect business data and create business resource

In this step, you must collect the mandatory data points from the customer 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.

What is a business resource?

The business resource represents the business's details at Solaris. It contains all mandatory customer data, as well as links to other resources created for the business (e.g., legal representative(s), beneficial owner(s), accounts, tax identifications, etc.).

API reference

Visit the following link to find all the endpoints related to the business resource, including related properties and examples.

Related webhook events

Important points about the business resource
  • The mandatory data points for this endpoint depend on various factors, such as the product, business information, and country.
  • You must submit the information exactly as it appears in official documents.
  • There are certain mappings between the possible values for these fields tax_country, sector, and legal_form. Check the appendix for more information.

POST Create a business

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: The business registered name.
  • address: The business registered address.

  • sector: (Check the API reference for the list of all possible values).
  • legal_form: (Check the API reference for the list of all possible values).
  • nace_code: NACE Codes in German
  • foundation_date
  • crs_company_type or registration_type (Check the API reference for the list of all possible values).
  • business_purpose
  • terms_conditions_signed_at (UTC timestamp)
  • data_terms_signed_at (UTC timestamp)
  • tax_information

    • tax_country: ISO 3166-1 alpha-2 codes)
    • tax_confirmation: The business' tax confirmation interval. Possible values are ANNUALLY and SINGLE.
    • registration_issuer: The authority that issued the business' registration. For Germany, it must be preceded by AMTSGERICHT (e.g., AMTSGERICHT Berlin).
    • registration_number: The business' registration number.
  • registration_district: Only for businesses registered in Germany. (Check the API reference for the list of all possible values).
  • balance_sheet_total: The business' total assets, in Euro cents.
  • number_employees: The number of employees at the business.

Request example:

Copy
Copied
// POST /v1/businesses
{
  "name": "FLOOR 13 GmbH",
  "sector": "OTHER_COMPANIES",
  "nace_code": "M 70.10",
  "legal_form": "GMBH",
  "foundation_date": "2012-05-09",
  "address": {
    "line_1": "Seestraße 9",
    "line_2": "",
    "postal_code": "86919",
    "city": "Utting a.Ammersee",
    "country": "DE",
    "state": "BE"
  },
  "tax_information": {
    "tax_country": "DE",
    "tax_confirmation": "ANNUALLY",
    "registration_number": "HRB 198673",
    "registration_issuer": "AMTSGERICHT München"
  },
  "business_purpose": "change the world for the better",
  "crs_company_type": "FE_REPORTING",
  "registration_district": "MUENCHEN",
  "terms_conditions_signed_at": "2021-01-01T00:00:00Z",
  "data_terms_signed_at": "2021-01-03T00:00:00Z",
  "balance_sheet_total": "200000",
  "number_employees": "500"
}

Example response

The API call returns a business object with a unique business_id, which will be used to reference the created business in the remaining steps of the integration process.

Copy
Copied
{
    "id": "766ead2439640a1cc6fc6b0376736140cbiz",
    "name": "FLOOR 13 GmbH",
    "sector": "OTHER_COMPANIES",
    "industry": "HOLDING_COMPANIES",
    "industry_key": "ACTIVITIES_OF_HEAD_OFFICES",
    "address": {
        "line_1": "Seestraße 9",
        "line_2": null,
        "postal_code": "86919",
        "city": "Utting a.Ammersee",
        "country": "DE",
        "state": "BE"
    },
    "legal_form": "GMBH",
    "foundation_date": "2012-05-09",
    "tax_information": {
        "tax_country": "DE",
        "tax_confirmation": "SINGLE",
        "registration_number": "HRB 198673",
        "registration_issuer": "Amtsgericht München"
    },
    "fatca_relevant": null,
    "fatca_crs_confirmed_at": null,
    "crs_company_type": "FE_REPORTING",
    "business_purpose": "change the world for the better",
    "terms_conditions_signed_at": "2021-01-01T00:00:00.000Z",
    "flagged_by_compliance": false,
    "balance_sheet_total": 200000,
    "number_employees": 500,
    "registration_type": null,
    "registration_district": "MUENCHEN",
    "website_social_media": null,
    "nace_code": "M 70.10",
    "vat_number": null,
    "screening_progress": "NOT_SCREENED",
    "risk_classification_status": "NORMAL_RISK",
    "customer_vetting_status": "NO_MATCH",
    "branch": null,
    "international_operativity_expectation": [],
    "purpose_of_account_opening": null,
    "source_of_funds": null,
    "expected_annual_revenue": null,
    "expected_annual_incoming_funds": null,
    "company_status": null
}

Click here to view the full API reference.


Automatic data collection (Optional)

You can facilitate the onboarding process for your customers by opting for the automatic data collection feature. Our external service provider Business Registry simplifies the data collection step by allowing your customers to enter the country and the company's name and the rest of the business data fields are filled out automatically.

info

Automatic data collection is an optional step that provides a good user experience. Contact your Partner Manager for more information about the usage of this feature and its associated prices.

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 may be used free of charge.

Request URL:

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

Example response

Copy
Copied
{
  "name": "FLOOR 13 GmbH",
  "registration_number": "HRB 198673",
  "registration_issuer": "AMTSGERICHT MÜNCHEN"
}

Click here to view the full API reference.

GET Automatic business data collection

After getting the business registration_issuer and registration_number from the response of the previous endpoint, you can automatically fetch the remaining business details by calling the following endpoint:

attention
  • This endpoint has an associated cost per request. Contact your Partner Manager for more information.
  • Please note that for companies in Germany, you must add AMTSGERICHT before the value of the registration_issuer, e.g., AMTSGERICHT MÜNCHEN.

Request URL:

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

Example response

Copy
Copied
{
  "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": [
      "66190 - Sonstige mit Finanzdienstleistungen verbundene Tätigkeiten",
      "70109 - Sonstige Verwaltung und Führung von Unternehmen und Betrieben",
      "70220 - Unternehmensberatung",
      "73110 - 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.

note

The field registration_issuer is only required for companies in Germany.

GET Search for business commercial registration (France)

Request

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

Response

Copy
Copied
{
  "name": "PARISOL",
  "registration_number": "513 937359",
  "registration_issuer": null
}

GET Automatic business data collection (France)

Request

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

Response

Copy
Copied
{
  "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"
    }
  ]
}
info

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.


Step 2: Create Legal representative(s)

In this step, you must do the following:

  • Collect the mandatory data points from the business' legal representative(s) and create a person object for each legal representative.
  • Create a legal_representative resource and assign it to its corresponding person object.

What is a legal representative?

The legal representatives are natural persons (individuals) or entities (businesses) legally 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 (Gesellschafter) 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, make sure to create and link all of them to the business object on our system to avoid any delays during the business identification process.

API reference

Visit the following links to find all the endpoints related to the legal representative resource, including related properties and examples.

Related webhook events


2.1 Create person resource(s) for each legal representative

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

What is a person resource?

The person resource represents the customer's personal and financial data at Solaris. It contains all mandatory customer data, as well as links to other resources created for the customer (e.g., accounts, tax identifications).

API reference

Visit the following link to find all the endpoints related to the person resource, including related properties and examples.

Related webhook events

Important points about the person resource
  • The mandatory data points for this endpoint depend on various factors, such as the product, customer type (e.g., retail customers, freelancers, legal representatives, or beneficial owners), and country.
  • You must submit the information exactly as it appears in official documents.
  • Solaris validates the values entered for the fields first_name and last_name. Please ensure your solution applies the following sanitization rules to these fields:

    • It must not be longer than 50 characters.
    • It must not start with a whitespace.
    • It must not include any symbols or emojis.
  • When testing this process on Sandbox, please ensure that you create as many unique person resources as possible (i.e., unique values for first_name, last_name, birth_city, and birth_date). If you create more than 1000 identical person resources, then the API will return a 400 error.

Note about branching

Solaris may restrict the residency countries that are allowed for customers onboarding to a specific branch. If you attempt to create a customer with a residency country that is not allowed for the given branch, the API will return a 400 error and provide a list of allowed residency countries.

Example:

Copy
Copied
{
    "errors": [
        {
            "id": "24b0e02a-341d-40bc-9e52-0d9f8cc8c6eb",
            "status": 400,
            "code": "invalid_model",
            "title": "Invalid Model",
            "detail": "country Residency Country is not allowed for this branch,allowed residency country values for branch \"null\" are [\"DE\", \"FR\"]",
            "source": {
                "field": "country",
                "message": "Residency Country is not allowed for this branch,allowed residency country values for branch \"null\" are [\"DE\", \"FR\"]"
            }
        }
    ]
} 

Please contact your Partner Manager for information about which residency countries are allowed for your branch(es).

Address validation

Your solution must implement address validation to ensure that your system rejects non-existent or wrong address entries before the customer goes through the identification flow. In addition, please note the following best practices:

  • Select a reliable provider to ensure the accuracy and actuality of data.
  • Address validation must happen in real-time when the customer enters their address during the onboarding flow.
  • The system can make auto-complete suggestions to the customer when entering the address. Additionally, it must reject non-existent or wrong entries.
  • If the address validation fails, the customer can enter a nearby address and proceed with the identification flow. However, the customer must submit a proof of address afterward to customer support, such as a rental contract, electricity bill, or certificate of residence in Germany (i.e., Meldebescheinigung).

POST Create person (Legal representative)

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: Note: MR for male, MS for female, null for gender-neutral.
  • first_name
  • last_name
  • mobile_number: The mobile number will need to be verified.
  • iban: Required only if the legal representative will be identified using Bankident.
  • address

    • line_1
    • line_2
    • postal_code
    • city
    • state
    • country
  • birth_date
  • birth_city
  • birth_country (ISO 3166-1 alpha-2 codes)
  • nationality (ISO 3166-1 alpha-2 codes)
Important

You have to create a separate person object for each legal representative associated with the business.

Request URL:

Copy
Copied
// POST /v1/persons
{
  "salutation": "MR",
  "first_name": "Walter",
  "last_name": "Koch",
  "address": {
    "line_1": "3285 Sodales St.",
    "line_2": "",
    "postal_code": "10249",
    "city": "Berlin",
    "country": "DE",
    "state": "BE"
  },
  "email": "person@example.com",
  "mobile_number": "+15550101",
  "birth_date": "1980-11-30",
  "birth_city": "Aachen",
  "birth_country": "DE",
  "nationality": "DE"
}

Response example

The API returns a person object with a unique id, the person_id. You will need this id to assign the legal representative role to this person.

Copy
Copied
{
    "id": "6ec0d9c78272bbf4e73021584bc2cda7cper",
    "salutation": "MR",
    "title": null,
    "first_name": "Walter",
    "last_name": "Koch",
    "address": {
        "line_1": "3285 Sodales St.",
        "line_2": null,
        "postal_code": "10249",
        "city": "Berlin",
        "country": "DE",
        "state": "BE"
    },
    "contact_address": {
        "line_1": null,
        "line_2": null,
        "postal_code": null,
        "city": null,
        "country": null,
        "state": null
    },
    "email": "person@example.com",
    "mobile_number": "+15550101",
    "birth_name": null,
    "birth_date": "1980-11-30",
    "birth_city": "Aachen",
    "birth_country": "DE",
    "nationality": "DE",
    "employment_status": null,
    "job_title": null,
    "tax_information": {
        "tax_assessment": null,
        "marital_status": "UNKNOWN"
    },
    "fatca_relevant": null,
    "fatca_crs_confirmed_at": null,
    "business_purpose": null,
    "industry": null,
    "industry_key": null,
    "terms_conditions_signed_at": null,
    "own_economic_interest_signed_at": null,
    "aml_follow_up_date": "2029-03-14",
    "aml_confirmed_on": "2022-09-14",
    "flagged_by_compliance": false,
    "expected_monthly_revenue_cents": null,
    "vat_number": null,
    "website_social_media": null,
    "business_trading_name": null,
    "nace_code": null,
    "business_address_line_1": null,
    "business_address_line_2": null,
    "business_postal_code": null,
    "business_city": null,
    "business_country": null,
    "business_state": null,
    "screening_progress": "NOT_SCREENED",
    "risk_classification_status": "NOT_SCORED",
    "customer_vetting_status": "NOT_VETTED",
    "annual_income_range": null,
    "data_terms_signed_at": null,
    "branch": null,
    "birth_province": null,
    "birth_post_code": null,
    "socioprofessional_category": null,
    "purpose_of_account_opening": null,
    "main_income_source": null,
    "work_country": null,
    "work_province": null,
    "self_declared_as_pep": null,
    "international_operativity_expectation": [],
    "registration_number": null,
    "legitimation_valid_until": null
}

Click here to view the full API reference


2.2 Create legal representative resource(s)

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

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 example:

Copy
Copied
// POST /v1/businesses/{business_id}/legal_representatives
{
  "legal_representative_id": "6ec0d9c78272bbf4e73021584bc2cda7cper",
  "type_of_representation": "ALONE"
}

Response example

The API call returns an object with a unique ID, which is the resource ID, and the details of the legal representative resource. This API call triggers this webhook event LEGAL_REPRESENTATIVE.

Copy
Copied
{
    "id": "39f20dea6800e334d7e8e7210933f44eclrp",
    "legal_representative_id": "6ec0d9c78272bbf4e73021584bc2cda7cper",
    "legal_representative_type": "Person",
    "valid_until": null,
    "power_of_attorney_confirmed_at": null,
    "type_of_representation": "ALONE",
    "business_id": "766ead2439640a1cc6fc6b0376736140cbiz"
}

Click here to view the full API reference.

info

Check the FAQ for more information about legal representatives.


Step 3: Create Ultimate Beneficial Owner(s)

In this step, you must do the following:

  • Collect the mandatory data points from the business' Ultimate 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.
  • Include the definition of the Ultimate Beneficial Owner in your UI.
Important
  • If a business has more than one beneficial owner, make sure to create and link all of them to the business object on our system to avoid any delays during the business identification process.
  • A beneficial owner MUST be a natural person and CANNOT be another company.

What is an Ultimate Beneficial Owner?

The Ultimate Beneficial Owners (UBO) 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), an Ultimate 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 notes
  • The Ultimate 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.
  • Ultimate Beneficial Owners don't require video identification.
  • For more information about Ultimate Beneficial Owners, check the FAQ in the appendices section

API reference

Visit the following links to find all the endpoints related to the person resource and legal representative resource, including related properties and examples.

Related webhook events

Beneficial owner legal definition

Please ensure that the Ultimate 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)

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:

Important

You have to create a separate person object for each beneficial owner associated with the business.

Request URL:

Copy
Copied
// POST /v1/persons
{
  "first_name": "Theresa",
  "last_name": "Klemm",
  "birth_date": "1960-12-15",
  "nationality": "DE"
}

Response example

The API returns a person object with a unique id, the person_id. You will need this id to assign the beneficial owner role to this person.

Copy
Copied
{
    "id": "b799e4423ae7fb7016103a0139297087cper",
    "salutation": null,
    "title": null,
    "first_name": "Theresa",
    "last_name": "Klemm",
    "address": {
        "line_1": null,
        "line_2": null,
        "postal_code": null,
        "city": null,
        "country": null,
        "state": null
    },
    "contact_address": {
        "line_1": null,
        "line_2": null,
        "postal_code": null,
        "city": null,
        "country": null,
        "state": null
    },
    "email": null,
    "mobile_number": null,
    "birth_name": null,
    "birth_date": "1960-12-15",
    "birth_city": null,
    "birth_country": null,
    "nationality": "DE",
    "employment_status": null,
    "job_title": null,
    "tax_information": {
        "tax_assessment": null,
        "marital_status": "UNKNOWN"
    },
    "fatca_relevant": null,
    "fatca_crs_confirmed_at": null,
    "business_purpose": null,
    "industry": null,
    "industry_key": null,
    "terms_conditions_signed_at": null,
    "own_economic_interest_signed_at": null,
    "aml_follow_up_date": "2029-03-14",
    "aml_confirmed_on": "2022-09-14",
    "flagged_by_compliance": false,
    "expected_monthly_revenue_cents": null,
    "vat_number": null,
    "website_social_media": null,
    "business_trading_name": null,
    "nace_code": null,
    "business_address_line_1": null,
    "business_address_line_2": null,
    "business_postal_code": null,
    "business_city": null,
    "business_country": null,
    "business_state": null,
    "screening_progress": "NOT_SCREENED",
    "risk_classification_status": "NOT_SCORED",
    "customer_vetting_status": "NOT_VETTED",
    "annual_income_range": null,
    "data_terms_signed_at": null,
    "branch": null,
    "birth_province": null,
    "birth_post_code": null,
    "socioprofessional_category": null,
    "purpose_of_account_opening": null,
    "main_income_source": null,
    "work_country": null,
    "work_province": null,
    "self_declared_as_pep": null,
    "international_operativity_expectation": [],
    "registration_number": null,
    "legitimation_valid_until": null
}

Click here to view the 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

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.

Request example:

Copy
Copied
// POST /v1/businesses/{business_id}/beneficial_owners
{
  "person_id": "b799e4423ae7fb7016103a0139297087cper",
  "voting_share": "70.50"
}

Response example

The API call returns an object with a unique ID, which is the resource ID, and the details of the beneficial owner resource. This API call triggers this webhook event BENEFICIAL_OWNER.

Copy
Copied
{
    "id": "872c62a2c1bd40444a09edccbd107ceecbeow",
    "beneficial_owner_id": "b799e4423ae7fb7016103a0139297087cper",
    "person_id": "b799e4423ae7fb7016103a0139297087cper",
    "valid_until": null,
    "voting_share": "70.5",
    "fictitious": false,
    "relationship_to_business": null,
    "business_id": "17fd831ef467df9a5a0babaa0d652d50cbiz"
}

Click here to view the full API reference.

info

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

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

Visit the following links to find all the endpoints related to the business documents resource, including related properties and examples.

POST Upload a document

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

You have to add the following properties to the request body:

  • document_type: The document type. For a list of possible values, check the API reference.
  • file: The file to be uploaded.
note

The request body of this endpoint is a multipart/form-data content type and parameters are transmitted as form-data and not as a raw JSON string.

Request URL

Copy
Copied
POST /v1/businesses/{business_id}/documents

Example response

The API returns an object with a unique ID, the document_id.

Copy
Copied
{
    "id": "f490f849690995853ee2d3627cffa708cdoc",
    "name": "company_foundation_document.pdf",
    "content_type": "application/pdf",
    "document_type": "FOUNDATION_DOCUMENT",
    "size": 49149,
    "customer_accessible": false,
    "created_at": "2022-09-14T15:24:23.000Z"
}

Click here to view the full API reference..


Step 5: 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?

BKYC is Solaris's digital identification solution that facilitates the Know Your Customer (KYC) process for businesses. It's completely digital and AML compliant, harnessing state-of-the-art RESTful APIs to bring together a series of identification and compliance checks for business customers.

How does BKYC work?

The business identification consists of two simultaneous processes:

  • Legal Identification: Solaris identifies the legal entity and verifies the provided business details and documents in the corresponding Commerce Register (Handelsregister in Germany) to ensure that the disclosed data is complete and accurate. Additionally, this process verifies that all business legal representatives and ultimate beneficial owners are disclosed and linked to the business. This is an internal process carried out by Solaris' Banking Operations team.
  • Video Identification(s): All legal representatives and any authorized person on the business must be identified in a video identification session by our identification partner, IDnow, to validate their details against their identification documents.
Important notes
  • Both identification processes must be successful for the business identification process to be considered successful.
  • Only legal representatives and any natural person authorized to act on the account, such as an authorized person or signee, need to be video-identified. Ultimate Beneficial Owners don't need to go through video identification.

API reference

Visit the following link to find all the endpoints related to the business identification resource, including related properties and examples.

Related webhook events

POST Initiate business identification

In this step, you initiate the business identification process, referred to as solarisident, which automatically triggers both the legal identification of the business and the video identification of all applicable natural person(s).

You can trigger the business identification process by calling the following endpoint and specifying the identification method in the request body. The default method is idnow.

Request example

Copy
Copied
POST /v1/businesses/{business_id}/identifications
{
  "method": "idnow"
}

Response example

The API response returns an identification object with a unique id, which is the ID of the business identification resource, as well as the status of the identification process (as a whole).

Additionally, the payload includes individual identification objects for the video identification sessions for legal representative(s), including the id of the person identification resource, IDnow status and IDnow reference and url to which you must redirect the legal representative to complete the identification process.

The payload also includes information about the legal identification process, including its dedicated status. You also need to track the progress of this process, particularly the missing information field. Solaris will highlight through this field if there are compliance questions that require answers from the business.

Copy
Copied
{
  "id": "4c74c804eaea5d2a2d64ef400a27a4d3bid",
  "method": "idnow",
  "reference": null,
  "status": "created",
  "completed_at": null,
  "legal_representatives": [
    {
      "person_id": "992de312a545bb24a88ddbf57ae8b1ffcper",
      "identifications": [
        {
          "id": "79c98baa85904c668981855f07f03216cidt",
          "reference": "TST-SMFKT",
          "url": "https://go.test.idnow.de/solarisbankvideoidentstaging/identifications/79c98baa85904c668981855f07f03216cidt",
          "status": "pending",
          "completed_at": null,
          "method": "idnow"
        }
      ]
    },
    {
      "person_id": "7606b518e71be9c2adf72a811f9fae6fcper",
      "identifications": [
        {
          "id": "1bb49f9dec3a57ae69ad3c3183316c9dcidt",
          "reference": "TST-VWKRA",
          "url": "https://go.test.idnow.de/solarisbankvideoidentstaging/identifications/1bb49f9dec3a57ae69ad3c3183316c9dcidt",
          "status": "pending",
          "completed_at": null,
          "method": "idnow"
        }
      ]
    }
  ],
  "legal_identification_status": "created",
  "legal_identification_reason": null,
  "legal_identification_missing_information": [],
  "business_id": "880bbac68a34add190786b9c74f4c82fcbiz"
}

Click here to view the full API reference.


Compliance questions

Our legal and compliance team might have additional questions or require further information from your customers during the legal identification process.

For this purpose, you have to implement the following additional endpoints in your solution:

  • Get the compliance questions posted by Solaris.
  • Redirect the questions to your customers and collect their answers.
  • Forwards the answers to Solaris.
  • Mark the identification as ready for review to resume the legal identification process.

In cases where Solaris requires more clarity on certain topics during the business identification, you will receive a notification on the BUSINESS_IDENTIFICATION webhook. Afterward, you need to call the GET Retrieve a business identification to get the details.

If Solaris has compliance questions for the business, the payload will have the following fields with these values:

  • legal_identification_status = information_required
  • legal_identification_missing_information = COMPLIANCE_QUESTIONS

These questions are created by Solaris, and you are required to redirect them to your business customer and provide the ability for them to answer those questions.

GET Retrieve compliance questions

To get the compliance questions, call the following endpoint:

Request URL

Copy
Copied
GET /v1/businesses/{business_id}/identifications/{business_identification_id}/legal_identification/questions

Response example

The API call returns an object, including the question(s) with a unique ID and the question text. You have to redirect these questions to your customers and get their answers in your workflow.

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

You should provide your customers with a dedicated page to answer all the questions separately.

Create answers for compliance questions

After getting the answers to the compliance questions from your customer, call the following endpoint to share the answers with Solaris.

note

You have to make a separate API call for each answer.

Request URL

You have to provide the question's answer in the request body of this endpoint.

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

Click here to view the full API reference.

PATCH Update business legal identification

After adding all answers to the compliance questions, use this method to update the legal identification and mark it as ready to resume the identification process. Calling this endpoint changes the legal_identification_status from information_required to pending.

Request URL

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

Click here to view the full API reference.


Step 6: Create business fronting factoring application

In this step, you must collect the mandatory information from the customer in your sign-up flow and pass this information to Solaris by creating a fronting factoring application.

The fronting factoring application includes all the required information about your customer (seller of receivables) and the debtor (the seller's customer who must now pay the amount of the receivable to you).

POST Create business fronting factoring application

This endpoint creates a fronting factoring application and assigns it to the business with the business_id specified in the request URL.

Required properties:

Add the mandatory following properties to the request body:

  • partner_contact_name: A contact person that Solaris can contact in case of questions related to the application.
  • partner_contact_number: The phone number of your contact person.
  • partner_reference_number: Your generated reference number for the customer.
  • partner_score: Your calculated score for the customer, e.g., PD threshold.
  • requested_amount: The total invoice amount (in EUR) requested to be factored.
  • recipient_name: The name of the recipient, e.g., the seller of the invoice.
  • recipient_iban: The IBAN of the recipient, to whom the factored amount will be paid out.
  • purpose: The reason for the factoring application, e.g., Factoring of receivables.
  • purpose_description: Add the invoice number and reference in this field.
  • transaction_description: The transaction reference, which the recipient can see. Only use SEPA allowed characters in this field.
  • transaction_end_to_end_id: SEPA identifier (provided by the end customer who initiated the SEPA transaction), routed through the whole payment process. (string, max 35 characters without whitespace)
  • minimum_credit_risk_criteria: An object that will contain different fields about the seller of the invoice, the debtor, and the invoice's details. Note: Solaris will inform you of the required fields that you must collect from the customer for this object.

Request example

Copy
Copied
// POST /v1/businesses/{business_id}/fronting_loan_applications
{
  "minimum_credit_risk_criteria": {
    "criteria_1": false,
    "criteria_2": 0.02
  },
  "partner_contact_name": "Daniel Schmidt",
  "partner_contact_number": "+49345195891",
  "partner_reference_number": "tf2df3ceac0e384352b78cb6987d1d987",
  "partner_score": "AA",
  "purpose": "Factoring of receivables",
  "purpose_description": "DDHHDHG333243",
  "recipient_iban": "DE92370601930002130041",
  "recipient_name": "Daniel Schmidt",
  "requested_amount": {
    "currency": "EUR",
    "unit": "cents",
    "value": 20000
  },
  "transaction_description": "Example transaction.",
  "transaction_end_to_end_id": "DDHHDHG333243"
}

Response example

The API call returns an object with a unique id for the business fronting factoring application, including the application status (initially set to pending) and the remaining attributes, which will be populated during the application lifecycle.

Copy
Copied
{
  "agio": null,
  "creditreform_pd": null,
  "creditreform_score": null,
  "duration": null,
  "effective_interest_rate": null,
  "id": "89d4eaaa73ec4a73a0b9d40fb5d9da9cbfla",
  "identification_id": null,
  "minimum_credit_risk_criteria": {
    "criteria_1": false,
    "criteria_2": 0.02    
  },
  "nominal_interest_rate": null,
  "partner_contact_name": "Daniel Schmidt",
  "partner_contact_number": "+49345195891",
  "partner_reference_number": "tf2df3ceac0e384352b78cb6987d1d987",
  "partner_score": "AA",
  "purpose": "Factoring of receivables",
  "purpose_description": "DDHHDHG333243",
  "recipient_iban": "DE92370601930002130041",
  "recipient_name": "Daniel Schmidt",
  "requested_amount": {
    "currency": "EUR",
    "unit": "cents",
    "value": 20000
  },
  "status": "pending",
  "transaction_description": "Example transaction.",
  "transaction_end_to_end_id": "DDHHDHG333243"
}

Click here to view the full API reference

GET Retrieve business fronting factoring application

This endpoint returns the current status and details of an existing business factoring loan application. For a list of possible values of the application status and their descriptions, check the appendix.

Additionally, subscribe to the webhook event BUSINESS_FRONTING_APPLICATION to receive status updates on the application.

Request URL

Copy
Copied
GET /v1/businesses/{business_id}/fronting_loan_applications/{application_id}

Click here to view the full API reference

Application status flow

The following diagram shows the different statuses and transitions for a business fronting application:

Diagram: Business fronting application status


Step 7: Upload documents and link them to the loan application

In this step, you must create document resources for all the required documents, such as loan agreement, credit risk report, invoices etc., and link them to the business fronting loan application.

NOTE
  • Depending on each use case and whether it's a fronting loan or fronting factoring, Solaris' team will inform you of the additional documents you must submit.
  • You have to make a separate API request for each document.

Use the same endpoints described in Step 4 to upload the loan-related documents.

PUT Link documents to fronting application

After creating the document resources, you must link each document to the fronting loan or factoring application.

This endpoint links a document resource to the business fronting loan or factoring application. You must add the following properties in the request body:

  • document_type: The document type. For a list of possible values, check the appendix.
  • document_id: The unique ID of the document resource.

Request URL

Copy
Copied
// PUT /v1/businesses/{business_id}/fronting_loan_applications/{application_id}/documents
{
  "document_id": "69ec2a9d8dbaf5ea1b13124098a34ea3cdoc",
  "document_type": "INVOICE"
}

Click here to view the full API reference


Step 8: Link the business identification to the loan application

In this step, you must link the business identification resource to the business fronting loan application by calling the following endpoint:

PUT Link identification to loan application

This endpoint links a business identification resource to the business fronting loan application. You must add the following properties in the request body:

  • identification_id: The unique ID of the identification resource, created after triggering the business identification process.
note
  • After linking the identification resource to the loan application, the application status transitions to identification_pending.
  • After a successful BKYC process, the status changes to approved, which means that loan application is accepted, and you can trigger the loan payout process.

Request URL

Copy
Copied
// PUT /v1/businesses/{business_id}/fronting_loan_applications/{application_id}/identification
{
  "identification_id": "1063504cf74919f60ae4c806bdc9ce75bid"
}

Click here to view the full API reference


Step 9: Create loan and trigger loan payouts

After a successful business identification and the approval of the fronting factoring application, you must do the following:

  • Create a loan
  • Trigger partial loan payouts

PUT Create a loan

Call this endpoint to create a loan for the respective business application without triggering the loan payout itself. You must add the settlement_account_iban in the request body, a Solaris account from which the loan payout is transferred to the business's account.

Request example

Copy
Copied
// PUT /v1/businesses/{business_id}/fronting_loan_applications/{application_id}/loan
{
  "settlement_account_iban": "DE07110101014503906016"
}

Response example

The API call returns the loan details, including an id and the status of the loan, set to payout_pending.

Copy
Copied
{
  "agio": 0,
  "amount": {
    "currency": "EUR",
    "unit": "cents",
    "value": 10000
  },
  "application_id": "89d4eaaa73ec4a73a0b9d40fb5d9da9cbfla",
  "collateral_account_iban": "DE85110101014480677574",
  "collection_account_iban": "DE87110101001000057123",
  "duration": null,
  "effective_interest_rate": null,
  "id": "13651d2f3a274e768ec6d45b036e0f14bflo",
  "nominal_interest_rate": null,
  "recipient_iban": "DE92370601930002130041",
  "recipient_name": "Daniel Schmidt",
  "settlement_account_iban": "DE07110101014503906016",
  "status": "payout_pending",
  "status_reason": null
}

Click here to view the full API reference

GET Retrieve business fronting loan

This endpoint returns all the details of a business' fronting loan. Additionally, subscribe to the webhook event BUSINESS_FRONTING_LOAN_PAYOUT to receive status updates about the loan.

note
  • For a list of possible values of the status of the loan payout and their descriptions, check the appendix.
  • In case of partial loan payouts, the status of the loan will remain payout_pending until all partial loan payouts are completed and the full loan amount is paid out. Afterward, it will change to payout_issued triggering this webhook event BUSINESS_FRONTING_LOAN_PAYOUT.

Request URL

Copy
Copied
GET /v1/businesses/{business_id}/fronting_loans/{loan_id}

Click here to view the full API reference

POST Trigger partial loan payouts

Call this endpoint to trigger multiple loan payouts related to a fronting factoring application. You must add the following properties in the request body:

  • amount
  • recipient_iban
  • recipient_name
  • transaction_description
  • transaction_end_to_end_id
  • tag: Please note the following options for transaction tags:

    • INITIAL_PAYOUT: The initial payout of the factoring transaction (minus the retention fee and factoring interest), which Solaris will transfer to the customer's account.
    • RETENTION_FEE: The retention fee, which Solaris will transfer to the seller's account.
    • FACTORING_INTEREST: The factoring interest, which Solaris will transfer to your account.
note

You must call this endpoint again to:

  • Trigger a payout with the tag RETENTION_FEE, which Solaris will transfer to the seller's account.
  • Trigger a payout with the tag FACTORING_INTEREST, which Solaris will transfer to your account.

Request example

Copy
Copied
// POST /v1/businesses/{business_id}/fronting_loans/{loan_id}/payouts
{
  "amount": {
    "currency": "EUR",
    "unit": "cents",
    "value": 8500
  },
  "recipient_iban": "DE15100100100003404109",
  "recipient_name": "Daniel Schmidt",
  "tag": "INITIAL_PAYOUT",
  "transaction_description": "Example transaction.",
  "transaction_end_to_end_id": "DDHHDHG333243"
}

Response example

The API call returns the transaction details, including the payout id and status, set initially to transfers_pending.

Copy
Copied
{
  "amount": {
    "currency": "EUR",
    "unit": "cents",
    "value": 8500
  },
  "id": "963347398e47416c9df216a63ef035c2bflp",
  "loan_id": "29e1a05906954ce082ec779d81de8c1ebflo",
  "recipient_iban": "DE15100100100003404109",
  "recipient_name": "Daniel Schmidt",
  "status": "transfers_pending",
  "tag": "INITIAL_PAYOUT",
  "transaction_description": "Example transaction.",
  "transaction_end_to_end_id": "DDHHDHG333243"
}

Click here to view the full API reference

GET Retrieve loan payout

Call this endpoint to retrieve the details and status of a specific partial loan payout.

Additionally, subscribe to the webhook event BUSINESS_FRONTING_PAYOUT_UPDATE to receive notifications when the status of a payout changes to transfers_complete.

Request URL

Copy
Copied
GET /v1/businesses/{business_id}/fronting_loans/{loan_id}/payouts/{payout_id}

Click here to view the full API reference


Business relationship

In the context of Solaris' fronting factoring product, the business relationship with the customer is governed by a factoring framework agreement. Once this agreement, which constitutes a continuous business relationship, has been established, the customer may apply for subsequent factor financings.

Given that the customer will be in a continuous relationship with Solaris, the business must implement the mandatory compliance requirements, such as the Terms and Conditions Consent Log.

Implement the following endpoints to manage the business relationship with the customer.

GET Retrieve the business relationship

Call this endpoint to retrieve the details and status of the existing business relationship with the customer.

Additionally, subscribe to the webhook event BUSINESS_FRONTING_RELATIONSHIP_STATUS_CHANGED to receive status updates.

note

Check the appendix for the list of values for the field status and the descriptions.

Request URL

Copy
Copied
GET /v1/businesses/{business_id}/fronting_loans_business_relationship

Response example

Copy
Copied
{
  "business_id": "880bbac68a34add190786b9c74f4c82fcbiz",
  "created_at": "2020-20-03T18:01:48.000Z",
  "offboarded_at": null,
  "status": "active",
  "status_reason": null,
  "updated_at": null
}

Click here to view the full API reference

POST Terminate the business relationship with a customer

Call the following endpoint to terminate the business relationship with the customer.

Please note that the termination could happen in the following cases:

  • By the customer's request.
  • When you off-board a customer (in this case, the status_reason would be offboarded_by_partner, which is a terminal state).
  • If the customer rejects an update to the Terms and Conditions (in this case, the status_reason would be t_and_c_update_rejected). If the customer accepts the Terms and Conditions, the Customer Support team will change the status back to active.

Request URL

Copy
Copied
POST /v1/businesses/{business_id}/fronting_loans_business_relationship/close

Click here to view the full API reference


What's next?

Congratulations! You've successfully integrated Solaris' business fronting factoring solution.

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.

Mandatory features

Please note that it's mandatory to implement the following additional features in your solution for regulatory requirements.

Useful resources

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


Appendix I: Enums

Business fronting loan application status

The following table includes the enums for the field status and their descriptions in the business fronting loan application resource. For example, it's available when you call the GET Retrieve business fronting loan application.

Status Description
scoring_pending The company's relevant risk reports must be uploaded and linked to the fronting loan application. After the risk reports are approved, the status transitions to pending. This status is only for countries other than Germany.
pending The application has been successfully created, and the business identification is yet to be completed.
identification_pending The business identification has been linked to the application, the flow has been triggered, and the customer must complete it.
approved The business credit scoring and/or identification process have been completed successfully, and the fronting loan application is approved.
rejected The business risk reports have been rejected and/or identification has failed, and the fronting loan application is rejected.
loan_created The loan payout process has been triggered.

Business fronting loan payout status

The following table includes the enums for the field status and their descriptions for the business fronting loan payout. For example, it's available when you call the GET Retrieve business fronting loan.

Status Description
payout_pending The business loan payout has been triggered.
payout_issued All transfers to the relevant accounts are completed, and the loan is paid out to the business.

Business relationship status

The following table includes the enums for the field status and their descriptions for the business fronting loan payout. For example, it's available when you call the GET Retrieve business relationship.

Status Description Impact
active
  • The business has been successfully identified, the fronting application has been approved.
  • The business is currently in a continuous business relationship with Solaris.
  • The business can apply for loans or factoring of receivables.
  • status_reason= null
blocked The business has not accepted an update to Solaris' Terms and Conditions.
  • Applications for loans or factoring of receivables will be rejected.
  • If the business accepts the Terms and Conditions, status will change back to active.
  • status_reason= t_and_c_update_pending_response
closed The business has rejected an update to Solaris' Terms and Conditions or you've offboarded the business and is no longer your customer.
  • Applications for loans or factoring of receivables will be rejected.
  • Business data will be deleted according to GDPR regulations. This is a terminal status.
  • status_reason= offboarded_by_partner or t_and_c_update_rejected

CRS company type

The field crs_company_type is required to collect the 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 - A corporation whose shares are regularly traded on at least one recognized stock exchange (or a company affiliated with it), a government entity, an international organization, a central bank, or a legal entity wholly owned by NFE
NFE_PASSIVE Passiver NFE Passive NFE - Non-active NFE
NFE_PASSIVE_INVESTMENT Inactive NFE/NFFE or an Investment Entity that is a Financial Institution in a jurisdiction not participating in the CRS and that 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 a company's annual financial statement.
KYC_REPORT The KYC report generate after a successful customer identification.
ID_DOCUMENT An person's identification document, such as passport or ID.
SIGNATURE A signature example.
PICTURE A picture or a 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_CHECK A register check.
REGISTER_EXTRACT A business or a company's commercial register excerpt or a similar document.
FOUNDATION_DOCUMENT The foundation document of a company or business.
SCHUFA_COMPACT_REPORT A compact SCHUFA report.
SCHUFA_GWG_REPORT A GWG 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 business or a company's shareholders agreement.
SHAREHOLDERS_LIST A business or a company's shareholders list.
TRADING_LICENSE A business or a company's trading license.
TRANSPARENCY_REGISTER_EXTRACT An extract of a 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

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 are generated. You must redirect the customer to the URL to complete the identification process with IDnow.
pending_successful The video identification was successful, but will be reviewed by the identification provider. You can already offer banking services to the customer at this stage. Once reviewed by the provider, the identification will be marked either as resolved positively (successful) or negatively (failed or canceled). A bank account will be automatically blocked if the identification is eventually marked as failed or canceled.
pending_failed The identification is currently under review. You cannot offer banking services to the customer at this stage. The identification might eventually turn to successful, but it is unlikely.
successful The video identification was successful. The customer can be onboarded. Please note that the customer's data might have been updated during the identification session.
aborted The customer aborted the identification process. The customer can still video-identify using the same URL.
canceled The provider canceled the video identification. The customer should video-identify again using the same URL.
failed The identification was unsuccessful. You *cannot onboard the customer or offer any banking services to them.

IDnow provides a reason for the canceled and aborted status. No reason can be disclosed for the final failed status.

Identification documents

  1. List of the accepted passports for videoIdent: here
  2. List of accepted passports for postIdent: here
  3. Search for a identification document: here

List of passports with address

The following table shows the list of documents, that has the address included in the identification document, and allows you to perform identification without the proof of address document.

Document Issuer Country Type (ID/PP)
MLT-BO-02001 Malta ID
MLT-BO-03001 Malta ID
SVK-BO-02001 Slovakia ID
SVK-BO-05001 Slovakia ID
SVK-BO-04001 Slovakia ID
ITA-BO-04003 Italy ID
ITA-BO-03004 Italy ID
ITA-BO-03002 Italy ID
ITA-BO-03001 Italy ID
ITA-BO-03003 Italy ID
DEU-BO-01003 Germany ID
DEU-BO-02001 Germany ID
SGP-BO-01001-A Singapore ID
SGP-BO-01001 Singapore ID
CZE-BO-04001 Czech Republic ID
CZE-BO-04002 Czech Republic ID
IND-AO-01001 India Passport
CHN-AO-04003 China Passport
BGR-AO-01005 Bulgaria Passport
SVN-AO-02001-02003 Slovenia Passport
SVN-AO-02004 Slovenia Passport
SVN-BO-02001 Slovenia ID
SVN-AO-01004 Slovenia Passport
POL-BO-02001-02003 Poland ID
ESP-BO-03001 Spain ID
ESP-BO-05001 Spain ID
HRV-BO-02001 Croatia ID
HRV-AO-02001 Croatia Passport
FRA-BO-02002 France ID
FRA-AO-03001-03003 France Passport
MAR-AO-02001 Morocco Passport

Tax country

The following tables includes the possible values for the field tax_country:

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

Sector

The following are the possible values for the field sector.

  • 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_WORKMAN
  • OTHER_COMPANIES
  • OTHER_PRIVATE_INDIVIDUAL

Legal form

The selected value for the field tax_country influences the accepted values for the field legal_form. The following are the possible values for the field legal_form per 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

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

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

Solaris accepts the following legal forms for companies in Germany and other countries that are not specified in our system:

  • AG
  • EG
  • EK
  • 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

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

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

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

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

United Kingdom

  • 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

Please note that there are certain dependencies between the fields tax_country, sector, and legal_form. For example, based on the value selected for the field tax_country, certain values will be accepted for the field sector, and based on the value selected for the field sector, certain values will be accepted for the field legal_form.

The following sections give an overview of the mapping between these fields.

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

Legal identification status

The following table includes the possible values for the field legal_identification_status for the legal identification process of the business legal entity carried out by Solaris and the related description of each status.

Status Description
created The legal identification was initiated and will be conducted shortly.
information_required The legal identification cannot be conducted because Solaris is missing one or more required documents. Refer to the legal_identification_missing_information array to determine which document(s) is/are missing.
blocked_internally The legal identification is put on hold due to additional internal checks
successful The legal identification was conducted successfully.
failed The legal identification was marked as failed. Refer to the legal_identification_reason to find out why.
expired The legal identification was not updated to terminal status in 90 days

NACE code

The Statistical Classification of Economic Activities in the European Community, commonly known as 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 of the code, which is the first four levels of the classification system, are the same in all European countries. National implementations may introduce additional levels. The fifth digit might vary from country to country and further digits are sometimes placed by suppliers of databases.

For example, if the NACE code A 01.11 (Growing of cereals (except rice), leguminous crops and oil seeds) would apply to the person/business, supply the value like such:

nace_code = "A 01.11"
info

Please note that using NACE codes replaces using the fields industry and industry_key.

Please see the following resources for a complete list of NACE codes:

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), including the legal identification of the business legal entity carried out by Solaris and the video identification of the business's natural persons.

Status Description
created The legal identification was initiated and will be conducted shortly.
pending A business identification (solarisIdent) is mark_as_successful by partner
successful Both steps of the business identification process (solarisIdent) were completed successfully.
failed The business identification process (solarisIdent) will not continue. The business couldn't be identified. A reason will not be provided. Verify the status of either the legal identification or the individual video identifications instead.
expired The business identification process (solarisIdent) was not completed within six months of being initiated. Either the legal identification or one of the individual video identifications was not finished on time.

Appendix II: BKYC required documents

The following table includes the required documents for identification for each legal form:

Legal form Required documents Description Notes
GbR
  • SHARE_HOLDERS_AGREEMENT
  • SHARE_HOLDERS_AGREEMENT
  • FOUNDATION_DOCUMENT
  • Shareholder Lists (of Beneficial Owner Companies, possibly also an overview of shareholder/owner structure, insofar as the structure extends over several levels)
  • Articles of association (Gesellschaftsvertrag)
  • Certificate of incorporation (Gründungsurkunde)
Documents must be signed by all business partners. Solaris may request additional information based on the document contents (e.g., all shareholders, distribution of shares, etc). For GmbH/UG & Co. KGs, these requirements apply for the entity that is registered in the trade register as shareholder (i.e., Komplementär-Gesellschafter).
GmbH_CO_KG
  • SHAREHOLDERS_LIST; if not available, then:
  • SHARE_HOLDERS_AGREEMENT; if not available, then:
  • FOUNDATION_DOCUMENT
  • Shareholder Lists (of Beneficial Owner Companies, possibly also an overview of shareholder/owner structure, insofar as the structure extends over several levels)
  • Articles of association (Gesellschaftsvertrag)
  • Certificate of incorporation (Gründungsurkunde)
Document must include a notarial stamp, seal, and signature.
UG_I_GR
  • SHAREHOLDERS_LIST
  • SHARE_HOLDERS_AGREEMENT
  • FOUNDATION_DOCUMENT
  • Shareholder Lists (of Beneficial Owner Companies, possibly also an overview of shareholder/owner structure, insofar as the structure extends over several levels)
  • Articles of association (Gesellschaftsvertrag)
  • Certificate of incorporation (Gründungsurkunde)
Document must include a notarial stamp, seal, and signature.
UG & Co. KG
  • SHAREHOLDERS_LIST; if not available, then:
  • SHARE_HOLDERS_AGREEMENT; if not available, then:
  • FOUNDATION_DOCUMENT
  • Shareholder Lists (of Beneficial Owner Companies, possibly also an overview of shareholder/owner structure, insofar as the structure extends over several levels)
  • Articles of association (Gesellschaftsvertrag)
  • Certificate of incorporation (Gründungsurkunde)
Document must include a notarial stamp, seal, and signature.
AG (not listed)
  • SHAREHOLDERS_LIST
  • SHARE_HOLDERS_AGREEMENT
  • FOUNDATION_DOCUMENT
  • Shareholder Lists (of Beneficial Owner Companies, possibly also an overview of shareholder/owner structure, insofar as the structure extends over several levels)
  • Articles of association (Gesellschaftsvertrag)
  • Certificate of incorporation (Gründungsurkunde)
Document must include a notarial stamp, seal, and signature.
SE (not listed)
  • SHAREHOLDERS_LIST
  • SHARE_HOLDERS_AGREEMENT
  • FOUNDATION_DOCUMENT
  • Shareholder Lists (of Beneficial Owner Companies, possibly also an overview of shareholder/owner structure, insofar as the structure extends over several levels)
  • Articles of association (Gesellschaftsvertrag)
  • Certificate of incorporation (Gründungsurkunde)
Document must include a notarial stamp, seal, and signature.
e.V.
  • SHAREHOLDERS_LIST
  • SHARE_HOLDERS_AGREEMENT
  • FOUNDATION_DOCUMENT
  • Liste der Vorstandsmitglieder
  • Vereinsregisterauszug (no older than three months)
  • Vereinssatzung

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 HRB198673 MÜNCHEN FLOOR 13 GMBH
DE HRA23670 BERLIN OHG Erich-Steinfurth-Strasse 7
DE HRA4029 WITTLICH SG-AUTO-WASCHTREFF WERNER KG
DE HRB571744 STUTTGART Klima Investment GmbH & Co. KGaA
DE HRB18686 Bonn Tekcor 1. V V UG (haftungsbeschraenkt)
DE HRB54636 DUESSELDORF AF Azurit AG
DE HRA204605 Stiftung St., Joseph Stift, Stiftung kirchlichen Rechts
DE HRA94238 HAMBURG PR-AUTO Peter Reimann e.K.
ES A46103834 ---- MERCADONA SA
ES N00434391 ---- HYUNDAI MOTOR EUROPE SE
ES B17262213 ---- AUTOLINE SOCIEDAD LIMITADA
ES B19202969 ---- SEIJAS ALONSO YA CIA, S.R.C.
ES G91487967 ---- CASAS Y CAMPOS S.C.
ES W2501222J ---- COLLIERS INTERNATIONAL INVESTMENT & ASSET MANAGEMENT
ES D81586729 ---- COLGATE PALMOLIVE HOLDING S COM P A
FR 513937359 ---- PARISOL
FR 332199462 ---- NATIOCREDIMURS - SOCIETE EN NOM COLLECTIF
FR 582051843 ---- GASTINNE RENETTE SOCIETE EN COMMANDITE SIMPLE
FR 304463284 ---- AVENTIS PHARMA S.A.
FR 807956966 ---- MENTION PARC AUTO
FR 539358994 ---- SOCIETE EN COMMANDITE PAR ACTIONS ETCHE ONA
FR 438755092 ---- SOC EUROPEEN DE BREVETS AUTOMOBILES SE
IT TO824350 ---- BUSINESS NETWORK S.P.A.
IT ME247881 ---- TORO S.C.R.L.
IT GE447187 ---- SOCIET SEMPLICE MONT BLANC
IT PN51072 ---- S.N.C. GEFCO DI LUIGI DAL BON & C
IT AO43300 ---- CALDARELI SERVIZI ASSICURATIVI S.A.A DI VALTER CALDARELLI
IT MI1712979 ---- LUIGI DE PRA S.A.P.A
IT AN146244 ---- FIAT SERVIZI PER L'INDUSTRIA S.C.P.A O SEMPLICEMENTE SE.P.IN
IT FI514669 ---- SCLE DELTA TRAZIONE SOCIETA' CONSORTILE A RESPONSABILITA
IT TO1215674 ---- S.R.L. SPORTIVA DILETTANTISTICA SPORT LAB
IT TP131030 ---- MAIORANNA GIUSEPPE PICCOLO IMPRENDITORE EDILE
note

For non DEcompanies, the registration_issuer is not necessary.


Appendix IV: 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). In there you'll find all the official legal representatives which you would need to tell us. As a further indication, these people also need to be listed in the Imprint of your website (Impressum).

The Legal Representative has sole representations 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 would need the complete set of information for regulatory purposes. Therefore, please enter the information about 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; please submit the information as it is currently written in the official register. If you already know that these individuals will change, then please inform your Onboarding manager accordingly, and they will help sort things out.

Why do I have to submit all legal representatives here?

As a bank, Solaris is obliged to keep a record about the companies it works with and check whether the provided information is correct. Solaris makes every effort to keep the flow as smooth as possible. Nevertheless, the law stipulates that Solaris must collect this information for all legal representatives.

Ultimate Beneficial Owner FAQs

What is a “Beneficial Owner”?

A so-called “Beneficial Owner” is a natural person (a human) who owns directly or indirectly more than 25% of the voting shares of a legal entity today. Ultimately it is the person who benefits from the entered agreement and has the eventual decision power. It can never be another company, as Solaris would need to look up the owner of that company. There is a more detailed (legally-worded) definition here as well. It may significantly help cases with beneficial owners incorporated as trusts or other non-commercial entity types.

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

It might be the case after a thorough investigation that nobody has directly or indirectly enough voting shares of the business. In that case, Solaris is required to take the legal representatives instead. Please enter their information accordingly.

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

Ultimately, the ownership structure of a company is determined in the shareholder agreement (Gesellschaftervertrag), which has been signed at least when founding the entity. In the meantime, this may have changed but would need to be noted in an amendment or update of this contract.

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

Please submit the information of the natural person (human) owning your shareholders. If this is also another company (holding- or corporate-structure), you would need to follow the trail of indirect ownership until you either find an individual or the ownership is diluted under 25% ownership (through indirect ownership).

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

Direct ownership refers to a natural person (individual) owning him-/herself voting shares in the business. Indirect ownership refers to somebody owning one entity that then owns a specific part of the business. It also qualifies if the entities are stacked into each other (several companies in between). Also, if one individual holds voting shares via different entities in the business, you would need to add up his/ her total indirect ownership to see whether the total engagement reaches more than 25%. When the shareholding structure is stacked over several hierarchies, you multiply the ownership-quotas of each entity to get the ultimate quota for the respective person.

Example:

Adello GmbH needs to provide its beneficial owners. Adello's shareholders are Peter 30% of shares, Susi 10% of shares, Anne 10% of shares, and Toscana GmbH 50% of shares. Toscana's shareholders: Hugo 75% of shares and Marie 25% of shares Direct beneficial owners of Adello: Peter Indirect beneficial owners of Adello: Hugo with 37,5% of shares (Toscana's share in Adello 50% x Hugo's ownership quota in Toscana 75%). Please note that Marie is not a beneficial owner as she has indirectly only 12,5% in Adello.

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

Please refer to the shares with decisive voting power as the beneficial owner is ultimately the person deciding the significant strokes of the company.

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

No, please only submit the information of that person as stated in his/her official documents (ID card or passport). There is no further double-checking of that information. Therefore, the beneficial owner does not need to do anything during this identification process.