# Account Management

This guide explains how to manage customer accounts, retrieve balances, and handle account statements using the Solaris API.

## Prerequisites

Before managing accounts, you must have successfully onboarded a customer:

* [Onboard a Person](/guides/get-started/digital-banking/onboard-person)
* [Onboard a Business](/guides/get-started/digital-banking/onboard-business)


## Supported account types

When retrieving accounts, the API returns an `account_type` field. You must handle the different behaviors associated with each type.

| Account Type (example) | Product Context | Capabilities |
|  --- | --- | --- |
| `CHECKING_PERSONAL` | Standard B2C Account | Full SEPA, Cards, Overdrafts |
| `CHECKING_BUSINESS` | Standard B2B Account | Full SEPA, Cards, Overdrafts |
| `CHECKING_SUBACCOUNT` | [Sub-account](/guides/digital-banking/sub-accounts) | Internal Pockets only. No external transfers. |
| `WALLET_PERSONAL` | [Restricted Account (B2C)](/guides/digital-banking/restricted-accounts) | Closed Loop. Reference Account payouts only. |
| `WALLET_BUSINESS` | [Restricted Account (B2B)](/guides/digital-banking/restricted-accounts) | Closed Loop. Reference Account payouts only. |


Managing Specialized Accounts
**Restricted & Safeguarding Accounts** are "Closed Loop."

* You cannot issue cards for them.
* You cannot trigger standard SEPA transfers to arbitrary third parties.
* You must use the specific **Reference Account Payout** endpoints to move funds out.


## Account balance

The account balance is not a single number but a set of values representing different financial states.

### Real-time balances

These values reflect the current state of the account and are returned in the `GET /accounts/{id}` response.

| Field Name | Description |
|  --- | --- |
| `balance` | The funds currently booked on the account. Includes only **posted** bookings (transactions with an elapsed valuta date). |
| `available_balance` | The amount the customer can actually use. Accounts for pending reservations and overdraft limits.**Formula:** `balance` - `reservations` + `overdraft_facility`. |
| `seizure_protection` | **Protected Amount.** (Only for seized accounts) The amount of funds legally protected from seizure (Pfändungsschutz). |


### Dispositions

A **Disposition** is a booking that has been agreed upon but has a `valuta_date` (value date) in the future.

* These are returned in the bookings list but are **not yet applied** to the `balance`.
* They become effective (affecting interest and balance) only when the `valuta_date` is reached.


### Overdrafts and Limits

If your solution includes Overdrafts, the **Account Limit** determines the maximum allowed negative balance.

* **Overdraft Facility:** The approved credit line (e.g., €500).
* **Impact:** This amount is added to the `available_balance`, allowing the customer to spend more than their `balance`.


### Balance calculation example

Scenario: An account has a limit (overdraft) of **€100.00**.

| Date | Action | Amount | `balance` | `available_balance` |
|  --- | --- | --- | --- | --- |
| **Jan 1** | Start | - 
 | €0.00 | **€100.00** (Limit only) |
| **Jan 2** | Card Purchase (Pending) | -€20.00 | €0.00 | **€80.00** (Reservation applied) |
| **Jan 3** | Incoming Transfer (Posted) | +€50.00 | **€50.00** | **€130.00** |
| **Jan 4** | Card Purchase (Settled) | -€20.00 | **€30.00** | **€130.00** (Booking applied) |


### Retrieve balance

