# Billing Accounts

This guide describes how to integrate **Billing Accounts** into your banking solution. These are specialized internal accounts used to manage your operational funds, collect service fees, and issue refunds.

## Introduction

### What is a billing account?

A **Billing Account** is a partner-owned account that enables you to:

* **Collect Revenue:** Pull funds from customer accounts via SEPA Direct Debit (SDD) for your own services.
* **Issue Refunds:** Send funds back to customers via SEPA Credit Transfer (SCT).
* **Manage Operations:** Move funds between your internal accounts.


Scope Definition
**Billing Accounts vs. Fee Collection**

* **Billing Accounts:** Used for fees **not related** to banking services (e.g., other subscription fees, external service charges).
* **Fee Collection:** Used for **banking-related** fees (e.g., account maintenance, card issuance).
  * To collect banking fees, refer to the [Fee Collection Guide](/guides/digital-banking/fee-collection).


### Prerequisites

Before opening a billing account, ensure you meet these criteria:

1. **KYC Compliance:** Solaris must identify your business entity and all legal representatives/authorized persons.
2. **Representation Type:** All legal representatives must have their `type_of_representation` set to `ALONE`. The `JOINT` type is currently **not supported** for billing accounts.


**Internal Use Only:** Billing accounts are for Solaris partners. You cannot offer these accounts to your end customers.

## How to open a billing account

Opening a billing account is a manual compliance process. It cannot be triggered via the API.

### Process flow

1. **Initiation:** Contact your **Partner Manager** to request a billing account.
2. **Documentation:** Solaris will send you a document package, including:
  * Account Opening Form
  * FATCA and CRS Consent Form
  * Terms and Conditions (T&Cs)
3. **Submission:** Complete, sign, and return all documents.
4. **Activation:** Once approved, Solaris will provide:
  * **Production Credentials:** A specific set of API credentials for the billing account.
  * **Account Details:** The `account_id` and `iban` of your new billing account.


## Operational workflows

Once active, you can interact with the billing account using standard SEPA endpoints.

### 1. Collecting revenue (Incoming SDD)

To pull funds from a customer's account (e.g., for a monthly subscription) into your billing account, initiate a SEPA Direct Debit.

**Requirements:**

* **T&Cs:** Your customer terms must explicitly state these fees.
* **Mandate:** You must hold a valid [SDD Mandate](/guides/digital-banking/sepa-transfers/sepa-direct-debit-transfer#sdd-mandate) signed by the customer.


#### Create collection request

Call the endpoint with your billing account's `account_id`.


```json
// POST /v1/accounts/{account_id}/transactions/sepa_direct_debit
{
  "amount": {
    "value": 1000,
    "unit": "cents",
    "currency": "EUR"
  },
  "mandate": {
    "reference": "MANDATE-REF-123",
    "creditor_identifier": "DE98ZZZ09999999999",
    "scheme": "CORE",
    "sequence_type": "RECURRING",
    "signature_date": "2023-01-15T10:00:00.000Z",
    "debtor_name": "Hans Mustermann",
    "debtor_iban": "DE29300400000180478000",
    "debtor_bic": "COBADEFFXXX"
  },
  "description": "SaaS Subscription Jan 2025",
  "collection_date": "2025-01-20T00:00:00.000Z",
  "end_to_end_id": "SUB-JAN-25"
}
```

Create SDD
View endpoint definition.

Retrieve SDD
Check transaction status.

### 2. Sending refunds (Outgoing SCT)

To send funds from your billing account to a customer (or another account), initiate a SEPA Credit Transfer.

#### Create transfer request


```json
// POST /v1/accounts/{account_id}/transactions/sepa_credit_transfer
{
  "recipient_name": "Hans Mustermann",
  "recipient_iban": "DE32110101001000000029",
  "recipient_bic": "COBADEFFXXX",
  "amount": {
    "value": 1000,
    "currency": "EUR",
    "unit": "cents"
  },
  "description": "Refund for Order #992",
  "end_to_end_id": "REFUND-992"
}
```

Create SCT
View endpoint definition.

Retrieve SCT
Check transaction status.

## Account management

You must implement these endpoints to monitor funds, reconcile transactions, and generate statements for your accounting.

### 1. Monitoring & Reconciliation

Track the money moving in and out of the account.

* **Webhook:** Subscribe to the `BOOKING` event for real-time notifications of all incoming and outgoing movements.
* **Endpoints:**


GET Balance
Check available funds before issuing refunds.

GET Bookings
Retrieve the history of executed transactions.

GET Account Details
Retrieve IBAN and BIC details.

Webhook Reference
Subscribe to the BOOKING event.

### 2. Account Statements

Billing accounts support two types of statements. Both follow a **two-step process**:

1. **Call POST:** Generates the statement ID and snapshots the metadata (Balances, Recipient Info).
2. **Call GET:** Retrieves the actual list of bookings associated with that statement ID.


#### Option A: Custom Date Range (Bank Statement)

Use this for internal reconciliation over flexible time periods (e.g., weekly or monthly).

1. [**POST Create Bank Statement**](/api-reference/digital-banking/account-management#tag/Bank-statements/paths/~1v1~1accounts~1%7Baccount_id%7D~1bank_statements/post) (Define `start_date` and `end_date`)
2. [**GET Bookings for Statement**](/api-reference/digital-banking/account-management#tag/Bank-statements/paths/~1v1~1accounts~1%7Baccount_id%7D~1bank_statements~1%7Bstatement_id%7D~1bookings/get) (Use the `id` from step 1)


#### Option B: Official Period (Statement of Account)

Use this for formal accounting. This generates the legally binding *Rechnungsabschluss* with fixed periods (e.g., Quarterly).

1. [**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) (Define `year`, `interval`, `period`)
2. [**GET Bookings for Statement**](/api-reference/digital-banking/account-management#tag/Statements-of-account/paths/~1v1~1accounts~1%7Baccount_id%7D~1statement_of_accounts~1%7Bstatement_id%7D~1bookings/get) (Use the `id` from step 1)


## Useful resources

* [SEPA Direct Debit Guide](/guides/digital-banking/sepa-transfers/sepa-direct-debit-transfer)
* [SEPA Credit Transfer Guide](/guides/digital-banking/sepa-transfers/sepa-credit-transfer)
* [Account Management Guide](/guides/digital-banking/account-management)