Prepaid cards for businesses

This guide contains all the relevant information about Solaris' prepaid cards product, including key concepts and the necessary endpoints and webhooks you must integrate in your solution to offer prepaid cards to your customers.

What's a prepaid card?

With prepaid cards, customers can make online purchases and card transactions the same as they would with a regular debit or credit card. However, prepaid cards have the following features and limitations:

  • Unlike credit cards, prepaid cards do not come with a line of credit. You must load the card with money beforehand and the money will act as your spending limit. In other words, you can only spend what you've already loaded onto the card.
  • Prepaid cards usually come with certain restrictions, such as a monthly spending limit or a restriction on the services for which they can be used.
  • A prepaid card is a great option if your customers want to have the flexibility of card payments without applying for a credit line or opening a full bank account.

Product overview

Solaris offers prepaid cards for retail and business customers in Germany and other countries in the European Economic Area (EEA). Solaris' prepaid cards can be tailored to a variety of use cases.

note

This guide explains the prepaid cards integration process for the specific use case of offering employee benefits through prepaid cards.

E-money overview

Solaris issues prepaid cards on the basis of e-money. E-money is a digital medium of monetary exchange (i.e., the electronic equivalent of cash) that is represented on an electronic device. This could be a software system, such as a banking system or a payment service provider like PayPal, or a hardware device, such as a magnetic chip card or a smartphone (using an app).

The EMD2 directive regulates the usage of e-money in Europe.

How does it work?

A business can offer employee benefits using Solaris' prepaid cards. However, the business must first meet the legal and regulatory onboarding criteria before using this feature. After successful onboarding, the business can issue prepaid cards to its employees.

Solaris offers two different product variations for this feature:

  1. With full KYC of the cardholder

Solaris will identify the customer using a KYC method suitable for your use case. In this use case, the prepaid card can be issued on e-money or fiat money basis.

  1. Without KYC of the cardholder

The cardholder (e.g., employee) will not go through the KYC process. In this use case, the prepaid card can only be issued on e-money basis. Moreover, additional restrictions will apply to the usage of the prepaid card.

Customer vs. cardholder

In the context of prepaid cards for businesses, the customer could be different from the cardholder. For example, the customer is the owner of the funds (e.g., the business); whereas the cardholder can access and use the funds allocated to them through the usage of their issued prepaid card.


Prerequisites

Before integrating Solaris' prepaid cards product, the business must have completed the business onboarding process. For instructions, check the related guide.

attention
  • Please note that at least 5 employees (this number includes also legal representatives) related to the business must be fully identified using a suitable KYC method to fulfill the minimum legal requirements.
  • If the number of legal representatives identified in the context of business onboarding is less than 5, the business must identify other employees.

Integration overview

You can integrate Solaris' prepaid cards for businesses product by completing the steps explained in the following sections. Here's an overview of these steps:

Initial Set-up

  1. Before starting, make sure you have the account IDs of all the technical accounts that Solaris team will open for the business: EMONEY_UNDERLYING_EUR and EMONEY_PREPAID_POOLING. Details of these accounts are explained here.
  2. Ensure that at least 5 employees are fully identified using a suitable KYC method.
  3. Collect the required data points and create person resources for all employees (e.g., cardholders without KYC) entitled to a prepaid card as explained in Step 1.

IBAN and accounts setup

  1. Create a virtual IBAN for EMONEY_UNDERLYING_EUR account as explained in Step 2.
  2. Create an e-money parking account as explained in Step 3.
  3. Create an e-money prepaid account for each cardholder as explained in Step 4.

Card creation and servicing

  1. Create a card for each cardholder as explained in Step 5.
  2. Integrate all relevant endpoints related to cards usage and servicing as explained in the related guide.

Transactions and card top-ups

Integrate all related endpoints in Step 6 to be able to make transfers between the different accounts and top up the prepaid cards.


Account setup for prepaid cards