* [GET Retrieve balance](/api-reference/digital-banking/account-management/#tag/Accounts/paths/~1v1~1accounts~1%7Baccount_id%7D~1balance/get)
* [GET Retrieve average daily balance](/api-reference/digital-banking/account-management/#tag/Accounts/paths/~1v1~1accounts~1%7Baccount_id%7D~1average_daily_balance/get) - Useful for calculating interest or service fees.


## Bookings

A **Booking** represents a finalized movement of funds (e.g., a SEPA transfer or a settled card transaction).

* **Impact:** Bookings update the `balance`.
* **Tracing Transactions:**
  * `transaction_id`: The ID of the original transaction that created this booking.
  * `return_transaction_id`: Used for **R-Transactions** (Refunds, Returns, Rejects). It exposes the ID of the original transaction that is being returned or refunded.
  * `receiver_iban_virtual`: (If applicable) The [Virtual IBAN](/guides/digital-banking/vibans) that received the funds.
* **Value Date (`valuta_date`):** The date used for interest calculation. This may differ from the `booking_date` (e.g., for backdated interest or correction bookings).


Implementation Note
Your application must handle all booking types dynamically. Do not hardcode logic that ignores unknown types, as Solaris may add new booking types (e.g., for new payment schemes).

* [GET Retrieve bookings](/api-reference/digital-banking/account-management/#tag/Accounts/paths/~1v1~1accounts~1%7Baccount_id%7D~1bookings/get)


## Reservations

A **Reservation** is a temporary restriction of funds. It blocks a specific amount for a pending transaction that has not yet been booked (settled). Common examples include card authorizations at a point of sale.

Impact on Balance
Reservations reduce the `available_balance` immediately to prevent overspending, but they do **not** affect the `balance` until settlement.

### Reservation lifecycle

Reservations persist until a specific event resolves them:

1. **Resolution (Settlement):** The reservation remains active until the merchant or system captures the payment. Once captured, the reservation is removed, and a **Booking** is created for the final amount.
2. **Expiration:** If the transaction is not captured within the timeframe **defined by the card scheme**, the reservation automatically expires, and the funds are released back to the `available_balance`.


* [GET Retrieve reservations](/api-reference/digital-banking/account-management/#tag/Reservations/paths/~1v1~1accounts~1%7Baccount_id%7D~1reservations/get)


## Account statements

Solaris provides two types of statements. You must understand the legal distinction between them.

### 1. Statement of Account (Rechnungsabschluss)

According to **§ 355 HGB**, banks are legally required to regularly issue a statement that contains information about all bookings, interest, fees, and costs.

* **Legal Status:** **Legally Binding.**
* **Frequency:** Quarterly.
* **Content:** Closing balance, fees, interest, and mandatory legal disclaimers.
* **Requirement:** You **must** generate this and provide it to the customer.


**Overdraft Information:**
If the account has an overdraft, the statement must also include:

* `overdraft_facility`: The granted limit.
* `overdraft_rate`: The interest rate applied.
* `interest_accrued`: The actual interest charged for the period.


**Generating the statement:**
Call the endpoint to generate the data, then render it into a PDF using your own template. You **must** include the mandatory disclaimer text provided in the API response.

The following text is an example of the disclaimer structure. You must use the exact string returned by the API at the time of generation.


```text Example Disclaimer Content (German/English)
Sehr geehrte Kundin, sehr geehrter Kunde,

bitte prüfen Sie die Buchungen, Berechnungen und den Abschlusssaldo im beiliegenden Kontoauszug, der zugleich einen Rechnungsabschluss darstellt. Rechnungsabschlüsse gelten als genehmigt, sofern Sie innerhalb von sechs Wochen nach Zugang keine Einwendungen erheben. Einwendungen gegen Rechnungsabschlüsse müssen der solarisBank schriftlich oder in Textform (z.B. an support@solarisbank.de) zugehen. Im Falle der Einwendung in Textform genügt zur Fristwahrung die rechtzeitige Absendung. Der angegebene Kontostand berücksichtigt nicht die Wertstellung der einzelnen Buchungen. Dies bedeutet, dass der genannte Betrag nicht dem für die Zinsrechnung maßgeblichen Kontostand entsprechen muss und bei Verfügungen möglicherweise Zinsen für die Inanspruchnahme einer eingeräumten oder geduldeten Kontoüberziehung anfallen können. Gutschriften aus eingereichten Lastschriften und anderen Einzugspapieren erfolgen unter dem Vorbehalt der Einlösung. Guthaben sind als Einlagen nach Maßgabe des Einlagensicherungsgesetzes entschädigungsfähig. Nähere Informationen können dem Informationsbogen für den Einleger entnommen werden, den Sie gemeinsam mit unseren für den Geschäftsverkehr mit Ihnen geltenden Allgemeinen Geschäftsbedingungen und besonderen Bedingungen unter www.solarisbank.de/partner einsehen können.

Mit freundlichen Grüßen

Ihre solarisBank

---

Clearance of account is considered accepted if you do not raise any objection within six weeks after receipt. Objections regarding account statements have to be submitted to solarisBank in written or text form (e.g. to service@solarisbank.de). In case of objection in text form, it is sufficient to ensure its timely dispatch.
```

* [POST Create statement of account](/api-reference/digital-banking/account-management/#tag/Statements-of-account/paths/~1v1~1accounts~1%7Baccount_id%7D~1statement_of_accounts/post)


**Recipient Data Logic:**
The API provides a `recipient_information` object to print on the statement. The content changes based on the customer type:

| Line | Natural Person | Business |
|  --- | --- | --- |
| **Line 1** | Salutation, First Name, Last Name | Company Name |
| **Line 2** | Address Line 1 | "For the company management" |
| **Line 3** | Address Line 2 | Address Line 1 |
| **Line 4** | Postal Code, City | Address Line 2 |


The overdraft information in the statement represents a **snapshot** on the generation date. You must highlight this limitation in the document you share with the customer.

### 2. Bank Statement (Kontoauszug)

According to **Article 248 §§ 3, 7, 10 EGBGB**, banks are legally required to provide information about every booking to the customer at least once a month.

* **Legal Status:** Informational only (Not legally binding).
* **Frequency:** On-demand (typically monthly).
* **Content:** List of bookings within a specific date range.
* [POST Create bank statement](/api-reference/digital-banking/account-management/#tag/Bank-statements/paths/~1v1~1accounts~1%7Baccount_id%7D~1bank_statements/post)


Constraints
* **Past Dates Only:** You can only generate statements for time periods in the past.
* **Idempotency:** Requesting a statement for the same period multiple times returns the same document.


### 3. Fee Summary Statement

* **Frequency:** Annual.
* **Content:** Summary of all fees charged to the account.
* **Delivery:** Automatically uploaded to the customer's [Postbox](/api-reference/onboarding/webhooks/webhook-events/paths/postbox_item_created/post).
* [POST Request fee summary](/api-reference/digital-banking/account-management/#tag/Fee-summary-statements/paths/~1v1~1accounts~1%7Baccount_id%7D~1fee_summary_statement_request/post)


## Account blocking

Solaris may block an account for compliance or security reasons (e.g., suspicious activity, missing tax data).

### Monitoring blocks

Subscribe to the [`ACCOUNT_BLOCK`](/api-reference/onboarding/webhooks/webhook-events/paths/account_block/post) webhook.
When received, call [GET Retrieve Account](/api-reference/digital-banking/account-management/#tag/Accounts/paths/~1v1~1accounts~1%7Bid%7D/get) to inspect the `locking_status` and `locking_reason`.

### Locking statuses

| Status | Effect |
|  --- | --- |
| `NO_BLOCK` | Account is active. All transactions allowed. |
| `DEBIT_BLOCK` | **Outgoing** payments blocked. Incoming funds allowed. |
| `CREDIT_BLOCK` | **Incoming** payments blocked. Outgoing funds allowed. |
| `BLOCK` | **Full freeze.** No money in or out. |


## Appendix I: Booking types

The `booking_type` field explains the business context of a transaction.

details
summary
strong
Click to view all Booking Types
br
| Booking Type | Description |
|  --- | --- |
| `CANCELLATION_BOOKING` | Generic cancellation of a posted booking. |
| `CancellationCardTransaction` | Correction of a card-related movement. |
| `CANCELLATION_CARD_TRANSACTION_DIRECT` | Correction of a peer-to-peer card transaction (e.g., MoneySend). |
| `CANCELLATION_CHARGE_CARD` | Correction of card-related charges. |
| `CANCELLATION_CHARGE_DUNNING` | Correction of fees or charges resulting from the dunning (debt collection) process. |
| `CANCELLATION_CHARGE_SEPA_DIRECT_DEBIT_RETURN` | Correction of additional SDD return charges. |
| `CANCELLATION_CRYPTO_EXCHANGE` | Correction of a crypto-currency exchange operation. |
| `CANCELLATION_CURRENCY_EXCHANGE_PARTNER` | Correction of a currency exchange performed in cooperation between you and Solaris. |
| `CANCELLATION_DIRECT_DEBIT` | Correction of a SEPA Direct Debit collection (`CORE` scheme). |
| `CANCELLATION_DOUBLE_BOOKING` | Correction of a technical issue (e.g., if a payment was booked twice). |
| `CANCELLATION_INTERNAL_TRANSFER` | Correction of a manual transaction. |
| `CANCELLATION_INTERNATIONAL_CREDIT_TRANSFER` | Correction of an international non-SEPA payment. |
| `CANCELLATION_INTEREST_ACCRUED` | Correction of interest accrual. |
| `CANCELLATION_INTEREST_ANNUITY` | Cancellation of an interest accrual (specific to loan products). |
| `CANCELLATION_INTEREST_LOAN` | Cancellation of an irregular interest accrual (specific to loan products). |
| `CANCELLATION_LOAN_PAYOUT` | Correction of a loan payout. |
| `CANCELLATION_REBOOKING` | Correction of a payment rerouting. |
| `CANCELLATION_REBOOKING_INTEREST` | Correction of an interest rerouting. |
| `CANCELLATION_SEPA_CREDIT_TRANSFER_RETURN` | Correction of a SEPA Credit Transfer return. |
| `CANCELLATION_SEPA_DIRECT_DEBIT` | Correction of a SEPA Direct Debit collection (`B2B` scheme). |
| `CANCELLATION_SEPA_DIRECT_DEBIT_RETURN` | Correction for the return of a SEPA Direct Debit. |
| `CANCELLATION_TRANSFER_ANNUITY` | Correction of irregular loan principal removal. |
| `CARD_DIRECT_DEBIT` | SEPA Direct debit collection from a card account. |
| `CARD_TRANSACTION` | Card-related transaction (e.g., ATM withdrawal, payment, refund). |
| `CARD_TRANSACTION_DIRECT` | Peer-to-peer card transaction (e.g., MoneySend). |
| `CASH_DEPOSIT_RETAIL` | A cash deposit via Viacash (Barzahlen). |
| `CASH_WITHDRAWAL_RETAIL` | A cash withdrawal via Viacash (Barzahlen). |
| `CHARGE_ACCOUNT_MAINTENANCE` | Monthly account maintenance fee. |
| `CHARGE_CARD` | Card-related charges. |
| `CHARGE_DUNNING` | Fees resulting from the dunning process. |
| `ChargeRecallRequest` | Charge resulting from a recall request. |
| `CHARGE_SEPA_DIRECT_DEBIT_RETURN` | Additional charges for the return of an SDD collection. |
| `ClosureBalanceTransfer` | Moving remaining funds out of an account upon closure. |
| `COMMISSION_OVERDRAFT` | Interest charge for exceeding the overdraft limit. |
| `CREDIT_TRANSFER_CANCELLATION` | Canceled Credit Transfer, either by customer request or internal checks. |
| `CRYPTO_EXCHANGE` | Cashflow related to crypto-currency exchange operation. |
| `CURRENCY_EXCHANGE_PARTNER` | Currency exchange performed in cooperation between you and Solaris. |
| `DIRECT_DEBIT` | SEPA Direct Debit collection (`CORE` scheme). |
| `FOREIGN_PAYMENT` | **Deprecated.** Replaced by `INTERNATIONAL_CREDIT_TRANSFER`. |
| `INTEREST_ACCRUED` | Interest accrued on the account. |
| `INTEREST_ANNUITY` | Interest accrued between loan payout and cancellation date. |
| `INTEREST_LOAN` | Irregular interest accrual (e.g., for early repayment). |
| `INTERNAL_TRANSFER` | Manually executed transaction. |
| `INTERNATIONAL_CREDIT_TRANSFER` | Payment via SWIFT or TARGET2. |
| `LOAN_PAYOUT` | Money transfer from the loan account to the billing account. |
| `REBOOKING` | Payment rerouting between accounts. |
| `REBOOKING_INTEREST` | Interest rerouting between accounts. |
| `SEPA_CREDIT_TRANSFER` | Standard incoming or outgoing SEPA Credit Transfer. |
| `SEPA_CREDIT_TRANSFER_RETURN` | Return of an executed SEPA Credit Transfer (e.g., account blocked). |
| `SEPA_DIRECT_DEBIT` | SEPA Direct Debit collection (`B2B` scheme). |
| `SEPA_DIRECT_DEBIT_RETURN` | Return or Refund of a SEPA Direct Debit. |
| `SepaInstantCreditTransfer` | Real-time SEPA Instant payment. |
| `TARGET2_CREDIT_TRANSFER` | A credit transfer sent via Target2. |
| `TRANSFER_ANNUITY` | Irregular loan principal removal. |
| `OTHER` | Generic booking category. |


## Appendix II: Reservation types

Reservations affect the `available_balance` but have not yet been booked to the ledger.

| Type | Description |
|  --- | --- |
| `CARD_AUTHORIZATION` | A temporary hold for a card transaction (e.g., at point of sale). |
| `SEIZURE` | Funds blocked by a legal seizure order (Pfändung). |


## Appendix III: Account blocking details

When an account is blocked, the `locking_status` defines **what** is blocked, and `locking_reason` explains **why**.

### Locking Reasons

details
summary
strong
Click to view all Locking Reasons
br
| Reason | Description |
|  --- | --- |
| `AML_FOLLOW_UP_OVERDUE` | Customer failed to confirm data after AML follow-up request. |
| `COMPANY_FOUNDATION` | Business failed to submit foundation documents on time. |
| `COMPLIANCE` | Generic compliance block. |
| `COMPLIANCE_SCREENING` | AML match identified during screening. |
| `COMPLIANCE_PARTNER` | Blocked by you (the partner) for compliance reasons. |
| `CUSTOMER_WISH` | Blocked at the customer's request. |
| `DECOUPLED_CARD_DUNNING` | Blocked due to unpaid debts on a decoupled card. |
| `IDENTIFICATION_FAILED` | KYC/BKYC process failed. |
| `IDENTIFICATION_DOCUMENT_EXPIRED` | ID document on file has expired. |
| `IN_CLOSURE` | Account is in the process of being closed. |
| `INSOLVENCY` | Insolvency case related to the customer. |
| `LOAN_RESERVATION` | Customer has not accepted the loan offer yet. |
| `MISSING_TAX_INFORMATION` | Tax ID not provided within the required timeframe. |
| `SEIZURE` | Active seizure process (Pfändung) on the account. |
| `OTHER` | Generic operational block. |