# Freelancer Splitpay

This guide explains the integration process for Solaris' Freelancer Splitpay product, including the mandatory information you need to collect from your customer and the necessary endpoints and webhooks you need to integrate into your solution.

## Introduction

### Product specifications

Freelancer Splitpay is currently **only** available for customers in Germany with a German bank account. Check the [overview](/guides/lending) page for more details on the product specifications.

Solaris' Freelancer Splitpay solution enables self-employed persons to convert transactions that are not older than 90 days into installment loans instantly within a credit line agreement. Additionally, freelancer Splitpay offers high-volume credit lines, ranging from 2,000 to 50,000 EUR, and longer loan terms from 3 to 24 months.

The product is offered to freelancers who are registered as:

* Freier Beruf/Freiberufler (freelancer or self-employed)
* Gewerbebetrieb (commercial enterprise)


### Credit scoring

Solaris uses an automated credit scoring system (Splitpay Freelancer Scorer) to make informed credit decisions on freelancer credit line applications. The scorer collects and analyzes different information, such as the customer's financial information, credit data, transaction history, and outstanding loans to assess their creditworthiness and determine their risk level and credit eligibility.

Based on different credit checks done throughout the application lifecycle, the scorer estimates the probability of default (PD), determining whether a credit line is offered and the limit granted.

**How the scorer interacts with the credit line service**

The credit line service and its related endpoints handle Splitpay requests and collect the required information about the applicants, such as self-declared financial information, credit records, and account snapshots. Throughout the lifecycle of a credit line application, the scorer provides different responses based on the information provided during each stage of the application.

The scorer performs different credit checks throughout the application lifecycle, such as:

* **Pre-check:** Based on the self-declared information the applicant provides when applying for a credit line.
* **Initial scoring:** Based on the credit record obtained from external credit bureaus, such as SCHUFA.
* **Verification:** Based on the account snapshot to verify the financial information provided in the credit line application. This is the final check, after which the scorer provides the final decision. Some applications could also skip the final verification check.


## System prerequisites

Before integrating Solaris' Freelancer Splitpay, implement the following requirements:

**1. Technical setup**

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

**2. Legal and compliance screens**

Build the necessary legal and compliance screens in your sign-up flow to collect your customers' consent. The [Legal and compliance screens guide](/guides/get-started/onboarding-requirements/1-legal-compliance-screens) contains step-by-step instructions on how to create these screens and what they must contain.

The following screens are required to onboard B2C customers for lending standalone products:

1. [Terms and Conditions](/guides/get-started/onboarding-requirements/1-legal-compliance-screens#solaris-terms--conditions)
2. [Customer information](/guides/get-started/onboarding-requirements/1-legal-compliance-screens#customer-information)
3. [Economic interest](/guides/get-started/onboarding-requirements/1-legal-compliance-screens#economic-interest)


**Consent timestamps**

You must record the customer's consent on each screen as a UTC timestamp (e.g., `2019-01-01T00:00:00Z`) and pass it to Solaris in the following fields:

* **Solaris Terms and Conditions:** `terms_conditions_signed_at`
* **Data Processing Terms:** `data_terms_signed_at`
* **Economic Interest Declaration:** `own_economic_interest_signed_at`


These fields are part of the `person` resource where all customer data points are stored.

## Integration overview

Important
* This guide includes the integration process for Freelancer Splitpay as a **standalone** solution, i.e., the credit limit will be added to an external account.
* For existing customers who already have a current account with Solaris and wish to apply for a credit line, skip [Step 2](#step-2-collect-customer-data-and-create-person-resource).


Integrate Solaris' Freelancer Splitpay by completing the following steps:

| Stage | Step | Description |
|  --- | --- | --- |
| Customer registration | [Step 1 - Optional](#step-1-generate-an-anonymous-installment-plan) | Generate an anonymous installment plan for a given amount for the customer. |
| Customer registration | [Step 2](#step-2-collect-customer-data-and-create-person-resource) | Collect the mandatory customer data and consent to the legal and regulatory requirements in your sign-up flow, and create a person resource for your customer. |
| Credit line application | [Step 3](#step-3-create-freelancer-credit-line-application) | Create a credit line application for the customer and include all mandatory data points required for the scorer. |
| Credit line application | [Step 4](#step-4-create-credit-record) | Create a credit record for the customer. |
| Credit line application | [Step 5 - Optional](#step-5-create-account-snapshot-and-link-it-to-the-application-optional) | Create an account snapshot for the customer and link it to the credit line application. |
| Customer identification & contract signing | [Step 6](#step-6-create-credit-line-contract-and-complete-the-customer-identification) | Create the credit line contract, and redirect the customer to complete the identification process with IDnow and sign the relevant contracts. Ensure that the customer is successfully identified and passes the risk screening before proceeding with the following steps. |
| Credit line usage & servicing | [Step 7](#step-7-credit-line-usage-and-servicing) | Whenever a customer uses an amount from the credit line limit, an installment loan for this amount will be created and serviced separately, and the remaining amount of the credit line limit will be recalculated. Implement all the relevant endpoints in this step. |


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

### Sequence diagram

The following sequence diagram gives an overview of the integration flow for the Freelancer Splitpay solution:

Diagram: Freelancer Splitpay integration flow
### Webhooks

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

**General Events**

* [ACCOUNT_SNAPSHOT](/api-reference/onboarding/webhooks/webhook-events/paths/account_snapshot/post)
* [IDENTIFICATION](/api-reference/onboarding/webhooks/webhook-events/paths/identification/post)
* [PERSON_CHANGED](/api-reference/onboarding/webhooks/webhook-events/paths/person_changed/post)
* [PERSON_DELETED](/api-reference/onboarding/webhooks/webhook-events/paths/person_deleted/post)
* [PERSON_MOBILE_NUMBER_CREATED](/api-reference/onboarding/webhooks/webhook-events/paths/person_mobile_number_created/post)
* [PERSON_MOBILE_NUMBER_DELETED](/api-reference/onboarding/webhooks/webhook-events/paths/person_mobile_number_deleted/post)
* [LOAN](/api-reference/onboarding/webhooks/webhook-events/paths/loan/post)


**Credit Line Specific Events**

* [FREELANCER_CREDIT_LINE_APPLICATION](/api-reference/onboarding/webhooks/webhook-events/paths/freelancer_credit_line/post)
* [CREDIT_LINE](/api-reference/onboarding/webhooks/webhook-events/paths/credit_line/post)


### Mandatory features

You must integrate all the mandatory features for Freelancer Splitpay highlighted in the [Onboarding requirements guide](/guides/get-started/onboarding-requirements/6-mandatory-features#lending) before going live with your solution.

## Step 1: Generate an anonymous installment plan

In this step, you will enable your customers to request an anonymous installment plan before applying for a credit line by integrating the following endpoint in your sign-up flow. Your customers enter the desired amount they want to convert into installments and they receive an initial installment plan, including the monthly installment amount, loan duration, and applicable interest rates.

### POST Create an anonymous credit line installment plan

This endpoint generates an anonymous credit line installment plan for a specific amount, allowing potential customers to receive an initial offer before applying for a credit line. You must add the following properties in the request body:

**Request URL**


```shell
POST /v1/freelancers/anonymous_credit_line_installment_plans
```

[View full API reference](/api-reference/lending/splitpay/#operation/FreelancerCreditLineWeb.V1.CreditLines.AnonymousInstallmentPlans.IndexOperation)

If the customer decides to apply for a credit line, you need to collect the mandatory information from the customer on your frontend by completing the following steps in this guide.

## Step 2: Collect customer data and create person resource

In this step, you have to collect the mandatory data points from the customer in your sign-up flow, including all the timestamps of the customer's consent to the [legal and compliance screens](#system-prerequisites).

Afterward, pass all the data points to Solaris by creating a [person resource](/guides/get-started/onboarding-requirements/2-data-collection#customer-data-resource-types) to represent your customer.

**API reference**

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

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


**Related webhook events**

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


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


#### POST Create person

Call this endpoint to create a person resource for your customer, and add the following mandatory data points in the request body:

**Mandatory data points for freelancers in Germany**

* `salutation`
* `first_name`
* `last_name`
* `address`
  * `line_1`
  * `line_2`
  * `postal_code`
  * `city`
  * `country`
* `mobile_number`
* `birth_date`
* `birth_city`
* `birth_country`
* `nationality`
* `employment_status`
* `terms_conditions_signed_at`
* `data_terms_signed_at`
* `own_economic_interest_signed_at`
* `tax_information`
  * `marital_status`
* `business_trading_name`
* `Business Address`
* `business_purpose`
* `nace_code`
* `website_social_media` (if available)
* `expected_monthly_revenue_cents`
* `vat_number` (becomes mandatory for self-employed persons with expected annual revenue of more than 17.500€)


**Request URL**


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

[View full API reference](/api-reference/onboarding/persons/#tag/Persons/paths/~1v1~1persons/post)

#### PATCH update person

This endpoint updates one or more properties on a `person` resource. You can only update the following properties using this endpoint:

- `title`
- `salutation`
- `address` (`line_1`, `line_2`, `postal_code`, `city`,  `state`, `country`)
- `contact_address` (`line_1`, `line_2`, `postal_code`, `city`,  `state`, `country`)
- `employment_status`
- `job_title`
- `email`
- `tax_information` (`tax_assessment`, `marital_status`)
- `fatca_relevant`
- `fatca_crs_confirmed_at`
- `business_purpose`
- `industry`
- `industry_key`
- `own_economic_interest_signed_at`
- `aml_confirmed_on` (only with today or tomorrow's date)
- `expected_monthly_revenue_cents`
- `vat_number`
- `website_social_media`
- `business_trading_name`
- `nace_code`
- `business_address_line_1`
- `business_address_line_2`
- `business_postal_code`
- `business_city`
- `business_country`
- `annual_income_range`
- `data_terms_signed_at`
- `branch`
- `birth_province`
- `birth_post_code`
- `socioprofessional_category`
- `purpose_of_account_opening`
- `main_income_source`
- `work_country`
- `work_province`
- `self_declared_as_pep`
- `international_operativity_expectation`
- `registration_number`


Important
**Restricted Updates:**

* Fields not mentioned in this list can only be updated via Customer Support.


**Freelancer & Self-Employed Requirements (B2C):**

* If a customer changes their `employment_status` to `FREELANCER` or `SELF_EMPLOYED`, you must include **one** of the following in the request to avoid an error:
  1. The customer's `nace_code` (Recommended for data quality).
  2. Set `industry` and `industry_key` to `null`.


**Request URL**


```shell
PATCH /v1/persons/{id}
```

**Request example**

* [API Reference: Update person](/api-reference/onboarding/persons/#tag/Persons/paths/~1v1~1persons~1%7Bid%7D/patch)


## Step 3: Create freelancer credit line application

After collecting the mandatory personal information from the customer and creating a `person` resource, you must collect the required data fields for the credit line application and pass them to Solaris using the following endpoint.

### POST Create freelancer credit line application

Call this endpoint to create a freelancer credit line application for your customer. You must add the following mandatory properties in the request body, which the credit scorer uses to initiate a series of credit checks:

* `annual_turnover`
* `corporate_name`
* `foundation_date`
* `legal_form`
* `monthly_net_profit`
* `monthly_non_mortgage_credit_expense`
* `monthly_private_fixed_cost`
* `recipient_iban`
* `tax_id`


**Request URL**


```shell
POST /v1/freelancers/persons/{person_id}/credit_line_applications
```

[View full API reference](/api-reference/lending/splitpay/#operation/FreelancerCreditLineWeb.V1.Applications.CreateOperation)

**Scoring results:**

This API call triggers the credit scoring system, which initiates the initial scoring based on the self-declared information passed in the payload, and rejects applications that don't meet the minimum credit eligibility criteria.

**Rejected application**

If the application is rejected, the application `status` changes to `rejected`, and you must abort the customer onboarding process.

**Approved application**

If the application passes the pre-check, the application status changes to `credit_record_pending`, and you must create a credit record and link it to the application as described in the following step.

### GET Retrieve freelancer credit line application

This endpoint returns the current status and details of an existing freelancer credit line application. For a list of possible values of the application `status` and their descriptions, check the [appendix](#freelancer-credit-line-application-status).

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

**Request URL**


```shell
GET /v1/freelancers/persons/{person_id}/credit_line_applications/{application_id}
```

[View full API reference](/api-reference/lending/splitpay/#operation/FreelancerCreditLineWeb.V1.Applications.ShowOperation)

### Application status flow

The following diagram describes the status flow of a freelancer credit line application:

Diagram: Freelancer credit line application flow
## Step 4: Create credit record

In this step, you must create a freelancer credit record and link it to the person resource of the relevant customer.

### What is a credit record?

The credit record contains the customer's credit data and history. Creating a credit record is mandatory for Lending integrations, as it is used for credit scoring to determine the customer's creditworthiness and eligibility.

Important
**Regional Availability:**

* **Germany:** The credit record is required. Information is retrieved from SCHUFA (German credit bureau).
* **France, Italy, Spain:** A credit record is **not** required. Instead, creating a tax identification for the customer substitutes this requirement.


### Create a credit record

To create a credit record, you must choose a `source` in the request body:

1. **`source: solarisBank` (Automated)**
Solaris retrieves the customer's record directly from SCHUFA. This is the standard recommended process.
2. **`source: partner` (Manual Upload)**
You collect the credit record manually from SCHUFA or third-party providers and upload it to Solaris.
  * **Requirement:** You must Base64-encode the file and pass the content in the `file` field.


**Endpoints:**

Depending on your customer type, use one of the following endpoints:

**Retail Customers**


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

* [API Reference: Create retail credit record](/api-reference/lending/credit-record/#operation/PersonCreditRecordWeb.V1.CreditRecords.CreateOperation)


**Freelancers**


```shell
POST /v1/freelancers/persons/{person_id}/credit_records
```

* [API Reference: Create freelancer credit record](/api-reference/lending/credit-record/#operation/PersonCreditRecordWeb.V1.CreditRecords.CreateFreelancerOperation)


### GET Retrieve a credit record

Call this endpoint to check the status and validity of an existing credit record.

**Request URL**


```shell
GET /v1/persons/{person_id}/credit_records/{credit_record_id}
```

**Expiry Logic:**
If the `status` of the retrieved credit record is `expired`, you must create a new record for the customer before proceeding with a loan application.

* [API Reference: Retrieve credit record](/api-reference/lending/credit-record/#operation/PersonCreditRecordWeb.V1.CreditRecords.ShowOperation)


#### PUT Link credit record to freelancer credit line application

This endpoint links the credit record you created for the customer to their existing credit line application. You must add the `credit_record_id` in the payload of this endpoint.

**Request example**


```json
// PUT /v1/freelancers/persons/{person_id}/credit_line_applications/{application_id}/credit_record
{
  "credit_record_id": "fbb7d15fa4c54ba0b077592665ef04a4ccrd"
}
```

[View full API reference](/api-reference/lending/splitpay/#operation/FreelancerCreditLineWeb.V1.Applications.LinkCreditRecordOperation)

**Scoring results:**

After linking the credit record to the application, the application `status` changes to `initial_scoring_pending`, triggering the credit scoring system to start the credit checks.

**Approved application:**

* If the application passes the credit scoring, the application status goes directly to `offered` if no account snapshot or identification is needed. In this case, proceed to [step 6](#step-6-create-credit-line-contract-and-complete-the-customer-identification) to generate the relevant contract for the customer and trigger the KYC flow.
* Alternatively, the status can go to `account_snapshot_verification_pending` if an account snapshot is required. In this case, complete [step 5](#step-5-create-account-snapshot-and-link-it-to-the-application-optional) to create an account snapshot and link it to the application.


**Rejected application:**

If the credit scoring fails, the status will change to `rejected` and you must abort the onboarding process.

## Step 5: Create account snapshot and link it to the application (Optional)

If the application `status` changes to `account_snapshot_pending`, then the final verification step is required to complete the credit scoring process. In this case, you need to create an account snapshot for the customer and link it to their credit line application by calling the following endpoints:

### What is an account snapshot?

The account snapshot contains a breakdown of the customer's account information, such as balance, transactions, bookings, and recurrent repayment amounts over a specific period. It is mandatory for Lending integrations, as it is used for credit scoring to verify the customer's financial data.

### Create an account snapshot

Call the endpoint below to create a snapshot. You must specify the `source` field to determine the integration method.

**Request URL**


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

* [API Reference: Create snapshot](/api-reference/lending/account-snapshot/#operation/AccountSnapshotWeb.V1.AccountSnapshots.CreateOperation)


### Method 1: FinTecSystems (FTS)

Use this method to integrate the FTS wizard.

1. Integrate the FTS wizard in your solution (see [FTS Documentation](https://docs.fintecsystems.com/)).
2. Call the endpoint with `source: FIN_TECH_SYSTEMS`. Optionally, include the `iban`.
3. Use the returned `wizard_session_key` to initialize the FTS wizard.
4. The customer enters their credentials in the wizard.


**Request:**

**Response:**

### Method 2: Finreach

Use this method to integrate the FinX widget.

1. Integrate the FinX widget (see [FinX Documentation](https://docs.finx.finleap.cloud/#section/Native-Mobile-App-Integration)).
2. Call the endpoint with `source: FINREACH`.
3. Redirect the customer to the URL provided in the `location` field.


**Request:**

**Response:**

### Method 3: Partner (Manual Upload)

Use this method if you have your own connection to a third-party provider and want to upload the data directly.

* Set `source` to `PARTNER`.
* Include the full data structure in `snapshot_data`.


**Request:**

### Method 4: Solaris (Internal)

Use this method if the customer already has a Solaris account.

* Set `source` to `SOLARISBANK`.
* Include the `account_id` of the Solaris account.


**Request:**

**Response:**

### GET Retrieve account snapshot

Call this endpoint to check the status and validity of an existing snapshot.

**Request URL**


```shell
GET /v1/persons/{person_id}/account_snapshots/{account_snapshot_id}
```

* If the status is `expired`, you must create a new snapshot.
* Subscribe to the `ACCOUNT_SNAPSHOT` webhook for status updates.


* [API Reference: Retrieve snapshot](/api-reference/lending/account-snapshot/#operation/AccountSnapshotWeb.V1.AccountSnapshots.ShowOperation)


#### PUT Link account snapshot to freelancer credit line application

Use this endpoint to link the customer's account snapshot created in the previous step to their existing credit line application.

After linking the account snapshot to the application, the application `status` changes to `account_snapshot_verification_pending`, triggering the final verification step in the credit scoring process. After successful snapshot verification, the application status should change to `offered` and you can proceed with the remaining steps.

If the verification step fails, the status will change to `rejected` and you must abort the onboarding process.

**Request example**


```json
// PUT /v1/freelancers/persons/{person_id}/credit_line_applications/{application_id}/account_snapshot
{
  "account_snapshot_id": "6c8f81a234df4052a9cde197577347b7snap"
}
```

[View full API reference](/api-reference/lending/splitpay/#operation/FreelancerCreditLineWeb.V1.Applications.LinkAccountSnapshotOperation)

## Step 6: Create credit line contract and complete the customer identification

In this step, you need to create the credit line contract, which the customer might sign during the identification process.

### PUT Set contract agreement date for freelancer credit line application

Call this endpoint to create the credit line contract when the application `status` changes to `offered`.

This endpoint will trigger the identification process automatically and you will not need to initiate the identification process manually for the customer. The application `status` should change to `identification_creation_pending`, which means the identification creation process has been triggered, but the resource has not been created yet.

**Request URL**


```shell
PUT /v1/freelancers/persons/{person_id}/credit_line_applications/{freelancer_application_id}/contract_agreement
```

[View full API reference](/api-reference/lending/splitpay/#operation/FreelancerCreditLineWeb.V1.Applications.SetContractAgreementOperation)

### GET Retrieve the identification ID

When the application `status` changes to `identification_pending`, it means that the identification resource has been created for the customer. You must call the [GET Retrieve freelancer credit line application method](#get-retrieve-freelancer-credit-line-application) to get the `identification_id`, which you will need to retrieve the identification details.

### GET Retrieve the identification details

Once you obtain the `identification_id` from the previous endpoint, call the following method to get the video identification details, such as IDnow reference and URL, to which you need to redirect your customer to complete the video identification process with IDnow.

**Request URL**


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

[View full API reference](/api-reference/identity/identifications/#tag/Person-identifications/paths/~1v1~1persons~1%7Bperson_id%7D~1identifications~1%7Bid%7D/get)

* For a list of possible values of the `status` of IDnow process and their descriptions, check the [appendix](#idnow-status).
* Additionally, subscribe to the `IDENTIFICATION` webhook event to get IDnow status updates.
* Check the [video identification guide](/guides/kyc/videoident) for more endpoints related to KYC with IDnow.


### Identification and screening results

In this step, the customer will be identified through our KYC partner IDnow and internally screened by Solaris for risk metrics:

**Successful identification**

Once the customer completes the identification and e-signing process successfully, the credit line application status changes to `identification_completed`.

**Failed identification**

If the identification and e-signing process fails, the credit line application status changes to `rejected`, and you must abort the onboarding process.

**Successful screening**

Once the application `status` reaches `identification_completed`, the screening process will be triggered. If successful, the status will change to `credit_line_creation_pending` triggering the final steps of the onboarding process, which is the credit line and account creation.

**Failed screening**

If the screening process fails, the application `status` will change to `rejected`, and you must abort the onboarding process.

### GET Retrieve the credit line ID

Once the video identification process has been completed successfully, Solaris will create the credit line. You can track the credit line creation process by calling the same [GET freelancer credit line application method](#get-retrieve-freelancer-credit-line-application).

Once the credit line has been created, the application `status` changes to `credit_line_created`, and the `credit_line_id` will be included in the payload and the full credit line details such as the amount and interest rates.

Additionally, Solaris will create an account for the customer, which will be used in the scope of the credit line agreement. The `account_id` will also be included in the payload.

## Step 7: Credit line usage and servicing

This step includes all the relevant endpoints you need to integrate into your solution to use and service credit lines.

### Credit line usage

After a customer is granted a credit line, they can use the limit in the form of single installment loans.

For example, if Solaris offers a customer a 5,000 EURO credit line limit, they can choose to use 3,000 EURO to pay back the principal and interests in monthly installments over the course of 24 months. An installment loan for this amount and term will be created and serviced separately, leaving the customer with a remaining credit line limit of 2,000, which they can use in subsequent installment plans.

A credit line must be created before requesting installment plans.

#### POST Generate available installment plans

Once a customer is granted a credit line, they can convert previous transactions into installments. You must generate possible installment plans and terms for the given amount and share them with the customer.

This endpoint generates possible installment plans for a given amount. The API call returns an array of possible installment plans for the given amount, including the term, monthly installment amount, and applicable interest rate.

**Request example:**


```shell
POST /v1/persons/{person_id}/credit_lines/{credit_line_id}/available_installment_plans
```

[View full API reference](/api-reference/lending/splitpay/#operation/ConsumerCreditLineWeb.V1.ConsumerCreditLines.AvailableInstallmentPlans.IndexOperation)

#### POST Create a credit line loan

This endpoint creates a loan resource based on an installment plan. The loan is used for bank statements and should shortly describe the purpose of the loan. Additionally, you should assign a reference for the loan and indicate whether a loan for a specific transaction was already created.

The API call returns an object with a unique ID, the `loan_id`, and the loan `status`.

For a list of possible values of the credit line loan status and their descriptions, check the appendices section. Additionally, subscribe to the webhook event [LOAN](/api-reference/onboarding/webhooks/webhook-events/paths/loan/post) to receive status updates about the loan.

**Request URL**


```shell
POST /v1/persons/{person_id}/credit_lines/{credit_line_id}/loans
```

[View full API reference](/api-reference/lending/splitpay/#operation/ConsumerCreditLineWeb.V1.Loans.CreateOperation)

### Credit line servicing

This section includes the different endpoints you need to integrate in your solution for servicing and maintaining credit lines for your customers.

#### GET Retrieve a credit line

This endpoint returns the details of the credit line, such as the used amount, active loans, available limit, etc.

**Request URL**


```shell
GET /v1/persons/{person_id/}credit_lines/{credit_line_id}
```

[View full API reference](/api-reference/lending/splitpay/#operation/ConsumerCreditLineWeb.V1.ConsumerCreditLines.ShowOperation)

#### PATCH Update the internal payout account tied to a credit line

This endpoint updates the internal payout account (Solaris account) used for a credit line loan payout.

**Request example**


```shell
PATCH /v1/persons/{person_id}/credit_lines/{credit_line_id}/payout_account
```

[View full API reference](/api-reference/lending/splitpay/#operation/ConsumerCreditLineWeb.V1.ConsumerCreditLines.UpdatePayoutAccountOperation)

#### PATCH Update the reference account tied to a credit line

This endpoint updates the reference account (external account) used for a credit line loan payout.


```shell
PATCH /v1/persons/{person_id}/credit_lines/{credit_line_id}/reference_account
```

[View full API reference](/api-reference/lending/splitpay/#operation/ConsumerCreditLineWeb.V1.ConsumerCreditLines.UpdateReferenceAccountOperation)

#### PUT Revoke a credit line

The customer can revoke an offered credit line within 14 days from the issuance date. The following endpoint revokes a created credit line for a customer.

**Request URL**


```shell
PUT /v1/persons/{person_id}/credit_lines/{credit_line_id}/revoke
```

[View full API reference](/api-reference/lending/splitpay/#operation/ConsumerCreditLineWeb.V1.ConsumerCreditLines.RevokeOperation)

### Credit line account statements

Due to regulatory requirements, you need to generate annual account statements for credit lines for all of your customers with an active credit line. As long as the credit line remains active, you must share the annual statement with the customer every year as a PDF file, either via email or direct download through your frontend.

Additionally, in case of terminated credit lines, you need to generate a closing account statement and share it with the customer after the termination and account closure process has been completed.

#### GET Download annual account statement for a credit line

Call this endpoint to download an annual account statement for a credit line.

[View full API reference](/api-reference/lending/splitpay/#operation/ConsumerCreditLineWeb.V1.ConsumerCreditLines.DownloadAnnualAccountStatementOperation)

#### GET Download closing account statement for a credit line

Call this endpoint to download a closing account statement for a credit line.

[View full API reference](/api-reference/lending/splitpay/#operation/ConsumerCreditLineWeb.V1.ConsumerCreditLines.DownloadClosingAccountStatementOperation)

### Account closure and Credit line termination

If a customer requests to close their account, any associated credit line will be terminated as well. The termination process is managed internally by Solaris and may vary depending on your specific configuration with Solaris. If your customer wishes to terminate an existing credit line independently, please contact your Partner Manager for more information about the process.

For more information about account closure requests, check the related [Account Closure guide](/guides/compliance/account-closure).

### Loan servicing

This section includes the different endpoints you need to integrate in your solution for servicing and maintaining loans for your customers.

### Loan Servicing Endpoints

Implement these endpoints to manage the active loan lifecycle, including retrieving status, schedules, and history.

**Key Endpoints:**

- [GET Retrieve a loan](/api-reference/lending/loans/#operation/LoanEngineWeb.V1.Loans.ShowOperation)
- [GET Index all loans](/api-reference/lending/loans/#operation/LoanEngineWeb.V1.Loans.IndexOperation)
- [GET Retrieve a loan schedule](/api-reference/lending/loans/#operation/LoanEngineWeb.V1.Loans.RepaymentSchedule.ShowOperation)
- [GET Retrieve repayment history](/api-reference/lending/loans/#operation/LoanEngineWeb.V1.Loans.ShowRepaymentHistoryOperation)
- [GET Retrieve credit line mandate](/api-reference/lending/loans/#operation/LoanEngineWeb.V1.Mandates.ShowCreditLineMandateOperation)


#### GET Retrieve a loan schedule

Call this endpoint to retrieve the latest repayment schedule for a specific loan. The response includes:

* **Loan balance:** The remaining amount to be paid.
* **Loan installments:** A list of past and future scheduled payments.


**Request URL**


```shell
GET /v1/loans/{loan_id}/repayment_schedule
```

* [API Reference: Retrieve loan schedule](/api-reference/lending/loans/#operation/LoanEngineWeb.V1.Loans.RepaymentSchedule.ShowOperation)


#### GET Retrieve repayment history

Call this endpoint to view the history of all payments made towards the loan. The response includes:

* **SEPA Direct Debits (SDD):** Automatic monthly installments pulled from the reference account.
* **SEPA Credit Transfers (SCT):** Manual transfers made by the customer for partial or full early repayment (if applicable).


**Request URL**


```shell
GET /v1/loans/{loan_id}/repayment_history
```

* [API Reference: Retrieve repayment history](/api-reference/lending/loans/#operation/LoanEngineWeb.V1.Loans.ShowRepaymentHistoryOperation)


## Next steps

Congratulations! You have successfully integrated Solaris' Freelancer Splitpay 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](/guides/lending) page.

### Useful resources

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

* [Freelancer Credit Line API Reference Documentation](/api-reference/lending/splitpay/#tag/Freelancer-Credit-Line)
* [Loan Servicing API Reference documentation](/api-reference/lending/loans/#tag/Loan-servicing)
* [Person Signings API Reference Documentation](/api-reference/identity/identifications/#tag/Person-signings)
* [Video Identification Guide](/guides/kyc/videoident)
* [SEPA Transfers Overview](/guides/digital-banking/sepa-transfers)
* [SEPA Direct Debit Transfers](/guides/digital-banking/sepa-transfers/sepa-direct-debit-transfer)


## Appendix I: Enums

### Freelancer credit line application status

These are the possible values for the field `status` in the freelancer credit line application resource.

| Enum | Description |
|  --- | --- |
| `credit_record_pending` | The credit line application is successfully submitted and passed the pre-check. However, a credit record is needed to continue the credit scoring process. You must create a credit record for the applicant and attach it to the application to continue the process. |
| `initial_scoring_pending` | A credit record has been linked to the credit line application. The credit record triggers the initial scoring step, in which the credit scoring system checks the provided credit record to assess the customer's credit risk and eligibility. |
| `account_snapshot_pending` | The credit line application passed the initial scoring step, and an account snapshot is needed for the final verification step. You must create an account snapshot for the applicant and attach it to the application to continue the process. |
| `account_snapshot_verification_pending` | An account snapshot has been linked to the credit line application. The account snapshot triggers the final verification step, in which the credit scoring system checks the account history to verify the self-declared financial information. |
| `offered` | The credit line application has passed the final verification check and is accepted. |
| `identification_creation_pending` | The credit line application has passed all credit checks successfully, and the identification process is yet to be created. Solaris creates the relevant identification resource. |
| `identification_pending` | The identification resource has been created for the relevant customer. The `identification_id` should be available in the payload of the GET Retrieve freelancer credit line application method. |
| `identification_completed` | The customer has completed the identification process. |
| `credit_line_creation_pending` | The identification was completed successfully, but the credit line creation process is still in progress. |
| `credit_line_created` | The credit line has been created and assigned to the `person` resource of the customer. |
| `expired` | Either the credit record or the account snapshot is expired. New ones must be created and linked to the credit line application to resume the process. |
| `rejected` | The credit line application has been rejected. Rejection could be due to failed pre-check, initial scoring, account snapshot verification, or identification. |


### Freelancer credit line status

These are the possible values for the field `status` in the freelancer credit line resource.

| Enum | Description |
|  --- | --- |
| `partner_approval_pending` | You must authorize the creation of the credit line. This is not a mandatory stage for all use cases but only happens if you have an internal authorization workflow. |
| `account_creation_pending` | The customer's account creation is still in progress. The account is required for the loan payout. |
| `schufa_report_pending` | You must send the customer's report reflecting the credit line to SCHUFA service. |
| `open` | The account and mandate have been created and linked to the customer's credit line. The credit line is now open and can be utilized by the customer. Note that the credit line locking status must be `NO_BLOCK` for the customer to be able to use the credit line. |
| `closed` | The credit line has expired and is no longer active. |


### Credit line loan status

These are the possible values for the field `status` in the credit line loan resource.

| Enum | Description |
|  --- | --- |
| `payout_pending` | The loan payout is still in progress. |
| `payout_triggered` | The loan payout has been triggered. |
| `created` | The loan payout has been created and can be used by the customer. |


### Document types

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

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


### Idnow status

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

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


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