A prepaid cards solution involves the creation of different types of Solaris accounts, which interact with one another. Some of these accounts you must create yourself during your technical integration; whereas others accounts are created and managed by the Solaris team, who will share the relevant account IDs with you.

The following account types are created for prepaid cards:

EMONEY_UNDERLYING_EUR

  • A technical account that Solaris will open for the business and share the account_id with you. The purpose of this account is to receive the funds in fiat money (e.g., EUR) from a standard checking account via SEPA Credit Transfers (SCT). Afterward, the funds are converted to e-money and transferred to the EMONEY_PREPAID_POOLING account.
  • The business must issue a virtual IBAN on this account as described in Step 2.
  • Additionally, the business must ensure that incoming SCTs to this account will trigger automatic and immediate distributions of funds via payins to the respective accounts: EMONEY_PREPAID_POOLING and individual EMONEY_PREPAID accounts.
  • The currency of this account is EUR.

EMONEY_PREPAID_POOLING

  • A technical account that Solaris will open for the business and share the account_id with you. This is an e-money account whose purpose is to convert the value of the fiat funds in the EMONEY_UNDERLYING_EUR account into e-money.
  • The limit of this account will always equal the balance available in the EMONEY_UNDERLYING_EUR account at the end of each settlement day. For example, if the balance in the EMONEY_UNDERLYING_EUR account is 10,000 EUR, then the limit of the EMONEY_PREPAID_POOLING will be - 10,000 EUR in e-money.
  • Additionally, this is the account from which the business will top up the individual prepaid accounts.
  • The currency of this account is EMONEY_EUR.

EMONEY_PREPAID

  • This is an e-money account tied to an individual prepaid card. The business will top up this account from the EMONEY_PREPAID_POOLING account and set the relevant restrictions and rules for usage on each EMONEY_PREPAID account.
  • The business must open a prepaid account for each cardholder entitled to a prepaid card.
  • The currency of this account is EMONEY_EUR.

EMONEY_PARKING

  • This is an account that the business must create and use to transfer any additional funds that have not been distributed from the EMONEY_PREPAID_POOLING account to the individual EMONEY_PREPAID accounts.
  • The currency of this account is EMONEY_EUR.

EMONEY_VISA_SETTLEMENT

  • This is an technical account that Solaris will create. This account will be used to settle the used balance between all the prepaid accounts, the main account EMONEY_UNDERLYING_EUR, and the card scheme.
  • Managed and maintained by Solaris for the settlement.
note

The cardholders only have access to their own EMONEY_PREPAID account.


Step 1: Create person resources for employees

For each employee (e.g., cardholder) that will be issued a prepaid card, you must collect the required data points and create a person resource using the following endpoint.

Additionally, please note that at least 5 employees (including legal representatives) must be fully identified. If the number of legal representatives identified in the context of business onboarding is less than 5, the business must identify other employees.

POST Create person

This endpoint creates a person resource for a cardholder. You must collect the mandatory data points from your customer in the sign-up flow and pass them to Solaris in the request body of this endpoint.

Required data points for a cardholder without KYC

  • salutation (Technical only, placeholder data can be used)
  • first_name
  • last_name
  • birth_date (Technical only, placeholder data can be used)
  • birth_city (Technical only, placeholder data can be used)

Required data points for a cardholder with KYC

  • salutation
  • first_name
  • last_name
  • address
  • email
  • fatca_relevant
  • fatca_crs_confirmed_at

Request URL

Copy
Copied
POST /v1/persons
{
  "salutation": "MS",
  "first_name": "Jane",
  "last_name": "Doe",
  "birth_date": "1992-12-11",
  "birth_city": "Berlin"
}

Response example

The API returns a person object with a unique ID for the person (i.e., the person_id). You will need this id to append the person resource with additional information in the remaining steps of this guide.

