# Consumer loans

## Introduction

This guide explains the integration process for the Solaris Consumer Loans product for retail customers as a standalone solution. It covers the mandatory information you must collect and the endpoints and webhooks required for integration.

### Product specifications

The Solaris Consumer Loans product enables you to offer loans to retail customers through an efficient workflow. Using the API and an automated credit scoring system, you can create loan applications, identify customers, issue payouts, and service consumer loans.

Solaris loans are versatile and customizable. The standard offering includes loan amounts ranging from EUR 1,000 to 50,000 and terms from 12 to 84 months. You can choose between a standard loan or a loan tied to financing the purchase of goods.

Important
Consumer loans are currently only offered to customers in **Germany** with at least one German bank account.

### Credit scoring

Solaris uses an automated retail credit scoring system to make informed credit decisions. The scorer analyzes financial information, credit data, transaction history, and outstanding loans to assess creditworthiness, risk level, and eligibility.

Based on checks performed throughout the application lifecycle, the scorer estimates the probability of default (PD) and determines whether to offer a loan, including the specific amount, term, and interest rate.

**Interaction with the consumer loan service**

The consumer loan service handles requests and collects applicant information, such as self-declared financial data, credit records, and account snapshots. The scorer provides decisions based on the information provided at each stage:

* **Anonymous offer:** Evaluates self-declared information provided during the non-binding offer request. Returns an immediate decision. (Only applies if you implement the anonymous offer endpoint).
* **Binding offer:** Decides whether to make a binding offer by analyzing the loan application and external credit records (e.g., SCHUFA).
* **Verification:** Uses the account snapshot to verify financial information. This is the final check before the final decision. This step can be skipped based on your configuration.


## System prerequisites

Before integrating Solaris Consumer Loans, 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

The following sequence diagram outlines the integration flow for the Consumer Loans solution:

![Diagram: Consumer Loans flow](/assets/b2c-loan-flow.e33566ade8ea536e96e194fe6fb3618d370e51ca09ff02a59de073aa8482791d.da581abd.svg)

