Skip to content

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

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 signed by the customer.

Create collection request

Call the endpoint with your billing account's account_id.

// 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"
}

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

// 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"
}

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:

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 (Define start_date and end_date)
  2. GET Bookings for Statement (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 (Define year, interval, period)
  2. GET Bookings for Statement (Use the id from step 1)

Useful resources