Copy
Copied
200 Created
{
    "id": "7cf09c3c5547b974a664201f24b454eecper",
    "salutation": "MS",
    "title": null,
    "first_name": "Jane",
    "last_name": "Doe",
    "address": {
        "line_1": null,
        "line_2": null,
        "postal_code": null,
        "city": null,
        "country": null,
        "state": null
    },
    "contact_address": {
        "line_1": null,
        "line_2": null,
        "postal_code": null,
        "city": null,
        "country": null,
        "state": null
    },
    "email": null,
    "mobile_number": null,
    "birth_name": null,
    "birth_date": "1992-12-11",
    "birth_city": "Berlin",
    "birth_country": null,
    "nationality": null,
    "employment_status": null,
    "job_title": null,
    "tax_information": {
        "tax_assessment": null,
        "marital_status": null
    },
    "fatca_relevant": null,
    "fatca_crs_confirmed_at": null,
    "business_purpose": null,
    "industry": null,
    "industry_key": null,
    "terms_conditions_signed_at": null,
    "own_economic_interest_signed_at": null,
    "aml_follow_up_date": "2029-01-22",
    "aml_confirmed_on": "2022-07-22",
    "flagged_by_compliance": false,
    "expected_monthly_revenue_cents": null,
    "vat_number": null,
    "website_social_media": null,
    "business_trading_name": null,
    "nace_code": null,
    "business_address_line_1": null,
    "business_address_line_2": null,
    "business_postal_code": null,
    "business_city": null,
    "business_country": null,
    "business_state": null,
    "screening_progress": "NOT_SCREENED",
    "risk_classification_status": "NOT_SCORED",
    "customer_vetting_status": "NOT_VETTED",
    "annual_income_range": null,
    "data_terms_signed_at": null,
    "branch": null,
    "birth_province": null,
    "birth_post_code": null,
    "socioprofessional_category": null,
    "purpose_of_account_opening": null,
    "main_income_source": null,
    "work_country": null,
    "work_province": null,
    "self_declared_as_pep": null,
    "international_operativity_expectation": [],
    "registration_number": null,
    "legitimation_valid_until": null
}

Click here to view the full API reference


Step 2: Create virtual IBAN for the business

After receiving the account_id of the relevant technical accounts from Solaris, you must create a virtual IBAN for the EMONEY_UNDERLYING_EUR account. You'll then use this virtual IBAN to transfer funds from the business' main account to the EMONEY_UNDERLYING_EUR account and then distribute the funds to the respective accounts: EMONEY_PREPAID_POOLING and EMONEY_PREPAID accounts.

Request example

Copy
Copied
// POST /v1/accounts/{account_id}/virtual_ibans
{
  "customer_id": "12312312cus",
  "reference": "f3757e7e-57ec-4e07-a3f1-7a5d1e412be7",
  "description": "Example description"
}

Click here to view the full API reference.

For more details on virtual IBAN management, check the related guide.


Step 3: Create an e-money parking account

In this step, you must open an e-money parking account for the business. This account will be used to transfer any additional funds that have not been distributed to the prepaid cardholders. The currency of this account is EMONEY_EUR.

POST Create a parking account

Request example

Copy
Copied
// POST v1/businesses/{business_id}/accounts
{
    "type": "EMONEY_PARKING"
}

Click here to view the full API reference.

Step 4: Create employee prepaid account

For each employee, you must create a dedicated prepaid account and set all the relevant limits and restrictions. You must also ensure the proper distribution of funds from the EMONEY_PREPAID_POOLING account to all the EMONEY_PREPAID accounts. The balance and bookings of this account is displayed to the employee.

attention
  • This account comes with very limited functionalities. The cardholder can only use the account via the associated prepaid card and can only use the funds allocated to them within the limits and restrictions of the prepaid card. Customers may not use the cards to withdraw cash or transfer funds to other accounts.
  • The employee can only receive SCTs from the business' pooling account on this account. No SDDs or SCTs from other accounts are allowed.

POST Create a prepaid account

Request example

