Standards

The Solaris API incorporates the following international standards:

ISO codes

The Solaris API standardizes the format of the following types of values according to ISO standards:

  • Country codes: ISO 3166-1 alpha-2 codes (e.g., CH for Switzerland).
  • Currency codes: ISO 4217 (e.g., EUR for Euro).
  • German state codes: ISO 3166-2 (e.g., BE for Berlin).
  • Times and dates: ISO 8601.

SEPA characters

The European Payments Council (EPC) has defined the EPC217-08 standard for limiting the characters allowed in SEPA transactions. Solaris enforces this standard on the following fields:

  • For SEPA Direct Debits:

    • end_to_end_id
    • description
    • Within the mandate property: reference, debtor_name
  • For SEPA Credit Transfers:

    • recipient_name
    • end_to_end_id
    • description

You may only use the following characters for these fields:

  • Upper case letters: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
  • Lower case letters: a b c d e f g h i j k l m n o p q r s t u v w x y z
  • Numbers: 0 1 2 3 4 5 6 7 8 9
  • Special characters: / - ? : ( ) . , ' +
  • With the exception of reference (within mandate) and end_to_end_id, all fields may contain spaces (but no leading spaces).

Additionally, the following guidelines apply to the structure of text fields:

  • The string may not contain two or more consecutive forward slashes (/).
  • The string may not start or end with a forward slash (/).

Solaris is required to escape specific characters with dedicated representations. In this case, Solaris will count the representation as multiple characters. Therefore, your solution must consider this when checking the length of a string in one of the above character-restricted properties.

Character Representation Character Count
' (single quotation) ' 6

Extended character conversion

In cases where a customer's name contains extended Latin characters (e.g., letters with a diaeresis ¨ or accent ´), Solaris will convert the character to a SEPA-standard representation according to this table provided by the European Payments Council.

For example, ö will be converted to o:.

Merchant category codes

The Solaris API uses the merchant category codes (MCCs) referred to in the Visa Merchant Data Standards Manual and the Master Card MCCs Reference Booklet. These documents contain requirements for merchant/payment, facilitator/marketplace classification, location, and various other data elements, including merchant location, merchant category codes (MCC), and other VisaNet data formats.

Character encoding

The Solaris API uses UTF-8 encoding with a Unicode charset according to the JSON standard.

Other standards

  • Mobile numbers follow the E.164 recommendation. Mobile numbers must start with a +, followed by 7 to 15 digits. The API will strip whitespaces and any of /_- before validation.
  • Return codes for SEPA follow general EPC guidance on reason codes for R-transactions, e.g., EPC173-14.
  • Solaris only accepts UTF-8 Latin characters for all fields related to customer data. Submitting any other types of characters will cause the KYC flow to fail.

Money type

For all properties containing a money amount, Solaris uses a standard money schema. This applies to the following types of properties:

  • amount
  • balance
  • fee
  • charge

The standard money schema contains the following properties:

Parameter Type Description
value integer The actual amount of money.
currency string The currency in which the amount is represented. Currently, Solaris only supports EUR.
unit string The unit of currency represented in the amount. Currently, Solaris only supports cents.
precision integer The accuracy of the value. This is only available for items, transactions, and charges.

Example payload with a money type:

Copy
Copied
{
  "reference": "reference",
  "amount": {
    "value": 1000,
    "unit": "cents",
    "currency": "EUR",
    "precision": 2
  },
  "description": "See the money type above",
  "recipient_iban": "DE32110101001000000029",
  "recipient_name": "Money Type"
}

The amount in this example represents 10 Euros (i.e., 1000 Euro cents).