Important
* This guide details the **standalone** solution (loan credited to an external account).
* For existing customers with a Solaris current account, skip [Step 2](#step-2-collect-customer-data-and-create-person-resource).


Integrate Solaris Consumer Loans by completing the following steps:

| Stage | Step | Description |
|  --- | --- | --- |
| **Registration** | [Step 1 (Optional)](#step-1-generate-an-anonymous-offer-for-a-loan-optional) | Generate an anonymous loan offer. |
| **Registration** | [Step 2](#step-2-collect-customer-data-and-create-person-resource) | Collect mandatory customer data, consent to legal requirements, and create a person resource. |
| **Application** | [Step 3](#step-3-create-customer-credit-record) | Create a credit record for the customer. |
| **Application** | [Step 4](#step-4-create-customer-loan-application) | Create a loan application with mandatory data points for the scorer. |
| **Application** | [Step 5](#step-5-create-account-snapshot) | Create an account snapshot and link it to the loan application. |
| **Contract** | [Step 6](#step-6-send-secci-form-and-loan-contract) | Send the SECCI form and final loan contract. |
| **Identification** | [Step 7](#step-7-complete-the-customer-identification-and-e-signing-process) | Trigger KYC and e-signing (IDnow). Ensure the customer is identified and passes risk screening. |
| **Payout** | [Step 8](#step-8-create-the-loan) | Create the loan to trigger the payout. |
| **Servicing** | [Step 9](#step-9-loan-servicing) | Implement loan servicing and maintenance endpoints. |


### Webhooks

Subscribe to the following webhook events to automate your processes:

* [`ACCOUNT_SNAPSHOT`](/api-reference/onboarding/webhooks/webhook-events/paths/account_snapshot/post)
* [`CONSUMER_LOAN_APPLICATION`](/api-reference/onboarding/webhooks/webhook-events/paths/consumer_loan_application/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)


### Mandatory features

Integrate all mandatory features for B2C Loans highlighted in the [Onboarding requirements guide](/guides/get-started/onboarding-requirements/6-mandatory-features/#lending) before going live.

## Step 1: Generate an anonymous offer for a loan (Optional)

You may offer customers a **non-binding** anonymous loan offer before they provide personal data or start the application. This optional step allows customers to check eligibility early.

**How it works**

The customer enters their desired loan amount, duration, and self-declared financial information. The scoring system evaluates eligibility and provides an initial approval or rejection.

* **Approval:** Returns a non-binding offer (amount, term, interest rate, monthly installment).
* **Rejection:** Returns a rejection or an adjusted offer (e.g., lower amount).


### POST Generate anonymous loan offer

Call this endpoint to generate the offer.

**Mandatory fields:**
The following fields are strictly required by the schema:

* `requested_loan_term`
* `requested_loan_amount`
* `number_of_dependents`
* `net_income_amount`
* `living_situation_amount`
* `living_situation`
* `private_insurance_amount`


**Optional fields:**
Include these if available to improve scoring accuracy:

* `requested_emi`
* `existing_credit_repayment_excluding_mortgage`


**Request URL**


```shell
POST /v1/anonymous_consumer_loan_offers
```

**Response**

The API returns a `loan_decision` (`OFFERED` or `REJECTED`) and the offer details.

**Note:** The decision is **not final** and the offer is **not binding**. The customer must complete the full application process to receive a binding offer.

* [API Reference: Create anonymous loan offer](/api-reference/lending/loans/#operation/ConsumerLoanWeb.V1.AnonymousOffers.CreateOperation)


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

Collect the mandatory customer data, including timestamps for the [legal and compliance screens](#system-prerequisites).
Create a [person resource](/guides/get-started/onboarding-requirements/2-data-collection/#customer-data-resource-types) to send this data to Solaris.

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

Create a person resource to represent your customer. You must include the following data points in the request body to satisfy the requirements for German Consumer Loans.

**Mandatory fields for retail customers in Germany:**

* `salutation`
* `first_name`
* `last_name`
* `email`
* `mobile_number`
* `birth_date`
* `birth_city`
* `birth_country`
* `nationality`
* `employment_status`
* `address`:
  * `line_1`
  * `line_2` (optional)
  * `postal_code`
  * `city`
  * `country`
* `tax_information`:
  * `marital_status`
* `terms_conditions_signed_at`
* `data_terms_signed_at`
* `own_economic_interest_signed_at`


**Request URL**


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

* [API Reference: Create person](/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 customer credit record

Create a consumer credit record and link it to the customer's person resource.

### 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)


## Step 4: Create customer loan application

Collect loan-specific information and create the application.

### POST Create consumer loan application

This endpoint creates the application and assigns it to the person specified in the URL. The payload initiates the credit checks.

**Mandatory properties:**

* `requested_loan_term`
* `requested_loan_amount`
* `repayment_day_of_month`
* `private_insurance_amount`
* `number_of_dependents`
* `net_income_amount`
* `living_situation_amount`
* `living_situation`
* `moved_in_last_two_years`
* `credit_record_id`
* `loan_purpose`
* `partner_reference_number`


**Financed goods properties:**
For loans financing a purchase, include:

* `cash_price`
* `seller`
* `financed_good`


**Request URL**


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

**Scoring & Response**

The system automatically scores the application:

* **Approved:** `status` becomes `offered`. Returns a binding offer (amount, term, interest rate, installment).
* **Rejected:** `status` becomes `rejected`.
* [API Reference: Create application](/api-reference/lending/loans/#operation/ConsumerLoanWeb.V1.Applications.CreateOperation)


### GET Retrieve consumer loan application

Track the application lifecycle using this endpoint.

**Request URL**


```shell
GET /v1/persons/{person_id}/consumer_loan_applications/{application_id}
```

> 💡 **Webhook:** Subscribe to `CONSUMER_LOAN_APPLICATION` to receive automatic updates whenever the application status changes (e.g., from `screening_pending` to `approved`).


* [API Reference: Retrieve application](/api-reference/lending/loans/#operation/ConsumerLoanWeb.V1.Applications.ShowOperation)


### Application status flow

The following diagram illustrates the application status transitions:

![Diagram: Consumer loan application flow](/assets/b2c-loan-application-status.265e4b8c105a8b323bdc5ff73d7caa1aaa495684494ba65c4a1230ff6a8de572.da581abd.svg)

### POST Generate a subsidized offer (Optional)

Create a subsidized offer with a reduced interest rate by adding the `interest_rate` in the request body.

You must compensate Solaris for the difference between the initial offered rate and the subsidized rate.

**Request URL**


```shell
POST /v1/persons/{person_id}/consumer_loan_applications/{consumer_loan_application_id}/offers/{offer_id}/subsidize
```

* [API Reference: Create subsidized offer](/api-reference/lending/loans/#operation/ConsumerLoanWeb.V1.Applications.CreateSubsidizedOfferOperation)


## Step 5: Create account snapshot

Create an account snapshot and link it to the application when the status is `offered`.

### PUT Skip account snapshot (Optional)

To skip this step and proceed directly to `approved`:

**Request URL**


```shell
PUT /v1/persons/{person_id}/consumer_loan_applications/{application_id}/skip_account_snapshot
```

* [API Reference: Skip snapshot](/api-reference/lending/loans/#operation/ConsumerLoanWeb.V1.Applications.SkipAccountSnapshotOperation)


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

Link the snapshot to the application using the `account_snapshot_id`. This changes the status to `account_snapshot_verification` and triggers the final credit check.

**Request URL**


```shell
PUT /v1/persons/{person_id}/consumer_loan_applications/{application_id}/account_snapshot
```


```json
{
  "account_snapshot_id": "0a3f28733f9a4842842aae2804f80eb4snap"
}
```

> 💡 **Webhook:** Subscribe to the `ACCOUNT_SNAPSHOT` webhook to be notified when the snapshot is successfully created and verified.


* [API Reference: Link snapshot](/api-reference/lending/loans/#operation/ConsumerLoanWeb.V1.Applications.LinkAccountSnapshotOperation)


### PUT Upload purchase contract (Optional)

If financing a specific asset (e.g., a car), upload the purchase contract.

**Request URL**


```shell
PUT /v1/persons/{person_id}/consumer_loan_applications/{application_id}/upload_purchase_contract
```

* [API Reference: Upload contract](/api-reference/lending/loans/#operation/ConsumerLoanWeb.V1.Applications.UploadPurchaseContractOperation)


## Step 6: Send SECCI form and loan contract

You must provide the customer with the Standard European Consumer Credit Information (SECCI) form and the final contract for review.

### GET Retrieve SECCI form

Generate the SECCI form as a PDF and share it with the customer before sending the final contract.

**Request URL**


```shell
GET /v1/persons/{person_id}/consumer_loan_applications/{application_id}/offers/{offer_id}/pre_contract
```

* [API Reference: Download SECCI](/api-reference/lending/loans/#operation/ConsumerLoanWeb.V1.Applications.DownloadOfferPreContractOperation)


### GET Retrieve final contract

After the customer approves the SECCI form, generate the final contract for e-signing.

**Request URL**


```shell
GET /v1/persons/{person_id}/consumer_loan_applications/{application_id}/offers/{offer_id}/contract
```

* [API Reference: Download contract](/api-reference/lending/loans/#operation/ConsumerLoanWeb.V1.Applications.DownloadOfferContractOperation)


The customer must also sign a SEPA Direct Debit (SDD) mandate. See the [SEPA Direct Debit guide](/guides/digital-banking/sepa-transfers/sepa-direct-debit-transfer) for details.

## Step 7: Complete the customer identification and e-signing process

Trigger the video identification session (IDnow). The agent verifies the customer's identity and mobile number, and collects the Qualified Electronic Signature (QES) on the loan contract, SDD mandate, and terms.

Proceed when the application status is `esign_pending`.

### GET Retrieve the signing ID

When the status is `esign_pending`, call [GET Retrieve consumer loan application](#get-retrieve-consumer-loan-application) to obtain the `signing_id`.

### GET Retrieve e-signing and identification details

Use the `signing_id` to get IDnow details (reference and URL). Redirect the customer to the returned URL.

**Request URL**


```shell
GET /v1/persons/{person_id}/signings/{signing_id}
```

* [API Reference: Retrieve signing](/api-reference/identity/identifications/#tag/Person-signings/paths/~1v1~1persons~1%7Bperson_id%7D~1signings~1%7Bsigning_id%7D/get)


> 💡 **Webhook:** Subscribe to the `IDENTIFICATION` webhook. It will send a notification (e.g., `status: successful`) when the customer completes the video interview.


### GET Retrieve signed contracts

After successful identification, retrieve the signed documents.

**Request URL**


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

**Document Types:**

* `SIGNED_CONTRACT` with `ldoc` suffix: Signed SDD mandate.
* `SIGNED_CONTRACT` with `cdoc` suffix: Signed loan contract.


### GET Download a document

Download specific signed files to share with the customer.

**Request URL**


```shell
GET /v1/persons/{person_id}/documents/{id}/file
```

* [API Reference: Download file](/api-reference/onboarding/persons/#tag/Person-documents/paths/~1v1~1persons~1%7Bperson_id%7D~1documents~1%7Bid%7D~1file/get)


### GET Retrieve identification details

Verify the identification status is `successful`.

**Request URL**


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

* [API Reference: Retrieve identification](/api-reference/identity/identifications/#tag/Person-identifications/paths/~1v1~1persons~1%7Bperson_id%7D~1identifications~1%7Bid%7D/get)


## Step 8: Create the loan

Create the loan to trigger the payout when the application status is `loan_creation_pending`.

### PUT Pay out a customer loan

This endpoint assigns the loan and issues the payout to the recipient IBAN.

**Request URL**


```shell
PUT v1/persons/{person_id}/consumer_loan_applications/{application_id}/consumer_loan
```

**Response**

Returns the `loan_id`. The application status changes to `loan_created`.

* [API Reference: Create loan](/api-reference/lending/loans/#operation/ConsumerLoanWeb.V1.Applications.CreateLoanOperation)


### GET Retrieve consumer loan information

Retrieve loan details, status, and overdue amounts.

**Request URL**


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

> 💡 **Webhook:** Subscribe to the `LOAN` webhook to track ongoing status changes during the loan lifecycle (e.g., repayments, overdue alerts).


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


## Step 9: Loan servicing

Implement endpoints for servicing and maintaining consumer loans.

### 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)


## Related resources

The following guides and API references are relevant to the Consumer Loans integration:

* [Consumer Loans API Reference](/api-reference/lending/loans/#tag/Consumer-Loan)
* [Loan Servicing API Reference](/api-reference/lending/loans/#tag/Loan-servicing)
* [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

### Consumer loan application status

| Status | Description |
|  --- | --- |
| `offered` | Application passed initial scoring. |
| `account_snapshot_verification` | Account snapshot required for final verification. |
| `approved` | Application approved. |
| `esign_pending` | Identification and e-signing triggered. `signing_id` is available. |
| `screening_pending` | Undergoing internal risk screening. |
| `esign_failed` | Identification failed. Trigger a new process. |
| `loan_creation_pending` | Identification and screening successful. Ready for loan creation. |
| `loan_created` | Loan created and payout triggered. |
| `rejected` | Application rejected. |
| `deleted` | Application deleted. |
| `expired` | Application expired (credit record or snapshot validity exceeded). |


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