Copy
Copied
// POST v1/businesses/{business_id}/accounts
{
    "type": "EMONEY_PREPAID"
}

Click here to view the full API reference.

Step 5: Create prepaid cards

In this step, you must create a prepaid card for each employee. The employee must have a person resource and a prepaid account created as explained above. The card creation and management process is similar to a standard debit card.

POST Create a prepaid card

Call this endpoint to create a prepaid card for the employee. Note that you must add the employee's person_id and the account_id returned in the previous step in the request URL.

The card can either by physical or virtual. You can specify the card type as:

  • EMONEY_VISA_PREPAID
  • EMONEY_VISA_PREPAID_VIRTUAL

Request example

Copy
Copied
POST v1/persons/{person_id}/accounts/{account_id}/cards
{
  "line_1": "MICHAEL WITHSTATICTOKEN/MUSTERMANN",
  "type": "EMONEY_VISA_PREPAID",
  "business_id": "52e6a9b8a559d842ed7d8901b0e1bf4bcbiz"
}

Click here to view the full API reference.

info

Managing and servicing prepaid cards is similar to a standard debit card. Please check the relevant features related to cards in the card section.

Step 6: Card top-ups and account transactions

After creating all the relevant accounts and issuing all prepaid cards to the relevant employees, you must integrate the following endpoints in your solution to enable transfers between accounts and card top-ups.

POST Create e-money payin

This endpoint issues a payin transfer from the business' pooling account to the employee's prepaid account. Please note the following properties:

  • account_id = The ID of the EMONEY_PREPAID_POOLING account.
  • recipient_iban = The IBAN of the employee' EMONEY_PREPAID account.
note

The value 1000 would represent 10 euro in e-money.

Copy
Copied
// POST /v1/accounts/{account_id}/transactions/intra_emoney_payin
{
  "amount": {
    "value": 1000,
    "currency": "EMONEY_EUR"
  },
  "recipient_iban": "DE32110101001000000029",
  "reference": "73a46685-8ac6-4fff-9d36-55288523d879",
  "description": "TopUp of Employee account"
}

Click here to view the full API reference.

POST Create e-money payin transfer

You can use the following endpoint to transfer funds between the EMONEY_PREPAID_POOLING and the EMONEY_PARKING accounts.

note

The value 1000 would represent 10 euro in e-money.

Copy
Copied
// POST /v1/accounts/{account_id}/transactions/intra_emoney_transfer
{
  "amount": {
    "value": 1000,
    "currency": "EMONEY_EUR"
  },
  "recipient_iban": "DE32110101001000000029",
  "reference": "73a46685-8ac6-4fff-9d36-55288523d879",
  "description": "Transfer of Emoney"
}

Click here to view the full API reference.

POST Create e-money payout transfer

This endpoint sends an e-money payout transfer from an EMONEY_PREPAID account to the EMONEY_PREPAID_POOLINGaccount. You can only use a payout transfer in an exit scenario when a customer terminates a contract and the funds must be returned to the main account.

Please note the following properties:

  • account_id = The ID of the employee's EMONEY_PREPAID account.
  • recipient_iban = The IBAN of the business' EMONEY_PREPAID_POOLING account.
note

The value 1000 would represent 10 euro in e-money.

Copy
Copied
// POST /v1/accounts/{account_id}/transactions/intra_emoney_payout
{
  "amount": {
    "value": 1000,
    "currency": "EMONEY_EUR"
  },
  "recipient_iban": "DE32110101001000000029",
  "reference": "73a46685-8ac6-4fff-9d36-55288523d879",
  "description": "Removing money from employee account"
}

Click here to view the full API reference.


What's next?

Congratulations! You've successfully integrated Solaris' Prepaid Cards product.

Check the following mandatory features section to find the links to the additional features you must implement in your solution. Additionally, the appendix section includes additional information on enums and testing data.

Mandatory features

You must implement the following additional mandatory features in your solution.

Compliance requirements

Authentication & authorization

Digital Banking & Cards