1. About this documentation

1.1. Target group, purpose of the documentation, and prerequisites

This documentation is aimed at integrators of the DB Merchant Solutions REST API to provide the necessary knowledge to connect their application to the DB Merchant Solutions REST API.

Readers are advised to have basic technical programming knowledge as well as basic knowledge about electronic payment transactions.

1.2. Support contact

Please ask Deutsche Bank customer support for the support contact.

1.3. Formatting

Source code

Source code examples are formatted as follows:

Example
#!/bin/bash

# endless loop
while [ true ]
do
    clear;
    free;
    sleep 1;
done

Parameters

All parameter designations appear in the following font: parameter.

Highlighted text

Significant words and essential information requiring emphasis appear in italics.

1.4. Disclaimer

The information in this document has been compiled with the utmost diligence. However, the documentation neither claims completeness nor accuracy. VÖB-ZVD Processing GmbH, a subsidiary of Deutsche Bank AG, therefore neither assumes liability for usability or correctness nor - as far as legally allowed - for direct, indirect, accidental or consequential damage arising from the use of the information provided in this document. Except for cases of intention and gross negligence, liability is excluded for errors in translation as well as damages resulting from this.

This document is copyright protected. The use of text and images, even excerpts, without the prior written permission of VÖB-ZVD Processing GmbH, a subsidiary of Deutsche Bank AG, is a copyright offence. This applies in particular to reproduction, translation or use in electronic systems.

All rights reserved © 2025.

1.6. Trademarks

The product names used in this documentation are for identification purposes only.

All trademarks and registered trademarks are the property of their respective owners.

1.7. Changes to the document

This document is updated regularly. It contains changes up to and including 2025-09-04. See the Changelog for details.

2. Introduction

2.1. Supported services

DB Merchant Solutions REST API offers merchants a wide range of payment methods and related services for their web shop:

  • payment methods:

    • credit cards: Mastercard and Visa

    • Google Pay™

    • Apple Pay®

    • SEPA Direct Debit (SDD)

    • PayPal

    • Request to Pay (RtP)

    • Klarna

    • P24

    • TWINT

    • WeChat Pay

    • iDEAL

    • Wero

  • fraud prevention:

    • verify credit card data and bank account data before use

    • check SDD transactions against a negative list to avoid fraud

    • perform a risk assessment for credit card or SDD transactions to automatically decline high-risk transactions

    • use eScore for address verification, credit assessment, and scoring

  • compliance:

    • create an alias for credit card or bank account data to simplify compliance to the PCI DSS standard

  • further services:

    • support multi-currency pricing

    • retrieve bank account information via PSD2 AIS

    • retrieve information about previous transactions

See User guide for details on using these services.

2.2. Architectural overview

In the following, a short overview is given about the actors and components of DB Merchant Solutions REST API and how they communicate.

DB Merchant Solutions provides a common access point to various payment methods. Therefore, merchants can offer several payment methods to their customers by integrating only one payment service provider. The merchant’s server communications only with DB Merchant Solutions and not with the various backend systems (there is one exception for Apple Pay, see Transaction processing for Apple Individual Integration).

The actors in the following diagram are:

  • The customer who uses a web browser or a mobile app to access a merchant’s shop.

  • The merchant’s backend: a server which handles the shop’s business logic.

  • DB Merchant Solutions where the merchant’s backend delegates the payment-relevant business logic.

  • The payment backends where the payment transactions are carried out.

Arrows mean "sends a requests to".

arch overview

The functions of the requests (arrows) in the above figures are:

  1. The customer uses the merchant’s website and accesses business entities like offers and baskets.

  2. The customer communicates directly with DB Merchant Solutions REST API.

  3. The customer communicates directly with some of the backends to authenticate to the payment method among others.

  4. The merchant’s backend uses payment related business logic of DB Merchant Solutions, for example: authorize payments.

  5. DB Merchant Solutions may call the merchant’s backend to notify about the outcome of a transaction.

  6. DB Merchant Solutions calls the payment backends to process payment relevant tasks.

  7. The payment backends may call back DB Merchant Solutions.

2.3. Transactions

Transactions are the basic principle to provide the services described in Supported services. All the transaction in DB Merchant Solutions REST API are initiated using the endpoints in Services API. Most of the endpoints given there refer to various kinds of financial transactions where the payment backends of various payment methods are involved (see Supported transaction kinds). The payment backends are responsible for the legal processing of the transactions which are therefore recorded there.

DB Merchant Solutions REST API provides a common access point to the payment systems and therefore also records the transactions within its own system.

2.3.1. Transaction IDs and event IDs

DB Merchant Solutions REST API assigns a unique identification number to each transaction which is called transaction ID (tx_id in Services API).

When a customer of a merchant’s web shop starts a payment for some goods or a service, the merchant has to associate their own business processes with the transactions in DB Merchant Solutions REST API.

This is handled using event IDs. The event ID is assigned by the merchant’s backend systems and is subject to their own naming conventions as long as it satisfies the rules specified in Services API.

Event is considered as a payment event and therefore has to be unique for each payment process. Several transactions may be associated with an event, but only one successful initial payment (see Transactions kind details). There may be several attempts to pay with different means of payment, one of which is successful. The unsuccessful and the successful payments each relate to a transaction.

Also, a transaction may have subsequent transactions (refunds, reversals, or captures).

All those transactions are associated with the same event.

The event_id is used for most endpoints in Services API.

2.3.2. Status and response codes

A (payment) transaction is initialized by the merchant, or the merchant’s backend, respectively. In many cases a transaction requires the customer’s interaction, for example to confirm a payment in the payment method’s system.

The merchant needs to be informed on the outcome of the transaction, or, more generally, its status. The way this status is transferred to the merchant depends on the integration type, or the merchant’s preference (for example Callback and diagnosis request for Form service).

In any case, the status information is contained in the response code which is denoted rc in all API responses in Services API and API requests in Callback API.

As described in Response codes, rc = 0 means success and other response code indicate that either the transaction is still pending or not successful. The value of rc gives further information about the status.

In some situations, a backend response code is given which contains status information on the transaction in the nomenclature of the involved payment backend.

2.3.3. Supported transaction kinds

DB Merchant Solutions REST API supports several types of financial transactions which are called transaction kinds in the following. The transaction kind is coded as tx_action in Services API.

The different payment methods each support a subset of the following transaction kinds:

  • authorization: (direct) payment for a transaction, either for a single transaction (standard) or recurring

  • pre-authorization: reservation for a transaction which will be fulfilled later

  • capture: payment for a pre-authorization when the transaction has been fulfilled

  • refund: credit transaction for a previous authorization or capture

  • credit: credit transaction without a previous authorization or capture

  • reversal: (partial) cancellation of a previous transaction

  • verify means of payment (MOP) (also see Alias referencing a billing agreement)

When captures, refunds, and reversals are supported by a payment method, one or more following three variants are possible:

  • full: The exact original amount has to be paid in a single transaction.

  • single partial: The original transaction allows only a single payment, but its amount can be smaller than the original amount.

  • multiple partial: The original amount can be split in several amounts which are handled in separate payments. "multiple partial" implies "single partial".

See transaction kind details for a detailed explanation of these transaction kinds.

The following table shows which payment methods support which transaction kinds.

Payment method Authorization Pre-Authorization Capture Refund Reversal Credit Verify MOP

Credit card

standard + recurring

full + single partial

full + single partial

full + single partial

Google Pay

standard + recurring

full + single partial

full + single partial

full

Apple Pay

standard + recurring

full + single partial

full + single partial

full

Direct debit

standard + recurring

full + multiple partial

full + multiple partial

full + single partial

PayPal

standard + recurring

full + multiple partial

full + multiple partial

full

Request to Pay

standard

full + multiple partial

Klarna

standard + recurring

full + multiple partial

full + multiple partial

full + single partial

P24

standard

full + multiple partial

TWINT

standard

full + multiple partial

WeChat Pay

standard

full + multiple partial

iDEAL

standard

Wero

standard

full + multiple partial

2.3.4. Anti Financial Crime check

Payment transactions underlie regulations and policies to prevent money laundering and other financial crimes.

Within DB Merchant Solutions REST API payment transactions may therefore be blocked due to Anti Financial Crime (AFC) checks.

This results in specific response codes which are listed in Response codes.

2.4. Aliases and recurring payments

2.4.1. Aliases referencing sensitive data

Within DB Merchant Solutions REST API an alias is a reference to a means of payment. A means of payment is an instance of a payment method which contains a legal contract for processing money transactions, for example a credit card, bank account, or a PayPal account.

While modern means of payment (made for ecommerce) prevent misuse by requiring customer authentication, the traditional means of payment credit card and SEPA bank account can be subject to fraud, if their data (PAN or IBAN) falls into the wrong hands. Therefore, this sensitive data must be handled with special care. For credit card this manifests in the PCI DSS regulation.

For traditional means of payment, an alias is a way to reduce the due dilligence effort for a merchant who wants to store a customer’s credit card or bank account for later usage (for example, to offer a "pay with" link for checkout).

The alias for the means of payment is created on a website hosted by DB Merchant Solutions REST API. The customer enters the sensitive data there, and only the alias is provided to the merchant. Therefore, the due diligence, as demanded by PCI DSS, lies with DB Merchant Solutions.

The alias is used in several endpoints of DB Merchant Solutions REST API to initialize payments.

2.4.2. Recurring payments

For credit card and SEPA direct debit (bank account), a merchant can withdraw money from the customer using the payment API without further customer interaction or permission. For credit card, this is legally possible for Mail Order/Telephone Order (MOTO) transactions (where the customer permission has been given but not technically proven).

In all other situations, the merchant has to provide a billing agreement of the customer to initialize merchant initiated transactions (MIT). These billing agreements must be authorized by the customer.

Billing agreements are used to authorize recurring payments. These may be withdrawn periodically by the merchant for a magazine subscription or a periodical service, or on an unscheduled basis with a varying amount.

For SEPA direct debit the billing agreement is called SEPA mandate. The merchant is responsible for getting it from the customer and to comply with regulation.

For credit card, the billing agreement is accomplished by an initial transaction authorized by the customer. A reference to the initial transaction is used in (subsequent) MIT transactions, together with the corresponding credit card alias.

The initial transaction may involve a money transfer (authorization or pre-authorization) itself, or may consist of the authorization for the billing agreement alone.

The latter case is associated with the transaction kind verify means of payment (verify MOP).

2.4.3. Alias referencing a billing agreement

Modern payment methods, like PayPal or Klarna, don’t require an alias as a reference to sensitive data: Customers simply have to log in to their account and authorize the payment there.

Here, aliases are referencing billing agreements:

For the payment methods PayPal and Klarna the customers authorize the payment method to withdraw payments from their account. The technical reference to the authorization is stored within DB Merchant Solutions REST API and is referenced by the alias. The alias is used in the payment API to initialize MIT.

As for credit card, the authorization for a billing agreement may be contained in an initial money transaction (authorization or pre-authorization) or not. The latter case is also associated with the transaction kind verify MOP (verify-mop).

For Google Pay and Apple Pay are wallets which contain customers' credit cards. Here, the customers authorize access to their credit card which then are used to create the initial transaction which authorizes recurring payments (see Recurring payments).

2.4.4. API usage

Creation of aliases

Aliases can be created in the following ways (supporting different payment methods):

  1. Alias API for credit card and bank account.

  2. Alias endpoints in Form service: bank account, credit card.

  3. Using the field alias_action in the payment method specific endpoints of Form service: direct debit, credit card, PayPal, and Klarna.

    For PayPal and Klarna, the alias references a billing agreement which can be used for an MIT (see Alias referencing a billing agreement).

    The transaction kind tx_action = verify-mop is used to create an alias without initial transaction.

  4. Widget Solution for PayPal, Google Pay, and Apple Pay.

  5. Headless 3-D Secure endpoints for credit card.

For credit card, the initial transaction for recurring payments can be created using 3, 4 (via Google Pay or Apple Pay) or 5.

Refer to the payment method specific documentation in Payment methods for details.

Using an alias for MIT

The payment method specific endpoints in the Payment API are used to authorize MIT: credit card (including Google Pay and Apple Pay), Klarna, and PayPal.

Inspecting and deleting alias

The Alias API is used to inspect or delete aliases.

For Aliases referencing sensitive data some additional endpoints are contained in the Alias API.

3. Integration types

DB Merchant Solutions REST API offers five integration types for payments for a merchant:

Integration types provide different approaches to integrate payment services into a merchant’s E-Commerce application. This chapter describes various aspects of the integration. Common aspects are described in the User guide.

The following table presents a brief comparison of the five payment integration types.

Shop plug-ins Form service iFrame Service Widget Solution Direct integration

Supported payment methods

credit card, direct debit, PayPal, Request to Pay, Google Pay, Apple Pay, iDEAL

credit card, direct debit, PayPal, Request to Pay, Google Pay, Apple Pay, Klarna, P24, TWINT, WeChat Pay, iDEAL, Wero

credit card, direct debit

Google Pay, PayPal, Apple Pay

credit card (including Google Pay and Apple Pay), direct debit, Klarna

OpenAPI label(s)

not applicable

Forms, Payment Link

iFrame

Widget Solution

Payment, Google Pay, Apple Pay, Headless 3-D Secure

Basic idea

For merchants who already use one of the supported shop-systems.

For entry of sensitive payment data, the merchant will redirect the customer to a customizable frontend page of DB Merchant Solutions. After receipt of the necessary information, the DB Merchant Solutions frontend will carry out the transaction and redirect the customer back to the merchant’s page.

The merchant can embed specific elements of the DB Merchant Solutions frontend into their own web page. Entry of sensitive data is done in these elements so that they can be sent to DB Merchant Solutions without the merchant ever being in contact with it. After receipt of the data by DB Merchant Solutions, the merchant will be informed and can trigger the transaction processing towards DB Merchant Solutions via an API call.

The merchant can embed a widget into their own web page, which opens a modal dialogue for paying with the chosen payment system.

The merchant is only integrated to DB Merchant Solutions at the backend. All use cases are triggered via an API call. It is the merchant’s responsibility to collect all relevant payment data via their own frontend.

PCI DSS compliance level required when supporting credit cards

SAQ A

SAQ A

SAQ A-EP

SAQ A-EP

SAQ D-Merchant

Complexity of integration

Only installation and configuration of plug-in necessary.

Integrate API to DB Merchant Solutions backend. Also minimal redirect logic at the frontend.

Integrate API to DB Merchant Solutions backend. Also integrate DB Merchant Solutions elements directly into merchant’s web page.

Integrate API to DB Merchant Solutions backend. Also integrate DB Merchant Solutions elements directly into merchant’s web page.

Only integrate API to DB Merchant Solutions backend.

Customization

DB Merchant Solutions pages can be minimally customized.

DB Merchant Solutions pages can be customized, the basic structure is fixed.

DB Merchant Solutions elements can be customized. The merchant can freely decide on the integration of these elements in their own web page.

The frontend is completely under control of the merchant.

The frontend is completely under control of the merchant.

Additional functionality offered by DB Merchant Solutions REST API, like eScoring services and management functionality for risk management, can be integrated directly by calling the corresponding REST endpoints. In the OpenAPI specification, these can be found under the labels Alias, eScore, Info, and Risk Management.

SDKs for web and mobile development. DB Merchant Solutions REST API provides web software development kits (SDKs) for web shops for the languages

  • C#

  • Go

  • Java

  • PHP

  • Ruby

to facilitate the development. The SDKs contain a client implementation which supports among others

  • easy authentication

  • high-level requests which encapsulate REST requests

  • convenience methods for dealing with IDs.

The following example shows a Form service request for an SDD payment with the Java SDK.

   // create configuration
Configuration configuration = new Configuration(CLIENT_ID, CLIENT_KEY_TEST);
configuration.setMerchantId(MERCHANT_ID);
configuration.setApiBase(BASE_URL_TEST);
configuration.setDefaultCurrency("EUR");
// initialize client and authenticate
DirectposClient client = DirectposClient.create(configuration);
// create forms payment
FormPayment payment = client.payment()
	.build()
	.amount(100)
	.forms()
	.callback(new Callback(CALLBACK_URL))
	.formCustomerContinuation(new FormCustomerContinuation(SUCCESS_URL))
	.use()
	.directDebit()
	.mandate(new Mandate("MDT1620213727383XY", LocalDate.of(2020, 12, 30), MandateType.PROVIDED))
	.use()
	.create().toFormPayment();

The web SDKs support all payment methods except iDEAL.

DB Merchant Solutions REST API also provides mobile SDKs, which facilitate integrating Google Pay on Android devices and Apple Pay on iOS devices.

Contact Deutsche Bank customer support to obtain them.

3.1. Shop plug-ins

DB Merchant Solutions REST API offers plug-ins for the following shop systems:

All shop plug-ins support the following payment methods:

  • Credit card

  • SEPA direct debit

  • PayPal

  • Request to Pay

  • Sofortüberweisung

  • Google Pay

  • Apple Pay

  • iDEAL.

To install a shop plug-in, follow the instructions in the included file readme.en. Typically, the integration requires only the following steps:

  1. Upload the module to the shop server plug-in directory and grant permissions.

  2. Activate the plug-in in the backend.

  3. Enter client_key and client_secret as configuration parameters.

  4. Configure certain payment methods parameters as desired.

See the readme.en and the tooltips on the configuration page for more information.

3.2. Form service

The Form service integration type requires minimal integration effort for the merchant: For the payment (or payment-related) process, the customer communicates directly with DB Merchant Solutions. DB Merchant Solutions handles all necessary communication with the customer and the backend systems. After the transaction, the transaction result and all necessary information are passed to the merchant and the browser session is returned to the merchant’s website. For details, see Course of transaction.

DB Merchant Solutions Form service offers two main functionalities:

  1. Form service with choice of payment method (checkout page): Using the checkout endpoint, display a (highly configurable) checkout page where the customer may select a payment method. The customer then has to enter specific information for the chosen payment method in a specific form.

  2. Form service for an already selected payment method: Using one of the dedicated endpoints under /form, directly display the form for the payment method. This can be used for shops where the customer has already selected the payment method at the shop.

The following image shows the checkout page and the forms after selecting SDD or credit card.

Checkout standard

3.2.1. Selection of payment methods in the checkout page

The customization which payment methods shall be displayed is done in the field checkout_page_configuration of the checkout endpoint:

  • For each payment method offered, set the field <payment_method>_data. For example, to offer paying by credit card, SDD, or PayPal, set the three fields credit_card_data, direct_debit_data, and paypal_data. The field <payment_method>_data typically contains additional fields specific to the payment method, but may also contain no fields, indicating that the payment method shall be offered but does not have additional parameters.

  • For each payment method offered, add the corresponding entry to the field checkout_entry_sorting_order to indicate its display position (from top to bottom). In the example above, "checkout_entry_sorting_order": ["CREDITCARD", "DIRECTDEBIT", "PAYPAL"] displays the payment options from top to bottom as credit card, direct debit, and PayPal.

    Due to guidelines for the integration of Google Pay, this payment method is always displayed at the top of the list. checkout_entry_sorting_order applies only to the remaining entries.

3.2.2. Supported currencies

When using the checkout page, the transaction currency must be supported by all payment methods the merchant wants to be displayed so that the user experience during checkout is not negatively affected.

For example, DB Merchant Solutions REST API will return an error message if a merchant submits a transaction in USD and one of the offered payment methods supports only transactions in EUR.

3.2.3. Transaction kinds

DB Merchant Solutions REST API supports the payment methods shown in Supported transaction kinds. Via the Form service, the initial transaction kinds authorization, pre-authorization, and verify MOP are supported. The transaction kinds pre-authorization and verify MOP are supported in the checkout page only if all offered payment methods support this transaction kind.

For subsequent transactions, that is capture, reversal, and refund, use the general subsequent transaction endpoint.

Note that the transaction kind credit is only supported via the Payments API.

3.2.4. The Form service and PCI DSS

Since the forms in which a customer enters their credit card details are hosted by DB Merchant Solutions REST API and not the merchant, the merchant does not need to store the credit card details. This allows to save time and costs by not having to participate in the “Payment Card Industry Data Security Standard” (PCI DSS) program by Visa and Mastercard as the participation in the PCI program happens centrally via DB Merchant Solutions.

3.2.5. Use of cookies

The Form service uses session cookies to support navigation through the different forms. These session cookies are first-party cookies and are strictly necessary in the sense of the General Data Protection Regulation (GDPR), which is applicable in the European Union and the UK. As the cookies do not gather personal information, a user consent therefore is not required.

3.2.6. Customization

The display of the payment method selection and the payment method specific forms are customizable:

  1. Set the labels to different languages by using the corresponding locale. Moreover, custom labels are supported by directly specifying the label. For the supported labels see FormLabel and the following examples.

  2. Use CSS form theme properties to alter the appearance of the forms. For the supported theme properties see section FormThemeProperty and the following examples. In particular, use the key SHOP_LOGO_VISIBLE to display a configured shop logo and SHOP_NAME_IN_HEADLINE to display the shop name in the headline.

Example: Using locale = de

When setting locale = de, all pages displayed by the Form service have German labels and messages. For example, the checkout page and the forms for SDD and credit card appear as follows.

Checkout german
Example: Using custom labels

When setting locale = de and using custom labels (see below), the appearance is as follows.

Checkout custom

Note that the German title has been replaced by "TITLE_CHECKOUT", the cancel button has the label "LABEL_CANCEL", and similarly for the other labels.

This can be achieved by submitting in form_data.label the corresponding key-value pairs, in the above case as follows.

"form_data": {
    "locale": "de",
    "label": [
        {"key": "TITLE_CHECKOUT", "value": "TITLE_CHECKOUT"},
        {"key": "LABEL_CANCEL", "value": "LABEL_CANCEL"},
        {"key": "TITLE_PAYMENT_DATA", "value": "TITLE_PAYMENT_DATA"},
        {"key": "LABEL_AMOUNT", "value": "LABEL_AMOUNT"},
        {"key": "LABEL_DATE", "value": "LABEL_DATE"},
        {"key": "LABEL_MERCHANT", "value": "LABEL_MERCHANT"},
        {"key": "LABEL_IBAN", "value": "LABEL_IBAN"},
        {"key": "LABEL_NAME_ON_CARD", "value": "LABEL_NAME_ON_CARD"}
   ]
}

The other possible labels can be used to customize the appearance of subsequent dialogues. For example, when a customer cancels the payment, the following labels can be customized:

Cancel labeling
Example: Using form theme properties

To change theme properties of the forms, for example the font family, set the corresponding selector to the desired value.

The following snippet will display a monospaced font in the forms:

"form_data": {
    "theme_properties": [
        {"selector": "GLOBAL_FONT_FAMILY", "value": "monospace"}
    ]
}
Form monospace
Example: Display a shop logo and the shop name in the headline

To display a shop logo and a shop, upload a shop logo and set the corresponding selectors as follows.

"form_data": {
    "theme_properties": [
        {"selector": "SHOP_LOGO_VISIBLE", "value": true},
        {"selector": "SHOP_NAME_IN_HEADLINE", "value": true}
    ]
}
Checkout page with logo and shop name in headline

The logo will be displayed during the following Form service calls:

  • checkout page (all payment methods)

  • credit card

  • SDD

  • Klarna.

3.2.7. Payment method specific information

Credit card transactions
3-D Secure transactions and the uplift feature

Whenever possible, credit card payments are carried out as 3-D Secure transactions. In this case the communication with the Visa Directory and the Access Control Server (ACS) (see section Course of transaction) takes place between step 7 and step 8 of the subsequent diagram and is not shown in the illustration. In the case of the Form service all activities specific to the 3-D Secure procedure are handled by DB Merchant Solutions without involving your application.

For 3-D Secure transactions, the fields given in 3DS required fields are required. The Form service supports the so-called uplift feature for missing fields. This feature determines the technical fields (device_information: ip_address, http_browser_screen_height, and http_browser_screen_width) and requests any missing non-technical fields (such as email and billing_address) from the customer by displaying additional input fields.

3.2.8. Course of transaction

The course of transaction for the different payment methods or services is similar but not quite identical.

Form service

The following diagram shows a simplified course of transaction of the Form service in a sequence diagram. For simplification the merchant’s application is called shop and in the following is highlighted in bold.

Further details regarding the individual steps are given below.

seq formservice
Simplified Form service course of transaction
  1. The customer makes a purchase in the shop and starts the payment or payment-related process.

  2. The shop generates a request and sends a request to DB Merchant Solutions, see Initializing the Form service payment for details.

  3. In its response DB Merchant Solutions sends the Form service URL to the shop. If there is an error DB Merchant Solutions sends an error message to the shop instead.

  4. The shop sends a redirect to the Form service URL to the customer’s browser.

  5. The customer’s browser redirects to the Form service URL.

  6. DB Merchant Solutions displays a website to provide necessary details about the transaction by the customer. respectively for the customer.

  7. The customer provides the necessary information to DB Merchant Solutions.

  8. DB Merchant Solutions Processes the transaction.

  9. DB Merchant Solutions notifies the shop about the transaction result. The URL supplied in the initialization request is used for this (notify_url). This step and step 10 are skipped if you submit the skip parameter in the initial request. In this case your application has to send a status request to DB Merchant Solutions for finding out the outcome of the payment. For details see Callback and diagnosis request.

  10. The shop confirms receipt of the notification.

  11. As response to step 7 DB Merchant Solutions sends a success or error page with a link to the shop to the customer’s browser. The URL of this link is supplied in the initialization request: depending on the outcome of the payment and the notification of the shop, one of successURL, errorURL or notificationFailedURL is used). Alternatively, if specified in the initialization request, DB Merchant Solutions sends a redirect to the shop to the customer’s browser.

  12. The customer clicks the link “back to the shop”, or the customer’s browser redirects to the shop.

  13. The shop displays the transaction result for the customer.

Details on the individual steps:

  1. In some situations, DB Merchant Solutions communicates with a backend system, for example to create an order entity.

  1. In some situations, the redirect URL points to a payment method’s website and not to DB Merchant Solutions

  2. The communication may be more complex than just submitting a form.

  3. In most cases, processing includes communication with the backend systems. In some cases further customer interaction is involved.

Handling of timeouts

If a timeout occurs in step 7, that is the customer does not complete providing the required information within 30 minutes, DB Merchant Solutions notifies the shop as in step 9 about the timeout.

If the customer continues the dialogue after that time, they get an error message.

3.2.9. Initializing the Form service payment

You transfer the transaction data without the data of the payment method and receive a link (Form service URL) to DB Merchant Solutions as response (see an example below and Forms for details). Then you send a redirect to the Form service URL to your customer. This may be via HTTP redirect header, an HTML page with a meta tag, or a JavaScript form. The payment is made once DB Merchant Solutions has displayed for the customer the form to enter the credit card details and bank details respectively, and the completed form has been returned to DB Merchant Solutions.

Already when initializing the payment your application transmits up to 3 URLs to DB Merchant Solutions, which DB Merchant Solutions directs the customer to after concluding the payment. Which one of the supplied URLs is used depends on the outcome of the payment.

Required fields
Alias

If your account is configured to use card number aliases you can

  • register a card number alias together with the payment by submitting the field alias_action with the action CREATE. Enter the desired alias in alias. If you leave alias empty, DB Merchant Solutions will generate a card number alias for you.

  • register a credit card number alias without a payment. By submitting the tx_action verify-mop and an amount of 0 you can tell DB Merchant Solutions to display the text for registering a card number alias in the form. Set additional_data to a unique value to later match the callback (see Callback and diagnosis request) to the initial request.

  • carry out a payment with a card number alias you have already registered. To do so, submit the card number alias in the means_of_payment alias field. DB Merchant Solutions will find the details of the credit card or bank account corresponding to this alias and display these in the payment form. In this case, the only remaining input field the customer has to fill out is the card number verification code in the case of a credit card payment.

Credit card 3-D Secure 2.1 or 2.2 transactions

Submit credit_card_data.tds_20_data to carry out a 3-D Secure 2.1 or 2.2 credit card payment. tds_20_data includes numerous 3-D Secure related parameters some of which are optional. The credit card issuer uses many of these parameters to assess the risk of a payment default and to decide if the cardholder is required to carry out a two-factor-authentication. We recommend submitting these parameters as far as the data are available. Information about the cardholder (parameters in cardholder_account_info) and the shipping address (parameters in shipping_address inside customer_data) are especially important. You can contact Deutsche Bank customer support if you have further questions about the parameters. In the case of recurring payments it is possible to carry out the first transaction as a 3-D Secure 2.1 or 2.2 payment and the subsequent transactions without 3-D Secure.

Recurring 3-D Secure 2.1 or 2.2 payments require additional parameters:

  • series_flag: possible values: RECURRING, for example in the case of a subscription or standing order or UCOF when a card number alias is created for future payments with the same credit card. In this case use alias_action with the action CREATE with the first payment and the card number alias with the following payments. You can specify the tx_action verify-mop for the first UCOF transaction to register a card number alias without a payment.

  • sequence_type: possible values: FIRST for the first payment, RECURRING for the following payments, FINAL for the last payment.

  • recurring_payment: recurring payment identifier. Optional field for the first payment. If not submitted DB Merchant Solutions generates an identifier. The field recurring_payment that is contained in the response of the first payment has to be submitted with all following payments of this recurring payment.

  • recurring_expiry in transaction_attributes: date after which no further authorizations shall be carried out.

  • recurring_frequency in transaction_attributes: minimum number of days between authorizations

PayPal

The optional field paypal_data currently is only reserved for future use.

Example: Request body to initiate a Form service direct debit payment and response

See SDD request example for an example of a request to initiate a SDD transaction. Redirect the customer to the redirect_url contained in the reponse.

3.2.10. Processing after transaction

With Form service, a transaction is initialized by a merchant, but the necessary customer interaction is handled by a hosted page of DB Merchant Solutions.

After the transaction, two things have to be done:

  1. Pass the control back to the merchant’s website ("redirect"),

  2. inform the merchant’s backend about the outcome of the transaction (success or error).

Mind, that 2. should not depend on 1. to make sure that the merchant is informed even if (for example) the browser is closed.

All requests in Forms API contain the fields form_customer_continuation referring to 1. and callback referring to 2.

Redirect to merchant’s website

To pass the control from DB Merchant Solutions to the merchants' website, three redirect URLs are specified in the field form_customer_continuation:

  • success_url for successful transaction (required),

  • error_url if the transaction failed,

  • notification_failed_url if the callback notification failed. In this case, the transaction itself may have succeeded or failed. To distinguish these two cases, the merchant had to call the diagnosis request to inform the customer correctly.

    notification_failed_url is not used for "skip": true in Callback.

error_url and notification_failed_url to success_url if omitted.

form_customer_continuation also has the subfield redirect. When set to true, the redirect takes place directly after the transaction. When set to false, the customer is shown an intermediary page (hosted by Form service) which contains a link to the redirect url. The behaviour for the payment link endpoint is different (see Using a payment link).

The field form_customer_continuation is required in all endpoints of Form service, but not for the payment link endpoint (see Using a payment link).

Callback and diagnosis request

To get notified about the outcome of the transaction merchants may either

  • use the Callback mechanism get a message from DB Merchant Solutions to a URL they provide ("push"), or

  • use diagnosis request to "pull" the information themselves (mind the restriction on the number of requests given there).

Both is configured in the field callback of the request bodies of the Form service: notify_url contains the merchant’s endpoint for push. If pull is used, the callback must be skipped by setting "skip": true. In this case notify_url can be omitted.

The field callback is required in all endpoints of Form service, and also in the payment link endpoint (see Using a payment link).

In case of using the callback option, the endpoint (with URL notify_url) needs to be implemented according to the description in Callback. Make sure to verify the integrity of the callback by verifying its signature, see Verifying callback requests for details.

The parameter event_id (available for all requests except for creating an alias) is used to match the callback with the corresponding initialization request. The parameter callback.additional_data (available for all requests) is also returned in the callback request and can be used for matching. When using callback.additional_data, make sure to set a unique value.

The event_id is also used to identify the transaction in the diagnosis request (also see Diagnosis request).

Background

The Form service endpoints support an immediate payment by the customer. For some use cases, it is desirable to have a delayed payment.

For example, a merchant may request payment after shipping by sending an email containing a payment link which directs the customer to a Form service endpoint. Similarly, a merchant may send a printed invoice which contains this link as a QR code.

The payment link supports the same payment methods as the Form service. These are:

  • credit cards: Mastercard and Visa

  • Google Pay

  • Apple Pay

  • SEPA Direct Debit (SDD)

  • PayPal

  • Request to Pay

  • Klarna

  • P24

  • WeChat Pay

  • iDEAL

  • TWINT

  • Wero.

The payment link supports the transaction kinds authorization and pre-authorization.

DB Merchant Solutions REST API provides the following "create, read, update, delete" functionality for payment links:

  • Create a payment link. The created payment link directs the customer either to the checkout page with payment method selection or directly to a payment method specific form.

  • Get information about a payment link.

  • Update a payment link.

  • Deactivate a payment link.

Use the create payment link endpoint to receive a link to a Form service checkout page on which the customer may pay.

Fields of the request

The request body of the endpoint has the following fields:

  • All the fields of the Form service checkout page. In particular, all payment methods and all customizing options which are available in the Form service checkout page can also be used for the payment link.

  • expires: specifies until when the payment link is valid and usable. expires must be in the future and must not be more than 60 days in the future.

The following fields are required:

  • amount_total with the subfields amount and currency being set,

  • checkout_page_configuration,

  • expires,

  • callback.

The handling of the field form_customer_continuation differs from the Form service endpoints:

form_customer_continuation is not required. If the field is omitted, a message "You may close the window now." is displayed after the transaction.

The other fields are either required depending on the offered payment methods or optional. They allow for customization and an enhanced customer experience. See Form service required fields for which fields are required.

Course of transaction

When a customer uses a payment link, DB Merchant Solutions REST API behaves as follows:

  • If the link is expired, has been deactivated, or the corresponding payment has already taken place, DB Merchant Solutions REST API displays a corresponding message to the customer. In particular, the payment is no longer possible.

  • Otherwise, DB Merchant Solutions REST API proceeds as follows:

    • If only one payment method is offered by the payment link, DB Merchant Solutions REST API directly displays the corresponding form of the payment method without a prior selection of payment methods. Note that Apple Pay is available on Safari devices only, which is why when a payment link with only Apple Pay as a payment method will result in an error on non-Safari devices.

    • Otherwise, that is more than one payment method is offered by the payment link, DB Merchant Solutions REST API will display the DB Merchant Solutions REST API checkout page with payment method selection.

In both cases, the transaction proceeds as the corresponding Form service transaction. In particular, set callback.notify_url to receive a callback about the outcome of the payment or set callback.skip = true to not receive such a callback (in this case, use the payment link information endpoint to get information about the status of the payment link).

Use the payment link information endpoint to retrieve information about the payment link. In particular, payment_link_info.status will contain the status of the payment link (initialised, deactivated, expired, or payment successful) and payment_link_info.expires the expiry date and time.

Use the update payment link endpoint to set a new validity period (parameter expires).

Use the deactivate payment link endpoint to deactivate (immediately) a payment link.

3.3. iFrame Service

The iFrame Service offers almost complete control over the appearance of the form into which your customers enter their credit card or bank account details as well as the benefit that your shop does not get into contact with the means of payment details. Generally this makes it considerably easier for your shop to comply with the "Payment Card Industry Data Security Standard" (PCI DSS).

3.3.1. Course of transaction

The following diagram shows an example of a payment transaction in the form of a sequence diagram.

seq iframeservice
iFrame Service course of transaction

The transaction proceeds as follows:

  1. The customer makes a purchase in the shop and starts the payment process.

  2. The shop initializes the payment with DB Merchant Solutions.

  3. In the response DB Merchant Solutions sends a session ID and configuration data to the shop.

  4. The shop displays a page to the customer which contains placeholders for the input fields of the means of payment details and JavaScript code.

  5. This page requests a JavaScript file from DB Merchant Solutions.

  6. DB Merchant Solutions sends the JavaScript file to the customer’s browser.

  7. With the help of this JavaScript file the browser replaces the placeholders with iframes to enter the means of payment details.

  8. The customer enters the means of payment details and submits the form.

  9. DB Merchant Solutions stores the means of payment details.

  10. DB Merchant Solutions sends a token to the customer’s browser.

  11. The browser sends the token to the shop.

  12. The shop sends all data required for payment, including the token, to DB Merchant Solutions.

  13. DB Merchant Solutions processes the payment.

  14. DB Merchant Solutions sends the result of the payment to the shop.

  15. The shop displays the payment result to the customer.

For credit card or Maestro payments with 3D Secure, additional steps take place which are not shown in the diagram. You do not have to consider these additional steps during integration.

To integrate the iFrame Service, your shop has to send requests to the DB Merchant Solutions REST API (step 2 and step 12).

Moreover you have to implement HTML and JavaScript code to enable DB Merchant Solutions to display the iframes with the input fields and to enable DB Merchant Solutions to create a token with the customer’s means of payment data.

The details are described in the following sections.

3.3.2. Use of cookies

The iFrame Service uses session cookies, which are first-party cookies and are strictly necessary in the sense of the General Data Protection Regulation (GDPR), which is applicable in the European Union and the UK. As the cookies do not gather personal information, a user consent therefore is not required.

3.3.3. Payment initialization

See Services API for details about the request and response entities to initialize an iFrame Service interaction. See iFrame Service initialization example for an example request.

The response will contain the fields client_session, client_configuration, rc, and message.

The values of the response parameters client_session and client_configuration are required for the JavaScript code of the payment form.

3-D Secure 2.1 or 2.2

Set the tds_20_data values (in IFrameInitializeRequest) to carry out a 3-D Secure 2.1 or 2.2 transaction.

See 3DS required fields for the required and optional subfields of tds_20_data. The credit card issuers use many of these parameters to assess the risk of a payment default and to decide if the cardholder is required to carry out a two-factor-authentication.

We recommend submitting these parameters if available. Information about the cardholder and the shipping address (in TDS20CustomerData) is especially important. You may also contact your acquirer if you have further questions about the parameters.

The 3-D Secure 2.1 or 2.2 related parameters are subject to change of the EMVCo 3-D Secure specification.

Obtaining the CVV for credit card aliases

DB Merchant Solutions REST API supports creating aliases for credit card numbers, see Aliases. For security reasons, DB Merchant Solutions is not permitted to store the card verification value (CVV) with an alias for a credit permanently. Only short-term storage is possible.

To obtain the CVV for a credit card alias and then conduct a credit card payment, use the iFrame Service as follows.

  1. Initialize an iFrame service interaction as for a credit card transaction, in particular regarding 3-D Secure 2.1 or 2.2.

  2. In the HTML page (see Necessary HTML), insert a div with ID iframeCvc.

  3. In the JavaScript (see Necessary JavaScript), set type to aliasCreditCard.

  4. To pay (see Paying with the received token), use the credit card payment endpoint and set the parameters as follows:

    • alias_action.action = USE and alias_action.alias to the alias to be used

    • means_of_payment to the received token.

For bank account aliases, a CVV is not necessary.

3.3.4. Necessary HTML

Provide an HTML element for every input field that has to be replaced by an iframe, for example a div with an ID. With the ID you can reference the element in the JavaScript code in the options object (see Options).

If you accept both credit card and direct debit payments, you can either create separate forms for credit card and bank account details or a combined form for both transaction kinds. In the latter case the customer decides if they want to pay by credit card or direct debit by filling out the credit card or bank account details in the form.

The following example shows an excerpt from an HTML form for credit card details. In the div elements with the IDs iframeHolder, iframePan, iframeExpiry, and iframeCvc, DB Merchant Solutions will inject iframes later.

iFrame HTML structure
<form action="/shop-receive-token" id="panForm">
    <div>
        <div>
            <label for="iframeHolder">Card holder</label>
            <div id="iframeHolder"></div>
        </div>
    </div>
    <div>
        <div>
            <label for="iframePan">Card number</label>
            <div id="iframePan"></div>
        </div>
    </div>
    <div>
        <div>
            <label for="iframeExpiry">Expiry date</label>
            <div id="iframeExpiry"></div>
        </div>
        <div>
            <label for="iframeCvc">Card verification code</label>
            <div id="iframeCvc"></div>
        </div>
    </div>
</form>

3.3.5. Necessary JavaScript

Your HTML page to enter the means of payment details has to load the JavaScript file integration.js from DB Merchant Solutions. You can implement this for example by means of a script tag:

<script src="https://merch.directpos.de/web-ifs/assets/1.2/integration.js"></script>

The script is also available on the test system under the following URL:

You can initialize this script for example like this:

document.addEventListener("DOMContentLoaded", function (event) {
  //...
  var options = {
    //...
  };
  integration.initialize(options).then(function (ifsInstance) {
    //do something...
  });
  //...
});

The options object mentioned in the example is described below in Options.

You can use instead jQuery to integrate integration.js as follows:

$.getScript("https://testmerch.directpos.de/web-ifs/assets/1.2/integration.js", function () {
  //...
  var options = {
    //...
  };
  integration.initialize(options).then(function (ifsInstance) {
    //do something...
  });
  //...
});
Options

The options object consists of the following fields:

  • client_session is the session ID

  • client_configuration contains encoded configuration data

You received the values of these two fields from DB Merchant Solutions in the response of the initialization.

  • type contains the type of means of payment, either creditCard for credit card or Maestro payments, bankAccount in the case of direct debit transactions or aliasCreditCard if the payment is carried out with an alias for a credit card.

  • fields: see Fields

  • styles: see Styling

  • acs_window optional, for credit card payments. Contains the fields width and height (see Examples). You can specify width and height (in pixels) of the pop-up window which the Access Control Server (ACS) displays to the customer to authorize a 3-D Secure payment. If not specified, a square window with width and height of 400 pixels will be displayed.

var options = {
  clientSession: clientSession,
  clientConfiguration: clientConfiguration,
  type: typeOfPayment,
  fields: {
    //...
  },
  styles: {
    //...
  }
};
Fields

This object is used to configure the input fields. Which input fields have to be included in fields depends on the type of means of payment (parameter type), see below.

See Parameters for each input field for which parameters need to be configured for each input field.

See Examples for examples of each type.

type creditCard
  • number: card number. Up to 19 digits. integration.js includes spaces to improve readability.

  • expiry: month and year of the expiration date of the card, formatted MM/YY.

  • code: card verification code. Three to four digits.

  • holder: name of the cardholder.

The fields number and expiry are required.

For a standard transaction, that is, in the initialization of the iFrame Service the field processing_options was not set, the field code is required. For a mail order / telephone order transaction, that is, in the initialization of the iFrame Service the field processing_options was set to MOTO, the field code is not required.

The field holder is not required in the form for credit card or Maestro payments.

type bankAccount
  • holder: name of the account holder.

  • iban: international bank account number IBAN. Up to 34 characters. integration.js includes spaces to improve readability.

  • bic: business identifier code BIC. 11 characters. Only has to be filled out if the customer has a bank account in a SEPA country outside the EU.

If your shop accepts international direct debit transactions, all three fields have to be present in the form. For German direct debit transactions the field for the BIC is not required.

type aliasCreditCard
  • code: card verification code. Three to four digits.

Parameters for each input field

The following parameters serve to configure the input fields:

  • selector: required. Used to reference the placeholder for the iframe.

  • placeholder: text of the placeholder attribute in the input field. If not provided, no placeholder text will be displayed.

  • required: applicable for the credit card fields code (for non-MOTO transactions) and holder. An input value is required if true. Possible values: true, false. Defaults are true for code and false for holder.

Styling

You can use CSS to design the forms as you like. You cannot style the content of the iframes directly via CSS, but you can inject CSS specifications into the iframe via JavaScript. To do so, specify the CSS rules as JSON object and add the styles parameter to the injected configuration object. See Examples for an example.

CSS classes

The iFrame Service uses the following CSS classes for the input fields:

Table 1. CSS classes
CSS class Explanation

ifs-valid

denotes a field with valid input

ifs-invalid

denotes a field with invalid input

ifs-potentialvalid

denotes a field with possibly valid input

ifs-not-accepted

denotes a field with input that is not accepted, for example credit card brand

ifs-focused

denotes a field which has the focus

ifs-required

denotes a required field

CSS attributes

The iFrame Service supports the following CSS attributes to format the iframes.

Table 2. CSS attributes
CSS attribute

-moz-appearance

-moz-osx-font-smoothing

-moz-tap-highlight-color

-moz-transition

-webkit-appearance

-webkit-font-smoothing

-webkit-tap-highlight-color

-webkit-transition

appearance

color

background

background-color

background-image

background-origin

background-position

background-repeat

background-size

background-attachment

direction

font

font-family

font-size

font-size-adjust

font-stretch

font-style

font-variant

font-variant-alternates

font-variant-caps

font-variant-east-asian

font-variant-ligatures

font-variant-numeric

font-weight

letter-spacing

line-height

opacity

outline

text-shadow

transition

Examples
Credit card
var options = {
  clientSession: clientSession,
  clientConfiguration: clientConfiguration,
  type: 'creditCard',
  fields: {
    holder: {
      selector: '#iframeCardholder', placeholder: 'Max Mustermann',
      required: false
    },
    number: {selector: '#iframePan', placeholder: '4111 1111 1111 1111'},
    code: {selector: '#iframeCvc', placeholder: '246'},
    expiry: {selector: '#iframeExpiry', placeholder: 'MM/YY'}
  },
  acs_window: {
    width: 700,
    height: 600
  }
};

The following image shows an example form after the execution of the integration.js script.

ifs creditcard empty
Example form after the execution of integration.js
Bank account
var options = {
  clientSession: clientSession,
  clientConfiguration: clientConfiguration,
  type: 'bankAccount',
  fields: {
    holder: {selector: '#iframeAccountHolder', placeholder: 'Max Mustermann'},
    iban: {selector: '#iframeIban'},
    bic: {selector: '#iframeBic'}
  }
};
Alias credit card
var options = {
  clientSession: clientSession,
  clientConfiguration: clientConfiguration,
  type: 'aliasCreditCard',
  fields: {
    code: {selector: '#iframeCvc', placeholder: '246'},
  },
  acs_window: {
    width: 700,
    height: 600
  }
};
Styling

The following example shows how the CSS rules are defined and added to the options object.

var styles = {
  "input": {
    "font-size": "16px",
    "color": "#444444",
    "font-family": "monospace"
  },
  ".ifs-valid": {
    "color": "Green"
  },
  ".ifs-invalid": {
    "color": "Crimson"
  },
  ".ifs-not-accepted": {
    "color": "DarkGoldenRod"
  }
};

var options = {
  clientSession: clientSession,
  clientConfiguration: clientConfiguration,
  type: 'bankAccount',
  fields: {
    holder: {selector: '#iframeAccountHolder', placeholder: 'Max Mustermann'},
    iban: {selector: '#iframeIban'},
    bic: {selector: '#iframeBic'}
  },
  styles: styles
};
Events

The iFrame Service uses JavaScript events extensively. You can handle the following events in your script:

Table 3. Events
Event Explanation Example of use

cardBrandChange

the credit card brand changed

display an image of the card brand

ibanTypeChange

the country of the IBAN changed

display the flag of the country

validationChange

the validation status of an input field changed

change the colour of the input field

formValidationChange

the validation status of the entire form changed

change the colour of the form

focusChange

the focus of an input field changed

change the colour of the input field

activeStateChange

the state of the form changed from active to inactive or vice versa

change the colour of the form

submitRequest

the user pressed the enter key in an input field

handle form submission

styleChange

style specification of an input field changed

forward to parent elements

Subscribing to events

To subscribe to the events mentioned above, call the on method of the ifsInstance with two parameters:

  1. name of the event

  2. function with the event payload as parameter

integration.initialize(options).then(function (ifsInstance) {
  ifsInstance.on('submitRequest', function (event) {
    //submit stuff...
  });
  ifsInstance.on('cardBrandChange', function (event) {
    //card type change stuff...
  })
});
Standard events

Some events are handled by the DB Merchant Solutions script. You do not have to handle these events yourself.

Table 4. Standard events
Event Behaviour

validationChange

add or remove a CSS class of the iframe placeholder

focusChange

sets the CSS class denoting an element in focus on the iframe placeholder which has the focus

Payloads of the events

cardBrandChange

type is the brand name of the card. Possible values are mastercard, visa, amex, diners, discover, jcb or maestro. fields contains the label of the input field for the card verification code. Since the credit card organizations use different names for the card verification code (CVC, CVV, …​) you can use this text to change the label of this input field.

var eventPayload = {
  "type": "visa",
  "fields": {
    "code": {"label": "CVV"},
  }
}

ibanTypeChange

type is the country code of the submitted IBAN. fields contains information about the IBAN. For example, you can use the bicMandatory parameter to show or hide the input field for the BIC.

var eventPayload = {
  "type": "DE",
  "fields": {
    "enabled": true,
    "code": "DE",
    "name": "Germany",
    "pattern": "DE{{nn}}{{nnnnnnnn}}{{nnnnnnnnnn}}",
    "length": 22,
    "checksum": true,
    "sepa": true,
    "bicMandatory": false
  }
}

validationChange

validation contains information about the current validation status of the input field. It consists of the parameters valid - the field is valid, potentialValid - the field contains no invalid characters or the like, accepted - the credit card or IBAN is accepted, and completed - the field has been filled out (in case of a required field). field describes the input field which was validated.

var eventPayload = {
  "validation": {
    "valid": false, "potentialValid": false, "accepted": true,
    "completed": true
  },
  "field": {"name": "number", "label": "Card Number", "selector": "#iframePan"}
}

formValidationChange

The payload specifies if the form is valid (valid) and if all required fields have been filled out (completed).

var eventPayload = {"valid": false, "completed": true}

focusChange

After the focus has changed this should be forwarded to the elements that include the iframe. The payload of this event contains the necessary information. The focused parameter specifies if the input field has the focus or not. The field parameter describes the input field.

var eventPayload = {
  "focused": false,
  "field": {"selector": "#iframePan", "label": "Card Number", "name": "number"}
}

activeStateChange

The payment page can contain more than one form, for example one form to enter credit card details and another form to enter bank account details. In this case the form which is currently active has to be marked. The payload of this event indicates if the instance is currently active.

var eventPayload = {"isActive": true}

submitRequest

This event is triggered if the enter key is pressed in an iframe field. The payload includes the field and the ASCII code of the key that was pressed.

var eventPayload = {
  "field": {"name": "number"},
  "key": 13
}
Submitting the form

Check if the form is active and has been completely filled out with valid values. If this is the case you can have DB Merchant Solutions generate the token for the payment.

The following sample code shows how you can implement the submitFunction:

function submitFunction(ifsInstance) {
  return function _innerFunction(event) {
    //prevent if not active or invalid
    if (event instanceof Event) event.preventDefault();
    if (!ifsInstance.isActive() || !ifsInstance.isValid()) return;
    ifsInstance.createToken(function (createTokenErr, createTokenResponse) {
      if (createTokenErr) {
        alert(createTokenErr);
        return;
      }
      $.post("/shop-receive-token",
        {
          token: createTokenResponse.token,
        },
        function (data, status) {
          //...
        });
    });
  }
}

Subscribing to the event:

integration.initialize(options).then(function (ifsInstance) {
  //...
  // for typing enter in input fields
  ifsInstance.on('submitRequest', submitFunction.call(this, ifsInstance));
  // sending submit within another form (by pressing a submit button)
  submitForm.addEventListener('submit', submitFunction.call(this, ifsInstance), false);
  //...
});
Response

As response to submitting the form, you receive the object createTokenResponse which contains the following data:

  • token: the token for the entered data

  • type: creditCard or bankAccount

  • info: details, either creditCard or bankAccount

    • creditCard

      • holder: optional, cardholder

      • brand: credit card brand, for example Visa, MasterCard

      • expiry date of the card, formatted MM/YY

      • paddedPan: masked card number

      • tx3DSecureAuthLevel: possible values:

        • full 3-D Secure authentication

        • attempt: 3-D Secure authentication attempted

        • sslfallback: no 3-D Secure authentication

    • bankAccount

      • holder: account holder

      • paddedIban: masked IBAN

In the type parameter, you receive the information whether the customer submitted credit card or bank account details. If you display a combined form for credit card and bank account details to the customer, the type parameter tells you if you have to carry out a credit card or direct debit payment.

The info object includes additional details.

3.3.6. Paying with the received token

After receiving the token you can carry out the payment using the Payments API. Depending on whether the token was generated for a credit card or a bank account, carry out the payment as a credit card or direct debit payment. You can choose between the transaction kinds authorization or pre-authorization and capture. These transaction kinds are described in Transactions kind details.

3.3.7. Bigger Example

The subsequent example contains HTML and JavaScript code for a page with two forms to enter credit card and bank account details.

<!-- ... -->
<form action="/shop-receive-token" id="panForm">
    <div>
        <div>
            <label for="iframeCardholder">Cardholder</label>
            <div id="iframeCardholder"></div>
        </div>
    </div>
    <div>
        <div>
            <label for="iframePan">Card Number</label>
            <div id="iframePan">
                <div id="cardImage"></div>
            </div>
        </div>
    </div>
    <div>
        <div>
            <label for="iframeExpiry">Expiration Date</label>
            <div id="iframeExpiry"></div>
        </div>
        <div>
            <label for="iframeCvc">CVV</label>
            <div id="iframeCvc"></div>
        </div>
    </div>
</form>
<!-- ... -->
<form action="/shop-receive-token" id="bankAccountForm">
    <div>
        <div>
            <label for="iframeAcctHolder">Account Holder</label>
            <div id="iframeAcctHolder"></div>
        </div>
    </div>
    <div>
        <div>
            <label for="iframeIban">IBAN</label>
            <div id="iframeIban"></div>
        </div>
    </div>
    <div id="bicRow" style="display:none">
        <div>
            <label for="iframeBic">BIC</label>
            <div id="iframeBic"></div>
        </div>
    </div>
</form>
<!-- ... -->
<form action="/shop-receive-token" id="submitForm">
    <div>
        <button id="submitButtonAll" disabled>Submit payment</button>
    </div>
</form>
<!-- ... -->
$.getScript("https://testmerch.directpos.de/web-ifs/assets/1.2/integration.js", function () {
  // use clientSession and clientConfiguration values from init response
  var clientSession = '...'
  var clientConfiguration = '...'
  //...

  var cardImage = document.querySelector('#cardImage');
  var panForm = document.querySelector('#panForm');
  var bankAccountForm = document.querySelector('#bankAccountForm');
  var submitForm = document.querySelector('#submitForm');
  var submitAll = document.querySelector('#submitButtonAll');
  var bicRow = document.querySelector('#bicRow');

  //options for payments via credit card
  var optionCreditCards = {
    clientSession: clientSession,
    clientConfiguration: clientConfiguration,
    type: 'creditCard',
    fields: {
      holder: {selector: '#iframeCardholder', placeholder: 'Max Mustermann',
        required: true},
      number: {selector: '#iframePan', placeholder: '4111 1111 1111 1111'},
      code: {selector: '#iframeCvc', placeholder: '246'},
      expiry: {selector: '#iframeExpiry', placeholder: 'MM/YY'}
    }
  };
  //options for payments via bank account
  var optionBankAccount = {
    clientSession: clientSession,
    clientConfiguration: clientConfiguration,
    type: 'bankAccount',
    fields: {
      holder: {selector: '#iframeAcctHolder', placeholder: 'Max Mustermann'},
      iban: {selector: '#iframeIban'},
      bic: {selector: '#iframeBic'}
    }
  };

  //the submit function that should be the same for all instances
  var submitFunction = function (ifsInstnc) {
    return function (event) {
      if (event instanceof Event) event.preventDefault();
      if (!ifsInstnc.isActive() || !ifsInstnc.isValid()) return;
      var createTokenOptions = {}
      ifsInstnc.createToken(createTokenOptions, function (createTokenErr, createTokenResponse) {
        if (createTokenErr) return;
        $.get("/shop-receive-token",
          {
            token: createTokenResponse.token,
            type: createTokenResponse.type
          },
          function (data, status) {
            //...
          });
      });
    }
  };

  //first instance is a credit card form
  integration.initialize(optionCreditCards).then(function (ifsInstance) {
    //subscribe submitFunction on typing enter or pushing the submit button
    ifsInstance.on('submitRequest', submitFunction.call(this, ifsInstance));
    submitForm.addEventListener('submit',
      submitFunction.call(this, ifsInstance), false);

    ifsInstance.on('cardBrandChange', function (event) {
      //change an image if card type has changed
    });

    //disable a submit button if not valid and not completed
    ifsInstance.on('formValidationChange', function (event) {
      if (event.valid && event.completed) {
        submitAll.removeAttribute('disabled');
      } else {
        submitAll.setAttribute('disabled', 'disabled');
      }
    });
    //toggle as style if active state has changed
    ifsInstance.on('activeStateChange', function (event) {
      // toggle(panForm, 'active', event.isActive);
    });
  });

  //second instance is a bank account form
  integration.initialize(optionBankAccount).then(function (ifsInstance) {
    //subscribe submitFunction on typing enter or pushing the submit button
    ifsInstance.on('submitRequest', submitFunction.call(this, ifsInstance));
    submitForm.addEventListener('submit',
      submitFunction.call(this, ifsInstance), false);
    //toggle as style if active state has changed
    ifsInstance.on('activeStateChange', function (event) {
      // toggle(bankAccountForm, 'active', event.isActive);
    });

    //disable(enable) a submit button if (not) valid and (not) completed
    ifsInstance.on('formValidationChange', function (event) {
      if (event.valid && event.completed) {
        submitAll.removeAttribute('disabled');
      } else {
        submitAll.setAttribute('disabled', 'disabled');
      }
    });

    //IBAN type has changed
    ifsInstance.on('ibanTypeChange', function (event) {
      var displayBic = 'none';
      if (event.type !== undefined) {
        if(event.fields.bicMandatory ) {
          displayBic = '';
        }
        //append an image
      } else {
        //remove an image
      }
      bicRow.style.display = displayBic;
    });
  });
});

3.4. Widget Solution

3.4.1. Background

Via the Widget Solution, a merchant can integrate widgets for the supported payment methods directly into their checkout page.

This has the following advantages:

  • New dynamic features:

    • Display different shipping options depending on the selected shipping address.

    • Update the price depending on the selected shipping address and shipping option.

  • Possibly increased conversion rate:

    • Express checkout: New customers do not need to enter their shipping address as they can select a shipping address they saved at the payment system, which will be sent to the merchant.

    • A customer will stay on the merchant’s page during the payment process.

Widget Solution supports the following payment methods:

3.4.2. Requirements

To integrate Widget Solution, a merchant needs a business account for each payment method they integrate. See Merchant integration and onboarding requirements (Google Pay), Onboarding (Apple Pay), and Prerequisites (PayPal).

3.4.3. Course of transaction

The following diagram shows the course of a Widget Solution transaction.

seq widget solution
Widget Solution course of transaction
  1. The customer navigates to the merchant’s checkout page.

  2. The customer’s browser requests the checkout page from the merchant backend.

  3. The merchant backend requests authentication from DB Merchant Solutions REST API. For this step, follow the instructions given in Authentication and Security API.

  4. DB Merchant Solutions REST API returns an access_token. The merchant backend uses it in subsequent requests as a bearer token for authentication.

  5. The merchant backend creates a session at DB Merchant Solutions REST API, setting configuration parameters as well as supplying information to be displayed to the customer. See Create session for details.

  6. DB Merchant Solutions REST API returns a session ID id.

  7. The merchant backend uses the session ID to create the requested checkout page. See Necessary HTML and JavaScript for the required additions to the merchant’s checkout page. In particular, the checkout page needs to load JavaScript from DB Merchant Solutions REST API, initialize it, and configure an event handler for the onAuthorize event.

  8. The browser displays the page to the customer, interpreting in particular the JavaScript included in the page.

  9. The customer clicks on the displayed widget.

  10. Via the JavaScript in the checkout page, the browser contacts the payment system (Google Pay or PayPal).

  11. The payment system responds.

  12. The browser displays a modal dialog according to the chosen payment system.

  13. If the page created in step 7 has been configured to allow for customer interaction, the customer may optionally (repeatedly) change parameters in the modal dialog such as the shipping address.

  14. In case of such an interaction, the browser will call the corresponding event handler configured in step 7. See Event handlers for the corresponding interfaces.

  15. The event handler calls the merchant backend with the updated information.

  16. The merchant backend recalculates the price.

  17. The merchant backend return the new price to the event handler.

  18. The customer eventually confirms the payment.

  19. The browser calls the event handler onAuthorize configured in step 7 which calls the merchant backend.

  20. The merchant backend calls DB Merchant Solutions REST API to finalize the payment, supplying in particular the final total_amount which may have changed since the initialization due to dynamic changes. DB Merchant Solutions REST API then finalizes the transaction. See Finalize payment for details.

  21. DB Merchant Solutions REST API returns a success or error message.

  22. The merchant backend returns the result to the browser.

  23. The browser redirects the customer to a success or error page as configured in step 7.

3.4.4. Integration scenarios

Merchants using Widget Solution have to take a number of decisions how it is integrated into their business processes and their website.

The technical implementation as well as the behavior may differ for the available payment methods.

Use as standard checkout or express checkout

The supported widgets can be placed on the merchant’s standard checkout page, where a customer may choose different payment systems, or directly on a product page as an express checkout.

  • For a standard checkout page, the shipping address is either on file (for a returning customer) or has been entered previously in the checkout process.

  • For an express checkout, the shipping address is not required before the payment but rather will be provided to the merchant after the payment.

PayPal

For standard checkout, set paypal_shipping_preference to SET_PROVIDED_ADDRESS in the create session request. The shipping address has to be provided in the create session request. This address is displayed but not changeable in the modal dialog for PayPal. Within the initialization of the payment system (see Necessary HTML and JavaScript) the event handlers onShippingAddressChanged and onShippingOptionChanged must not be implemented.

For express checkout, set paypal_shipping_preference to GET_FROM_FILE. Within the modal dialog, the customer can choose from a list of addresses which generally consists of their standard address and previous shipping addresses. If a shipping address is given in the create session request, this address is added to the list. The customer may also add a new address. Within the initialization of the payment system, the event handlers onShippingAddressChanged and onShippingOptionChanged are generally implemented to react on customers' choices.

Google Pay

For standard checkout, set shippingAddressRequired to false within the initialization of the payment system (see Necessary HTML and JavaScript). No address is displayed in the modal dialog. The event handlers onShippingAddressChanged and onShippingOptionChanged must not be implemented.

For express checkout, set shippingAddressRequired to true within the initialization of the payment system (see Necessary HTML and JavaScript). The addresses in the customer’s Google profile are displayed. A shipping address from the create session request is not displayed here. Also, no additional address can be added here. Within the initialization of the payment system, the event handlers onShippingAddressChanged and onShippingOptionChanged are generally implemented to react on customers' choices.

Apple Pay

In the field transactionData.applepay within the initialization of the payment system (see Necessary HTML and JavaScript):

For standard checkout, set shippingContactEditingMode and shippingType to storePickup and requiredShippingContactFields to ['email', 'name', 'phone', 'postalAddress']. The event handlers onShippingAddressChanged and onShippingOptionChanged must not be implemented.

For express checkout, set shippingContactEditingMode to enabled, shippingType to shipping, and requiredShippingContactFields to ['email', 'name', 'phone', 'postalAddress'].

Sell physical and/or digital goods

An order may contain physical goods (which have to be shipped), digital goods (which don’t have to be shipped), or both. This has to be distinguished in the subfield basket_type of the field basked of the create session request. This information is especially important for PayPal which takes over the dept from the merchant. This field can take the values PHYSICAL, DIGITAL, and MIXED.

PayPal

For DIGITAL, set paypal_shipping_preference to NO_SHIPPING. The event handlers onShippingAddressChanged and onShippingOptionChanged must not be implemented. For PHYSICAL and MIXED, paypal_shipping_preference must be set to SET_PROVIDED_ADDRESS or GET_FROM_FILE. The event handlers onShippingAddressChanged and onShippingOptionChanged must or must not be implemented accordingly.

Google Pay

For DIGITAL, set shippingAddressRequired to false within the initialization of the payment system (see Necessary HTML and JavaScript). For PHYSICAL and MIXED, the parameter has to be set according to the checkout scenario. The event handlers onShippingAddressChanged and onShippingOptionChanged must or must not be implemented accordingly.

Apple Pay

In the field transactionData.applepay within the initialization of the payment system (see Necessary HTML and JavaScript):

For DIGITAL, set shippingContactEditingMode and shippingType to storePickup and requiredShippingContactFields to ['email', 'name', 'phone']. The event handlers onShippingAddressChanged and onShippingOptionChanged must not be implemented.

For PHYSICAL and MIXED, set shippingContactEditingMode to enabled, shippingType to shipping, and requiredShippingContactFields to ['email', 'name', 'phone', 'postalAddress'].

Separate authorization and finalization of the payment

Within the payment system’s modal dialog, the customer chooses their means of payment, eventually their shipping address and authorizes the payment. By default, the payment is not finalized. Finalization of the payment happens when the merchant calls finalize payment.

The preferred option is to finalize the payment together with the authorization "in one click". To do this, merchants have to implement the onAuthorize event in the initialization of the payment system (see Necessary HTML and JavaScript): They call their own endpoint which then calls the finalize endpoint.

This approach has the following advantages:

  • If the finalization fails, the customer stays on the payment method’s modal view and the payment can be restarted to choose another means of payment (like another credit card).

  • From the customer’s perspective, the checkout process is simple which keeps the conversion rate high.

Separating authorization and finalization may be used to display an order summary where the customer clicks "Pay now".

Recurring payments and billing agreements

A customer may authorize a merchant to initiate merchant initiated transactions (MIT). These are transactions without further customer interactions or permission. This kind of authorization is also referred to as billing agreement, subscription, mandate, or automatic payment. Billing agreement is used in the following.

Billing agreements may restrict to transactions on a scheduled basis (usually) with a fixed amount, for example to cover the cost of a (magazine) subscription or a periodical service. Or, the authorization may include unscheduled transactions of varying amount. For PayPal, Widget Solution supports only unscheduled authorizations. The restriction to scheduled payments is subject to the agreement between the merchant and their customer.

Billing agreements may be granted with or without an initial transaction.

Within the merchant’s shop, billing agreements may be used for one-click payments where the customers pay (on their initiative) without further interaction with the payment method. One-click payments, of course, require that customers have an account with the shop and that they authenticate when the billing agreement is used. Within Widget Solution one-click payments are currently only supported by the payment method PayPal.

The mode of operation for creating a billing agreement is as follows:

  1. Within Create session the transaction is configured to create an alias.

    For Google Pay and Apple Pay, additionally, the following fields have to be set as subfields of transaction_data (which have no effect when the customer chooses PayPal):

    • series_flag which describes the type of the billing agreement: UCOF (Unconditional Card On File) represents unscheduled and RECURRING scheduled billing agreements. INSTALMENT is used for instalment payments.

    • sequence_type hast to be set to FIRST.

  2. When the customer authorizes the transaction, the following is done in the respective payment backends:

    • For PayPal, a billing agreement ("automatic payment" in PayPal’s nomenclature) is created within the customer’s PayPal account which authorizes the merchant to withdraw payments.

    • For Google Pay and Apple Pay, the credit card data is handed to the merchant server which initiates a credit card transaction. This transaction is used to authorize subsequent transactions.

  3. An alias is returned in the alias_info field of the response of the finalization of the transaction.

    For Google Pay and Apple Pay the field recurring_payment is returned additionally.

  4. For PayPal, access secrets for the automatic payment are stored within DB Merchant Solutions REST API under the alias.

    For Google Pay and Apple Pay, the credit card information is referenced by alias while the authorization for subsequent transactions is referenced by recurring_payment.

  5. alias and recurring payment, respectively, are used to authorize MIT in the Payment API:

    For PayPal, POST /payment/event/{event_id}/paypal/{tx_action} is used. The alias is specified in the field means_of_payment of the request body.

    For Google Pay and Apple Pay, POST /payment/event/{event_id}/creditcard/{tx_action} is used. The alias and recurring payment are specified in the request body, alias as a subfield of means_of_payment.

Recurring payments with or without an initial transaction are distinguished by the path parameter tx_action of the create session request.

With initial transaction
  • tx_action = authorization or preauthorization,

Without initial transaction
  • tx_action = verify-mop,

  • amount_total.amount is set to 0.

Remark: The values of tx_action (like authorization or verify-mop (verify means of payment)) refer to the initial transaction. In both cases, an authorization to initiate future MIT is given to the merchant.

Creating billings agreements for PayPal (automatic payments) requires that the parameter paypal_cancel_url is set in Create session. It refers to the case that the customer cancels the billing agreement and is mandatory within the PayPal transaction flow. Currently, it may only be used in unpredicted edge cases.

Also, for creating billing agreements without initial payment for PayPal, it is important to note that the shipping_address of the customer is not contained in the response of the finalize payment request: Although, PayPal inquires this from the customer, it is not passed to DB Merchant Solutions REST API. The same is true for the customer’s email address. If the merchant needs this information, it is inevitable to query it during account creation.

One-click payments for PayPal

PayPal supports one-click payments using billing agreements.

The advantages are:

  • The payment button in the merchant’s web shop is created by PayPal which provides the usual look and feel. The means of payment used for the billing agreement is shown on the button.

  • Customers can alternatively change the means of payment or the shipping address for the current payment by logging into their PayPal account.

  • One-click payments are prevented if the billing agreement can’t be used (for example if the customer’s PayPal account has been removed). The "normal" PayPal button and the regular payment process are used in this case.

One-click payments are initiated in Create session using the alias_action USE together with the alias which has been returned for the billing agreement (see there).

The shipping_address is required in the create session request for one-click payments.

3.4.5. Create session

Use the Widget Solution create session endpoint to create a session as follows:

  • Create a unique ID and set it as the path parameter event_id.

  • Use the path parameter tx_action to either create an authorization or a pre-authorization, or an authorization for recurring payments without initial transaction (see Recurring payments and billing agreements).

  • The field amount_total is required if tx_action is not set to verify-mop. If tx_action is set to verify-mop the subfield amount has to be set to 0.

  • The field merchant_country is required.

  • For the optional field transaction_data the following has to be considered (see WidgetSolutionCreateSessionTransactionData).

  • Depending on the payment systems to be displayed, the following parameters are required:

    • Google Pay:

      • googlepay_merchant_id and googlepay_domain_name as obtained during onboarding. Using these parameters, the merchant is verified and displayed within the Google Pay payment window.

    • Apple Pay:

      • apple_pay_merchant_id and apple_pay_domain_name as obtained during onboarding.

    • PayPal: There are no parameters required.

  • The following optional fields are applicable for Google Pay and Apple Pay:

    • tds20_data for 3DS processing

    • recurring_payment, sequence_type, and series_flag: to indicate recurring credit card payments

    • account_information, merchant_risk_indicators, customer_information, and device_information: for 3DS processing.

  • The following optional fields are applicable for PayPal only:

    • alias_action is used to create or use billing agreements for recurring payments, see Recurring payments and billing agreements.

      For the creation of a billing agreement, its subfield action is set to CREATE.

      If the billing agreement shall be used for one-click payments, the subfield action is set to USE and the subfield alias is set to the alias of the billing agreement.

    • paypal_cancel_url, paypal_return_url for PayPal specifically controlling of the payment process.

      paypal_cancel_url is required when the request is used to initiate recurring payments.

    • paypal_shipping_preference to control the handling of the shipping address.

      This has an influence on specifying the default shipping options during the initialization of widget, see TransactionData in Configuration.
  • The following optional fields are applicable for all payment systems:

    • basket: basket items will be displayed to the customer during the payment process. When a basket is provided, the following subfields are required:

      • shipping_costs

      • For each basket item, the basket item gross amount is calculated as quantity.quantity_amount * unit_price.gross - item_discount.gross. It is required that amount_total.amount equals the sum over each basket item gross amount plus the shipping costs minus the basket discount.

      • Note that for a PayPal transaction, item discounts will not be shown separately on the PayPal page but will be added to the basket discount.

    • billing_address: Reserved for future use.

    • shipping_address: If submitted, initially shown to the customer.

      This field is required for one-click payments for PayPal (alias_action.action set to USE).

    • processing_options: Currently supporting only RISKCHECK as option. If set, DB Merchant Solutions REST API conducts a risk assessment prior to the transaction. If the risk check is negative, the transaction will be directly declined. For this risk assessment to be effective, supply as much information as possible in all fields. The following fields and subfields are used for the risk assessment only:

      • merchant_defined_information

      • travel_information.

  • Save the returned session ID id to render the checkout page later on.

3.4.6. Necessary HTML and JavaScript

For testing HTML examples which use Widget Solution, it is necessary to request the HTML files from a (local) web server (using HTTP). When opening the files in a browser from the local file system, the referenced JavaScript code is not executed.

Widget Solution is based on JavaScript. To integrate it with the merchant’s specific logic, one has to implement up to six event handlers. If these are not implemented, the merchant might not react to user’s changes like an update of the shipping address.

These events are:

  • onAuthorize: React to customers pressing the Pay button. Here, a backend request to the merchant’s server may be issued which finalizes the payment (see Finalize payment), or customers may be redirected to a summarizing view from which the payment is finalized.

    If the payment is finalized on this event, the events onCancel, onError, and onSuccess may be raised (see Implementation patterns for reacting to finalization). These events are retrieved by polling the transaction status within DB Merchant Solutions REST API.

  • onShippingAddressChanged: React to customers choosing or changing their shipping address.

    • Check whether the country of the shipping address is allowed.

    • Update the shipping option according to the new address.

    • Update the price according to the new address.

    This logic should be implemented server-side, and also the updated information should be stored there.

  • onShippingOptionChanged: React to customers changing the shipping option.

    • Check the new shipping option for consistency.

    • Update the information.

    Again, this should be implemented server-side.

  • onCancel: Raised when the customer closes the payment window.

  • onError: Raised when an error occurs which makes the restart of the payment window (of the payment method) impossible. This may be some server error. For errors which are related to the customer’s means of payment, the payment window is opened again so that the customer can choose another means of payment. Also see Implementation patterns for reacting to finalization.

  • onSuccess: Raised after successful payment. Also see Implementation patterns for reacting to finalization.

For Google Pay, the merchant may specify the allowed countries for the shipping address in the googlepay section of the initialization data (see Google Pay). Nevertheless, the country should be checked to prevent fraud (by manipulating the browser session). For PayPal, there is no such configuration.

For details see JavaScript reference.

The following JavaScript snippet shows a client-side sample implementation of the event handlers. Mind that the same code is used for all payment methods.

Implementation patterns for reacting to finalization

There are two patterns for reacting to the outcome of the finalization of the payment in the onAuthorize event handlers (see Separate authorization and finalization of the payment).

  1. React to the finalization request in the onAuthorize event:

    To distinguish the success and error case the call to merchant’s backend has to react to a failure of the finalization of the payment. This means that the merchant’s finalization endpoint must react to the finalization of the payment of DB Merchant Solutions REST API.

    Therefore, the result status of the finalization has to be passed to the frontend and analyzed there:

    onAuthorize: () => {
      fetch('/finalize_endpoint', {
        headers: {
          //
        },
        method: 'post',
        body: JSON.stringify({
          //
        })
        // Within merchant's finalize endpoint:
        // call the finalize request,
        // process the result in the backend,
        // return the result status
      }).then((result) => {
        return result.json();
      }).then((result) => {
        if (result.ok) {
          console.log('FINALIZE SUCCESS', result);
          // react in case of success
        } else {
          console.log('FINALIZE FAILED', result);
          // react in case of error
        }
      }).catch(e => {
        console.error('COMMUNICATION ERROR', e)
        // react in case of communication error
      });
    }
  2. Use status callbacks:

    To simplify integration, the event handlers onCancel, onError, and onSuccess can be implemented. If these are used, onAuthorize has to call the finalization of the payment, but the result has not to be passed to client side and handled there. Widget Solution polls the transaction status and raises the events without the merhant’s further interaction.

    Of course, in case of success, relevant information (like shipping address or payment data) is returned as a result of the finalize request and must be handled in the merchant’s backend.

    onAuthorize: () => {
      fetch('/finalize_endpoint', {
        headers: {
          //
        },
        method: 'post',
        body: JSON.stringify({
          //
        })
        // Within merchant's finalize endpoint:
        // call the finalize request,
        // process the result in the backend,
        // the result status does not need to be returned
      }).catch(e => {
        console.error('COMMUNICATION ERROR', e)
        // react in case of communication error
      });
    },
    onCancel: () => {
      console.log('FINALIZE SUCCESS', result);
      // react in case of success
    },
    onError: (error) => {
      console.log('HANDLE FAILED', result);
      // react in case of error
    },
    onSuccess: (result) => {
      console.log('FINALIZE SUCCESS', result);
      // react in case of success
    }
    The callback for onError can be tested by calling the finalize request with an invalid session ID.
Sample implementation of the event handlers
onAuthorize: () => {
  fetch('/finalize_endpoint', {
    headers: {
      //
    },
    method: 'post',
    body: JSON.stringify({
      //
    })
    // Within merchant's finalize endpoint:
    // call the finalize request,
    // process the result in the backend,
    // the result status does not need to be returned
  }).catch(e => {
    console.error('COMMUNICATION ERROR', e)
    // react in case of communication error
  });
},
onCancel: () => {
  console.log('FINALIZE SUCCESS', result);
  // react in case of success
},
onError: (error) => {
  console.log('HANDLE FAILED', result);
  // react in case of error
},
onSuccess: (result) => {
  console.log('FINALIZE SUCCESS', result);
  // react in case of success
},
onShippingAddressChanged: (address) => {
  console.log(
    'ON SHIPPING ADDRESS CHANGE (integrator can provide amountTotal and shippingOptions): ',
    address
  );
  let selectedOptionCost = 0;
  let totalAmount = 1300 + selectedOptionCost;
  let shippingOptions = [
    {
      id: 'shipping-001',
      label: '0.00EUR: Standard shipping',
      description: 'Free Shipping delivered in 5 business days.',
      price: {
        amount: selectedOptionCost,
        currency: 'EUR'
      }
    },
    {
      id: 'shipping-002',
      label: '2.00EUR: Standard shipping',
      description: 'Standard shipping delivered in 3 business days.',
      price: {
        amount: 200,
        currency: 'EUR'
      }
    }
  ];
  if (address.country === 'US') {
    shippingOptions.push({
      id: 'shipping-003',
      label: '10EUR: US Express shipping',
      description: 'US Express shipping delivered in 1 business day.',
      price: {
        amount: 1000,
        currency: 'EUR'
      }
    });
  } else {
    shippingOptions.push({
      id: 'shipping-004',
      label: '20EUR: Worldwide Express shipping',
      description: 'Worldwide Express shipping delivered in 1 business day.',
      price: {
        amount: 2000,
        currency: 'EUR'
      }
    });
  }
  return Promise.resolve({
    amountTotal: {
      amount: totalAmount,
      currency: 'EUR'
    },
    shippingOptions: shippingOptions,
    basket: {
      shippingCosts: {
        amount: selectedOptionCost,
        currency: 'EUR'
      }
    },
  });
},
onShippingOptionChanged: (shippingOption) => {
  console.log(
    'ON SHIPPING OPTION CHANGE (integrator can provide only amountTotal & shippingCosts): ',
    shippingOption
  );
  let totalAmount = 1300;
  switch (shippingOption) {
    case 'shipping-002':
      totalAmount = totalAmount + 200;
      break;
    case 'shipping-003':
      totalAmount = totalAmount + 1000;
      break;
    case 'shipping-004':
      totalAmount = totalAmount + 2000;
      break;
  }
  return Promise.resolve({
    amountTotal: {
      amount: totalAmount,
      currency: 'EUR'
    }
  });
}
HTML

The following snippet shows a minimal HTML page to display a widget.

<!DOCTYPE html>
<html lang="en">
    <head>
        <--! TODO: The following URL is for test. For production, change the base URL. -->
        <script src="https://testmerch.directpos.de/rest-api/tool/widget_lib/widgetsolution.sdk.js"></script>
    </head>
    <body>
        <div id="widgetContainer"></div>
    </body>
    <script type="text/javascript">
      // event handler for Google Pay payment finished
      const authorize = async () => {
          // 1. call backend. TODO: adapt to your setting
    	  const response = await fetch('http://localhost:4567/create_payment/${sessionId}', {
    	      method: 'POST',
    	      headers: {
    	          'Content-Type': 'application/json'
    	      },
    	      body: JSON.stringify({sessionId: '${sessionId}'})
    	  });
          // 2. redirect. TODO: adapt to your setting
          window.location.href = "http://localhost:4567/payment_successful";
          return Promise.resolve();
      }
      
      const widgetConfig = {
          container: 'widgetContainer',
          sessionId: '${sessionId}',
          paymentMethod: 'googlepay',
          events: {
              onAuthorize: () => {
        	      return authorize();
        	  }
          }
      };      
  
      const initWidget = async () => {
          try {
              const result = await window.widgetsolution.init(widgetConfig);
          } catch (e) {
              console.log('Widget solution error:', e);
          }
      };
      	  
      initWidget();
    </script>
</html>

To adapt this snippet to your checkout page, proceed as follows:

  • Load the DB Merchant Solutions REST API widgetsolution.sdk.js from the corresponding environment (test or production), using the base URL according to test or production:

  • Add a <div> where the script shall insert the widget.

  • Style the <div> with CSS or directly with the style attribute. For example, <div id="main_container" style="width:400px;height:800px"></div> will set the size of the div to 400 x 800 pixels.

  • Define an event handler authorize which shall be called after the customer has confirmed the payment. Typically, this event handler will call the merchant’s backend and then redirect the customer.

  • Define a configuration for the button of type WidgetRequest. See WidgetRequest for all possible fields. The configuration has to contain the following required fields:

    • container: ID of the div in which the button shall be inserted

    • payment_method: the corresponding payment method, either googlepay or paypal.

    • sessionId: the session ID previously obtained. Note that in the snippet, ${sessionId} is a placeholder which needs to be replaced by the actual session ID when serving the page.

  • Initialize the widget by calling window.widgetsolution.init with the defined configuration.

See the JavaScript reference further configuration options as well as the interfaces for the onAuthorize event handler and other event handlers.

Adapting the Content Security Policy (CSP)

A Content Security Policy (CSP) is a security measure to prevent cross-site scripting (XSS) attacks. It is implemented by adding the Content-Security-Policy HTTP response header when serving the merchant’s web page.

To integrate the Widget Solution when using a CSP, the following changes to the CSP are necessary:

  • test: add *.testmerch.directpos.de to script-src and to frame-src.

  • production: add *.merch.directpos.de to script-src and to frame-src.

For example, a possible CSP header in production is as follows:

Content-Security-Policy: default-src 'self'; script-src 'self' *.directpos.de 'unsafe-eval'; frame-src 'self' *.directpos.de;

JavaScript configuration examples

The following code snippets show examples for the configuration for the different payment systems. Implement the marked implementations of the event handlers. See Sample implementation of the event handlers.

Google Pay
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>Title</title>
    <!-- @todo: Replace ${baseUrl} according to test or production-->
    <script src="${baseUrl}/tool/widget_lib/widgetsolution.sdk.js"></script>
</head>
<body>
<div id="main_container"></div>
<script type="text/javascript">
const authorize = async () => {
  // @todo: Call your backend to process the payment and reject the promise in case of failure
  return Promise.resolve();
};

const googlePayConfig = {
  container: 'main_container',
  sessionId: '${sessionId}', // @todo: replace by obtained sessionId
  paymentMethod: 'googlepay',
  events: {
    onInit: () => {
      console.log('INIT');
    },
    onAuthorize: () => {
      // @todo: call backend to finalize payment
      // common implementation of the event handlers
    },
    onShippingAddressChanged: (address) => {
      // @todo: Call backend to recalculate amounts and shipping options
      // common implementation of the event handlers
    },
    onShippingOptionChanged: (shippingOption) => {
      // @todo: Call backend to update shipping option
      // common implementation of the event handlers
    }
  },
  transactionData: {
    shippingOptions: [
      {
        id: 'shipping-001',
        label: 'Free: Standard shipping',
        description: 'Free Shipping delivered in 5 business days.',
        price: {
          amount: 0,
          currency: 'EUR'
        }
      },
      {
        id: 'shipping-002',
        label: '2.00EUR: Standard shipping',
        description: 'Standard shipping delivered in 3 business days.',
        price: {
          amount: 200,
          currency: 'EUR'
        }
      }
    ],
    googlepay: {
      buttonStyle: {
        buttonColor: 'white',
        buttonType: 'buy',
        buttonSizeMode: 'fill'
      },
      displayName: 'TEST MERCHANT',
      allowedCardNetworks: ['AMEX', 'DISCOVER', 'INTERAC', 'JCB', 'MASTERCARD', 'VISA'],
      allowedCountries: ['US', 'AU', 'GB'],
      emailRequired: true,
      shippingAddressRequired: true,
      defaultSelectedOptionId: 'shipping-002',
    }
 }
};

const initWidget = async () => {
  try {
    const result = await window.widgetsolution.init(widgetSolutionConfig);
    console.log('BUTTON SOLUTION SUCCESS:');
    console.log(result);
    window.document.dispatchEvent(
      new CustomEvent('button-solution-result', { detail: result })
    );
  } catch (e) {
    console.log('BUTTON SOLUTION ERROR:');
    console.log(e);
    window.document.dispatchEvent(
      new CustomEvent('button-solution-result', { detail: e })
    );
  }
};

initWidget();
   </script>
</body>
</html>
PayPal
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>Title</title>
    <!-- @todo: Replace ${baseUrl} according to test or production-->
    <script src="${baseUrl}/tool/widget_lib/widgetsolution.sdk.js"></script>
</head>
<body>
<div id="main_container" style="width: 300px; height: 50px;"></div>
<script type="text/javascript">
const widgetSolutionConfig = {
  container: "main_container",
  sessionId: "${sessionId}",  // @todo: replace by obtained sessionId
  paymentMethod: "paypal",
  events: {
    onInit: () => {
      console.log('PayPal Button is loaded');
    },
    onAuthorize: () => {
      // @todo: call backend to finalize payment
      // common implementation of the event handlers
    },
    onShippingAddressChanged: (address) => {
      // @todo: Call backend to recalculate amounts and shipping options
      // common implementation of the event handlers
    },
    onShippingOptionChanged: (shippingOption) => {
      // @todo: Call backend to update shipping option
      // common implementation of the event handlers
    }
  },
  transactionData: {
    shippingOptions: [
      {
        id: 'shipping-001',
        label: 'Free: Standard shipping',
        description: 'Free Shipping delivered in 5 business days.',
        price: {
          amount: 0,
          currency: 'EUR'
        }
      },
      {
        id: 'shipping-002',
        label: '2.00EUR: Standard shipping',
        description: 'Standard shipping delivered in 3 business days.',
        price: {
          amount: 200,
          currency: 'EUR'
        }
      }
    ],
    paypal: {
      buttonStyle: {
        color: 'blue',
        disableMaxWidth: true,
        height: 55,
        label: 'pay',
        layout: 'vertical',
        shape: 'rect',
        tagline: false,
      },
    },
  },
};

const initWidget = async () => {
  try {
    const result = await window.widgetsolution.init(widgetSolutionConfig);
    console.log('BUTTON SOLUTION SUCCESS:');
    console.log(result);
    window.document.dispatchEvent(
      new CustomEvent('button-solution-result', { detail: result })
    );
  } catch (e) {
    console.log('BUTTON SOLUTION ERROR:');
    console.log(e);
    window.document.dispatchEvent(
      new CustomEvent('button-solution-result', { detail: e })
    );
  }
};

initWidget();
</script>
</body>
</html>
Several payment buttons

In many situations, several payment methods may be offered to the customer for express checkout.

After replacing ${sessionId} with a valid session ID this example shows three pay buttons, for Google Pay, PayPal, and Apple Pay.

To adjust the size, the button height is defined by CSS for Google Pay and Apple Pay, and by JavaScript for PayPal.

Also, mind that the event handlers are defined only once and used for all payment methods.

In this example, the onAuthorize event is not implemented. The frontend result is displayed on the page.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8"/>
  <!-- @todo: Replace base url for production-->
  <script src="https://testmerch.directpos.de/rest-api/tool/widget_lib/widgetsolution.sdk.js"></script>
  <style>
    .button {
        width: 250px;
        height: 50px;
        display: inline-block;
        padding: 15px
    }
  </style>

</head>
<body>
<h1>Choose your payment method for express checkout</h1>
<div style="width: 70%">
  <div id="container_googlepay" class="button"></div>
  <div id="container_paypal" class="button"></div>
  <div id="container_applepay" class="button"></div>
</div>
<br/>
<div id="result"></div>
</body>
<script type="text/javascript">
  const sessionId = '${sessionId}'; // @todo: replace by obtained sessionId

  const initialAmount = 1099; //  @todo: change to initial amount from create session request
  let finalAmount = initialAmount;

  const baseShippingOptions = [
    {
      id: 'shipping-001',
      label: 'Free: Standard shipping',
      description: 'Free Shipping delivered in 5 business days.',
      price: {
        amount: 0,
        currency: 'EUR'
      }
    },
    {
      id: 'shipping-002',
      label: '€2.00: Standard shipping',
      description: 'Standard shipping delivered in 3 business days.',
      price: {
        amount: 200,
        currency: 'EUR'
      }
    }
  ];

  const events = {
    //  @todo: add onAuthorize event handler
    onShippingAddressChanged: (address) => {
      //  @todo: implement logic on server side
      console.log(
        'ON SHIPPING ADDRESS CHANGE (integrator can provide amountTotal and shippingOptions): ',
        address
      );
      let selectedOptionCost = 0;
      finalAmount = initialAmount + selectedOptionCost;
      let shippingOptions = baseShippingOptions;
      if (address.country === 'US') {
        shippingOptions.push({
          id: 'shipping-003',
          label: '€10.00: US Express shipping',
          description: 'US Express shipping delivered in 1 business day.',
          price: {
            amount: 1000,
            currency: 'EUR'
          }
        });
      } else {
        shippingOptions.push({
          id: 'shipping-004',
          label: '€20.00: Worldwide Express shipping',
          description: 'Worldwide Express shipping delivered in 1 business day.',
          price: {
            amount: 2000,
            currency: 'EUR'
          }
        });
      }
      return Promise.resolve({
        amountTotal: {
          amount: finalAmount,
          currency: 'EUR'
        },
        shippingOptions: shippingOptions,
        basket: {
          shippingCosts: {
            amount: selectedOptionCost,
            currency: 'EUR'
          }
        },
      });
    },
    onShippingOptionChanged: (shippingOption) => {
      //  @todo: implement logic on server side, keep track of selected shipping option
      console.log(
        'ON SHIPPING OPTION CHANGE (integrator can provide only amountTotal & shippingCosts): ',
        shippingOption
      );
      let totalAmount = initialAmount;
      switch (shippingOption) {
        case 'shipping-002':
          totalAmount = totalAmount + 200;
          break;
        case 'shipping-003':
          totalAmount = totalAmount + 1000;
          break;
        case 'shipping-004':
          totalAmount = totalAmount + 2000;
          break;
      }
      finalAmount = totalAmount;
      return Promise.resolve({
        amountTotal: {
          amount: finalAmount,
          currency: 'EUR'
        }
      });
    }
  };

  const wsConfigGooglepay = {
    container: 'container_googlepay',
    paymentMethod: 'googlepay',
    sessionId: sessionId,
    events: events,
    transactionData: {
      shippingOptions: baseShippingOptions,
      googlepay: {
        buttonStyle: {
          buttonColor: 'white',
          buttonType: 'buy',
          buttonSizeMode: 'fill'
        }
      }
    }
  };

  const initWidgetGooglepay = async () => {
    try {
      const result = await window.widgetsolution.init(wsConfigGooglepay);
      console.log('BUTTON SOLUTION SUCCESS:');
      console.log(result);
      document.getElementById('result').innerHTML = JSON.stringify(result);
    } catch (e) {
      console.log('BUTTON SOLUTION ERROR:');
      console.log(e);
      document.getElementById('result').innerHTML = JSON.stringify(e);
    }
  };
  initWidgetGooglepay();

  const wsConfigPaypal = {
    container: 'container_paypal',
    paymentMethod: 'paypal',
    sessionId: sessionId,
    events: events,
    transactionData: {
      shippingOptions: baseShippingOptions,
      paypal: {
        buttonStyle: {
          color: 'blue',
          label: 'pay',
          height: 50,
          shape: 'rect'
        }
      }
    }
  };

  const initWidgetPaypal = async () => {
    try {
      const result = await window.widgetsolution.init(wsConfigPaypal);
      console.log('BUTTON SOLUTION SUCCESS:');
      console.log(result);
      document.getElementById('result').innerHTML = JSON.stringify(result);
    } catch (e) {
      console.log('BUTTON SOLUTION ERROR:');
      console.log(e);
      document.getElementById('result').innerHTML = JSON.stringify(e);
    }
  };

  initWidgetPaypal();


  const wsConfigApplepay = {
    container: 'container_applepay',
    paymentMethod: 'applepay',
    sessionId: sessionId,
    events: events,
    transactionData: {
      shippingOptions: baseShippingOptions,
      applepay: {
        buttonStyle: {
          type: 'plain',
          style: 'automatic'
        }
      }
    }
  };

  const initWidgetApplepay = async () => {
    try {
      const result = await window.widgetsolution.init(wsConfigApplepay);
      console.log('BUTTON SOLUTION SUCCESS:');
      console.log(result);
      document.getElementById('result').innerHTML = JSON.stringify(result);
    } catch (e) {
      console.log('BUTTON SOLUTION ERROR:');
      console.log(e);
      document.getElementById('result').innerHTML = JSON.stringify(e);
    }
  };
  initWidgetApplepay();
</script>
</html>
JavaScript reference
AddressChangeResult

Return type of the event handler OnShippingAddressChanged.

Name Type Description

amountTotal

The updated total amount.

shippingOptions

The updated shipping options.

shippingAddress

CommonAddress

The (possibly corrected) shipping address. If omitted, the shipping address remains unchanged.

billingAddress

CommonAddress

The billing address (not used currently, reserved for future use).

basket

The updated basket.

AmountCurrency

Objects of type AmountCurrency represent an amount (expressed in minor units) and its currency, for example, for the total amount, shipping costs, or a basket discount.

Name Type Description

amount

number

  • required

The amount in minor units.

currency

string

  • required

The ISO-Alpha-3 currency code of the amount.

ApplePayButtonStyle
Name Type Description

type

string

style

string

width

string

Button width and unit.

Example: '250px'

height?

string

Button height and unit.

Example: '50px'

ApplePayTransactionData

Apple Pay specific transaction data.

Name Type Description

displayName

string | undefined

requiredBillingContactFields

string[]| undefined

The fields of the customers’s billing address which are passed to the merchant.

Example: ['email', 'name', 'phone', 'postalAddress'].

requiredShippingContactFields

string[] | undefined

shippingContactEditingMode

string | undefined

supportedNetworks

string[] | undefined

supportedCountries

string[] | undefined

shippingType

string | undefined

buttonStyle

Basket
Name Type Description

shippingCosts

  • required

The shipping costs.

CommonAddress

The fields of a common (personal) address.

Name Type Description

first_name

string

The first name.

last_name

string

The last name.

email

string

The email.

phone_contact

The phone number and its type.

address_line_1

string

The first address line.

address_line_2

string

The second address line.

address_line_3

string

The third address line.

postal_code

string

The postal code.

city

string

The city.

state

string

The state or province.

country

string

The two-letter country code of the country (ISO 3166-1 alpha-2).

GooglePayButtonStyle

Data to customize the Google pay button.

Name Type Description

buttonColor

string

  • default: A Google-selected default value. Currently black, but it may change over time.

  • black: A black button suitable for use on white or light backgrounds.

  • white: A white button suitable for use on colorful backgrounds.

Default: default.

buttonType

string

  • book: The "Book with Google Pay" payment button.

  • buy: The "Buy with Google Pay" payment button.

  • checkout: The "Checkout with Google Pay" payment button.

  • donate: The "Donate with Google Pay" payment button.

  • order: The "Order with Google Pay" payment button.

  • pay: The "Pay with Google Pay" payment button.

  • plain: The Google Pay payment button without additional text.

  • subscribe: The "Subscribe with Google Pay" payment button.

Default: buy.

Note: When buttonType is buy and the customers’s payment method is an available card, the payment button displays the card brand and the last four digits of the card number.

Note: If a language specified in the viewer’s browser matches an available language, a translated button label appears.

Note: The following buttonType values have been kept to allow backward compatibility with previous versions:

  • long: The same as buy.

  • short: The same as plain.

buttonLocale

string

The ISO 639-1 code of the desired button language. Supported locales include en, ar, bg, ca, cs, da, de, el, es, et, fi, fr, hr, id, it, ja, ko, ms, nl, no, pl, pt, ru, sk, sl, sr, sv, th, tr, uk, and zh.

Default: Set to the browser or operating system language settings.

buttonSizeMode

string

  • static: The button has a static width and height.

  • fill: The button fills its container.

Default: static.

GooglePayTransactionData

Google Pay specific transaction data.

Name Type Description

allowedCardNetworks

string[]

One or more card networks that you support, also supported by the Google Pay API.

Default: all card networks supported by the Google Pay API, that is, ['AMEX', 'DISCOVER', 'INTERAC', 'JCB', 'MASTERCARD', 'VISA'].

allowedCountries

string[]

ISO 3166-1 alpha-2 country code values of the countries where shipping is allowed. If not set, all shipping address countries are allowed.

Default: empty.

buttonStyle

Data to customize the Google pay button.

defaultSelectedOptionId

string

ID of the shipping option that shall be initially selected. If this field isn’t provided, the first option is selected.

displayName

string

  • required

The merchant name encoded in UTF-8 to be rendered in the payment sheet.

emailRequired

boolean

Set to true when the customer’s email is be required.

Default: false.

shippingAddressRequired

boolean

Set to true when customer’s shipping address is required.

Default: false.

Events

Contains event handlers for the various events.

Name Type Description

onInit

Called after widget is initially displayed.

onShippingAddressChanged

Called after the customer selected a new shipping address.

onShippingOptionChanged

Called after the customer selected a new shipping option.

onAuthorize

  • required

Called after the customer confirmed the payment.

OnAuthorize

An event handler of type onAuthorize is called after the customer confirms the payment. In case of error, the customer will get an error message that the payment failed and will be able to restart the payment process.

If for Google Pay a 3DS challenge is required, the payment sheet will be automatically closed. This means that merchant JavaScript must handle the promise returned by the init method, even when the onAuthorize event handler is provided.

OnInit

An event handler of type OnInit is called after the widget button is initially displayed. It does not receive arguments and has no return value.

OnShippingAddressChanged

An event handler of type OnShippingAddressChanged is called after the customer changed the shipping address. It receives as input an object of type IntermediateAddress.

  • If the new shipping address is supported, the event handler must resolve a promise with an object of type AddressChangeResult, containing updated amounts and updated shipping options.

  • Otherwise, that is, if the new shipping address is not supported, the event handler must reject the promise. The payment system then will show the customer a corresponding message, that is, that the new shipping address is not supported.

OnShippingOptionChanged

An event handler of type OnShippingOptionChanged is called after the customer changed the shipping option. It receives as input an object of type Shipping Option. The event handler must resolve a promise with an object of type ShippingChangeResult, containing the updated total amount.

PayPalButtonStyle

Options to style the PayPal button.

Name Type Description

color

string

Color of the button. Possible values:

  • gold

  • blue

  • silver

  • white

  • black

Default: gold.

disableMaxWidth

boolean

By default false, that is, the button has a maximum width of 750px. If set to true, the button will be larger if allowed by the surrounding div.

height

number

By default, the button adapts to the size of its container element. height allows the button to be set to a fixed height between 25 and 55 px.

label

string

Label of the button, displayed in the customer’s language. Possible values:

  • buynow

  • checkout

  • donate

  • installment

  • pay

  • paypal

  • subscribe

Default: paypal.

layout

string

Layout of the button. Possible values:

  • horizontal

  • vertical

Default: horizontal.

shape

string

Shape of the button. Possible values:

  • rect: The default button shape.

  • pill: Rounds the sides of the button.

Default: rect.

tagline

boolean

Indicates if a tagline shall be displayed.

If true, it is necessary to set the layout to horizontal.

Default: false.

PayPalTransactionData

PayPal specific data.

Name Type Description

buttonStyle

Options to style the button.

PhoneContact

A phone number and its type.

Name Type Description

phone_type

string

  • required

Possible values: FAX, HOME, MOBILE, OTHER, PAGER, WORK.

phone_number

string

  • required

IntermediateAddress

Contains the parts of a shipping address which are relevant for determining the shipping costs (but omits personal information).

Name Type Description

city

string

  • required

City

state

string

State or province

country

string

  • required

The two-letter country code of the country (ISO 3166-1 alpha-2).

postalCode

string

  • required

ZIP code or postal code

ShippingChangeResult

Return type of the event handler OnShippingOptionChanged.

Name Type Description

amountTotal

The updated total amount.

ShippingOption

A shipping option.

Name Type Description

id

string

  • required

ID to identify the shipping option at the merchant.

label

string

  • required

The label to be displayed as the option.

description

string

A descriptive text that is displayed below the option label.

price

  • required

The price of the shipping option.

TransactionData

Contains different data for the transaction.

Name Type Description

shippingOptions

The default shipping options which will be displayed on the payment sheet.

These are used, if the shipping options are not set by the OnShippingAddressChanged event handler.

For PayPal, this property must not be set, if paypal_shipping_preference is set to NO_SHIPPING or SET_PROVIDED_ADDRESS in create a session for Widget Solution.

googlepay

Google Pay specific data.

paypal

PayPal specific data.

applepay

Apple Pay specific data.

WidgetRequest

The configuration object to pass to the window.widgetsolution.init method has the following properties.

Name Type Description

sessionId

string

  • required

Set to id obtained from create session.

paymentMethod

string

  • required

Payment system type of the widget. Possible values:

  • googlepay

  • paypal.

container

string

  • required

id of the div in which the widget shall be shown.

events

Event handlers.

transactionData

Transaction data.

3.4.7. Finalize payment

Use the Widget solution create payment endpoint to finalize the payment as follows:

  • For the path parameters, set the id to the originally obtained session ID.

  • Set amount_total to the (recalculated) amount.

The amount_total is compared with the actual total amount of a PayPal transaction after the transaction has taken place. In case of a discrepancy, the response code 1004 "Money amount discrepancy" is returned.

This may indicate a fraud attack and therefore requires the merchant’s action (like cancellation of the payment).

3.4.8. Capture, refund, and reversal

See Subsequent transaction as well as Capture, Refund, and Reversal for general information about capture, refund, and reversal.

Use the general subsequent transaction endpoint to conduct a capture, refund, or reversal.

3.4.9. Diagnosis request

See Diagnosis request for general information about retrieving information about a previous transaction.

3.5. Direct integration

Merchants can use DB Merchant Solutions REST API directly to process payment transaction for the following payment methods:

See Payment API for credit card transactions, SDD, and Klarna, Google Pay API for Google Pay, and Apple Pay API for Apple Pay.

The endpoints given there also allow the merchant to receive details about previous transactions.

3.6. PCI DSS compliance

3.6.1. Introduction

This document provides only guidance and should not be taken as definitive advice. Consult with your credit card acquirer or a PCI DSS Qualified Security Assessor (QSA) for clarification.

The Payment Card Industry Data Security Standard (PCI DSS) is an information security standard for organizations that handle credit cards from the major credit card schemes (MasterCard, Visa, American Express, Diners, China UnionPay, and JCB). The technical and organizational requirements of PCI DSS help to protect cardholder data, reduce fraud, and minimize the chances of a data breach.

See PCI DSS Quick Reference Guide for a more detailed introduction.

3.6.2. Which SAQ to complete according to the integration type

As mandated by the card schemes, every e-commerce merchant that accepts credit cards as a payment method must annually demonstrate their compliance to the standard by completing a self-assessment questionnaire (SAQ).

There are nine different types of SAQs, three of which are relevant for e-commerce merchants:

  1. SAQ A: Contains 14 questions. For e-commerce merchants that have fully outsourced all cardholder data functions to PCI DSS validated third-party service providers, with no electronic storage, processing, or transmission of any cardholder data on the merchant’s systems or premises.

    All elements of all payment pages delivered to the consumer’s browser originate only and directly from a PCI DSS validated third-party service provider.

  2. SAQ A-EP. Contains 139 questions. For e-commerce merchants who outsource all payment processing to PCI DSS validated third parties, and who have a website that does not directly receive cardholder data but that can impact the security of the payment transaction. No electronic storage, processing, or transmission of any cardholder data on the merchant’s systems or premises.

    Each element of the payment page(s) delivered to the consumer’s browser originates from either the merchant’s website or a PCI DSS compliant service provider.

  3. SAQ D-Merchant: Contains 329 questions. For all e-commerce merchants not included in SAQ A or SAQ A-EP.

For the purposes of checking eligibility criteria, note the following:

  • DB Merchant Solutions REST API is a PCI DSS validated third-party provider.

  • While a merchant can configure the payment page (in particular, its layout) when using a shop plug-in or the Form service, each element of the payment page originates from DB Merchant Solutions REST API.

The following table shows which type of SAQ to use depending on the integration type.

Integration type SAQ to use Rationale

Shop plug-ins

A

The shop plug-in redirects the customer to a payment page hosted by DB Merchant Solutions REST API, the elements of which all originate only and directly from DB Merchant Solutions REST API.

Form service

A

Similar to shop plug-ins, here the merchant’s website redirects the customer to a payment page hosted by DB Merchant Solutions REST API, the elements of which all originate only and directly from DB Merchant Solutions REST API.

iFrame service

A-EP

When using the iFrame service, the merchant hosts the payment page themselves, with only the iFrames for entering card data originating from DB Merchant Solutions REST API. Since DB Merchant Solutions REST API sends the merchant a token for the entered cardholder data, the merchant does not need to store, process, or transmit cardholder data.

Direct integration

D-Merchant

Since a merchant has to transmit cardholder data from their system to DB Merchant Solutions REST API when using direct integration, SAQ A and SAQ A-EP are not applicable.

3.6.3. PCI DSS 3.2.1 and 4.0

PCI DSS Version 3.2.1 has been retired at 2024-03-31.

This means that from 2024-04-01 on, a merchant has to demonstrate their compliance to PCI DSS Version 4.0.

Up to 2024-03-31, a merchant could still demonstrate their compliance to PCI DSS Version 3.2.1. Assessment results from before 2024-03-31 remain valid (for a period depending on the merchant’s specific situation).

See

3.6.4. Additional obligations when handling larger volumes

When handling more than 6 million credit card transactions per year, a merchant has to additionally provide an Attestation of Compliance (AOC) as well as a Report on Compliance (ROC). Consult with your credit card acquirer or a PCI DSS Qualified Security Assessor (QSA) for more information. See PCI DSS QSA companies to find a QSA.

4. User guide

4.1. Getting started

4.1.1. Manual tests

To become acquainted with DB Merchant Solutions REST API, download the OpenAPI 3.0 specification of DB Merchant Solutions REST API as .yaml file and import it in a tool like Swagger Editor or Postman.

These tools allow to try out the API functionality. For authentication, generate a bearer token as described in Authentication.

4.1.2. Next steps

The interface is implemented as a REST API. The data transfer is via HTTPS with bearer authentication. Your application acts as REST client, DB Merchant Solutions acts as REST server. As a rule, you will send a REST request to DB Merchant Solutions and you will receive the result of the transaction as JSON response. 3-D Secure credit card payments and payments via the Form service require a more complex interaction between the client, your application and DB Merchant Solutions.

You may access more information in the description of the individual payment procedures and transaction kinds.

In the case of form service payments your application acts as REST server upon the callback regarding the outgoing payment, DB Merchant Solutions as REST client.

For the realization of the connection you have a test system available, where payment transactions are only simulated.

There are numerous REST implementations for various programming languages and hardware platforms, which you may use for the connection of your application.

The specification for the DB Merchant Solutions REST API in the OpenAPI 3.0 format is available as a .yaml file. Based on this file your chosen REST implementation can generate a large part of the code required for the connection.

The use of SDKs may help integration and development significantly (see SDKs for web and mobile development).

The field descriptions in the OpenAPI specification state the general purpose of the fields. For further information how to use the fields depending on the use case, and in particular which fields may be required for a certain use case, refer to the User guide.

The examples provided in the OpenAPI specification are a good starting point to get acquainted with the API. In particular, they can serve as minimal examples for which fields are required.

The examples use www.example.com as an example for a domain name. When implementing the API, replace this domain name by the corresponding shop domain.

Precautions have been taken to prevent inadvertent processing of duplicate transactions. See Using idempotency keys for details.

4.1.3. API version, test and production, and base URLs

The current API version is 2.1.

Users of DB Merchant Solutions REST API use different environments for test and production. The test environment is used for test and integration (of a whole application or new features), and to get acquainted with DB Merchant Solutions REST API, while the production environment is used for productive merchant’s applications (with real payment).

Test and production have different base URLs but the same rest endpoints.

The following information is important to be known:

  • Within test environment no real payment transactions are carried out. The test environment communicates only with sandbox systems and test systems for the different payment methods.

  • The production environment communicates with the productive payment backends for the different payment methods.

  • Test and production environment are completely separated. No objects like events or transactions, access authorizations, or configuration of one environment are available in the other. Contact Deutsche Bank customer support for providing access and configuration for the environments.

  • Make sure that you don’t use real payment data (like credit card or bank account numbers) in the test environment.

As base URL, use the following:

4.1.4. Breaking and non-breaking changes

Any breaking changes will be released in a new API version. Breaking changes are changes that can potentially break an integration. Breaking changes include:

  • removing an entire operation

  • removing or renaming a parameter

  • removing or renaming a response field

  • adding a new required parameter in an existing structure

  • making a previously optional parameter required

  • changing the type of a parameter or response field

  • removing enum values in a request

  • adding enum values in a response

  • adding a new validation rule to an existing parameter if the validation is stronger than the current one

  • changing authentication or authorization requirements.

Any additive (non-breaking) changes will be available in all supported API versions. Additive changes are changes that should not break an integration. Additive changes include:

  • adding an operation

  • adding an optional parameter

  • adding an optional request header

  • adding a response field

  • adding a response header

  • adding enum values in a request

  • removing enum values in a response.

When a new REST API version is released, the previous API version will be supported for at least 24 more months following the release of the new API version.

Contact Deutsche Bank customer support for which API versions are currently supported.

4.1.5. Data types

See the Open API specification for an explanation of the primitive data types used.

DB Merchant Solutions REST API also employs complex types, that is, objects. DB Merchant Solutions REST API reuses the complex types in different contexts. Depending on the context, a subfield of the complex type may not be applicable. In this case, check the user guide for further information.

For example, the complex type Basket is used for many different payment methods to model the shopping basket of a customer. It contains a subfield extensions which in turn contains a subfield paypal_data for PayPal specific information. The field basket.extensions.paypal_data appears in all requests which contain a basket, but it should be set (and will be processed) only for PayPal transactions.

4.2. Authentication

DB Merchant Solutions REST API requires a valid bearer token to be present in all requests. A merchant can obtain this bearer token by calling the security API, see Security API for details.

Merchants will be provided with a client_id and a client_key which is a shared secret used for calculating the client_secret.

For DB Merchant Solutions REST API, set scope to ftx.

The API responds with an object that contains the access_token which will be used as a bearer token.

4.2.1. Calculating the client_secret

The client_secret is determined by calculating an HMAC-256 signature over the following values:

Value Contained in Example

the client-id

client_id in request body

client_id_value

current timestamp

HTTP-header X-RequestDate

Fri, 10 Jan 2020 14:41:15 GMT

a random value

HTTP-header X-RandomValue

ifZonlwJWrTJii3aTFV83jMyl7yNe9QM

All three values are concatenated and an HMAC-256 signature is calculated using the client_key as the secret. The client_secret is then built by Base64 encoding the resulting value prepended by the version-prefix V1 and the delimiter :.

The current_timestamp must be formatted according to the standard RFC 7231. Especially, the valid range for hours is from 00 to 23.

4.2.2. Kotlin implementation

The following code fragment shows a sample Kotlin implementation of calculating the client secret.

val clientId = "client_id_value"
val secret = "5Jz2GJGWxXzaP3SeH1nN"

// alpha-numeric for display purposes only
val random = RandomStringUtils.randomAlphanumeric(50)
// -> ifZonlwJWrTJii3aTFV83jMyl7yNe9QMRHiDdb8YRaIHR4w3eB
val timestamp = DateTimeFormatter.ofPattern("E, dd MMM yyyy HH:mm:ss 'GMT'", Locale.US)
    .withZone(ZoneOffset.UTC).format(Instant.now())

val stringToSign = clientId + timestamp + random
// -> client_id_valueFri, 10 Jan 2020 15:10:38 GMTifZonlwJWrTJii3aTFV83jMyl7yNe9QMRHiDdb8YRaIHR4w3eB

val sha256Hmac = Mac.getInstance("HmacSHA256")
sha256Hmac.init(SecretKeySpec(secret.toByteArray(), "HmacSHA256"))

val signatureBytes = sha256Hmac.doFinal(stringToSign.toByteArray())
val signatureEncoded = Base64.encodeBase64String(signatureBytes)

val clientSecret = "V1:$signatureEncoded"
// -> V1:8uhlrw3ikttmmPr8o/M7rNwsfkf68a2sKyNYsIXPWKU=

4.2.3. JavaScript implementation

The following code fragment shows a sample JavaScript (ES6) implementation of calculating the client secret.

const clientId = "merchantClientId"; // replace by individual client ID
const clientKey = "merchantClientKey"; // replace individual client key

// Create client secret
const timestamp = new Date().toUTCString(); // also set as header X-RequestDate
const random = Array.from(Array(50), () => Math.floor(Math.random() * 36).toString(36)).join(''); // also set as header X-RandomValue
const stringToSign = clientId + timestamp + random;
const hash = CryptoJS.HmacSHA256(stringToSign, clientKey);
const hashInBase64 = hash.toString(CryptoJS.enc.Base64);
const clientSecret = "V1:" + hashInBase64;

The CryptoJS library used can be included as follows.

<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.2.0/crypto-js.min.js"></script>

4.3. Using idempotency keys

4.3.1. Background

DB Merchant Solutions REST API supports idempotent HTTP requests through the use of idempotency keys. This is useful when a request should time out: You can safely retry the same request, for example to create a payment, with the guarantee that the payment is created only once.

More specifically, DB Merchant Solutions REST API supports for each request the header parameters Idempotency-Key and Idempotency-Key-TTL where TTL stands for time to live. When processing a request with these header parameters, DB Merchant Solutions REST API will ensure that during the TTL of the key each request with this key will be idempotent.

4.3.2. The idempotency key

An idempotency key may be any alphanumeric character sequence between 1 and 64 characters length. To create an idempotency key, it is highly encouraged to use the UUID v4 algorithm. This makes sure that each new request gets a new key and no key is reused accidentally.

The idempotency key needs to be placed in the HTTP header named Idempotency-Key. If this header is present then an idempotency key of the defined format is expected, that is this header must not be empty.

4.3.3. Time to live

Idempotency keys are stored in a cache. You can control for how long an idempotency key will be stored in the cache with the optional header Idempotency-Key-TTL. This header needs to contain an integer value between 1 and 8760 (= 365 * 24, that is one year) indicating the time to live in hours. Values outside this range will be treated as client errors.

When the parameter is not present, the TTL is set by default to 720, that is 30 days.

An expired idempotency key is only guaranteed to be deleted from the cache not before its TTL is expired. Nevertheless, it is not guaranteed that it is deleted precisely immediately after TTL expiration. So do not rely on any exact expiration calculation for any reuse of idempotency keys.

4.3.4. Responses

When idempotency keys are used five different responses may be observed:

Direct success

This is the most common kind of response. The first request was processed successfully and its result is returned. The HTTP status code is 200 or whatever status code corresponds to the outcome of that request. (This may include codes from the 300 and even from the 400 family in cases where requests are erroneous in other aspects.)

Cached success

In case of a repeated request, that is the request headers including the idempotency key and the request payload coincide with those of an already processed request, the cached result will be returned as response. This is indicated by the presence of the additional HTTP response header Idempotency-Cached with the value true.

Bad request due to missing or illegal headers

If the idempotency key has some illegal format or length, this is treated as a client error with HTTP status code 400. If the header for TTL of an idempotency key is present but its value has some illegal format or value, this is also treated as a client error with HTTP status code 400.

Bad request due to illegal reuse of idempotency key

If the same idempotency key is used for a different request, this is detected as an illegal reuse of that idempotency key and treated as a client error with HTTP status code 422 (Unprocessable Entity). See RFC 4918 for further information.

Bad request due to pending processing of previous request

There may be (rare) cases where the first request is still being processed while a second repeated request is sent to the server. In this case the second request is perfectly legal but there is no (cached) response available yet, that is the repeated request was sent too quickly. This is treated as an error with HTTP status code 409 (Conflict).

4.4. Verifying callback requests

To verify the integrity and authenticity of a callback request for a shop notification, check the signature of the callback as set by DB Merchant Solutions REST API in the HTTP header Signature as follows.

4.4.1. Format of the signature

DB Merchant Solutions REST API calculates a signature as follows.

  1. In the following, use the same client_id and client_key as for authorization (see Authorization).

  2. Concatenate the following three fields:

    Value Contained in Example

    a digest of the request body

    HTTP-Header Digest or calculated

    SHA-256=SDqXIq66dJrK69hBh2y9hDEA7xBHRdouGJ5aZ75wGs8=

    current timestamp

    HTTP-header X-RequestDate

    Fri, 10 Jan 2020 14:41:15 GMT

    a random value

    HTTP-header X-RandomValue

    ifZonlwJWrTJii3aTFV83jMyl7yNe9QM

    Here the request body digest is calculated by using the SHA-256 hash function and prepending SHA-256= to the resulting value.

  3. Calculate a HMAC-SHA256 signature for the resulting value using the client_key as the secret.

  4. Base64 encode the resulting value and place it in the HTTP header Signature.

4.4.2. Example signature validation method

The signature can be validated by recalculating it and comparing it to the value sent, for example as follows.

val base64: Base64.Encoder = Base64.getEncoder()
const val digestAlgorithm = "SHA-256"
const val clientKey = "5Jz2GJGWxXzaP3SeH1nN"
const val randomValue = "X1c1IInswtMPNSTfmtGx"
const val requestDate = "Fri, 10 Jan 2021 14:41:15 GMT"
const val bodyExample = """{
  "client_id": "client_id_value",
  "transaction_info": {
    "type": "bankaccount",
    "transaction_bankaccount_info": {
      "bankAccount": {
        "bic": "TESTDEL0BK2",
        "iban": "DE39123456790009290701",
        "account_holder": "Jörg Müller-Beßler"
      }
    }
  },
  "rc": "0000",
  "message": "Genehmigt oder erfolgreich beendet.",
  "amount_total": {
    "amount": 100,
    "currency": "EUR"
  },
  "event_id": "id1622635202153",
  "kind": "DIRECTDEBIT",
  "tx_action": "preauthorization",
  "tx_id": "pmrM4SYsoJo5jQgtnlDzwm",
  "basket_id": "bid1622635202153",
  "additional_data": "ADDI_1234XY"
}"""

fun verifySignature(
    requestBody: ByteArray,
    headerXRandomValue: String,
    headerXRequestDate: String,
    headerSignature: String,
    secret: String,
): Boolean {
    val digest = MessageDigest.getInstance(digestAlgorithm)
        .digest(requestBody)

    val digestValue = "$digestAlgorithm=${base64.encodeToString(digest)}"
    println("digestValue " + digestValue)
    // -> SHA-256=SDqXIq66dJrK69hBh2y9hDEA7xBHRdouGJ5aZ75wGs8=

    val stringToSign = digestValue + headerXRequestDate + headerXRandomValue
    // -> SHA-256=SDqXIq66dJrK69hBh2y9hDEA7xBHRdouGJ5aZ75wGs8=Fri, 10 Jan 2021 14:41:15 GMTX1c1IInswtMPNSTfmtGx

    val signed = hmacSHA256(secret.encodeToByteArray(), stringToSign.encodeToByteArray())

    val signedBase64 = base64.encodeToString(signed)
    // -> Jy9J6OdYBxtM046XzBxFlyqn8W7BhetbgPHoKg6ecoA=

    return signedBase64.equals(headerSignature)
}

4.5. Transactions kind details

The following sections describe the supported common transactions kinds for payments in detail. A transaction is initiated using the endpoints of DB Merchant Solutions REST API as described in Getting started. The transaction kind of such an initiated transactions is specified by the path parameter tx_action. Different endpoints may permit different transaction kinds. This depends on the integration type and the transaction context (initial, or subsequent transaction, see below).

The transaction kinds can be divided as follows (the symbol for tx_action is given in brackets):

  • initial transactions: pre-authorization (preauthorization), authorization (authorization), credit (credit), and verification of means of payment (verify-mop)

  • subsequent transactions which relate to a previous transaction: capture (capture), refund (refund), and reversal (reversal)

  • further transactions: diagnosis request and verification of means of payment.

4.5.1. Authorization

Carry out an authorization to initiate the payment of a concluded business operation. Compared to a pre-authorization and subsequent capture, an authorization requires only one step.

A payment system may support recurring transactions. These are transactions that are authorized once by the customer and then subsequently initiated by the merchant without further customer interaction, for example for magazine subscriptions.

4.5.2. Pre-authorization

Carry out a pre-authorization to reserve the customer’s funds for an order that will take place at a later point in time.

A pre-authorization only reserves the customer’s funds for a certain time, the so-called reservation period, which depends on the payment method. To actually initiate clearing and settlement, a merchant has to carry out a capture.

If no capture is carried out during the reservation period, the customer’s funds will be freed again, in which case a capture is no longer possible. The customer’s funds can also be (partially) freed before the expiry of the reservation period by carrying out a (partial) reversal of the pre-authorization.

Typical use cases
  • Hotels use a pre-authorization at check-in to reserve funds for additional charges incurred during the guest’s stay, for example for room service. If there are additional charges at the end of the stay, the hotel uses a (partial) capture, otherwise the hotel reverses the pre-authorization. If the hotel had directly used an authorization for these additional charges and the guest had not used the services, the hotel would have to carry out a refund.

  • Car rentals or tour operators use a pre-authorization as a security deposit to be assured of payment in case the car or equipment is damaged, while in the case that the car or equipment is not damaged, they need not issue a refund.

Credit card
Reservation period

The reservation period for credit card pre-authorizations typically is 7 days. The precise value depends on several factors, such as the card brand, the transaction type (regular, recurring, or UCOF), and your merchant category code (MCC). It is regulated in your acceptance contract with your credit card acquirer. Contact your credit card acquirer if there are any ambiguities.

For example, the reservation period for Visa credit card transactions for merchants outside the US currently is as follows: The reservation period is 7 days for e-commerce transactions (more precisely: card-absent transactions) except for the following cases:

  • For all recurring or UCOF transactions: 1 day (24 hours)

  • For all other transactions:

    • Merchant categories lodging, vehicle rental, and cruise line (MCCs 3501-3999, 7011, 3351-3500, 7512, 7513, 7519): 31 days

    • Taxi cabs (MCC 4121): 1 day (24 hours).

Checks for a pre-authorization

DB Merchant Solutions verifies that the card provided exists, is not blocked and may be charged with the desired amount. This request may be refused or accepted by providing an authorization number. In the case of authorization the amount queried is reserved within the credit limit of the card provided.

Direct debit
Reservation period

The reservation period is 30 days for direct debit pre-authorizations.

Checks for a pre-authorization

DB Merchant Solutions verifies the format and check digit of the submitted IBAN. For German IBANs DB Merchant Solutions verifies that the bank identification number included in the IBAN exists and that the account number included in the IBAN is valid for the check digit algorithm of this bank.

Other payment methods

For the other payment methods which support a pre-authorization, DB Merchant Solutions REST API carries out the same checks as for an authorization.

Contact the corresponding payment system support for questions about the reservation period and about blocking of the customer’s funds.

4.5.3. Credit

A credit is a transaction which provides a reimbursement to the customer and does not relate to a preceding capture or authorization.

If you may carry out a credit depends on the configuration of your access. The process for the submission and the clearing of credits on your customers' current accounts may need to be coordinated with your account-holding institution.

4.5.4. Subsequent transactions

A subsequent transaction (capture, refund, or reversal) follows an initial transaction (pre-authorization, authorization, or credit) or another subsequent transaction.

A subsequent transaction is connected to its related transaction: Using the diagnosis request for the event_id, subsequent transactions are given as children of their related transaction (see Diagnosis request).

Possible subsequent transactions

The following table shows for each transaction kind the transaction kinds of a subsequent transaction which are in general possible.

For example, a capture or a reversal is possible for a pre-authorization, while a reversal or a refund is possible for a capture.

Capture Refund Reversal

Pre-authorization

Capture

Authorization

Credit

Refund

Some payment methods may not support all shown possibilities. Refer to the corresponding payment method documentation to check for exceptions.

Carrying out a subsequent transaction

To carry out a subsequent transaction, proceed as follows:

  1. Use the general subsequent transaction endpoint.

  2. Use the same event_id as for the initial transaction.

  3. Set tx_id to the transaction ID of the initial transaction, which can be found as follows:

    • Form service: tx_id from the callback request (not tx_id from the initial transaction)

    • iFrame Service, Payment API: tx_id from the response to the initial transaction

  4. With a subsequent transaction, the following fields can be changed from the initial transaction:

    1. changed_amount: different transaction amount to support partial reversals or partial captures. For example, after a pre-authorization with amount 100.00 EUR (that is, amount = 10000 and currency = EUR), set the field changed_amount to 2000 to do a partial capture of 20.00 EUR. If the field changed_amount is not set, DB Merchant Solutions REST API will use the amount from the initial transaction it refers to, that is, perform a full capture, reversal, or refund. In particular, when using multiple partial captures, always set the field changed_amount to the amount of the transaction at hand.

    2. due_date: SDD only: different due date.

    3. basket.basket_id: For SDD, the basket ID is displayed on the customer’s bank account statement. Changing the basket ID in a capture then allows for setting a temporary basket ID in the pre-authorization and then setting the final basket ID during the capture.

4.5.5. Capture

A capture initiates the booking of the funds reserved by a pre-authorization. For a capture, the business operation needs to be concluded, thus for example that a shopping basket was offered, ordered, and delivered to the customer.

In general, the amount to be booked has to be the same as or less than the pre-authorized amount. These cases are called full capture and partial capture, respectively. Certain payment methods such as credit card and PayPal support an overcapture, that is a capture whose amount exceeds the pre-authorized amount up to certain percentage. See the corresponding sections for the payment systems for details.

Upon capture, the customer’s account is charged with the requested amount and the merchant’s account is similarly credited.

Depending on the payment system, for a pre-authorization and a partial capture one of the following is applicable:

  • several partial captures are possible as long as the combined amount is the same or less than the amount reserved

  • only one partial capture is possible, the remaining amount is automatically reversed.

In general, a capture cannot be reversed. A refund has to be carried out.

4.5.6. Refund

A refund is a transaction which provides a reimbursement to the customer which relates to a preceding capture or authorization. The amount refunded may be less than or equal to the amount paid.

Depending on the payment system, for a capture or authorization either only one refund is possible or several (partial) refunds are possible.

The process for the submission and the clearing of refunds on your customers' current accounts may need to be coordinated with your account-holding institution.

4.5.7. Reversal

Depending on the payment system, pre-authorizations, authorizations, captures, credits, and refunds may be reversed, that is, cancelled.

See Supported transaction kinds for which payment systems support reversals in general. See the sections on the individual payment methods for particular restrictions.

For all payment systems, the reversal of a pre-authorization is possible as long as no booking notification has been sent and as long as the reservation period has not expired.

For SDD, the reversal of an authorization, capture, credit, or refund is possible until the end of the day of the transaction (Central European Time (CET) or Central European Summer Time (CEST)).

For other payment systems, contact the payment system support for how long a reversal for an authorization, capture, credit, or refund is possible.

4.5.8. Verify means of payment

For the payment methods credit card and SDD, carry out the transaction kind 'verify means of payment' (tx_action: verfiy-mop) to check whether the supplied credit card or bank account actually exists. For credit card, in the context of EMVCo 3-D Secure, it is also checked whether the card is owned by the customer (see Credit card transactions). Therefore, verfiy-mop is used to authorize future recurring payments (which are then initiated by the merchant), see Tutorial: recurring credit card transactions.

Within Widget Solution, verfiy-mop is also used to authorize recurring payments for PayPal.

4.5.9. Diagnosis request

Diagnosis requests are used to retrieve information on previous transactions from DB Merchant Solutions REST API. They don’t have an explicit tx_action, but tx_action appears as a field in their response and is needed to interpret this.

Diagnosis endpoints

Use the endpoint GET /payment/event/{event_id} to retrieve details of an event (consisting of one or more payment transactions, for example several cancelled transactions and one successful transactions).

Use the endpoint GET /payment/tx/{tx_id} to retrieve the details of a (single) transaction, for example an authorization.

Only less than 100 diagnosis requests are possible for an event (or an event_id, resp.). The exact number depends on the transaction history for the event.
Interpreting the response

Diagnosis requests may be used to inform about the status of a payment transaction.

The response contains one or more objects of type PaymentResponse or its super type PaymentDiagnosisResponse. They contain information on payment transactions as described in this chapter. PaymentDiagnosisResponse may contain a field children which contains subsequent transactions of the transaction (see Subsequent transactions). PaymentResponse appears as response object of GET /payment/tx/{tx_id}, while the response object of GET /payment/event/{event_id} contains an array of PaymentDiagnosisResponse in its field transactions.

For an event_id, all related transactions are either contained in the field transactions of the response of GET /payment/event/{event_id}, or in one of its child objects in children.

PaymentResponse and PaymentDiagnosisResponse both contain the required field rc (response code) which holds status information of the transaction (for example, 0 means success).

They may also contain the optional field tx_action which contains the transaction kind. tx_action given in the response the may contain the values of the transaction kinds specified as the path parameter tx_action described in this chapter, but further values are possible as well.

For inital transactions the objects in transactions typically have the same tx_action as the path parameter of the endpoints by which they have been created (authorization, preauthorization, credit, or verify-mop), but this is not true in any case. Details are given in the payment method specific sections Diagnosis request in Payment methods (for example Diagnosis request for PayPal).

4.5.10. Typical transaction flows

The following transaction flows occur frequently:

  • authorization: one-stop payment

  • pre-authorization, capture with capture amount equal to pre-authorization amount: reserve funds and book the reserved funds completely

  • pre-authorization, capture with capture amount less than pre-authorization amount: reserve funds and book the reserved funds only partially

  • pre-authorization, reversal: reserve funds and later free them because they were not needed.

The following transaction flows occur less frequently:

  • pre-authorization: reserve funds, then later on the funds are freed automatically after expiry of the reservation period since no capture and no reversal followed

  • authorization, refund: payment, then later on a refund for the payment because the customer returned the goods

  • pre-authorization, capture, refund: reservation and booking of funds, then later on a refund

  • credit: credit a customer without a preceding payment

  • verify means of payment: validate entered data for future use

  • authorization, diagnosis request: initiate payment and then check the status of the authorization.

5. Payment methods

5.1. Credit card transactions

5.1.1. Introduction

EMVCo 3-D Secure

Traditional credit card transactions in which the cardholder only enters their credit card number and the card verification value (CVV) suffer from a certain fraud risk for which the merchant is liable. The aim of EMVCo’s 3-D Secure protocol is to secure credit card transactions with a strong customer authentication (SCA) so that the fraud rate is notably reduced and the liability usually shifts from the merchant to the issuer. While the need for a second factor authentication may inconvenience the customer (and thus lead to a lower conversion rate), in certain jurisdictions such as the European Economic Area (EEA) an SCA now is required.

The 3-D stands for the three domains which participate in it: the merchant / acquirer domain, the issuer domain and the interoperability (infrastructure) domain. The credit card companies brand the 3-D Secure protocol under different names: Mastercard SecureCode, Visa Secure and American Express SafeKey.

See Wikipedia for an extended introduction and EMVCo 3-D Secure specification for the technical protocol specification.

For 3-D Secure payments, a merchant has to be additionally registered and authorized for Mastercard SecureCode, Visa Secure or American Express SafeKey. You have to contact Deutsche Bank customer support about this.

Similarly, cardholders have to be registered and authorized for Mastercard SecureCode, Visa Secure or American Express SafeKey with their banks.

You may obtain detailed information about liability shifting from Deutsche Bank customer support.
Supported countries and currencies

Mastercard and Visa credit cards are available in more than 240 countries, while American Express credit cards are available in more than 130 countries. Contact your acquirer for a precise list.

Mastercard and Visa credit cards support more than 70 currencies, while American Express credit cards support more than 40 currencies. Contact your acquirer for a precise list.

Supported transaction kinds

DB Merchant Solutions REST API supports the following initial transaction kinds for 3-D Secure:

  • authorization (standard and recurring)

  • pre-authorization

  • verify means of payment

  • credit.

Use the general subsequent transaction endpoint, setting kind = CREDITCARD, to conduct the transaction kinds

  • capture (full and single partial)

  • reversal (full and single partial)

  • refund (full and single partial)

for a preceding 3-D Secure transaction.

Supported types of reversals
  • For a pre-authorization, a full or a partial reversal is possible.

  • For a capture or an authorization, a full or a partial reversal is possible until the transaction has been cleared. After clearing, a reversal is declined, in which case a refund has to be used.

  • For a credit or a refund, a reversal is not possible.

Reservation period for pre-authorizations

The reservation period for credit card pre-authorizations typically is 7 days. The precise value depends on several factors, such as the card brand, the transaction type (regular, recurring, or UCOF), and your merchant category code (MCC). It is regulated in your acceptance contract with your credit card acquirer. Contact your credit card acquirer if there are any ambiguities.

For example, the reservation period for Visa credit card transactions for merchants outside the US currently is as follows: The reservation period is 7 days for e-commerce transactions (more precisely: card-absent transactions) except for the following cases:

  • For all recurring or UCOF transactions: 1 day (24 hours)

  • For all other transactions:

    • Merchant categories lodging, vehicle rental, and cruise line (MCCs 3501-3999, 7011, 3351-3500, 7512, 7513, 7519): 31 days

    • Taxi cabs (MCC 4121): 1 day (24 hours).

Overcapture

Depending on the jurisdiction of the customer, credit cards do support an overcapture, that is, a capture with an amount exceeding the amount of the pre-authorization up to 15%, or do not support an overcapture. Contact your credit card acquirer for details.

Recurring payments

DB Merchant Solutions REST API also supports recurring payments, such as for magazine subscriptions. In this case the first transaction is carried out as usual a 3-D Secure payment, while the subsequent transactions can be carried out without 3-D Secure. Recurring payments require additional parameters:

  • series_flag: possible values:

    • RECURRING: for recurring (scheduled) payments, for example in the case of a subscription or standing order.

    • UCOF (unscheduled credentials on file): when a card number alias is created for future payments with the same credit card. In this case use alias_action.action = CREATE with the first payment and the card number alias with the following payments. You can specify action = verify-mop (verify means of payment) for the first transaction to register a card number alias without a payment.

  • sequence_type: possible values:

    • FIRST for the first payment

    • RECURRING for the following payments

    • FINAL for the last payment.

  • recurring_payment: recurring payment identifier. This field is returned in the response of the first payment and has to be submitted with all following payments of this recurring payment.

Supported integration types

DB Merchant Solutions REST API supports credit card transactions in the following integration types:

  • Form service checkout page (only web payments)

  • direct integration (both web and app payments)

  • iFrame Service (only web payments).

See Integration types for general information on the offered integration types.

The 3DS Server

Part of the interoperability domain are the issuers' access control server (ACS), which handles the customer authentication, and the 3DS Server, which establishes the connection from the merchant to the responsible ACS. According to the credit card schemes' rules, merchants may not connect directly to the ACS but need to use a 3DS Server.

DB Merchant Solutions REST API offers a 3DS Server to its merchants. Additionally, for merchants who have already integrated a different 3DS Server, DB Merchant Solutions REST API offers the option to carry out the final step of the 3-D Secure protocol only.

Integration type endpoints to use

Use DB Merchant Solutions REST API as 3DS Server

POST /headless3DSecure/…​

Use external 3DS Server

POST /payment/event/{event_id}/creditcard/{tx_action}

5.1.2. Using DB Merchant Solutions REST API as the 3DS Server

Flow of a 3DS transaction

The following diagram shows the transaction flow for a 3DS transaction. Shown here are the customer’s browser, the shop, DB Merchant Solutions REST API and the ACS with which the browser interacts. Not shown are further backend systems with which DB Merchant Solutions REST API interacts such as the Directory Server and the credit card acquirer.

seq headless 3dsecure
Transaction flow of a 3DS transaction with DB Merchant Solutions REST API as 3DS Server
  1. The customer’s browser communicates the payment relevant data to the shop. Possibly it improves the transaction flow if the shop catches the form "submit". In this case the customer stays on the current shop page almost until the end of the course of transaction.

  2. The shop sends the payment data to DB Merchant Solutions REST API. See Initializing the payment (steps 1-4) for details.

  3. DB Merchant Solutions REST API verifies the data. In the case of an error continue with step 22. Otherwise, DB Merchant Solutions REST API determines the further course of action, in particular the responsible Access Control Server (ACS) if needed.

  4. DB Merchant Solutions REST API sends a response to the shop with the following possibilities:

    • A 3DS (authentication) method has to be chosen. Continue with step 5.

    • It is not necessary to choose a 3DS method, the customer can directly proceed to the authentication at the ACS. Continue with step 15.

    • The payment had been carried out without further authentication of the cardholder. Continue with step 23.

  5. The shop signals the browser that the "3DS Method" is to be carried out (outcome = METHOD_REQUIRED).

  6. The browser creates a hidden iframe (see section Adaptations in the browser).

  7. From the hidden iframe a form is automatically sent to the ACS.

  8. The ACS interacts with the hidden iframe. The response to the iframe includes a message to URL as set in the parameter tds_20_data.communication_data.method_notification_url.

  9. The hidden iframe automatically sends the message from the ACS to the URL set by tds_20_data.communication_data.method_notification_url of the shop.

  10. The shop sends a response which causes the hidden iframe to be closed.

  11. The main window of the browser automatically sends a message to the shop.

  12. The shop sends the request method_completed to DB Merchant Solutions REST API. See section Completion of "3DS Method“ (step 12-14).

  13. DB Merchant Solutions REST API determines how the payment has to be continued.

  14. DB Merchant Solutions REST API responds to the shop.

    • If the 3-D Secure 2.1 or 2.2 payment had been carried out without further authentication of the cardholder, the response contains the message about the outcome of the payment. Continue with step 23.

    • Otherwise, the response includes the data to redirect the customer to the ACS. Continue with step 15.

  15. The shop sends the redirect to the ACS to the customer’s browser. See section Redirect to the ACS (steps 15+16) for details.

  16. The browser redirects to the ACS.

  17. The customer authenticates themselves at the ACS.

  18. The ACS sends a redirect to the shop to the browser, using the URL provided in cres_notification_url.

  19. The browser redirects to the shop.

  20. The shop informs DB Merchant Solutions REST API that the payer authentication was made (see section Concluding the payment (step 20-22)).

  21. DB Merchant Solutions REST API finds out the credit card payment outcome.

  22. DB Merchant Solutions REST API informs the shop about the payment outcome.

  23. The shop informs the browser about the payment outcome.

Initializing the payment (steps 1-4)
Request (step 2)

To carry out step 2 as described in the transaction flow, that is to initialize a 3-D Secure credit card payment, use the endpoint

/headless3DSecure/event/{event_id}/{tx_action}/initialize

where event_id is as usual a unique id for this event and tx_action is the desired action, that is, one of preauthorization, authorization or verify-mop (verify means of payment: online check of the credit card without payment).

Set the parameters as follows:

  • TDS20Data: This field is required to conduct a 3-D Secure 2.1 or 2.2 transaction. The TDS20Data object includes numerous parameters:

    • Required parameters: Until 2024-08-11, for all card brands, all parameters are optional. For all card brands except for Mastercard and Visa, the parameters will also remain optional after this date until further notice.

      Mastercard: Starting from 2024-08-12, for transactions with Mastercard credit cards, the following parameters under credit_card_data.tds_20_data are required:

      • device_information: ip_address

      • customer_data.billing_address: street, postal_code, city, and country. If country is US, state is also required.

      • customer_data.shipping_address: street, postal_code, city, and country. If country is US, state is also required.

      • customer_data.cardholder_email

      • One of home_phone_number, mobile_phone_number, or work_phone_number and its subfields country and regional.

      Visa: Starting from 2024-08-12, for transactions with Visa credit cards, the parameter credit_card.cardholder and the following parameters under credit_card_data.tds_20_data are required (if not set, Visa will decline the transaction):

      • device_information: ip_address, http_browser_screen_height, and http_browser_screen_width

      • customer_data.billing_address: street, postal_code, city, and country. If country is US, state is also required.

      • Either customer_data.cardholder_email or one of customer_data.home_phone_number, customer_data.mobile_phone_number, or customer_data.work_phone_number and its subfields country and regional.

      Note that the billing address information for 3DS must be supplied under tds_20_data.customer_data.billing_address. It is not sufficient to supply the billing address information under the top-level element billing_address.

    • Optional parameters: The credit card issuer uses the remaining parameters to assess the risk of a payment default and to decide if the cardholder is required to carry out a two-factor authentication. We recommend submitting these parameters as far as the data are available. Information about the customer’s browser (parameters in device_information), the cardholder (parameters in customer_data) and the shipping address (parameters in customer_data.shipping_address) is especially important.

  • requestor_challenge_indicator: Use the field to indicate the shop’s preference whether a challenge (that is, an authentication) shall be performed. The parameter values take the form NO_PREFERENCE, CHALLENGE_REQUESTED and NO_CHALLENGE_REQUESTED as prefix and the reason for this preference as suffix, for example NO_CHALLENGE_REQUESTED_DATA_SHARE_ONLY.

  • processing_options option FALL_BACK_ON_SSL: To find out the Access Control Server which is responsible for the customer’s credit card, DB Merchant Solutions REST API sends a message to a so-called Directory Server.

  • DB Merchant Solutions REST API might receive the answer from the Directory Server that it could not determine if the credit card is enrolled for 3D Secure. This happens for example for so-called one leg out transactions, where the customer is located outside the EEA but the customer’s account is held within the EEA. In this case, DB Merchant Solutions REST API proceeds as follows (for Mastercard, Visa, and American Express):

    • If the request does not contain the parameter FALL_BACK_ON_SSL, the transaction is stopped.

    • If the request does contain the parameter FALL_BACK_ON_SSL, the payment is continued as an SSL transaction without liability shifting.

  • Occasionally, DB Merchant Solutions REST API might not receive an answer from the Directory Server because of connection problems. Due to the different regulations of Mastercard, Visa, and American Express, DB Merchant Solutions REST API proceeds as follows in this case:

    • Mastercard and American Express: the transaction is continued.

    • Visa: the transaction is stopped unless the request contained the parameter FALL_BACK_ON_SSL. In this case, the transaction is carried out as an SSL transaction without liability shifting.

Basket ID

For a credit card transaction, the field basket.basket_id is optional. If it is set, it must conform to the pattern [a-zA-Z0-9] {1,30}.

Requirements for the shop

At the beginning of the 3-D Secure 2.1 or 2.2 processing the shop has to display a “processing screen” with a processing graphic (for example progress bar or spinning wheel) to the customer for at least two seconds. Other design elements are not permitted in the processing screen.

Response (step 4)

Unless an error occurs, DB Merchant Solutions REST API will send a Headless3DSecureResponse which in particular includes the following attributes.

  • outcome: Indicates the outcome of the current headless 3-D Secure transaction.

    • METHOD_REQUIRED: The 3-D Secure method flow needs to be started. Consult the attribute method_required for required data (method_request, method_url) and proceed with step 5.

    • CHALLENGE_REQUIRED: The 3-D Secure challenge flow needs to be started. Consult attribute challenge_required for required data (acs_url and either pareq (3-D Secure 1.0) or creq (3-D Secure 2.1 or 2.2) and proceed with step 14.

    • PROCESSED: The transaction has been processed, no further action is required. Consult the attribute processed for details of the processed transaction. In particular, the response code processed.rc contains the information if the transaction was successful (response code equal to 0) or not (response code different from 0). Proceed with step 23.

Note that for the time being it is possible that the payment is carried out according to the 3-D Secure 1.0 protocol even if you submitted the 3-D Secure 2.1 or 2.2 data with the payment initialization. If the response contains the PaReq field, the payment has to be continued according to 3-D Secure 1.0, otherwise according to 3-D Secure 2.1 or 2.2.

3DS Method Flow (steps 5-14)
Adaptations in the browser

The customer does not take part actively in the process of the "3DS Method". Insert a hidden iframe in the HTML page which is displayed to the customer and send a form with a field named threeDSMethodData which includes the unaltered content of method_request to the URL you received in method_url. The subsequent example contains JavaScript code which can help you to adapt the shop page for the "3DS Method". You need the values of the method_request and method_url fields of the Headless3DSecureResponse.

function tdsMethod() {
  // set default values
  $( "#tdsFsMethodJsStatus" ).val( "undefined" );
  $( "#tdsFsMethodResult" ).val( "N" );

  // this listener will receive a message when acs communication has been finished
  window.addEventListener( "message", function ( event ) {
    if (event.origin !== 'TODO: domain of method_notification_url') {
      console.warn( "wrong origin", {
        e: event.origin,
        d: docOrigin
      } );
      // TODO abort transaction if origins do not match
    }
    event.preventDefault();
    var eventData = event.data;
    if (eventData.hasOwnProperty( 'value' )) {
      $( "#tdsFsMethodResult" ).val( eventData.value );
    }
    // TODO submit original form, remove iframe
  } );

  // example URL, use value from Headless3DSecureResponse
  var methodURL = "https://acs.cccompany.com/method";

  // example data, use value from Headless3DSecureResponse
  var methodRequest = "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjNhYzdjYWE3LWFhNDItMjY2My" +
    "03OTFiLTJhYzA1YTU0MmM0YSIsInRocmVlRFNNZXRob2ROb3RpZmljYXRpb25VUkwiOiJ0aHJl" +
    "ZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIn0";

  // place in html document where the iframe will be inserted
  var tdsMethod = document.getElementById( "tdsMethod" );

  // create invisible iframe
  var iframe = document.createElement( 'iframe' );
  iframe.width = "0";
  iframe.height = "0";
  iframe.name = "tdsMethodIFrame";
  iframe.setAttribute( 'frameborder', '0' );
  iframe.setAttribute( 'border', '0' );
  iframe.scrolling = "no";
  iframe.setAttribute( "seamless", "seamless" );
  iframe.setAttribute( "style", "display:none;" );
  iframe.setAttribute( "tabindex", "-1" );
  tdsMethod.appendChild( iframe );

  var methodForm = document.createElement( 'form' );
  methodForm.style.display = 'none';
  methodForm.name = "tdsMethodForm";
  methodForm.action = methodURL;
  methodForm.method = "POST";
  methodForm.target = "tdsMethodIFrame";

  var valueInput = document.createElement( 'input' );
  valueInput.name = "threeDSMethodData";
  valueInput.value = methodRequest;
  methodForm.appendChild( valueInput );
  tdsMethod.appendChild( methodForm );

  setTimeout( function () {
    tdsMethod.removeChild( methodForm );
  }, 1000 );

  // send request to methodURL
  methodForm.submit();
}
Completion of "3DS Method“ (step 12-14)
Request (step 12)

For step 12, use the endpoint /headless3DSecure/event/{event_id}/method_completed/{completed} to signal DB Merchant Solutions REST API that the 3DS method has been chosen.

To allow DB Merchant Solutions REST API to assign your request to the preceding initialization it is necessary that you submit the same event_id. Set the parameter completed to indicate if the shop has received a request from the ACS to the method_notification_url within 10 seconds (true) or not (false).

Response (step 14)

See the API doc for the format of the response.

Redirect to the ACS (steps 15+16)

The ACS is not part of DB Merchant Solutions REST API. The data to the ACS are transferred in an HTTPS POST form. The target URL is included in the field challenge_required.acs_url of the payment initialization response.

In the case of 3-D Secure 2.1 or 2.2 the redirect should be implemented in such a way that the cardholder authentication (step 17) takes place in an iframe. In this case the sequence of steps corresponds to the "3DS Method" request.

Future versions of this interface will include additional parameters which enable you to specify the size of the iframe content provided by the ACS.

3DS Version 1

You can implement the redirect by sending the customer an HTML form that is automatically submitted via JavaScript as a response to the payment request (step 1).

As an example, a simple response to the customer could look like this:

<html>
<body onLoad="document.PaReqForm.submit()">
<form name="PaReqForm" action="https://aacse.3ds.verifiedbyvisa.com/cgi-
bin/PAResnosession" method="post">
    <noscript>
        <input type="submit" value="Continue"/>
    </noscript>
    <input type="hidden" name="MD" value="session091234_a"/>
    <input type="hidden" name="TermUrl" value="https://pay.mycompany.com/TermUrl"/>
    <input type="hidden" name="PaReq" value="eJxVUk1z2jAQvfdXeHwurGzSODCLMpDQqTslpZ
RMc+vY8o6t1JaNZFPMr68Epmkv0r79eKt9K7w/VqV3IG1kreZ+MGa+R0rUmVT53H/efRzd+ff8He4KTfT4n
USnieOajEly8mRmS8IJm7IbNp1MAuZz3Cy2tOc4UHLLOA4RrtCWalEkquWYiP0yfuI30S1jAcIAsSIdP/K0
bgvqVHaoKbXh0YeI2SuMEC5xVElF/CB12hmEM0BRd6rVPQ+jW4QrwE6XvGjbZgawT0DkcpRKBSXliehbMq0
p6gbcoWnfWfzTmHLclAiuEOHtvZvOWcY2OsqMxw+LPKvKPp18/vVyWvXrUxx+3eX9+lXMEVwGZklLPGRWHa
uRx6azgM3cBGc/JpV7IQ/eM+atnrdWgIsDG9dnMUQZQ/jXgXYB2i6o59Pozk55RUjHplZkM6zYf23MyAg7x
HC9TfDwyekvWqvkcrFabptvofwBT4rBlxf5quj3+qQ28dxt5Zzk6KVVMwiDC78DCI4GhoXD8Cms9d9n+QOC
+csc"/>
</form>
</body>
</html>
Table 5. Table 3-D Secure 1 redirect to the ACS, request parameters

Parameter

Explanation

PaReq

Required. Contains the value you received in the paReq field of the payment initialization response from DB Merchant Solutions REST API.

TermUrl

Required. This is the URL where you will receive the response of the ACS.

MD

"Merchant Data". Required but can be empty. May contain up to arbitrary 1024 ASCII characters. You will get this value back in the response from the ACS. You can use this field for example to assign the response of the ACS to a specific payment transaction.

Response

After the customer has authenticated themselves you will receive an HTTP(S) POST request from the ACS at the TermUrl in a redirect via the customer’s browser. This request contains the following parameters:

Table 6. Table 3D-Secure 2 redirect to the ACS, response parameters

Parameter

Explanation

PaRes

Required, Base64 encoded character string.

MD

Required, contains the value you submitted to the ACS earlier.

3DS Version 2
Request

For the redirect in version 2, you can proceed as in version 1 with the difference that the parameters in the request must be as follows.

Table 7. Table 3D-Secure redirect to the ACS, request parameters

creq

Required. Contains the value you received from DB Merchant Solutions REST API in the response to the payment initialization in the cReq field.

threeDSSessionData

Optional. Freely assignable. May contain up to 1024 base64url characters (letters, digits, "-", "_"). The content of this field will be returned later in the response of the ACS. You can use this field for example to assign the response of the ACS to a particular payment.

The example in this case looks like this:

<html>
<body onLoad="document.PaReqForm.submit()">
<form name="PaReqForm" action="https://aacse.3ds.verifiedbyvisa.com/cgi-
bin/PAResnosession" method="post">
    <noscript>
        <input type="submit" value="Continue"/>
    </noscript>
    <input type="hidden" name="creq" value="c2FtcGxlIGNyZXFfZGF0YQ=="/>
    <input type="hidden" name="threeDSSessionData" value="c2FtcGxlIHRocmVlRFNTZXNzaW9uRGF0YQ=="/>
</form>
</body>
</html>
Response

After the cardholder authenticated the payment the ACS sends you an HTTPS POST request by using a redirect via the customer’s browser to the URL you submitted with the payment initialization in the parameter tds_20_data.communication_data.cres_notification_url. The request contains these parameters:

Table 8. Table 3D-Secure 2 redirect to the ACS, response parameters

Parameter

Explanation

cres

Required. base64url encoded character string.

threeDSSessionData

Optional. Contains the value you submitted in the request to the ACS.

Concluding the payment (step 20-22)
Request (step 20)

Use the endpoint POST /headless3DSecure/event/{event_id}/final to conclude the payment.

To allow DB Merchant Solutions REST API to assign your request to the preceding initialization it is necessary that you submit the same event_id.

Response (step 22)

See the API doc for the format of the response.

5.1.3. Using an external 3DS Server

If you already have access to a 3DS Server, you can use it for 3-D Secure transactions for the initialization, method and challenge flow and only use DB Merchant Solutions REST API for the authorization. The transaction then is as follows:

seq creditcard external 3dsserver
Transaction flow of a 3DS transaction with an external 3DS Server
Request (step 20)

Use the endpoint POST /payment/event/{event_id}/creditcard/{tx_action} for 3-D Secure transactions with an external 3DS Server. Before using this endpoint it is necessary to obtain the required data from the 3DS Server. In particular, for 3-D Secure 2.1 or 2.2 transactions the following parameters (grouped under tds_external_data.tds_20_external_data) must be obtained from the 3DS Server:

  • tds_ds_trans_id (unique transaction identifier assigned by the 3-D Secure Directory Server)

  • tds_authentication_value (authentication value assigned by the 3-D Secure Directory Server or ACS)

  • eci (electronic commerce indicator provided by the 3-D Secure Directory Server or ACS)

Response (step 22)

DB Merchant Solutions REST API sends a response with the same parameters as in the case of a 3D-secure transaction with using DB Merchant Solutions as the 3DS Server, see section Concluding the payment (step 20-22).

5.1.4. Credit

See Credit for general information about issuing a credit.

For credit cards, use the payment credit card endpoint with tx_action = credit for all integration types.

5.1.5. Tutorial: recurring credit card transactions

Background

DB Merchant Solutions REST API supports not only the usual (so-called one-off) credit card transactions, where the customer pays for a single purchase, but also recurring transactions, where the merchant bills a customer repeatedly. There are two types of recurring transactions:

Table 9. Recurring and UCOF transactions
Type Definition Examples

Recurring

A transaction in a series of transactions that use a stored credential and that are processed at fixed, regular intervals (not to exceed one year between transactions), representing cardholder agreement for the merchant to initiate future transactions for the purchase of goods or services provided at regular intervals. Typically, all transactions will have the same amount.

Magazine subscriptions, electricity bills, insurance payments.

Unscheduled credential on file (UCOF)

A transaction using a stored credential for a fixed or variable amount that does not occur on a scheduled or regularly occurring transaction date, where the cardholder has provided consent for the merchant to initiate one or more future transactions.

Account auto-top up transactions, for example recharging a prepaid card for a mobile phone.

3D Secure and recurring transactions

The first transaction of a sequence of recurring transactions has to be customer-initiated (CIT) and must be secured with 3D Secure.

The subsequent transactions are merchant-initiated (MIT) and need not be secured with 3D Secure. This is because clearly no customer interaction is possible and the customer has already authenticated themselves with the first transaction.

Course of transactions

To use recurring or UCOF transactions, proceed as follows.

seq course of trx
  1. Create a credit card alias using POST /alias/creditcard or POST /form/alias/creditcard.

Save the response parameter alias_info.alias for use in further transactions.

  1. For the first transaction, use the request POST /headless3DSecure/event/{event_id}/{tx_action}/initialize or POST /payment/event/{event_id}/creditcard/{tx_action} depending on whether using an internal or an external 3-D Secure Server. Set the following parameters:

    • series_flag: RECURRING or UCOF

    • sequence_type: FIRST

    • alias: as obtained in step 1.

Save the response parameter recurring_payment to use in further transactions.

  1. For further transactions, use the same request as in step 2 and set the parameters

    • series_flag: RECURRING or UCOF

    • sequence_type: RECURRING

    • recurring_payment: as obtained in step 2

    • alias: as obtained in step 1.

  2. For the last transaction, use the same request as in step 2 and set the parameters

    • series_flag: RECURRING or UCOF

    • sequence_type: FINAL

    • recurring_payment: as obtained in step 2

    • alias: as obtained in step 1.

Note: If the merchant does not know if the transaction is the final transaction in the sequence, they may also set sequence_type = RECURRING indefinitely after the first transaction.

Declined transactions and how to deal with them

For one-off transactions, the issuer has the possibility of a so-called "soft decline", that is requesting a 3D Secure authentication. For recurring transactions, soft declines are not possible. However, as is the case with all credit card transactions, a recurring transaction might be declined because of lack of funds or other reasons. In particular, a recurring transaction might be declined because the card has expired in the meantime. In this case, the merchant has to start another series of recurring transactions:

  • The credit card alias created in step 1 above can be reused, so step 1 is not necessary.

  • The merchant has to contact the customer for step 2, that is start another transaction with 3D secure and set sequence_type = FIRST.

  • The following transactions then can be carried out as before.

5.1.6. Response codes

The following table shows the most common response codes for credit card transactions. See Response codes for a complete list of possible response codes.

Response code Description

0

Transaction successful.

1548

Transaction is pending.

1507

Transaction rejected.

1554

3-D Secure authentication failed.

1806

Strong customer authentication required.

1524

3-D Secure authorisation failed on directory lookup.

1502

Configuration problem.

1512

Card suspicious.

1510

Card invalid.

1504

System error.

1509

Card expired.

1105

Backend system error.

1516

Retain card.

1103

Illegible gateway response.

1100

Unexpected error.

1506

Temporary error.

1514

Card restricted.

9000

Indeterminate error

1102

Gateway connection problem.

1515

Invalid amount.

1511

Card stolen.

1501

Voice authorisation expected.

1401

Cancelled by user.

1503

Card issuer not reachable.

1537

Outcome of the transaction unknown.

1508

Transaction rejected by card holder.

1513

Card unknown.

1536

Configuration problem.

1101

Wrong field in response message from backend gateway.

5.1.7. Test data

In the test system, a credit card payment with an amount of 10XX.00 EUR, that is amount_total.amount = 10XX00 and amount_total.currency = EUR, will be rejected with back_rc = XX.
Do not use real credit card data for your tests.

For tests of credit card payments the card numbers listed in the following tables are available. Use an expiry date in the future for successful test payments. The card verification code is not verified on the test system. You can enter any three-digit number.

The columns have the following meaning:

  • Brand: Credit card brand (Visa, Mastercard, or Maestro)

  • Number: credit card number

  • flow: Type of 3D secure flow. Possible values:

    • No 3DS

    • Without cardholder authorization

    • With cardholder authorization

    • With 3DS Method

    • With 3DS Method and cardholder authorization

  • 3DS required field check: See 3DS required fields for the requirements for required fields for 3D Secure transactions. Possible values:

    • not applicable: for non 3DS transactions

    • never: The test simulation will never check the 3DS required fields, that is, accept transactions that do not include one or more of these fields.

    • always: The test simulation will always check the 3DS required fields, that is, decline transactions that do not include one or more of these fields.

    • starting from 2024-08-12: The test simulation will not check the 3DS required fields before 2024-08-11 and will check the 3DS required fields from 2024-08-12.

    This allows for testing the new requirements already before 2024-08-12.

  • Issuer country: Possible values DE (Germany) or US. This allows for testing blocked issuer countries.

Brand Number Flow 3DS required field check Issuer country

Visa

4116111111111116

No 3DS

not applicable

DE

Mastercard

5232050000010003

No 3DS

not applicable

DE

Maestro

6799990100000000019

No 3DS

not applicable

DE

To carry out a 3-D Secure 2.1 or 2.2 simulation you can use the test card numbers given in the following table.

Brand Number Flow 3DS required field check Issuer country

Visa

4012001037167778

Without cardholder authorization

from 2024-08-12

US

Visa

4111111111111111

Without cardholder authorization

from 2024-08-12

DE

Visa

4012001037664444

With cardholder authorization

from 2024-08-12

DE

Visa

4012001037484447

With cardholder authorization

never

DE

Visa

4761739090000088

With cardholder authorization

always

DE

Visa

4005559876540

With 3DS Method

from 2024-08-12

DE

Visa

4012001036853337

With 3DS Method and cardholder authorization

from 2024-08-12

DE

Mastercard

5453010000062745

With cardholder authorization

never

DE

Mastercard

5453010000084541

With cardholder authorization

always

DE

5.2. Google Pay

5.2.1. Introduction

Background

Google Pay is offered as a variant of credit card transactions. If customers have their credit card connected to their Google account or digitized into their Google Wallet, they can make purchases using Google Pay with a simpler and secure checkout process on a web page or in an Android app.

The merchant will obtain the card data in an encrypted form. Within DB Merchant Solutions REST API, the keys for decryption of the card data are always held by Deutsche Bank’s backend systems. Therefore, a merchant will not come in contact with PCI relevant data.

Getting started: documentation provided by Google

For getting started, refer to the Google Pay documentation, which provides both business and implementation information.

Supported countries and currencies

DB Merchant Solutions REST API supports Google Pay for all countries and currencies that are also supported for conventional credit card transactions.

Supported integration types

DB Merchant Solutions REST API supports Google Pay in the following integration types:

  • Form service checkout page,

  • direct integration,

  • Widget Solution.

See Integration types for general information on the offered integration types.

Supported cards, transaction kinds, and authorization methods

DB Merchant Solutions REST API supports Google Pay for the same credit card schemes as for conventional credit card payments, that is, Mastercard and Visa.

Google Pay supports the following transaction kinds:

  • authorization (standard and recurring)

  • pre-authorization

  • capture (full and single partial)

  • refund (full and single partial)

  • reversal (full)

  • verify means of payment (MOP).

Google Pay has the same reservation period for pre-authorizations, the same time frame for reversals, and the same support for overcaptures as conventional credit cards.

DB Merchant Solutions REST API supports all Google Pay authorization methods:

  • CRYPTOGRAM_3DS (with CDCVM as SCA)

  • PAN_ONLY (potentially including the additional 3-D Secure authentication).

Both authMethod types are supported when Deutsche Bank provides the customer interface (Form service). Deutsche Bank therefore recommends merchants that implement their own customer interface, that is, use the direct integration, to also support both authMethod types.

The difference between CRYPTOGRAM_3DS and PAN_ONLY is as follows:

  • CRYPTOGRAM_3DS: This is available only when using an Android device and the Chrome browser. Here the authentication is handled by the device using the Device Cardholder Verification Method (CDCVM), for example by using the devices fingerprint sensor, to perform a strong customer authentication (SCA). In this case, 3D Secure is not required.

  • PAN_ONLY: This is available on all devices and all browsers. In this case, the authentication uses the 3D Secure flow in the same way as conventional credit card transactions.

Merchant integration and onboarding requirements

In order to offer Google Pay to their customers, merchants need to integrate with Google Pay and therefore agree with Google Pay’s Terms of Service. In particular, merchants need to fulfill the relevant integration checklists:

To offer Google Pay via DB Merchant Solutions REST API, a merchant must meet the following requirements:

  • Sign up with Google following Google’s quick start guide.

    Provide the domain merch.directpos.de as payment gateway and as one of the domains from which you intend to call the Google Pay API (see Google Pay Setup).

    Provide the required configuration concerning your payment gateway within Google Pay’s merchant’s business console.

  • The merchant must contact Deutsche Bank customer support for onboarding. When using direct integration, a merchant will receive the gatewayMerchantId as issued by DB Merchant Solutions REST API as a gateway for Google Pay, which they need to use when processing Google Pay transactions.

  • The merchant must also support regular credit card payments, see Credit card transactions.

5.2.2. Authorization and pre-authorization

For authorization and pre-authorization, use the following endpoints depending on the integration type:

  • Form service checkout page: Use the standard checkout endpoint and supply the parameter google_pay_credit_card_data to initialize the transaction. The subfields googlepay_country_code, googlepay_domain_name, and googlepay_merchant_id are required.

The fields basket.shipping_costs and for each basket_item, name, unit_price.net` and unit_price.gross, are required as they are displayed to the customer when using Google Pay. For each basket item, the basket item gross amount is calculated as quantity.quantity_amount * unit_price.gross - item_discount.gross. It is required that amount_total.amount equals the sum over each basket item gross amount plus the shipping costs minus the basket discount.

Details for Form service checkout page integration

The course of transaction for Form service checkout page is the standard checkout page transaction flow.

Details for direct integration

The authorization and pre-authorization course of transaction is - compared to the regular credit card flow - extended by additional Google Pay specific communication and therefore potentially more complex.

Follow the instructions provided in Google Pay Web developer documentation for the integration of Google Pay within a web page.

Follow the instructions provided in Google Pay Android developer documentation for the integration of Google Pay within an Android app.

Course of transaction

The course of transaction is as follows:

seq direct google pay
  1. The customer enters the shop’s pay page.

  2. The shop displays the Google Pay button or mark.

  3. The customer selects Google Pay by tapping the Google Pay button.

  4. The shop displays the Google Pay interaction as a modal window.

  5. The customer selects the payment method, that is, the credit card to be used.

  6. Google sends the credit card token to the shop.

  7. The shop sends the token together with additional fields to DB Merchant Solutions REST API.

  8. DB Merchant Solutions REST API processes the token.

  9. DB Merchant Solutions REST API sends the response to the shop.

  10. Depending on the response in 9, the shop redirects to 11, or continues with the transaction as a headless 3D Secure transaction (see authorization types, Flow of a 3DS transaction (steps 5 - 22)).

  11. The shop informs the customer about the payment outcome.

Display the Google Pay button or Google Pay mark (step 2)

The initiation of a Google Pay transaction is triggered by the customer tapping a dedicated Google Pay payment button or Google Pay pay mark.

Use the payment button when offering Google Pay as the only payment method. Use the pay mark when offering Google Pay as one of several payment method options.

For obtaining the payment button or the pay mark as well as their presentation requirements, see

Use the Google Pay API JavaScript library to display the button by including it as follows:

<script src="https://pay.google.com/gp/p/js/pay.js"></script>
Obtain the Google Pay token (steps 4 to 6)

In the request to obtain a token, a merchant shall set the required IDs as follows:

  • Set gatewayId (used in PaymentMethodTokenizationSpecification) to 'processingpagateq', DB Merchant Solutions REST API’s identifier as issued by Google Pay.

  • Set gatewayMerchantId (used in PaymentMethodTokenizationSpecification) to the value obtained during onboarding with DB Merchant Solutions REST API.

  • Set merchantId (used in merchantInfo) to the value obtained from the Google Pay Business Console.

Send the token to DB Merchant Solutions REST API (step 7)

Use the Google Pay endpoint to initiate the transaction at DB Merchant Solutions REST API. Only the fields amount and googlepay_token are required. For a 3DS transaction, additionally the field tds20_data and its subfields as described in 3DS required fields are required.

Use the field billingAddress.name from Google’s response for the field cardholder if it is not available otherwise.

If Google’s response did include a shipping address, set the parameters shipping_address accordingly.

If the request shall initiate a series of transactions (for example for recurring transactions), the merchant must use an alias, that is, set alias_action to create in the initial request. All follow-up transactions must use the standard credit card payment endpoint and contain not the googlepay_token but instead contain the alias obtained in the response to the first request. Moreover, the follow-up transactions must contain the parameters sequence_type (either RECURRING or FINAL), series_flag (either RECURRING or UCOF), and recurring_payment. See also Credit card recurring transactions.

The usage of an alias is necessary as the original googlepay_token might expire and therefore a follow-up transaction request might be declined by DB Merchant Solutions REST API.
Basket ID

The requirements for the parameter basket.basket_id for Google Pay are the same as for a credit card transaction, see Credit card basket ID.

Using the risk check

DB Merchant Solutions REST API supports a risk check to calculate a risk score for a transaction and then automatically decline a transaction which has a high risk score or which triggers certain rules.

Add RISKCHECK to the parameter processing_options to calculate this risk score and then automatically decline high risk transactions. Furthermore, supply as much information as possible in the following parameters to allow for a good risk score calculation:

  • shipping_address

  • billing_address

  • basket

  • customer_information

  • device_information

  • account_information

  • merchant_risk_indicators.

The billing address information will not be parsed out of the Google Pay specific data object. If the merchant wants to include the billing address in the risk check, it must be provided explicitly as in the context of other payment types. Also, the format must obey the general requirements of DB Merchant Solutions REST API.
Pre-transaction checks

DB Merchant Solutions REST API checks the following:

  • The provided googlepay_token is valid, that is,

    • the signature is valid (including checks that the used keys are valid and not expired),

    • the token can be decrypted to meaningful payment data, and

    • the token itself is not expired.

  • The requested card scheme is supported (see above for the supported schemes).

  • Furthermore, all checks for credit card transactions are also applied to Google Pay transactions.

If one of the checks fails, the transaction is declined.

Form of the response (step 9)

DB Merchant Solutions REST API generates the response to a merchant’s request for Google Pay in the same way as for a credit card transaction.

Continue with the transaction as a headless 3D Secure transaction (step 10)

Continue with the transaction as a conventional headless 3D Secure transaction, see Creditcard 3D Secure transaction flow.

In particular, use the endpoints Headless 3D secure Method Completed and Headless 3D secure Final to complete the transaction.

5.2.3. Capture, refund, and reversal

For captures, reversals, and refunds, for all integration types use the general subsequent transaction endpoint, setting kind = CREDITCARD (as a Google Pay transaction is a credit card transaction).

5.2.4. Diagnosis requests

For retrieving information about a previous transaction, use the general endpoints for diagnosis for an event and diagnosis for a single transaction.

5.2.5. Test data

Google Pay provides a test card suite for testing (see Test card suite).

This test card suite is used in TEST mode if the customer’s Google account is not assigned to the real data group.

For the integration types Form service and Widget Solution, TEST mode is used automatically in the test environment DB Merchant Solutions REST API (see test and production). For Direct integration, the environment must be set to TEST.

In this case, the cards of the test cards suite are offered as means of payment. The test card numbers and test data (names, addresses, and telephone numbers) are transferred to the test gateway.

The test card suite only supports the authentication method PAN_ONLY and can therefore be used to test 3DS integration (see Supported cards, transaction kinds, and authorization methods).

The following card are supported by the test backends of DB Merchant Solutions REST API. Other cards lead to errors in the 3DS flow.

Scheme PAN Masked PAN 3DS Flow

Visa

4111111111111111

****1111

Frictionless

Mastercard

5555555555554444

****4444

Frictionless

Amex

378282246310005

****0005

Challenge

If the customer’s Google account is assigned to the real data group, the cards of the Google web wallet are offered if available. If the customer uses the Chrome Browser on an Android device and has a tokenized card in his Google Wallet app, this credit card is also offered as means of payment.

In this case, sample tokens are transferred to the payment backends (see Test with sample tokens). Especially, no real credit card data is transferred. If further customer data (like names, telephone numbers, or addresses) are transferred, the real data from the Google account are taken.

Important: If a card from the Google Wallet app is chosen, the sample token also uses the authentication method CRYPTOGRAM_3DS (see Supported cards, transaction kinds, and authorization methods). In this case, 3D Secure is not required. Transaction always succeed in TEST mode.

5.3. Apple Pay

5.3.1. Introduction

Background

Apple Pay is a technical scheme (based on an underlying card payment scheme) that supports paying with a digital wallet

  • at a merchant’s web page (web payments) for customers using the Safari browser on an Apple device or

  • within a merchant’s iOS app (app payments).

DB Merchant Solutions REST API supports Apple Pay for credit cards (Mastercard and Visa).

When integrating Apple Pay in a web page, a merchant needs to comply with Acceptable Use Guidelines for Apple Pay on the Web. When integrating Apple Pay in an app, a merchant needs to comply with Apple In-App Purchase regulations.
Getting started: documentation provided by Apple

For getting started, refer to the Apple documentation, which provides both business and implementation information.

Supported countries and currencies

DB Merchant Solutions REST API supports Apple Pay for all countries and currencies that are also supported for conventional credit card transactions.

Supported integration types

DB Merchant Solutions REST API supports Apple Pay in the integration types

  • Form service checkout page,

  • Widget Solution,

  • direct integration (web payment and app payment).

See Integration types for general information on these integration types.

For direct integration, Apple Pay furthermore distinguishes two types of integration: Apple Managed Integration and Apple Individual Integration.

The following table gives an overview on the main differences for a merchant between the two direct integration types:

Apple Managed Integration

Apple Individual Integration

Web payments

supported

supported

App payments

not supported

supported

Onboarding with Apple necessary

no

yes

Certificate signing and renewal necessary

no

yes

Communication with the Apple Pay Server necessary

no

yes

The integration type Widget Solution requires Apple Managed Integration.

Supported cards, transaction kinds, and authorization methods

DB Merchant Solutions REST API supports Apple Pay for the card networks Mastercard and Visa.

Apple Pay supports the following transaction kinds:

  • authorization

  • pre-authorization

  • capture (full and single partial)

  • reversal (full)

  • refund (full and single partial)

  • verify means of payment (MOP).

An Apple Pay transaction is always based on a card cryptogram generated by the digital card and secured with a Consumer Device Cardholder Verification Method (CDCVM). Therefore, an Apple Pay transaction will not result in the customer having to perform a 3-D secure authentication.

Apple Pay has the same reservation period for pre-authorizations, the same time frame for reversals, and the same support for overcaptures as conventional credit cards.

Apple Pay and PCI DSS

During the payment process, the merchant receives the card data in an encrypted form. As the keys for decryption of the card data are always held by DB Merchant Solutions REST API’s backend systems, a merchant does not come into contact with PCI relevant data.

5.3.2. Onboarding

Requirements for all integration types

Contact Deutsche Bank customer support for onboarding as this currently requires a manual process. A merchant needs to be onboarded or in the process of onboarding for credit card payments in general.

For Form service no further steps are necessary because the Apple Pay payment button is displayed on the hosted page of DB Merchant Solutions REST API.

Further steps for direct integration and Widget Solution

For direct integration and Widget Solution, the Apple Pay button is displayed directly on the merchant’s web shop (or mobile app). To enable this, the merchant requires an Apple merchant identifier.

For Apple Managed Integration, the registration of the Apple merchant identifier is done by Deutsche Bank customer support while, for Apple Individual Integration, this must be done by the merchants themselves.

The following issues are common to managed and individual integration:

Using the Apple merchant identifier

The Apple merchant identifier is needed to integrate Apple Pay as a payment method. For Apple Managed Integration, merchants receive this identifier during the onboarding process from Deutsche Bank customer support (see Apple Managed Integration).

For Apple Individual Integration, the ID is created during registration (see Apple Individual Integration).

Testing and production

For integration of Apple Pay with DB Merchant Solutions REST API, different Apple merchant identifiers are needed for testing and production environment (to provide additional data security). This implies that all the following steps have to be done separately for the two environments.

Identify the domain list

During registration of an Apple merchant identifier, the merchant has to specify a list of all domains which offer Apply Pay. As described at Configuring Your Environment this means:

The merchant must register and verify all top-level domains and subdomains where the Apple Pay button is displayed.

Example:

The Apple Pay button is displayed on wwww.example.com and shop.example.com. Then, the domain list consists of

  • example.com (as the top level domain),

  • www.example.com,

  • shop.example.com.

Special care has to taken in the following situation:

To simplify integration, a merchant may display the pay button on page under a different domain (like payment.example.com). This page might be embedded in the origin page using an IFrame. In this case, the origin page and the embedded page must have the same top-level domain, and both subdomains must be registered.

Therefore, in this example the following domain has to be added to the domain list:

  • payment.example.com

Prepare the domain verification

During the registration process of an Apple merchant identifier the domains in the domain list (see above) are verified. It is checked whether the merchant actually has access to the domains.

For the verification, for each domain [DOMAIN_NAME] of the domain list, the merchant has to host a domain verification file under the following URI:

https://[DOMAIN_NAME]/.well-known/apple-developer-merchantid-domain-association

For example, if an Apple Pay payment button will be displayed on https://shop.example.com, then the subdomain is shop.example.com and the top-level domain is example.com. The domain verification file shall be hosted under the URIs

  • https://example.com/.well-known/apple-developer-merchantid-domain-association and

  • https://shop.example.com/.well-known/apple-developer-merchantid-domain-association.

It’s important to note that for Apple Managed Integration the preparation of the domain verification has to be finished before the onboarding starts.

The following points have to be considered. For further details, see Configuring Your Environment.

  1. The domain verification file is provided differently for Apple Managed Integration and Apple Individual Integration:

    • For Apple Managed Integration:

      Download the following domain verification files or contact Deutsche Bank customer support:

    • For Apple Managed Integration merchants receive the domain verification file in their Apple Developer Account which is necessary for registering an Apple merchant identifier individually.

  2. Note that it is possible that a domain may be registered and verified for more than one Apple Pay merchant identifier: The domain verification file may be changed or removed after the successful verification of a domain for an Apple Pay merchant identifier.

    This applies (for example) when subdomains for testing and production are hosted under the same top-level domain.

  3. It is important that the domain verification files are publicly accessible and not protected by authentication or firewalls.

  4. The URI has to point to the domain verification file itself, not to a directory which contains a file. Therefore, the domain verification may have to be renamed.

  5. The location for the top-level domain (for example example.com) may be redirected to a subdomain (for example www.example.com).

Apple Managed Integration

If a merchant decides to use Apple Managed Integration (see Supported integration types) they have to do the following steps.

The process has to be done separately for testing and production environment. If the test environment is hosted under the same top-level domain, the onboarding for the test environment has to be successfully finished before starting onboarding for the production environment.

  1. Identify the domain list (see Identify the domain list).

  2. Prepare the domain verification (see Prepare the domain verification).

  3. Contact Deutsche Bank customer support, provide the following information:

    • The environment to be used (test or production),

    • the domain list.

  4. Receive the Apple Pay merchant identifier from Deutsche Bank customer support (see Using the Apple merchant identifier).

  5. The further onboarding will take place without further involvement of the merchant. Deutsche Bank customer support will inform the merchant when onboarding has been completed successfully.

  6. Integrate the Apple Pay according to the integration type of choice.

For the test environment a Sandbox Apple Pay account can be used for testing. If the merchant chooses to use such an account, the following steps have to be done. This step can also be included in step 3.

  1. Provide an email address to Deutsche Bank customer support which is not yet linked to an Apple account.

  2. Receive the credentials and settings of the created Sandbox Apple Pay account to log into a supported Apple device.

If the domain list changes, the merchant must contact Deutsche Bank customer support and inform of the removed or added domains. For added domains, the domain verification has to be prepared as described above.
Apple Individual Integration

For Apple Individual Integration merchants create Apple merchant identifiers by themselves (see Using the Apple merchant identifier).

Setting up Apple Pay is described under Setting up Apple Pay.

Note the following issues:

  1. If you haven’t already access to Apple Developer, create an Apple Developer account.

  2. Register different Apple merchant identifiers for test and production.

  3. For each Apple merchant identifier, two certificates have to be created: The Apple Pay Payment Processing Certificate and the Apple Pay Merchant Identity Certificate.

  4. Concerning the Apple Pay Payment Processing Certificate:

    • Contact Deutsche Bank customer support to receive a certificate signing request for a public key, which will enable Apple Pay to encrypt the transferred credit card data.

    • When creating the payment processing certificate, upload the certificate signing request you received from Deutsche Bank customer support.

    • You receive a .cer file containing the certificate.

  5. The signing request for the Apple Pay Merchant Identity Certificate is not received from Deutsche Bank customer support but created by the merchants themselves.

  6. Identify the domain list as described in Identify the domain list.

  7. Add the domains of the domain list to the Apple merchant identifier: For each domain, you download a verification file apple-developer-merchantid-domain-association which has to be added to the domain as described in Prepare the domain verification.

  8. After completing setting up Apple Pay, contact Deutsche Bank customer support to inform about the successful onboarding. Provide the Apple merchant identifier and the received .cer file for the payment processing certificate (but not the also obtained .cer file for the merchant identity certificate). Deutsche Bank customer support will use this information to complete the merchant’s configuration for Apple Pay.

5.3.3. Certificate renewal

The payment processing certificates used in transaction processing have a period of validity of 25 months and therefore need to be renewed accordingly:

Apple Managed Integration

For merchants that are integrated via Apple Managed Integration, the process of certificate renewal is completely in the hands of DB Merchant Solutions REST API and will be done transparently for the merchant.

Apple Individual Integration

For merchants that are integrated via Apple Individual Integration, the process of certificate renewal is mainly in the responsibility of the merchants themselves, who have to follow Apple’s instructions (Maintaining your environment).

As with the initial onboarding (see section Apple Individual Integration), merchants have to register a payment transaction processing certificate corresponding to a key from DB Merchant Solutions REST API. Therefore, they need to contact Deutsche Bank customer support to obtain a renewed certificate signing request, which they need to use during certificate renewal with Apple.

In the process, they again will receive a corresponding certificate and will have to provide this back to Deutsche Bank customer support.

5.3.4. Authorization and pre-authorization

The authorization and pre-authorization process is - compared to the regular credit card flow - extended by additional Apple Pay specific communication and therefore potentially more complex. The transaction flow depends on the kind of integration the merchant is using:

Direct integration: displaying the Apple Pay button

When using direct integration (for both Apple Managed Integration and Apple Individual Integration), the initiation of an Apple Pay transaction is triggered by the customer tapping a dedicated Apple Pay payment button.

For obtaining the payment button and its presentation requirements, see Apple Pay buttons and the references given there.

Use the Apple Pay API JavaScript library to display the button by including it as follows:

<script src="https://applepay.cdn-apple.com/jsapi/v1/apple-pay-sdk.js"></script>
Transaction processing for Apple Managed Integration
seq formservice apple pay managed

Before the merchant can obtain the actual payment token that will be used for transaction processing, a Payment Session with Apple must be established. In case of Apple Managed Integration, the Payment Session is initiated by DB Merchant Solutions REST API based on a request from the merchant. In its response, DB Merchant Solutions REST API will include an applepay_payment_session_token, which is needed to proceed the transaction with the customer.

It is important to take in mind that the apple_payment_session_token in the ApplePayPaymentSessionResponse of the Apple Pay payment session request is Base64 encoded. It has to be decoded before further use. In JavaScript this can be done with the atob function using the following code snippet:

var decodedToken = atob(paySessToken);
if (useDevice===true) {
    applePaySession.completeMerchantValidation( JSON.parse( decodedToken ) );
} else {
    addlog("do not use device");
}

Once the customer has finished the transaction, the browser will call the 'onpaymentauthorized' method of the merchant and hand over an ApplePayPayment object to the merchant.

The merchant can extract the ApplePayPaymentToken from this object and set up a request to DB Merchant Solutions REST API including this object to finish the transaction. After processing the request, DB Merchant Solutions REST API will send a response to the merchant. The transaction result is contained in processed.rc, either indicating a successful (processed.rc equal to 0) or non-successful (processed.rc different from 0) transaction. The merchant must present the result by calling the completepayment method.

Transaction processing for Apple Individual Integration
seq formservice apple pay direct

Before the merchant can obtain the actual payment token that will be used for transaction processing, a Payment Session with Apple must be established.

In case of Apple Individual Integration, the Payment Session is initiated directly by the merchant with an ApplePayPaymentSessionRequest. In its response, Apple Pay will include an ApplePaySession, which is needed to proceed the transaction with the customer.

Once the customer has finished the transaction, the browser will call the onpaymentauthorized method of the merchant and hand over an ApplePayPayment object to the merchant. The merchant can extract the ApplePayPaymentToken from this object and set up a request to DB Merchant Solutions REST API including this object to finish the transaction. After processing the request, DB Merchant Solutions REST API will send a response to the merchant. The transaction result is contained in processed.rc, either indicating a successful (processed.rc equal to 0) or non-successful (processed.rc different from 0) transaction. The merchant must present the result by calling the completepayment method.

Using the parameters
A minimal example

Use the Apple Pay endpoint to initiate the transaction at DB Merchant Solutions REST API. As indicated above, for each initial Apple Pay transaction the following fields are required:

  • amount_total.amaount and amount_total.currency

  • means_of_payment.applepay_token.

If the request shall initiate a series of transactions (for example for recurring transactions), the merchant must use an alias, that is, set alias_action to create in the initial request. All follow-up transactions must use the standard credit card payment endpoint and contain not the applepay_token but instead contain the alias obtained in the response to the first request. Moreover, the follow-up transactions must contain the parameters sequence_type (either RECURRING or FINAL), series_flag (either RECURRING or UCOF), and recurring_payment. See also Credit card recurring transactions.

Also note Apple Pay’s specific requirements on recurringPaymentRequests.

The usage of an alias is necessary as the original applepay_token might expire and therefore a follow-up transaction request might be declined by DB Merchant Solutions REST API.
Submitting basket items and consistency of amounts

If basket items are submitted, for each basket item the fields unit_price.net and unit_price.gross are required.

Furthermore, the amounts have to be consistent as follows.

For each basket item, the basket item gross amount is calculated as quantity.quantity_amount * unit_price.gross - item_discount.gross. It is required that amount_total.amount equals the sum over each basket item gross amount plus the shipping costs minus the basket discount.

Basket ID

The requirements for the parameter basket.basket_id for Apple Pay are the same as for a credit card transaction, see Credit card basket ID.

Using the risk check

DB Merchant Solutions REST API supports a risk check to calculate a risk score for a transaction and then automatically decline a transaction which has a high risk score or which triggers certain rules.

Add RISKCHECK to the parameter processing_options to calculate this risk score and then automatically decline high risk transactions. Furthermore, supply as much information as possible in the following parameters to allow for a good risk score calculation:

  • shipping_address

  • billing_address

  • basket

  • customer_information

  • device_information

  • account_information

  • merchant_risk_indicators.

The billing address information will not be parsed out of the Apple Pay specific data object. If the merchant wants to include the billing address in the risk check, it must be provided explicitly as in the context of other payment types. Also, the format must obey the general requirements of DB Merchant Solutions REST API.
Pre-transaction checks

DB Merchant Solutions REST API checks the following:

  • The provided applepay_token is valid, that is,

    • the signature is valid (including checks that the used keys are valid and not expired),

    • the token can be decrypted to meaningful payment data, and

    • the token itself is not expired.

  • The requested card scheme is supported (see above for the supported schemes).

  • Furthermore, all checks for credit card transactions are also applied to Apple Pay transactions.

If one of the checks fails, the transaction is declined.

Form of the response

DB Merchant Solutions REST API generates the response to a merchant’s request for Apple Pay in the same way as for a credit card transaction.

5.3.5. Capture, refund, and reversal

For captures, reversals, and refunds, for all integration types use the general subsequent transaction endpoint, setting kind = CREDITCARD (as an Apple Pay transaction is a credit card transaction).

5.3.6. Diagnosis requests

For retrieving information about a previous transaction, use the general endpoints for diagnosis for an event and diagnosis for a single transaction.

5.3.7. Test data

  • When using Apple Individual Integration, refer to Apple test data for test data for Apple Pay.

  • When using Apple Managed Integration, contact Deutsche Bank customer support for test data for Apple Pay.

5.4. SEPA Direct Debit (SDD)

5.4.1. Introduction

Background

SEPA Direct Debit (SDD) is a payment method which allows a customer having a bank account in one of the 36 SEPA member states to pay by giving their bank account information and authorizing the transaction by issuing a mandate.

SEPA Credit Transfer (SCT) similarly supports credit transfers for the SEPA region.

Supported countries and currencies

SDD is available in the following countries (with their ISO country codes):

  • Members of the European Union:

    Austria (AT), Belgium (BE), Bulgaria (BG), Croatia (HR), Republic of Cyprus (CY), Czech Republic (CZ), Denmark (DK), Estonia (EE), Finland (FI), France, Germany (FR), Greece (GR), Hungary (HU), Ireland (IE), Italy (IT), Latvia (LV), Lithuania (LT), Luxembourg (LU), Malta (MT), Netherlands (NL), Poland (PL), Portugal (PT), Romania (RO), Slovakia (SK), Slovenia (SI), Spain (ES), and Sweden (SE).

  • Members of EFTA:

    Iceland (IS), Liechtenstein (LI), Norway (NO), and Switzerland (CH).

  • Further countries:

    Andorra (AD), Monaco (MC), San Marino (SM), and Vatican City (VA).

SDD supports EUR as currency.

Merchant obligations

When using SDD, the merchant has to observe the SEPA regulations regarding the pre-notification of customers and the issuing of mandates by customers.

Requirements

To use SDD/SCT, you have to provide the following information during onboarding:

  • IBAN and BIC of the merchant’s bank account (to which the payments shall be transferred and from which the refunds shall be credited),

  • the name of the bank account holder,

  • the merchant’s SEPA creditor ID,

  • the name of the shop.

Supported integration types

DB Merchant Solutions REST API supports SDD/SCT in all integration types.

Supported transaction kinds

SDD/SCT supports the following transaction kinds:

  • authorization (standard and recurring)

  • pre-authorization

  • capture (full and multiple partial)

  • refund (full and multiple partial)

  • reversal (full and single partial)

  • credit

  • verify means of payment (MOP).

Contact Deutsche Bank customer support to activate multiple captures and refunds.

For an SDD pre-authorization, the reservation period is 30 days. For SDD, the reversal of an authorization, capture, credit, or refund is possible until the end of the day of the transaction (Central European Time (CET) or Central European Summer Time (CEST)).

SDD supports a capture with an amount less than or equal to the amount of the pre-authorization for all customers, but does not support an overcapture, that is, a capture with an amount exceeding the amount of the pre-authorization.

5.4.2. Authorization, pre-authorization, and verify means of payment

See Authorization, Pre-authorization, and Verify means of payment for general information about authorization, pre-authorization and verify means of payment.

For SDD, use the following endpoints:

Required and optional fields

For each SDD authorization or pre-authorization, the following fields are required:

  • The total amount (amount_total),

  • customer’s bank account information,

  • and the mandate information (mandate).

All other fields are optional.

For the payment endpoint customer’s bank account information is provided within the field means_of_payment. It can be supplied in one of three ways:

  • Direcly provide it via bank_account.iban and bank_account.bic.

  • Use a previously created alias (see Aliases).

  • When using the iFrame service, use the token it provides (see iFrame Service).

The BIC is optional in countries of the European Union and required in all other countries (see Supported countries and currencies). This is not validated by DB Merchant Solutions REST API but is in the responsibility of the merchant (who may use the country codes given in Supported countries and currencies which are the prefixes of the IBAN).

For Form service customer’s bank account information is input in the form provided by DB Merchant Solutions. By default, the form contains input fields for IBAN and BIC. BIC is required for countries outside the European Union. This is validated by Form service. The merchant’s shop can be configured to only accept payments from german accounts (ask Deutsche Bank customer support for details if required). In this case the input field for BIC is omitted.

The mandate information has to be supplied via the field mandate which is a required field of the payment endpoint and required subfield of direct_debit_data for Form service. The required and optional field of mandate are described in SEPA mandate management

Use the parameter due_date to indicate when the SDD shall be booked. The due date has to be at least three TARGET2 business days after the current date and at most 14 calendar days after the current date. If the due date is less than three TARGET2 business days after the current date, the SDD will be booked three TARGET2 business days from the current date. Likewise, if the due date is more than 14 calendar days after the current date, it will be booked 14 calendar days from the current date.

TARGET2 business days are Monday to Friday except for TARGET2 closing days, see the TARGET2 calendar.

If you leave due_date empty, the direct debit is carried out as soon as possible.

The parameter basket_id will be set in the customer bank account statement in the field Remittance information (unstructured). Therefore, the basket_id for SDD must meet the following requirements:

  • maximal length: 140

  • allowed characters: 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 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 0 1 2 3 4 5 6 7 8 9 / - ? : ( ) . , + '.

Pre-transaction checks

DB Merchant Solutions REST API checks the following:

  • the BIC exists, if provided

  • the check digits of the provided IBAN are correct

  • the error checking number of the bank account number, which is part of the IBAN, is calculated correctly according to the bank’s verification rule

  • the IBAN is not on a blocklist as configured by Deutsche Bank customer support according to the merchant’s requirements.

If one of the checks fails, the transaction is declined.

Note that the online verification whether the account provided actually exists may not be carried out due to the current regulation of the German credit services sector.

Using the checklist

DB Merchant Solutions REST API supports a checklist with suspicious IBANs. This checklist is updated regularly with fraudulent IBANs.

Add CHECKLIST to the parameter processing_options to automatically decline a transaction in case the customer IBAN is on the checklist.

See SDD test data for an IBAN to test the checklist.

Using the risk check

DB Merchant Solutions REST API supports a risk check to calculate a risk score for a transaction and then automatically decline transactions which have a high risk score or which trigger certain rules.

Add RISKCHECK to the parameter processing_options to calculate this risk score and then automatically decline high risk transactions. Furthermore, supply as much information as possible in the following parameters to allow for a good risk score calculation:

  • shipping_address

  • billing_address

  • basket

  • customer_information

  • device_information

  • account_information

  • merchant_risk_indicators.

Using additional SEPA features: B2B payments and custom due date
  • For B2B payments, which differ in certain regulatory aspects from the default SEPA Core Direct Debit, set debit_method to B2B.

  • By default, the SDD will be cleared as soon as possible. To allow for a later clearing (for example to notify the customer), set due_date to the desired clearing date. The due date has to be at least three TARGET2 business days (not on weekends or the so called TARGET2 or TARGET holidays) after the current date and has to be less than or equal to 14 days in the future.

5.4.3. SEPA mandate management

To use SEPA direct debit (SDD) as a payment method, a merchant first has to obtain a mandate from the customer. A mandate can be issued in a paper or electronic format.

The merchants are responsible for obtaining the mandate from the customer and for using it correctly. For the validity of SEPA mandate it is especially important that the creditor’s ID is contained in the SEPA mandate. This value has to coincide with the value given during onboarding (see Requirements).

The mandate specific information is configured in the field mandate (see also Required and optional fields).

The subfields reference and signed_on are required. Both are attributes of a valid SEPA mandate. The mandate reference reference must be unique for the creditor’s ID.

The mandate sequence type (subfield mandate_sequence_type) is particularly important:

By this fields mandates for single payments and mandates for recurrent payments are distinguished. (This information must also be registered in an electronic representation of the mandate, see SEPA Direct Debit Core Scheme Rulebook of the EPC.)

For single payments the value ONEOFF is used.

For recurrent payments the values RECURRING, FIRST, and LAST can be used. FIRST may optionally be used to indicate the first payment in a sequence. Using the value LAST indicates that the mandate is invalidated after the transaction. Subsequent SDD transaction with the mandate (usually) will fail.

Note, that RECURRING must be used for pre-authoriztations if multiple captures are used.

The default value of mandate_sequence_type is ONEOFF. If the field is omitted, only one transaction per reference is possible. Subsequent transactions (of any sequence type) are (usually) rejected by the customer’s bank.

The merchant may send further optional fields when required, for example support changes to the mandate in case the mandate was previously issued and a change of reference, creditor ID, BIC or IBAN has taken place.

For further details concerning these and other parameters, consult the API documentation.

5.4.4. Clearing and settlement

Clearing and settlement, that is the funds transfer from the customer to the merchant, takes place at due_date, see Setting the due date. For example, an authorization without a specific due date sent to DB Merchant Solutions REST API on Monday 23:59:00 CET will be cleared on Thursday, while an authorization without a specific due date sent to DB Merchant Solutions REST API on Tuesday 00:01:00 CET will be cleared on Friday.

Form of end-to-end ID and handling debit returns

DB Merchant Solutions REST API generates an end-to-end ID for an SDD transaction as follows: the final six characters of the system reference followed by a dot and the last 28 characters of the event_id. In the process, underscores which are not allowed in the end-to-end ID are removed from the transaction number.

A customer or their bank may return a direct debit transaction which then can be seen on the merchant’s bank account statement. In this case, the return contains the end-to-end ID from the initial direct debit, which allows to identify the original transaction.

Customer bank account statement
camt.053 and MT940 format

When a customer obtains their bank account statement electronically in the camt.053 format or the older MT940 statement, the parameters set in DB Merchant Solutions REST API are used as follows.

DB Merchant Solutions REST API camt.053 MT940

basket_id

RmtInf/Ustrd

SVWZ+

event_id

PmtId/EndToEndId

EREF+

mandate.reference

DrctDbtTx/MndtRltdInf/MndtId

MREF+

mandate.signed_on

DrctDbtTx/MndtRltdInf/DtOfSgntr

MREF+

Note that for a pre-authorization and a capture, the basket ID can be changed with the capture, see Transaction kind details. In this case, the basket ID as set in the capture will be displayed in the account statement.

Online banking

When a customer obtains their bank account statement via their online banking, the information displayed or printed depends on the customer’s bank. For example, the following two screenshots show SDD transactions as displayed by two different German banks.

bank account statement 01
bank account statement 02
Merchant bank account statement and reconciliation

To check if every SDD transaction submitted via DB Merchant Solutions REST API has been successfully booked, it is possible to reconcile the merchant’s bank account statement as follows.

  1. Contact Deutsche Bank customer support to receive camt.053 (Bank to Customer Statement) or camt.054 (Bank to Customer Debit Credit Notification, formerly DTI) bank account statements of the merchant’s SDD bank account.

  2. When using camt.053 bank account statements, contact Deutsche Bank customer support to set the SDD configuration to single collection ("Einzelbuchung"). This will set BatchBooking = false during clearing, which makes the camt.053 display single transactions. camt.054 statements will automatically display single transactions.

  3. The field EndToEndId of a booking in the camt.053 or camt.054 statement has the following form:

    • position 1-6: DB Merchant Solutions REST API internal ID

    • position 7: "."

    • position 8-35: last 28 characters of event_id (path parameter as set by merchant)

For example, for event_id = 12345678901234567890123456789012 (length: 32 characters), EndToEndId will have the form eaaxY5.5678901234567890123456789012 where eaaxY5 is some DB Merchant Solutions REST API internal ID and 5678901234567890123456789012 are the last 28 characters of event_id.

  1. Thus, to reconcile SDD transactions, for each transaction check if the last 28 characters of its event_id are contained in the bank account statement’s EndToEndId of some transaction.

  2. Note that a refund (initiated by the merchant) or a return (initiated by the customer or the customer’s bank) for an SDD transaction has the same EndToEndId as the SDD transaction. To distinguish an SDD transaction from a return or refund, take the booking direction into account: an SDD transaction will credit the merchant’s account, whereas a refund or a return will debit the merchant’s account.

5.4.5. Capture, refund, and reversal

See Subsequent transaction as well as Capture, Refund, and Reversal for general information about capture, refund, and reversal.

For SDD, use the general subsequent transaction endpoint for all integration types, setting kind = DIRECTDEBIT.

5.4.6. Credit

See Credit for general information about issuing a credit.

For SDD, use the payment SDD endpoint with tx_action = credit for all integration types.

5.4.7. Diagnosis request

See Diagnosis request for general information about retrieving information about a previous transaction.

For SDD, use the general endpoints GET /payment/event/{event_id} and GET /payment/tx/{tx_id} for all integration types.

5.4.8. Response codes

The following table shows the most common response codes for direct debit transactions. See Response codes for a complete list of possible response codes.

Response code Description

0

Transaction successful.

1548

Transaction is pending.

1399

Incomplete SEPA mandate data.

1521

Invalid currency.

1601

Mandate signed in the future.

5.4.9. Test data

Use the following IBANs for successful test payments:

  • DE87123456781234567890

  • DE63123456791212121212.

The following IBANs are invalid and result in the response code 1507 (Transaction rejected):

  • DE52123456771234567890

  • DE90123456791212121211.

To test the checklist, the following IBAN will result in a successful transaction when processing_options does not include CHECKLIST and will result in a rejected transaction with response code 1523 (Means of payment blocked) when processing_options does include CHECKLIST:

  • DE63593501100229286232.

5.4.10. Monitoring SDD returns

After performing an SDD authorization or capture, the transaction amount will be charged from the customer’s bank account and transferred to the merchant’s bank account. However, the customer’s bank as well as the customer have the possibility to return the direct debit transaction:

  • The bank may return the transaction for technical reasons, for example because the given bank account does not exist or the given bank accounts exists but does not have sufficient funds.

  • The customer may return the transaction for different reasons, for example when the direct debit was issued without a proper mandate.

For this reason, merchants need to monitor their accounts for direct debit returns.

DB Merchant Solutions REST API offers the feature to alert a merchant whenever a direct debit return is booked on their bank account. To use this feature, proceed as follows:

  1. Implement the SDD return callback API as server. This means to implement the endpoint /sddreturncallback.

  2. Contact Deutsche Bank customer support to enable DB Merchant Solutions REST API to access account statements of the merchant’s bank account. Supply the URL of your endpoint.

Whenever a direct debit return then is booked on the merchant’s bank account, DB Merchant Solutions REST API will send a request to your endpoint with all relevant information about this direct debit return. In particular, the following fields are always included:

  • the event_id of the original transaction which is returned to match the return to the original transaction

  • the reason for the return (reason_code, reason_code_proprietary, and additional_reason_information)

  • all relevant amounts (original_amount, fee_customerbank, and fee_merchantbank).

Respond with status code 200 for a successful receipt of a callback and with status code 400 if an error occurred.

5.5. PayPal

5.5.1. Introduction

DB Merchant Solutions REST API supports payments with PayPal for the transaction kinds authorization, pre-authorization, capture, refund, and reversal.

Supported countries and currencies

PayPal is available in the following countries: Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, Argentina, Armenia, Aruba, Australia, Austria, Azerbaijan Republic, Bahamas, Bahrain, Barbados, Belarus, Belgium, Belize, Benin, Bermuda, Bhutan, Bolivia, Bosnia and Herzegovina, Botswana, Brazil, British Virgin Islands, Brunei, Bulgaria, Burkina Faso, Burundi, Cambodia, Cameroon, Canada, Cape Verde, Cayman Islands, Chad, Chile, Colombia, Comoros, Cook Islands, Costa Rica, Cote d’Ivoire, Croatia, Cyprus, Czech Republic, Democratic Republic of the Congo, Denmark, Djibouti, Dominica, Dominican Republic, Ecuador, Egypt, El Salvador, Eritrea, Estonia, Ethiopia, Falkland Islands, Faroe Islands, Federated States of Micronesia, Fiji, Finland, France, French Guiana, French Polynesia, Gabon Republic, Gambia, Georgia, Germany, Greece, Greenland, Grenada, Guadeloupe, Guatemala, Guinea, Guinea-Bissau, Guyana, Honduras, Hong Kong SAR China, Hungary, Iceland, India, Indonesia, Ireland, Israel, Italy, Jamaica, Japan, Jordan, Kazakhstan, Kenya, Kiribati, Kuwait, Kyrgyzstan, Laos, Latvia, Lesotho, Liechtenstein, Lithuania, Luxembourg, Madagascar, Mainland China, Malawi, Malaysia, Maldives, Mali, Malta, Marshall Islands, Martinique, Mauritania, Mauritius, Mayotte, Mexico, Moldova, Monaco, Mongolia, Montenegro, Montserrat, Morocco, Mozambique, Namibia, Nauru, Nepal, Netherlands, Netherlands Antilles, New Caledonia, New Zealand, Nicaragua, Niger, Nigeria, Niue, Norfolk Island, North Macedonia, Norway, Oman, Palau, Panama, Papua New Guinea, Paraguay, Peru, Philippines, Pitcairn Islands, Poland, Portugal, Qatar, Republic of the Congo, Reunion, Romania, Russia, Rwanda, Saint Helena, Saint Kitts and Nevis, Saint Lucia, Saint Pierre and Miquelon, Saint Vincent and the Grenadines, Samoa, San Marino, Sao Tome and Principe, Saudi Arabia, Senegal, Serbia, Seychelles, Sierra Leone, Singapore, Slovakia, Slovenia, Solomon Islands, Somalia, South Africa, South Korea, Spain, Sri Lanka, Suriname, Svalbard and Jan Mayen, Swaziland, Sweden, Switzerland, Taiwan China, Tajikistan, Tanzania, Thailand, Togo, Tonga, Trinidad and Tobago, Tunisia, Turkmenistan, Turks and Caicos, Tuvalu, Uganda, Ukraine, United Arab Emirates, United Kingdom, United States, Uruguay, Vanuatu, Vatican City, Venezuela, Vietnam, Wallis and Futuna, Yemen, Zambia, and Zimbabwe.

PayPal supports the following currencies: AUD, BRL, CAD, CHF, CNY, CZK, DKK, EUR, GBP, HKD, HUF, ILS, JPY, MXN, MYR, NOK, NZD, PHP, PLN, RUB, SEK, SGD, THB, TWD, and USD.

Prerequisites

You need a PayPal business account, and you have to allow DB Merchant Solutions REST API carrying out payments on your behalf. You may contact Deutsche Bank customer support how to grant these permissions.

You have to pass the email address and the merchant ID of your PayPal business account to Deutsche Bank customer support.

DB Merchant Solutions REST API supports the versions v1 and v2 of the PayPal API. Which version is used internally depends on the merchant’s configuration. For internally using version v2, the PayPal merchant ID is required. Existing merchants who want to change to v2 have to contact Deutsche Bank customer support and pass this ID.

The differences in DB Merchant Solutions REST API for merchants using version v1 or v2 are as follows:

  1. Widget Solution is only supported for version v2.

  2. Form service behaves differently (see Handling of the shipping address).

  3. Recurring payments are only supported in version v2.

Supported integration types

PayPal is supported by

  • the general Form service checkout page and in the Form service with PayPal already selected,

  • Widget Solution.

Supported transaction kinds

PayPal supports the following transaction kinds:

  • authorization (standard)

  • pre-authorization

  • capture (full and multiple partial)

  • refund (full and single partial) (possible only for authorizations or captures)

  • reversal (full) (possible only for pre-authorizations).

A PayPal pre-authorization reserves funds for 29 days, after which the funds are automatically released and a capture is no longer possible.

  • The merchant may capture or reverse a pre-authorization during this time.

  • If the capture amount is less than the pre-authorized amount (partial capture), the remaining amount remains pre-authorized.

  • If no capture has taken place or if one or more partial captures have taken place, the merchant can only reverse the full remaining amount of the pre-authorization.

  • If a capture has taken place, the merchant can not reverse the transaction but has to issue a refund instead.

For captures exceeding the amount of pre-authorization (overcaptures) the situation depends on the applicable regulations at the customer’s billing address. Overcaptures are ruled by PSD2 regulation. In countries where this regulation applies (EEA and others) overcaptures are prevented by PayPal. In other countries (including the US) overcaptures may be possible within a limit depending on the merchant. This overcharge limit is set to 115% by default. In principle the merchant is responsible to comply with legislation. See PayPal documentation for details.

5.5.2. Authorization and pre-authorization

For the integration type Form service, use the standard checkout endpoint and supply PayPal data, or use the Form service PayPal endpoint and supply the necessary data.

The following fields are required:

  • amount_total and subfields

  • form_customer_continuation and subfields

  • callback and subfields.

Course of transaction

When using the Form service endpoint for PayPal, the course of transaction is as follows.

seq formservice paypal
PayPal course of transaction
  1. The customer makes a purchase in the shop and starts the payment process.

  2. The shop generates an HTTP request and sends it to DB Merchant Solutions REST API.

  3. DB Merchant Solutions REST API creates an order on the merchant’s behalf at PayPal.

  4. PayPal responds to the creation of the order.

  5. DB Merchant Solutions REST API sends a response message to the shop. In case of success it will include the redirect URL to the PayPal front end. In case of an error the transaction is finished.

  6. As response step 1 the shop sends a redirect to the redirect URL received in step 5 to the customer.

  7. The customer’s browser redirects to PayPal.

  8. The customer carries out the necessary steps for the payment on the PayPal site:

    Login to their PayPal account, inspect the order which was created in step 3, choose a means of payment, and confirm the payment.

  9. PayPal sends a redirect to DB Merchant Solutions REST API the customer.

  10. The customer’s browser redirects to DB Merchant Solutions REST API.

  11. DB Merchant Solutions notifies the shop about the transaction result. The URL supplied in the initialization request is used for this (notify_url). This step and step 11 are skipped if you submit the skip parameter in the initial request. In this case your application has to send a status request to DB Merchant Solutions for finding out the outcome of the payment. For details see Callback and diagnosis request.

  12. The shop confirms receipt of the notification.

  13. DB Merchant Solutions REST API sends the customer a redirect to the URL submitted in step 1.

  14. The customer’s browser redirects to this URL.

  15. The shop displays the payment result to the customer.

When using the Form service checkout endpoint, step 7 starts after the customer chooses their payment method.

Callback and transaction result

For Form service, the transaction result is passed to the merchant’s using the callback mechanism (see Callback and diagnosis request).

The callback request contains the parameters rc and message. For PayPal, the following scenarios need to be considered, where 2. is specific for PayPal:

  1. If rc = 0 and message= "Transaction successful", the transaction was successful.

  2. If rc= 1345 or 1548 and message = "The selected transaction is currently in work." or "Transaction is pending.", the transaction might require a manual approval from the merchant. In this case, check the PayPal merchant portal for the transaction and approve or decline it manually.

  3. A transaction that contains a different rc value is completed and not successful.

5.5.3. Capture, refund, and reversal

For PayPal, a refund is possible for authorizations and captures. A reversal is possible for pre-authorizations.

Use the general endpoint for the transaction kinds capture, refund, and reversal, setting kind = PAYPAL. See the next section on which tx_id to use.

5.5.4. Handling of the shipping address

Widget Solution

For the integration type Widget Solution, the merchants may either pass the shipping address to PayPal or not (see create session endpoint). They can also choose whether the provided address is used for shipping (paypal_shipping_preference set to SET_PROVIDED_ADDRESS) or whether the shipping address is provided from file (the customer’s PayPal account) and chosen by the customer (GET_FROM_FILE). The customers choose their address (or enter a new one) in the PayPal modal window after they log in to their PayPal account.

If the shipping address is not passed, only GET_FROM_FILE is possible. If the shipping address is passed, it is contained in the list of addresses to choose from.

For Widget Solution, the merchant can implement event handlers which react on the chosen address, for example by rejection if the shipping country is not supported. They can also adopt the shipping costs to the address.

If no shipping is required (meaning that the basket_type in Basket is DIGITAL), the option NO_SHIPPING can be used for paypal_shipping_preference.

Form Service

For the integration type Form service the following has to be considered:

If the merchant’s account is configured to use version v1 of the PayPal API (see Prerequisites), the customer is presented the GET_FROM_FILE behaviour although the customer’s choice is not passed to the merchant. This may lead to mistakes. Merchants should contact Deutsche Bank customer support and use version v2 to prevent this.

If the merchant’s account is configured to use version v2 of the PayPal API (see Prerequisites), the handling of the shipping address is as follows:

  1. If the basket_type is DIGITAL, no shipping address is shown in the PayPal window (like NO_SHIPPING in Widget Solution). In the case, the shipping_address can be omitted in the initialization request (for PayPal or checkout).

  2. If the basket_type is PHYSICAL or MIXED and the shipping_address is missing in the initialization request, the customer may choose an address from file or enter a new one in the PayPal modal window (GET_FROM_FILE).

    After the successful transaction, the shipping address is passed to the merchant in the callback request.

    In this case, the merchant can not react to the customer’s choice of the shipping address (for example to reject the address).
  3. If the basket_type is PHYSICAL or MIXED and the shipping_address is provided, this provided address is used and can not be changed by the customer (SET_PROVIDED_ADDRESS).

5.5.5. Recurring payments

PayPal supports recurring payments. The customer issues a billing agreement which is referenced by an alias within DB Merchant Solutions REST API (see Aliases and recurring payments). Billing agreements are called automatic payments in the PayPal terminology.

Recurring payments can be created using the integration types Form service or Widget Solution.

Alias and recurring payments are only supported for version v2 of the PayPal API, see Prerequisites.
Creating an alias

An alias referencing a billing agreement is created using the alias_action CREATE in the initialization request for Form service or the create session request for Widget Solution:

Field alias_action for creating an alias:
"alias_action": {
    "action": "CREATE"
}

For Widget Solution alias_action is a sub-field of transaction_data.

The creation of the alias may be included in an initial transaction (of transaction kind authorization or preauthorization) or not. In the latter case, the transaction kind (tx_action) verify-mop has to be used as a path parameter for Form service or POST /widgetsolution/session/event/{event_id}/{tx_action}.

In case of success, the alias is returned in the field alias_info in the callback request for Form service and in the response of the finalization for Widget Solution.

Subsequent transactions

A PayPal alias can be used to initiate MIT (see Recurring payments) without the customer’s interaction.

This is done using the PayPal endpoint of the Payment API. This alias is used as a subfield of means_of_payment there.

5.5.6. Diagnosis request

Use the general endpoints GET /payment/event/{event_id} and GET /payment/tx/{tx_id} for retrieving information about a previous PayPal transaction.

Important:

The structure of the PayPal transactions given by GET /payment/event/{event_id} differs from the general case: When a transaction is initialized, the result of GET /payment/event/{event_id} is a transaction with response code "rc": "0" (meaning success) and "tx_action": "payment". This refers to a "create order" transaction (or similar) in the PayPal backend.

The existence and the response code of this transaction does not mean that the payment has been successful. The actual transaction has tx_action set to authorization, preauthorization, or verify-mop and appears in the children field of the payment transaction.

The status of this child transaction is relevant for the status of the payment transaction. This child transaction is referenced in the callback request.

If the children field of the "outer" transaction (with tx_action = payment) is not present, the customer has either not yet logged in to PayPal or has not yet confirmed the transaction, meaning that the transaction is pending.

When creating a capture, reversal, or refund for an authorization or pre-authorization, it is important to refer to the tx_id of the child transaction having the corresponding tx_action.

Example of a pending PayPal transaction:
{
  "transactions": [
    {
      "rc": "0",
      "message": "Transaction successful.",
      "event_id": "event_123",
      "tx_id": "hIhpADmiuQUelPHKc2IG5z",
      "amount_total": {
        "amount": 1300,
        "currency": "EUR"
      },
      "kind": "PAYPAL",
      "tx_action": "payment",
      "back_rc": "SUCCESS",
      "timestamp": "2025-01-10T17:45:27.992"
    }
  ],
  "rc": "0",
  "message": "Transaction successful."
}
Example of a successful PayPal transaction:
{
  "transactions": [
    {
      "children": [
        {
          "rc": "0",
          "message": "Transaction successful.",
          "event_id": "event_123",
          "tx_id": "pvsKJHMmy0zk2qDU4TpFIs",
          "amount_total": {
            "amount": 1300,
            "currency": "EUR"
          },
          "kind": "PAYPAL",
          "tx_action": "authorization",
          "back_rc": "SUCCESS",
          "back_ext_id": "1GX723645E506494K",
          "timestamp": "2025-01-10T17:48:56.45"
        }
      ],
      "rc": "0",
      "message": "Transaction successful.",
      "event_id": "event_123",
      "tx_id": "hIhpADmiuQUelPHKc2IG5z",
      "amount_total": {
        "amount": 1300,
        "currency": "EUR"
      },
      "kind": "PAYPAL",
      "tx_action": "payment",
      "back_rc": "SUCCESS",
      "timestamp": "2025-01-10T17:45:27.992"
    }
  ],
  "rc": "0",
  "message": "Transaction successful."
}

5.5.7. Response codes

The following table shows the most common response codes for PayPal transactions. See Response codes for a complete list of possible response codes.

Response code Description

0

Transaction successful.

1598

Transaction cancelled on PayPal.

1552

Invalid amounts.

1595

Transaction not confirmed.

1504

System error.

1548

Transaction is pending.

1105

Backend system error.

1594

Change payment method.

1592

Invalid PayPal token.

5.5.8. Test data

PayPal offers a developer environment which covers sandbox accounts. These are used for transactions in the sandbox environment which is used by the test environment of DB Merchant Solutions (see API version, test and production, and base URLs).

It is recommended to create a sandbox business account as the merchant’s account and (at least one) sandbox personal account as a customer’s account, see PayPal sandbox testing guide. For this, you have to log in with a regular PayPal account.

Within the sandbox personal account, a credit card is preconfigured which can be used for testing successful transactions.

The page Card testing provides a "credit card generator" to generate further cards, and it describes how to simulate card error scenarios.

For this, you need to add a new credit card where the first name contains a "rejection trigger". Adding a new credit card is neither possible in the PayPal developer dashbord nor from the sandbox account: The name of the cardholder cannot be entered there.

Instead, you have to add this card as a new means of payment on the PayPal payment page:

Credit card with rejection trigger

5.6. Request to Pay (RtP)

5.6.1. Introduction

Request to Pay (RtP) is a payment method in which the customer is redirected to their bank during the checkout process. The customer then logs in to their banking account and authorizes the payment, after which the payment is carried out via SEPA Credit Transfer (SCT, conventional credit transfer, taking one or more days) or SEPA Instant Credit Transfer (SCT inst, real-time funds transfer).

The merchant may inquire at any time about the status of the payment, in particular for SCT inst. For this, the diagnosis request has to be used.

Supported countries and currencies

RtP is available in the following countries: Austria, Belgium, Estonia, Finland, France, Germany, Ireland, Italy, Latvia, Lithuania, Luxembourg, Netherlands, Portugal, Spain, and United Kingdom.

DB Merchant Solutions REST API supports the following locales for RtP: de (German), en (English), es (Spanish), fi (Finnish), fr (French), it (Italian), nl (Dutch), pt (Portuguese), and ru (Russian). The default locale is English.

Supported integration types

DB Merchant Solutions REST API supports RtP in the general Form service checkout page and in the Form service with RtP already selected for the transaction kind authorization.

Supported transaction kinds

RtP supports the following transaction kinds:

  • authorization (standard)

  • refund (full and multiple partial).

Requirements

To use RtP, provide the following information during onboarding:

  • IBAN of the merchant’s bank account to which the payments shall be transferred

  • IBAN of the merchant’s bank account from which refunds shall be transferred.

The two IBANs may be identical.

5.6.2. Authorization

Endpoints

To offer RtP in the Form service checkout page, use the standard checkout endpoint. To offer RtP via form service with RtP already selected, use the Request to Pay endpoint.

Using the parameters

Only the parameters amount_total, callback, and form_customer_continuation are required, the other parameters are optional.

To automatically receive updates about the transaction status, supply callback and subfields.

To enhance the customer experience, set the parameters under request_to_pay_data as follows:

  • request_to_pay_data.customer_id: The customer’s technical ID with the merchant. When set, the customer has the additional option to select a previously used account associated to this customer ID.

  • request_to_pay_data.iban: The customer’s IBAN. When set, the customer has the additional option to select this bank account directly without first having to select a bank.

To choose if the payment shall be made via conventional SCT or real-time SCT inst, set processing_options as follows:

  • not set: process as SCT (supported by all banks).

  • INSTANT: require SCT inst. If the selected bank does not support SCT inst, the payment will be cancelled.

  • INSTANT_IF_POSSIBLE: If possible, process as SCT inst, otherwise as SCT.

Set formdata.locale to one of the supported values to ensure the display texts are displayed in this locale.

Basket ID

The field basket.basket_id is used as a business reference field that will be passed as a part of the end-to-end reference.

For RtP, basket_id may contain only the following characters: 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 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 0 1 2 3 4 5 6 7 8 9 / - ? : ( ) . , + '.

For RtP, basket_id must not contain // and must not start or end with a / .

The field length validation depends on the beneficiary account currency:

  • EUR: 129 chars

  • GBP: 7 chars.

Example: "PMNTREF".

Course of transaction

See the standard form service Course of transaction for the course of transaction for a Request to Pay transaction.

5.6.3. Checking the transaction status

Use the general endpoint GET /payment/tx/{tx_id} to obtain the status of a payment, which can be found in the field back_rc.

If in the authorization callback and subfields have been set, you will receive the status update automatically in the callback.

The following diagram shows the possible transaction statuses and their connections.

Transaction status Request to Pay
  • Initially, the status is RECEIVED.

  • If a customer cancels the transaction, the status changes to CANCELLED.

  • If the Request to Pay system or the customer’s bank should reject the transaction, the status changes to REJECTED.

  • Otherwise, the transaction will be authorised, so that the status changes to AUTHORISED.

  • If the transaction uses SCT inst, the status will then change to SETTLED.

  • Otherwise, that is if the transaction uses conventional SCT, the status will first change to PROCESSED after the payer bank has confirmed that the payment has been sent to clearing.

  • After the beneficiary bank has confirmed that it has accepted the payment received from clearing, the status changes to ACCEPTED.

  • The status then changes to CLEARED and SETTLED.

5.6.4. Refund

A refund is possible only after the transaction has the status SETTLED.

Use POST /payment/event/{event_id}/tx/{tx_id}/refund to refund a payment, setting kind = CREDITTRANSFER.

This endpoint does not support the callback mechanism, therefore this is not offered for monitoring RtP refunds. The Diagnosis request has to be used to track the transaction status.

5.6.5. Diagnosis request

See Diagnosis request for retrieving information about a previous transaction.

For Request to Pay, use the general endpoints GET /payment/event/{event_id} and GET /payment/tx/{tx_id} for all integration types.

For Rtp, diagnosis request is only supported in the production system, not in the test system.

5.6.6. Reports

Use the RtP payment report endpoint to receive information about RtP authorizations in a given time period.

Similarly, use the RtP refund report endpoint to receive information about RtP refunds in a given time period.

5.6.7. Response codes

The following table shows the most common response codes for Request to Pay transactions. See Response codes for a complete list of possible response codes.

Response code Description

0

Transaction successful.

1548

Transaction is pending.

1549

Amount too high.

1504

System error.

1547

Input failure.

1521

Invalid currency.

1566

Service blocked for bank account.

1569

Incorrect state of referenced transaction.

5.6.8. Test data

Successful authorization

On the first page the Request to Pay test website displays the amount of the payment and the name of the shop as it is registered in the Request to Pay system. Press the "Continue" button to get to the next page.

Here the customer has to find their bank. Start typing "Demo" in the input field, after which a list of banks will be displayed. Select one of them. Depending on the selection, another page with a list of options may be displayed. Select one of them and press the submit button.

On the next page enter a login name and password. The labels of the input fields may vary depending on the selected bank. Type for example "1234567890" and "123456" and press the "Login" button.

On the next page you will see a list of bank accounts. Select one of them.

On the final page enter a TAN. For some test banks a hint like "Please type 12345" is displayed. If not, try "123456". Depending on the selections on the previous pages the expected TAN format may vary. If the TAN is not accepted, a hint will be displayed, for example that the TAN has to be at least seven characters long. Then enter another TAN.

Press the submit button to finish the payment.

Unsuccessful authorization

To test a failed payment, press the "Cancel" button on one of the pages.

5.7. Klarna

5.7.1. Introduction

For general information about payments with Klarna, see the Klarna business information.

Klarna supports the transaction kinds authorization, pre-authorization, capture, reversal, and refund.

Supported countries and currencies

Klarna is available in the following countries: Austria, Belgium, Denmark, Finland, Germany, Great Britain, Netherlands, Norway, Sweden, Switzerland, and United States.

Klarna supports the following currencies: AUD, CAD, CHF, DKK, EUR, GBP, NOK, SEK, and USD.

Supported integration types

Klarna is supported in the Form service checkout page and in the Form service with Klarna already selected.

Supported purchase countries, currencies, and locales

See Klarna purchase countries which purchase countries (that is, the country of the billing address), currencies, and locales Klarna supports. For example, for Germany Klarna supports EUR as currency and the locales de and en, while for Switzerland Klarna supports CHF as currency and the locales de, fr, it, and en.

Supported transaction kinds

Klarna supports the following transaction kinds:

  • authorization (standard and recurring)

  • pre-authorization (standard and recurring)

  • capture (full and multiple partial)

  • refund (full and multiple partial)

  • reversal (full).

A Klarna pre-authorization reserves funds for 28 days, after which the funds are automatically released and a capture is no longer possible.

Klarna supports full captures and (multiple) partial captures. Klarna does not support overcaptures, that is captures with an aggregated amount exceeding the pre-authorized amount.

Prerequisites

Please register with Klarna.

5.7.2. Authorization and pre-authorization

Course of transaction

The following illustration shows the course of a Klarna authorization or pre-authorization in a sequence diagram.

seq formservice klarna
  1. The customer makes a purchase in the shop and starts the payment process.

  2. The shop generates an HTTP request and sends it to DB Merchant Solutions REST API. See Initializing the payment: Klarna for details.

  3. DB Merchant Solutions REST API checks the submitted data. In case of an error DB Merchant Solutions REST API continues with step 6.

  4. DB Merchant Solutions REST API sends a payment request to Klarna.

  5. Klarna sends the response to DB Merchant Solutions REST API .

  6. DB Merchant Solutions REST API sends a response message to the shop. In the case of success it will include the redirect URL to Klarna. In the case of an error the transaction is finished.

  7. As response to step 1 the shop sends a redirect to the redirect URL received in step 6 to the customer.

  8. The customer’s browser redirects to Klarna.

  9. The customer carries out the necessary steps for the payment on the Klarna website.

  10. Klarna sends the customer a redirect to DB Merchant Solutions REST API.

  11. Klarna sends the current status and details of the payment to DB Merchant Solutions REST API.

  12. DB Merchant Solutions REST API updates the status of the payment internally.

  13. DB Merchant Solutions REST API notifies the shop about the payment result.

  14. The shop confirms receipt of the notification.

  15. The customer’s browser redirects to DB Merchant Solutions REST API.

  16. DB Merchant Solutions REST API sends the customer a redirect to the URL submitted in step 1.

  17. The customer’s browser redirects to this URL.

  18. The shop displays the payment result for the customer.

Required and optional fields

See Klarna request examples for a minimal and a typical example of a Klarna request.

The following fields and their subfields are required:

  • amount_total

  • form_customer_continuation

  • callback

  • basket.basket_items: For each basket item, name, quantity, and unit_price.

Next to the required fields, include as many optional fields as possible to enhance the customer experience (in particular, in the Klarna app) and to allow Klarna a better credit assessment.

Contact Deutsche Bank customer support before using the parameter shipping_delay as an activation is necessary.

Customer data requirements

Klarna’s requirements on customer data depend on the purchase country, that is the country of the billing address. For example, national identification numbers are commonly only used in Nordic countries, while not in other countries.

See Klarna customer data requirements for further details:

  • Klarna requires certain fields in billing_address and shipping_address depending on the purchase country.

  • If not supplied initially, Klarna will request some fields from the customer during the payment process, for example the date of birth or the phone number.

  • When supplying shipping_address, the subfield email is required. If email is not set, DB Merchant Solutions REST API will submit the transaction to Klarna but suppress shipping_address so that the customer will be able to enter it.

  • Note that the Klarna fields national_identification_number, gender, and date_of_birth can be found in DB Merchant Solutions REST API under customer.

  • The Klarna fields given_name, family_name and street_address are set by DB Merchant Solutions REST API’s fields first_name, last_name and address_line_1. DB Merchant Solutions REST API does not support the Klarna field care_of.

Klarna metadata

Klarna allows the merchant to store additional metadata with an order (see Klarna metadata). Orders are generated during authorization and pre-authorization and can be access by the merchant, for example in the Klarna Merchant Portal. Some of the metadata is used in the Klara Settlement Report which is available to the merchant.

Klarna metadata is passed within the field merchant_information of the request body of the Klarna form service endpoint or the standard checkout endpoint.

The relevant subfields of merchant_information and the metadata fields of Klarna are named differently. The following table provides the field mapping and the default values if the corresponding subfield of merchant_information is omitted.

Subfield Klarna metadata Default value Usage

merchant_data_1

merchant_data

-

Order metadata

merchant_data_2

merchant_reference1

event_id

Order metadata,
Merchant Settlement Report,
Customer’s account statement

merchant_data_3

merchant_reference2

tx_id

Order metadata,
Merchant Settlement Report

Breakdown of total amount and validation

For each basket item, Klarna calculates the basket item gross amount as

quantity.quantity_amount * unit_price.gross - item_discount.gross.

Klarna then validates that amount_total.amount equals the sum over each basket item gross amount plus the shipping costs minus the basket discount.

Klarna supports only one currency per transaction, which means that all amount fields must have the same currency.

Using a discount

Use basket_item.item_discount to indicate a discount for the corresponding basket item.

Use basket_discount to indicate a discount for the whole basket.

Response (step 6)

After a successful initialization you receive a response containing the Klarna URL to which you redirect your customer afterwards.

If an error occurs during the initialization you receive a response that contains some of the request data as well as an error code and an error message.

Redirect customer (step 7)

Use the redirect URL received in step 6 to redirect your customer. This may be via HTTP redirect header, via HTML page with a meta tag or via a JavaScript form.

The actual clearing and settlement of the payment takes place when the customer carries out the necessary steps for the payment on the Klarna site.

Notification about the outcome of the payment (step 13)

After concluding the Klarna payment you receive a REST request from DB Merchant Solutions REST API, which informs your application about the outcome of the payment, see Callback API.

5.7.3. Capture

Use the general endpoint for a full or partial capture, setting kind = KLARNA. For a partial capture, optionally set those basket items which have been captured.

Provide the same basket_id as used in the pre-authorization.

For both full and partial captures, provide the shipping costs accordingly as they are part of the amount validation.

5.7.4. Refund

Use the general endpoint to issue a refund, setting kind = KLARNA. For both authorization and capture transactions, Klarna supports full and partial refunds. Multiple partial refunds are allowed for a transaction.

5.7.5. Reversal

Klarna supports the following kinds of reversals:

  • For a pre-authorization for which no subsequent (partial or full) capture has been made yet: Use the general endpoint, setting kind = KLARNA, for a full reversal.

  • For a pre-authorization for which at least one subsequent partial capture has been made: Use the general endpoint, setting kind = KLARNA, to release the entire remaining reserved funds by a single partial reversal transaction subsequent to the pre-authorization transaction.

DB Merchant Solutions REST API supports single partial reversals for Klarna, but only over the entire remaining reserved funds.

Klarna does not support reversals for authorizations or captures, instead Klarna requires issuing a refund.

Klarna does not support reversals for refunds or reversals of reversals.

5.7.6. Diagnosis request

Use the general endpoints GET /payment/event/{event_id} and GET /payment/tx/{tx_id} for retrieving information about a previous Klarna transaction.

5.7.7. Recurring transactions

Klarna supports recurring transaction, that is transactions where the merchant bills the customer repeatedly, for example magazine subscriptions or top-up transactions. For a customer, the start of a recurring transaction proceeds as a usual transaction, while the subsequent payment are initiated by the merchant without a customer interaction.

To use recurring transactions as a merchant, proceed as follows.

Start

For the first transaction in a series of recurring transactions, there are two options available:

  • Option 1: The customer does a checkout like for a standard transaction and additionally agrees to further billings in the future. Like for a standard transaction, the customer is billed for the checkout.

  • Option 2: The customer does a checkout like for a standard transaction and agrees to further billings in the future. However, here the customer is not yet billed for the checkout but will be billed only starting with the first subsequent transaction.

For the technical implementation, proceed as follows.

For both option, use the endpoint Klarna form service endpoint and set alias_action.action = CREATE.

  1. For option 1, use the transaction kind (tx_action) authorization or preauthorization

  2. For option 2, use the transaction kind (tx_action) verify-mop.

In the callback, the field alias_info is additionally returned. The value of alias_info.alias must be saved. It either contains the value supplied in the request or, if not supplied there, a system generated alias.

Note that it is possible to save the created alias under an existing name by using alias_action.action = UPDATE (which means renewing a billing agreement).

The value alias_action.action = USE is not applicable for Klarna in Form service.

Note that DB Merchant Solutions REST API does not support recurring transactions in the Form service checkout page with payment method selection as some payment methods do not offer recurring payments.

Subsequent transactions

Use the endpoint Klarna payment endpoint and supply the alias received in the first transaction under means_of_payment.alias. This endpoint will not require a customer interaction but directly book the subsequent transaction.

For each subsequent transaction, use a new event_id.

Fallback for subsequent transactions

In case a subsequent transaction cannot be captured, Klarna behaves as follows:

  1. If the payment method is direct debit, Klarna will fall back to invoice and reply as if it is a successful capture.

  2. Otherwise, Klarna responds with "payment method failed". In this case, Klarna recommends trying again at a later time. If this also does not work, Klarna recommends sending a notice to the customers that they need to create a new subscription or add funds to their payment method if they wish to continue.

5.7.8. Test data

For Klarna integration testing, it suffices to fill in the forms with plausible values. There is no special test data required.

See the Klarna developer tools for test data and other subjects concerning testing.

5.8. Sofortüberweisung

The payment method Sofortüberweisung has now fully been integrated in Klarna, see Sofortüberweisung ist jetzt Klarna.

This means that Sofortüberweisung as a separate payment method has been disabled.

Merchants who still offer Sofortüberweisung as a payment method have to remove it from their website.

5.8.1. Introduction

DB Merchant Solutions REST API supports payments with Sofortüberweisung with Klarna for the transaction kinds authorization which is integrated in the payment method Klarna.

Refunds for previous transactions may still be carried out via the Sofortüberweisung merchant portal.

Supported transaction kinds

Sofortüberweisung supported the following transaction kinds:

  • authorization (standard)

  • refund (full and single partial).

Completed transactions can still be accessed using the diagnosis endpoints (get-requests) of the Payment API.

Prerequisites

Merchants can’t register anymore with the Sofortüberweisung merchant portal although the link is still available and may be used for existing accounts.

5.8.2. Authorization

No new authorizations can be made with Sofortüberweisung.

5.8.3. Refund

Use the Sofortüberweisung merchant portal for creating refunds.

5.9. giropay

5.9.1. Introduction

The payment method giropay has been discontinued at 2024-12-31, see giropay wurde eingestellt.

Payments with giropay are not possible anymore.

Merchants who still offer giropay as a payment method have to remove it from their website.

Refunds for giropay transactions can not be carried out anymore using the giropay system, or DB Merchant Solutions REST API. They have to be carried out by the merchant directly.

Supported transaction kinds

DB Merchant Solutions REST API supported the following giropay functionality:

  • authorization (standard)

  • preauthorization and capture (full and multiple partial)

  • refund (full and multiple partial).

No new transactions of one these kinds can be made, but completed transactions can still be accessed using the diagnosis endpoints (get-requests) of the Payment API.

5.10. Przelewy24 (P24)

5.10.1. Introduction

DB Merchant Solutions REST API supports Przelewy24 (or P24 for short), a Poland-based real-time online bank transfer payment, for the transaction kinds authorization and refund.

When using P24, a customer selects the name of their bank and logs into their online banking environment. They review the pre-populated payment details and then authorize the payment.

Supported countries and currencies

P24 is available in Poland and supports EUR and PLN as currencies.

Supported integration types

P24 is supported in the Form service checkout page and in the Form service with P24 already selected.

Supported transaction kinds

P24 supports the following transaction kinds:

  • authorization (standard)

  • refund (full and multiple partial).

Prerequisites

To use P24 payments via DB Merchant Solutions REST API, contact Deutsche Bank customer support which will supply a contract ID.

5.10.2. Authorization

Course of transaction

When using the Form service with P24 already selected, the course of transaction is as follows. When using the Form service general checkout page with P24 as a payment option, the course of transaction is the same after the selection of P24.

seq formservice p24
P24 course of transaction
  1. The customer makes a purchase in the shop and starts the payment process.

  2. The shop generates an HTTP request and sends it to DB Merchant Solutions REST API. See Initializing the payment: P24 for details.

  3. DB Merchant Solutions REST API checks the submitted data. In case of an error DB Merchant Solutions REST API continues with step 6.

  4. DB Merchant Solutions REST API sends a payment request to P24.

  5. P24 sends the response to DB Merchant Solutions REST API .

  6. DB Merchant Solutions REST API sends a response message to the shop. In the case of success it will include the redirect URL to P24. In the case of an error the transaction is finished.

  7. As response to step 1 the shop sends a redirect to the redirect URL received in step 6 to the customer.

  8. The customer’s browser redirects to P24.

  9. The customer chooses their bank on the P24 website.

  10. P24 redirects the customer to their bank website.

  11. The customer logs into their online banking

  12. The customer confirms the transaction

  13. The bank notifies the customer about the payment result.

  14. The bank notifies P24 about the payment result.

  15. P24 notifies DB Merchant Solutions REST API about the outcome of the payment.

  16. DB Merchant Solutions REST API updates the status of the payment internally.

  17. DB Merchant Solutions REST API notifies the shop about the payment result.

  18. The shop confirms receipt of the notification.

  19. The customer’s browser redirects to DB Merchant Solutions REST API.

  20. DB Merchant Solutions REST API sends the customer a redirect to one of the URLs submitted in step 1:

    Regular case: If the notification of step 15 is received within a time limit of 20 s, the redirect_url is chosen according to the transaction status (success_url for successful transaction, error_url for failure, or notification_failed_url if the notification to the shop failed).

    Exceptional case: If the notification is not received within the time limit, DB Merchant Solutions REST API redirects to the success_url.

  21. The customer’s browser redirects to this URL.

  22. The shop displays the payment result for the customer.

Initializing the payment

Use the standard checkout endpoint and supply P24 data, or use the P24 form service endpoint and supply the necessary data.

Required and optional fields

The following fields are required:

  • amount_total

  • billing_address: first_name, last_name, email, and country

  • form_customer_continuation

  • callback.

The following optional field has a specific meaning for P24:

  • merchant_information.merchant_data_1: defines the text on the consumer’s bank account statement. Typically, this field is used for providing a (sub-)shop name, a thank-you message, or a product description.

5.10.3. Refund

P24 supports full and (multiple) partial refunds. Use the general endpoint to issue a refund for an authorization, setting kind = P24.

5.10.4. Test data

When using P24 in a test environment, DB Merchant Solutions REST API does not redirect to a P24 test environment (and thus simulate the customer experience) but instead redirects to a page where it is possible to select P24’s behavior.

Therefore, no special test data is needed.

5.11. WeChat Pay

5.11.1. Introduction

DB Merchant Solutions REST API supports WeChat Pay, a China-based QR code payment method, for the transaction kinds authorization and refund.

When using WeChat Pay, a customer is redirected to a page where they see the transaction details and a QR code. The customer then scans the QR code with their WeChat Pay app on their mobile phone. After the customer has reviewed and confirmed the payment with their password, the payment is complete.

Supported countries and currencies

WeChat Pay is available in the following countries: Austria, Belgium, Denmark, Finland, France, Germany, Greece, Hungary, Iceland, Ireland, Italy, Lithuania, Luxembourg, Malta, Netherlands, Norway, Portugal, Spain, Sweden, and United Kingdom.

WeChat Pay supports the following currencies: CHF, CNY, EUR, GBP, and USD.

Supported integration types

WeChat Pay is supported in the Form service checkout page and in the Form service with WeChat Pay already selected.

Supported transaction kinds

WeChat Pay supports the following transaction kinds:

  • authorization (standard)

  • refund (full and multiple partial).

Prerequisites

To use WeChat Pay payments via DB Merchant Solutions REST API, contact Deutsche Bank customer support which will supply a contract ID.

5.11.2. Authorization

Course of transaction

When using the Form service with WeChat Pay already selected, the course of transaction is as follows. When using the Form service checkout page with WeChat Pay as a payment option, the course of transaction is the same after the selection of WeChat Pay.

seq formservice wechat pay
WeChat Pay course of transaction
  1. The customer makes a purchase in the shop and starts the payment process.

  2. The shop generates an HTTP request and sends it to DB Merchant Solutions REST API. See Initializing the payment for details.

  3. DB Merchant Solutions REST API checks the submitted data. In case of an error DB Merchant Solutions REST API continues with step 6.

  4. DB Merchant Solutions REST API sends a payment request to WeChat Pay.

  5. WeChat Pay sends the response to DB Merchant Solutions REST API .

  6. DB Merchant Solutions REST API sends a response message to the shop. In the case of success it will include the redirect URL to WeChat Pay. In the case of an error the transaction is finished.

  7. As response to step 1 the shop sends a redirect to the redirect URL received in step 6 to the customer.

  8. The customer’s browser redirects to WeChat Pay.

  9. The customer reviews the transaction details and scans the displayed QR code with their WeChat Pay app on their mobile phone.

  10. The customer confirms the transaction in the WeChat Pay app.

  11. The customer’s app sends the confirmation to WeChat Pay.

  12. WeChat Pay notifies DB Merchant Solutions REST API about the outcome of the payment.

  13. DB Merchant Solutions REST API updates the status of the payment internally.

  14. DB Merchant Solutions REST API notifies the shop about the payment result.

  15. The shop confirms receipt of the notification.

  16. The customer’s browser redirects to DB Merchant Solutions REST API.

  17. DB Merchant Solutions REST API sends the customer a redirect to one of the URLs submitted in step 1:

    Regular case: If the notification of step 12 is received within a time limit of 20 s, the redirect_url is chosen according to the transaction status (success_url for successful transaction, error_url for failure, or notification_failed_url if the notification to the shop failed).

    Exceptional case: If the notification is not received within the time limit, DB Merchant Solutions REST API redirects to the success_url.

  18. The customer’s browser redirects to this URL.

  19. The shop displays the payment result for the customer.

Initializing the payment

Use the standard checkout endpoint and supply WeChat Pay data, or use the WeChat Pay form service endpoint and supply the necessary data.

Required and optional fields

The following fields are required:

  • amount_total

  • billing_address: first_name, last_name, email, and country

  • form_customer_continuation

  • callback.

The following optional field has a specific meaning for WeChat Pay:

  • merchant_information.merchant_data_1: defines the text on the consumer’s bank account statement. Typically, this field is used for providing a (sub-)shop name, a thank-you message, or a product description.

5.11.3. Refund

WeChat Pay supports full and (multiple) partial refunds. Use the general endpoint to issue a refund for an authorization, setting kind = ẀECHATPAY.

5.11.4. Test data

When using WeChat Pay in a test environment, DB Merchant Solutions REST API does not redirect to a WeChat Pay test environment (and thus simulate the customer experience) but instead redirects to a page where it is possible to select WeChat Pay’s behavior.

Therefore, no special test data is needed.

5.12. iDEAL

5.12.1. Introduction

iDEAL is a payment method used in the Netherlands that allows customers to pay via their bank account.

When using iDEAL, a customer selects the name of their bank and logs into their online banking environment. They review the pre-populated payment details and then authorize the payment.

Fast checkout

In the future, a merchant may request customer and address data fields from iDEAL to support a fast checkout.

While DB Merchant Solutions REST API already supports the fields for a fast checkout, the feature is not yet implemented at iDEAL. Therefore, when currently requesting a fast checkout (by setting transaction_flow to FAST_CHECKOUT and supplying expected_checkout_data), DB Merchant Solutions REST API will return an error. The feature is expected to be available in 2024 Q3.
Supported countries and currencies

iDEAL is available in the Netherlands and supports EUR as currency.

Supported integration types

DB Merchant Solutions REST API supports iDEAL in the general Form service checkout page and in the Form service with iDEAL already selected for the transaction kind authorization.

Supported transaction kinds

iDEAL supports only authorization as transaction kind.

5.12.2. Authorization

Course of transaction

When using the Form service with iDEAL already selected, the course of transaction is as follows. When using the Form service general checkout page with iDEAL as a payment option, the course of transaction is the same after the selection of iDEAL.

seq formservice ideal
iDEAL course of transaction
  1. The customer makes a purchase in the shop and starts the payment process.

  2. The shop generates an HTTP request and sends it to DB Merchant Solutions REST API. See Initializing the authorization for details.

  3. DB Merchant Solutions REST API checks the submitted data. In case of an error, DB Merchant Solutions REST API continues with step 6.

  4. DB Merchant Solutions REST API sends a payment request to iDEAL.

  5. iDEAL sends the response to DB Merchant Solutions REST API .

  6. DB Merchant Solutions REST API sends a response message to the shop. In the case of success, it will include the redirect URL to iDEAL. In the case of an error the transaction is finished.

  7. As response to step 1 the shop sends a redirect to the redirect URL received in step 6 to the customer.

  8. The customer’s browser redirects to iDEAL.

  9. The customer chooses their bank on the iDEAL website.

  10. iDEAL redirects the customer to their bank website.

  11. The customer logs into their online banking.

  12. The customer confirms the transaction.

  13. As the response to the customer’s confirmation, the bank requests DB Merchant Solutions REST API. The result of the transaction (failure or success) is not awaited or submitted. Notification about the transaction status is done asyncnronously from step 18.

  14. DB Merchant Solutions REST API waits for a time limit (20 s) for the notification on the transaction status.

  15. Regular case: If the notification is received within the time limit, the redirect URL is chosen accordingly from the field form_customer_continuation of the initialization request of step 2 (success_url for successful transaction, error_url for failure, or notification_failed_url if the notification to the shop failed).

  16. Redirect to the chosen URL.

  17. Exceptional case: If the notification is not received within the time limit, DB Merchant Solutions REST API redirects to the success_url.

  18. As a reaction to the confirmation of the transaction (step 12), the transaction is processed by the customer’s bank.

  19. The bank notifies iDEAL about the transaction result.

  20. iDEAL notifies DB Merchant Solutions REST API about the transaction result.

  21. DB Merchant Solutions REST API updates the transaction status.

  22. DB Merchant Solutions REST API notifies the shop about the payment result (if this had been configured in the initialization in step 2).

  23. The shop confirms receipt of the notification.

  24. The shop may send a message about the purchase status to the customer.

Initializing the authorization (step 2)

To offer iDEAL in the Form service checkout page, use the standard checkout endpoint. To offer iDEAL via form service with iDEAL already selected, use the iDEAL endpoint.

Handling the transaction status (steps 13 - 24)

The outcome of the payment is not submitted synchronously by the iDEAL backend after the customer confirms the payment (in step 12): The response to the order confirmation does not contain any status information. The handling of the transaction status is done asynchronously in a notification mechanism.

To provide feedback about the payment outcome for the customer, DB Merchant Solutions REST API uses a synchronization mechanism by waiting for a time limit of 20 seconds for being notified about the transaction status. When a notification takes place in time, this is used to choose the redirect URL. This may take the values success_url, error_url, or notification_failed_url from the field form_customer_continuation of the initialization request. This regular case occurs in most situations.

In exceptional cases, it may happen that the notification takes longer than the time limit. Then, the success_url is used as redirect URL.

This has the consequence that displaying the success_url may only mean "unknown status" of the payment in exceptional cases. The merchant may display a message that the final purchase confirmation is done in a separate message.

Displaying error_url, meanwhile, certainly means failure of the payment.

For notification_failed_url, see Callback and diagnosis request.

Required and optional fields

See iDEAL request examples for a minimal example of an iDEAL request.

The following fields are required:

  • amount_total.amount and amount_total.currency

  • basket.basket_id

  • form_customer_continuation.success_url

  • ideal_data.description.

For an iDEAL transaction, basket.basket_id must conform to the pattern [a-zA-Z0-9] {1,35}.

The other fields of ideal_data can be used as follows:

  • issuer_id: If set, the customer will not need to choose a bank at iDEAL but will directly be redirected to the bank given by the BIC in issuer_id.

  • transaction_flow:

    • If not set or set to STANDARD, the shop will not receive additional fields (that is, a standard checkout will take place). In this case, do not set the field expected_checkout_data.

    • Reserved for future use (see above): If set to FAST_CHECKOUT, the shop will receive additional address and customer information fields as requested via the field expected_checkout_data and its subfields (that is, a fast checkout can take place).

5.12.3. Response codes

The following table shows the most common response codes for iDEAL transactions. See Response codes for a complete list of possible response codes.

Response code Description

0

Transaction successful.

1548

Transaction is pending.

1002

Cancelled - timeout.

1400

No user input/timeout.

1507

Transaction rejected.

1401

Cancelled by user.

1504

System error.

1502

Configuration problem.

1546

Transaction rejected.

9000

Indeterminate error.

1506

Temporary error.

1368

Transaction kind transition invalid.

1105

Backend system error.

1337

Event ID already assigned.

1102

Gateway connection problem.

1333

Given country rejected by list.

1100

Unexpected error.

1545

Authorisation problem.

1547

Input failure.

5.12.4. Checking the transaction status

For checking the transaction status, the callback mechanism or diagnosis requests may be used, see Callback and diagnosis request. The callback request contains some information the diagnosis request does not reveal like the iDEAL transaction ID.

The following table shows the mapping of iDEAL status codes to response codes:

iDEAL status Response code Message

SUCCESS

0

Transaction successful.

EXPIRED

1002

Cancelled - timeout.

CANCELLED

1401

Cancelled by user.

FAILURE

1504

System error.

IDENTIFIED

1548

Transaction is pending.

Don’t send a diagnosis request before receiving a callback request. For iDEAL, a diagnosis request may prevent subsequent callback requests.

5.12.5. Test data

To test an iDEAL authorization, choose the bank "TESTNL2A" and then the corresponding test simulation to run (success, cancellation, cancellation before login, expiration, or failure).

5.13. TWINT

5.13.1. Introduction

DB Merchant Solutions REST API supports TWINT, a Swiss-based real-time bank transfer payment, for the transaction kinds authorization and refund.

When using TWINT, a customer is presented a QR-code (or 5-digit numerical code) which he uses to authorize a payment in his mobile TWINT-app (provided by his bank).

Supported countries and currencies

TWINT is available in Switzerland and supports CHF as currency.

Supported integration types

TWINT is supported in the Form service checkout page and in the Form service with TWINT already selected.

Note that the payment methods configured in the checkout request all have to support the currency given in total_amount which must be CHF for TWINT.

Supported transaction kinds

TWINT Pay supports the following transaction kinds:

  • authorization (standard)

  • refund (full and multiple partial).

Prerequisites

A Merchant who is planning to use TWINT DB Merchant Solutions REST API requires a postal address and a bank account (in CHF) in Switzerland.

Contact Deutsche Bank customer support for further information.

5.13.2. Authorization

Course of transaction

When using the Form service with TWINT already selected, the course of transaction is as follows.

seq formservice twint
TWINT course of transaction
  1. The customer makes a purchase in the shop and starts the payment process.

  2. The shop generates an HTTP request and sends it to DB Merchant Solutions REST API. See Initializing the payment for details.

  3. DB Merchant Solutions REST API checks the submitted data. In case of an error DB Merchant Solutions REST API continues with step 6.

  4. DB Merchant Solutions REST API sends a payment request to TWINT.

  5. TWINT sends the response to DB Merchant Solutions REST API .

  6. DB Merchant Solutions REST API sends a response message to the shop. In the case of success it will include the redirect URL to TWINT. In the case of an error the transaction is finished.

  7. As response to step 1 the shop sends a redirect to the redirect URL received in step 6 to the customer.

  8. The customer’s browser redirects to TWINT.

  9. The customer scans the displayed QR code with their TWINT app on their mobile phone.

  10. The customer confirms the transaction in the TWINT app.

  11. The customer’s app sends the confirmation to TWINT.

  12. TWINT notifies DB Merchant Solutions REST API about the outcome of the payment.

  13. DB Merchant Solutions REST API updates the status of the payment internally.

  14. DB Merchant Solutions REST API notifies the shop about the payment result.

  15. The shop confirms receipt of the notification.

  16. The customer’s browser redirects to DB Merchant Solutions REST API.

  17. DB Merchant Solutions REST API sends the customer a redirect to one of the URLs submitted in step 1:

    Regular case: If the notification of step 12 is received within a time limit of 20 s, the redirect_url is chosen according to the transaction status (success_url for successful transaction, error_url for failure, or notification_failed_url if the notification to the shop failed).

    Exceptional case: If the notification is not received within the time limit, DB Merchant Solutions REST API redirects to the success_url.

  18. The customer’s browser redirects to this URL.

  19. The shop displays the payment result for the customer.

Initializing the payment

Use the TWINT form service endpoint and supply the necessary data.

Required and optional fields

The following fields are required:

  • amount_total (with currency CHF)

  • billing_address: first_name, last_name, email, and country

  • form_customer_continuation

  • callback.

The following optional field has a specific meaning for TWINT:

  • merchant_information.merchant_data_1: defines the text on the consumer’s bank account statement. Typically, this field is used for providing a (sub-)shop name, a thank-you message, or a product description.

5.13.3. Refund

TWINT supports full and (multiple) partial refunds. Use the general endpoint to issue a refund for an authorization, setting kind = TWINT.

5.13.4. Test data

When using TWINT in a test environment, DB Merchant Solutions REST API does not redirect to a TWINT test environment (and thus simulate the customer experience) but instead redirects to a page where it is possible to select TWINT’s behavior.

Therefore, no special test data is needed.

5.14. Wero

5.14.1. Introduction

Wero is a European payment method operated by the Europen Payment Initiative (EPI) that allows customers to pay via their bank account.

When using Wero, a merchant displays a QR code which the customer scans with their smartphone and gives consent to the payment.

Supported countries and currencies

Wero is currently available in Belgium, France, and Germany. The Netherlands, Luxembourg, and more countries will be coming soon.

Wero supports EUR as currency.

Supported integration types

DB Merchant Solutions REST API supports Wero in the general Form service checkout page and in the Form service with Wero already selected.

Supported transaction kinds

Wero supports the following transaction kinds:

  • authorization

  • pre-authorization and (multiple partial) capture

5.14.2. Authorization and pre-authorization

Course of transaction

When using the Form service with Wero already selected, the course of transaction is as follows. When using the general Form service checkout page with Wero as a payment option, the course of transaction is the same after the selection of Wero.

A Wero transaction consists of three parts:

  1. Consent: The customer consents to the payment requested by the merchant. The consent is received by the EPI central services and does not affect the customer’s bank.

  2. Bank-authorization: The consent is authorized by the customer’s. The authorization may, for example due to insufficient creditworthiness. The money transfer takes place yet.

  3. Capture: The actual money transfer (using SCT Inst) to the merchant’s bank account.

Within DB Merchant Solutions REST API, an authorization comprises parts 1 to 3 of a Wero transaction.

For a pre-authorization in DB Merchant Solutions REST API parts 1 and 2 are carried out, while step 3 takes place in the subsequent capture-transaction.

seq formservice wero
Wero course of transaction
  1. The customer makes a purchase in the shop and starts the payment process.

  2. The shop generates an HTTP request and sends it to DB Merchant Solutions REST API. See Initializing the authorization for details.

  3. DB Merchant Solutions REST API checks the submitted data. In case of an error, DB Merchant Solutions REST API continues with step 6.

  4. DB Merchant Solutions REST API sends a consent request to EPI.

  5. EPI sends the response to DB Merchant Solutions REST API.

  6. DB Merchant Solutions REST API sends a response message to the shop. In the case of success, it will include the redirect URL to a Wero QR code. In the case of an error the transaction is finished.

  7. As response to step 1 the shop sends a redirect to the redirect URL received in step 6 to the customer.

  8. The customer’s browser requests the Wero QR code.

  9. EPI returns the QR code.

  10. The customer’s browser displays the QR code to the customer.

  11. The customer uses their Wero app to scan the QR code.

  12. The customer’s app requests consent data from EPI.

  13. EPI sends the consent data to the app.

  14. The app shows the consent data to the customer.

  15. The customer gives consent to the payment in the app.

  16. The app sends the signed consent token to EPI.

  17. EPI redirects the customer’s browser to the return URL.

  18. The customer’s browser requests the return URL from the merchant.

  19. EPI sends a notification about the given consent to DB Merchant Solutions REST API.

  20. DB Merchant Solutions REST API notifies the shop about the given consent.

  21. The shop delivers the return URL tot the customer’s browser.

  22. The consent is authorized by the customer’s bank.

  23. EPI returns as response a payment guarantee.

  24. DB Merchant Solutions REST API notifies the shop about the payment guarantee or rejection.

  25. The shop informs the customer about the authorization result ("order has been confirmed [or declined] by your bank").

  26. DB Merchant Solutions REST API sends a capture request to EPI.

  27. EPI returns a capture notification to DB Merchant Solutions REST API.

  28. DB Merchant Solutions REST API notifies the shop about the capture.

Initializing the transaction

The initialization of an authorization or pre-authorization takes place in step 2 of the Course of transaction.

To offer Wero in the Form service checkout page, use the standard checkout endpoint. To offer Wero via form service with Wero already selected, use the Wero endpoint.

Required and optional fields

See Wero request examples for a minimal example of a Wero request.

The following fields are required:

  • amount_total with the subfields amount and currency,

  • form_customer_continuation (see Redirect to merchant’s website),

  • callback (see Callback and diagnosis request),

  • wero_data and its subfield authorization_reference.

  • For a pre-authorization the field wero_data.payment_plan and its subfields amount_payment_type and capture_event are required.

5.14.3. Capture

See Subsequent transaction and Capture for general information about captures.

For Wero, captures are governed by the subfields of the field wero_data.payment_plan of the pre-authorization request (see PaymentPlan):

  • A capture is possible up to a time limit set by max_auth_to_capture_time. The value is given in seconds and defaults to 604800 (one week).

  • Multiple partial captures are possible if the field multi_capture_allowed is set to true.

Use the general subsequent transaction endpoint for captures, setting tx_action=capture and kind = WERO.

5.14.4. Checking the transaction status

For checking the transaction status, use either the callback mechanism (Callback and diagnosis request) or diagnosis requests

5.14.5. Testing Wero transactions

EPI provides the following test portal:

To test a Wero authorization or pre-authorization, the portal can be used as follows:

  1. Create a transaction in DB Merchant Solutions REST API. Set the amount to less or equal to 5,000.00 EUR to create a successful authorization or greater than 5,000.00 EUR to create an unsuccessful authorization (see below).

  2. Follow the redirect link to see a QR code.

  3. Click on the QR code to see a numeric code. Copy this numeric code.

  4. Navigate to the portal. In the portal, proceed as follows:

    • Select "Quick tools"

    • Click "Add consumer"

    • Click the created consumer

    • Click "Consents"

    • Click "Give consent"

    • Enter the numeric code from step 3 as "Short ID".

    • Scroll down, click "Approve consent" or "Deny consent" depending on which scenario you want to test.

  5. Your shop will then receive callbacks for consent, authorization, and capture at the callback URL provided in step 1. Depending on steps 4 and 1, the consent will either be approved or denied and the authorization similarly will either be approved or denied.

6. Additional services

6.1. Aliases

DB Merchant Solutions provides a possibility to manage so-called aliases for means of payment. Currently the supported types of means of payment are credit card (including Google Pay and Apple Pay), direct debit, and Klarna.

Aliases provide a possibility to carry out recurring payments without saving the actual means of payment details in your system. Thus, for example if you use the iFrame Service to carry out the first payment with a credit card you do not have to participate in the "Payment Card Industry Data Security Standard" (PCI DSS) program by Visa and MasterCard.

Your account needs to be configured accordingly to use credit card or direct debit aliases. DB Merchant Solutions guarantees an unambiguous assignment of an alias to a means of payment. A means of payment may have exactly one alias assigned to it. Conversely, an existing alias cannot be assigned to another means of payment.

It is necessary to obtain the customer’s approval before storing their payment data as an alias.

DB Merchant Solutions provides APIs to create, update, get, and delete aliases. See Alias API, POST /form/alias/bankaccount, and POST /form/alias/creditcard for details.

6.2. Multi-currency pricing (MCP)

6.2.1. Introduction

Multi-currency pricing (MCP) allows merchants to offer goods in the customer’s preferred currency, which may be different from the merchant’s settlement currency (also known as funding currency). This has the advantage that the customer sees already during the payment which amount will be booked from their account and not only when they check their account statement later on. Multi-currency pricing therefore can increase the conversion rate.

6.2.2. DB Merchant Solutions REST API support for MCP

Merchants who integrate MCP have to be registered for this service. Contact Deutsche Bank customer support for this. The MCP merchant id, which is handed out during registration, has to be used in the multi-currency pricing endpoint.

Check with Deutsche Bank customer support the currency of your settlement account. For example, this may be EUR. To offer payments in a customer’s currency different from the settlement account currency, for example in USD and PLN, proceed as follows:

  1. Check that the offered payment system supports this currency. When using Form service or iFrame Service with payment selection, check that all offered payment systems support this currency.

  2. Optionally use the multi-currency pricing endpoint to get information about the exchange rates which will be used by Deutsche Bank during settlement. For DB Merchant Solutions REST API, only channel = ECOM for general transactions and channel = MOTO for mail order / telephone order transactions are applicable.

    Contact Deutsche Bank customer support if one of the required currency pairs is not available in the response.

  3. Optionally calculate the price in customer’s currency using the obtained exchange rate.

  4. Offer the payment transaction in the consumer’s currency with the chosen amount. The rates will be applied to the payments in supported currencies.

For example, if the settlement currency is EUR and the obtained exchange rate has currrency_pair = EURUSD and consumer_rate = 1.17, this means that 1.00 EUR = 1.17 USD. The payment in USD will be considered as MCP transaction and the merchant will receive 20.00 EUR for a transaction with amount 23.40 USD. The payment in EUR will be considered as none-MCP transaction, as it is same as settlement currency.

6.2.3. Test data

The MCP merchant id TEST-MERCHANT-1 can be used (as the field merchant_id_mcp) in the multi-currency pricing endpoint.

6.3. Risk management

6.3.1. Introduction

DB Merchant Solutions REST API supports a risk check for credit card and SDD transactions to assess the transaction’s risk and then automatically reject the transaction in case of high risk. To assess the risk, DB Merchant Solutions REST API uses three mechanisms:

  1. A positive list and a negative list, specific to each merchant. A transaction matching all criteria of an entry on the positive list will have lower risk. A transaction matching one or more criteria of an entry on the negative list will have higher risk.

  2. General rules pertaining to transaction data elements or derived from these elements.

  3. A risk score calculated by machine learning algorithms.

These mechanisms then are taken together and prioritized to assess the risk.

The quality of the risk assessment improves strongly with the amount of data sent to DB Merchant Solutions REST API, which is why it is recommended to send as many of the optional data elements as possible.

For further information on the calculation details, you may contact Deutsche Bank customer support.

Integration types

DB Merchant Solutions REST API supports the following integration types for risk score calculation:

Furthermore, DB Merchant Solutions REST API supports modifying the positive and the negative list via the list handling endpoint.

Course of transaction

For credit card and SDD transactions, include RISKCHECK in the parameter processing_options to perform a risk check. The parameter then is used as shown in the following diagram.

seq riskcheck

6.3.2. Providing the necessary data to calculate the risk score

General parameters

Set as many parameters as possible to allow for a good risk score calculation. Next to general fields like shipping_address and billing_address, the following fields are specifically designed for the risk score calculation:

  • account_information

  • basket.extensions.riskcheck_data

  • device_information

  • merchant_defined_information

  • merchant_risk_indicators

  • risk_check_additional_information

  • travel_information.

Merchant defined information

DB Merchant Solutions REST API allows merchants to send additional individual data points to be used for the risk calculation via the parameter merchant_defined_information. This parameter is an array of key-value pairs of strings. To use this parameter, proceed as follows:

  1. Contact Deutsche Bank customer support about which data you would like to send and agree upon the keys to be used.

  2. Deutsche Bank customer support will incorporate these fields into specific rules for the risk score calculation according to your specifications.

Merchant-defined data fields are not intended to and must not be used to capture personally identifiable information. Accordingly, merchants are prohibited from capturing, obtaining, and/or transmitting any personally identifiable information in or via the merchant-defined data fields. Personally identifiable information includes, but is not limited to, address, credit card number, social security number, driver’s license number, state-issued identification number, passport number, and card verification numbers (CVV, CVC2, CVV2, CID, CVN). In the event DB Merchant Solutions REST API discovers that a merchant is capturing and/or transmitting personally identifiable information via the merchant-defined data fields, whether or not intentionally, Deutsche Bank will immediately suspend the merchant’s account, which will result in a rejection of any and all transaction requests submitted by the merchant after the point of suspension.
Device fingerprinting
Background

Device fingerprinting is a process to gather information about the devices that are used to order from the merchant’s shop, using persistent cookies. Examples for these devices include desktop PCs, notebooks and mobile phones. Using a device fingerprint significantly improves the risk score calculation and is therefore recommended from a risk perspective. For example, with a device fingerprint it is possible to detect common fraud patterns such as

  • using multiple identities from the same device, even when hidden behind a proxy

  • language settings inconsistent with the country.

Implementation considerations

The European Union’s Privacy and Electronic Communications Directive (the “Directive”) restricts the deposit and storage of cookies on the devices of customers of online merchants operating in the European Union. When used without the device fingerprint, DB Merchant Solutions REST API does not store cookies. When used with the device fingerprint, the device fingerprint feature enables the deposit and storage on the customer’s device of a cookie that is used to mitigate fraud. The cookie profiles the specific attributes of the device used in transactions.

While Deutsche Bank cannot provide legal advice, the following information applies. The restrictions under the Directive require, among other things, that a merchant:

  • Provide “clear and comprehensive information” to visitors of the merchant’s website about the storage of cookies on their device.

  • Obtain the consent of visitors before depositing and storing cookies on their device unless certain exceptions apply.

If a merchant operates in Europe and uses the device fingerprint, they should consult their legal counsel and other advisors to find out how to comply with the requirements of the Directive.

To ensure the customers’ privacy, fingerprints are encoded as soon as they are received. Fingerprints persist for approximately 24 hours. This interval begins when the customer opens the HTML page with the tags, and it ends when the transaction request is sent. Add the fingerprinting code to the request as early in the transaction process as possible.

Device fingerprinting stops working when the IP address of the domain name changes. To avoid interruptions in device fingerprinting, use domain names instead of using IP addresses and relying on domain name resolution.

To allow device profiling time to complete, ensure that 3 to 5 seconds elapse between the execution of the profiling code and the customer’s order submission.

After adding the device fingerprinting code to the website, set the parameter device_fingerprint_id to the session ID.

Integrating device fingerprinting in the checkout process

The information given above can be implemented in the checkout process as follows.

seq riskscore checkout
Initialize fingerprinting (step 4)

Add the following JavaScript / iFrame snippet to your site to initialize device fingerprinting in step 4.

<head>
  <script type="text/javascript"
          src="https://h.online-metrix.net/fp/tags.js?org_id={org_id}&session_id={rmid}{session_id}>
  </script>
</head>
<body>
  <noscript>
    <iframe style="width: 100px; height: 100px; border: 0; position: absolute; top: -5000px;"
            src="https://h.online-metrix.net/fp/tags?org_id={org_id}&session_id={rmid}{session_id}">
    </iframe>
  </noscript>
</body>

Set the parameters as follows:

  • ${org_id}: Organization ID. Contact Deutsche Bank customer support for the value to use. Note that there are different values to be used for test and for production.

  • ${rmid}: Risk management merchant ID. Similarly, contact Deutsche Bank customer support for the value to use.

  • ${session_id}: Session ID. It can contain lowercase and uppercase English letters, digits, hyphens (-), and underscores (_). The maximum length is 88 characters. Do not use the same uppercase and lowercase letters to indicate different session IDs.

The session ID must be unique for each combination of transaction and page load, regardless of the customer’s web session ID. If a customer navigates to a profiled page and is assigned a web session, navigates away from the profiled page, then navigates back to the profiled page, the generated session ID must be different and unique.

It is recommended to use an application GUID (Globally Unique Identifier). This measure ensures that a unique ID is generated every time the page is loaded, even if it is the same customer reloading the page.

6.3.3. Risk score information response

Whenever a risk score is requested, the response will contain the field riskmanagement_info, which includes in particular the following fields:

  • score: the risk score with values between 1 (low risk) and 100 (very high risk)

  • tx_risk_status: indicates whether the transaction is ACCEPTED or REJECTED. Note that score is only one element in deciding the tx_risk_status, that is, when specific rules take effect (say, the positive list), transactions with a high score may still have tx_risk_status = ACCEPTED. Similarly, transactions with a low score may have tx_risk_status = REJECTED, for example when the negative list takes effect.

  • score_factor_codes is an array of possible factors which account for the score. See Score factor codes for the meaning of the enumeration values.

  • Fields starting with infocodes transport information about suspicious aspects of the transaction. See Infocodes for the possible enumeration values.

Enumeration values
Score factor codes

For the array score_factor_codes, the following items are possible.

Code Description

A

Excessive address change. The customer changed the billing address two or more times in the last six months.

B

Card BIN or authorization risk. Risk factors are related to credit card BIN and/or card authorization checks.

C

High number of account numbers. The customer used more than six credit cards numbers in the last six months.

D

Email address impact. The customer uses a free email provider, or the email address is risky.

E

Positive list. The customer is on your positive list.

F

Negative list or negative history. The account number, street address, email address, or IP address for this order appears on your negative list or negative history.

G

Geolocation inconsistencies. The customer’s email domain, phone number, billing address, shipping address, or IP address is suspicious.

H

Excessive name changes. The customer changed the name two or more times in the last six months.

I

Internet inconsistencies. The IP address and email domain are not consistent with the billing address.

N

Nonsensical input. The customer name and address fields contain meaningless words or language.

O

Obscenities. The customer’s input contains obscene words.

P

Identity morphing. Multiple values of an identity element are linked to a value of a different identity element. For example, multiple phone numbers are linked to a single account number.

Q

Phone inconsistencies. The customer’s phone number is suspicious.

R

Risky order. The transaction, customer, and merchant information show multiple high-risk correlations.

T

Time hedge. The customer is attempting a purchase outside of the expected hours.

U

Unverifiable address. The billing or shipping address cannot be verified.

V

Velocity. The account number was used many times in the past 15 minutes.

W

Marked as suspect. The billing or shipping address is similar to an address previously marked as suspect.

Y

Gift Order. The street address, city, state, or country of the billing and shipping addresses do not correlate.

Z

Invalid value. Because the request contains an unexpected value, a default value was substituted. Although the transaction can still be processed, examine the request carefully for abnormalities in the order.

Infocodes
Address
Code Description

COR-BA

The billing address has corrected elements or can be normalized.

COR-SA

The shipping address has corrected elements or can be normalized.

INTL-BA

The billing country is outside of the U.S.

INTL-SA

The shipping country is outside of the U.S.

MIL-USA

The address is a U.S. military address.

MM-A

The billing and shipping addresses use different street addresses.

MM-BIN

The card BIN (the first six digits of the number) does not match the country.

MM-C

The billing and shipping addresses use different cities.

MM-CO

The billing and shipping addresses use different countries.

MM-ST

The billing and shipping addresses use different states.

MM-Z

The billing and shipping addresses use different postal codes.

UNV-ADDR

The address is unverifiable.

Customer list
Code Description

CONPOSNEG

The order triggered both a positive and negative list match. The result of the positive list match overrides that of the negative list match.

NEGACRB

The transaction was automatically marked as a creditback and is on the negative list.

NEG-AFCB

The transaction was automatically marked as a fraud chargeback and is on the negative list.

NEGANFCB

The transaction was automatically marked as a non-fraud chargeback and is on the negative list.

NEGASUSP

The transaction was automatically marked as suspected fraud and is on the negative list.

NEG-BA

The billing address is on the negative list.

NEG-BCO

The billing country is on the negative list.

NEG-BIN

The credit card BIN (the first six digits of the number) is on the negative list.

NEGBINCO

The country in which the credit card was issued is on the negative list.

NEG-BZC

The billing postal code is on the negative list.

NEG-CC

The credit card number is on the negative list.

NEG-CPF

The CPF or CNPJ identification number is on the negative list.

NEG-CRB

The transaction was marked as a creditback and is on the negative list.

NEG-EM

The email address is on the negative list.

NEGEMCO

The country in which the email address is located is on the negative list.

NEGEMDOM

The email domain (for example, mail.example.com) is on the negative list.

NEG-FCB

The transaction was marked as a fraud chargeback and is on the negative list.

NEG-FP

The device fingerprint is on the negative list.

NEG-HIST

The transaction is related to a previous suspect transaction.

NEG-ID

The customer’s account ID is on the negative list.

NEG-IP

The IP address (for example, 10.1.27.63) is on the negative list.

NEG-IP3

The network IP address (for example, 10.1.27) is on the negative list. A network IP address includes up to 256 IP addresses.

NEG-IPCO

The country in which the IP address is located is on the negative list.

NEG-NFCB

The transaction was marked as a non-fraud chargeback and is on the negative list.

NEG-PEM

A passenger’s email address is on the negative list.

NEG-PH

The phone number is on the negative list.

NEG-PID

A passenger’s account ID is on the negative list.

NEG-PIP

The proxy IP address is on the negative list.

NEG-PPH

A passenger’s phone number is on the negative list.

NEG-SA

The shipping address is on the negative list.

NEG-SCO

The shipping country is on the negative list.

NEG-SID

The Smart ID is on the negative list.

NEGSUSP

The transaction was marked as suspected fraud and is on the negative list.

NEG-SZC

The shipping postal code is on the negative list.

NEG-TIP

The true IP address is on the negative list.

POSTEMP

The customer is on the temporary positive list.

POSPERM

The customer is on the permanent positive list.

REV-BA

The billing address is on the review list.

REV-BCO

The billing country is on the review list.

REV-BIN

The credit card BIN (the first six digits of the number) is on the review list.

REVBINCO

The country in which the credit card was issued is on the review list.

REV-BZC

The billing postal code is on the review list.

REV-CC

The credit card number is on the review list.

REV-CPF

The CPF or CNPJ identification number is on the review list.

REV-CRB

The transaction was marked as a creditback and is on the review list.

REV-EM

The email address is on the review list.

REVEMCO

The country in which the email address is located is on the review list.

REVEMDOM

The email domain (for example, mail.example.com) is on the review list.

REV-FCB

The transaction was marked as a fraud chargeback and is on the review list.

REV-ID

The customer’s account ID is on the review list.

REV-IP

The IP address (for example, 10.1.27.63) is on the review list.

REV-IP3

The network IP address (for example, 10.1.27) is on the review list. A network IP address includes up to 256 IP addresses.

REV-IPCO

The country in which the IP address is located is on the review list.

REV-NFCB

The transaction was marked as a non-fraud chargeback and is on the review list.

REV-PEM

A passenger’s email address is on the review list.

REV-PH

The phone number is on the review list.

REV-PID

A passenger’s account ID is on the review list.

REV-PIP

The proxy IP address is on the review list.

REV-PPH

A passenger’s phone number is on the review list.

REV-SA

The shipping address is on the review list.

REV-SCO

The shipping country is on the review list.

REV-SID

The Smart ID is on the review list.

REV-SUSP

The transaction was marked as suspected fraud and is on the review list.

REV-SZC

The shipping postal code is on the review list.

REV-TIP

The true IP address is on the review list.

Device behavior
Code Description

AC-ADDR

Auto-completed address information

AC-CC

Auto-completed credit card information

AC-EMAIL

Auto-completed email

AC-NAME

Auto-completed name

AC-PASSWORD

Auto-completed password

AC-PHONE

Auto-completed telephone number

AC-USERNAME

Auto-completed user name

AutoCompleteDetected

Auto complete detected

AF-ADDR

Auto-filled address information

AF-CC

Auto-filled credit card information

AF-EMAIL

Auto-filled email

AF-NAME

Auto-filled name

AF-PASSWORD

Auto-filled password

AF-PHONE

Auto-filled telephone number

AF-USERNAME

Auto-filled user name

AutoFillDetected

Auto fill detected

KeyMouseDisabled

Keyboard or mouse detection disabled

MOP-ADDR

Mouse-off-page address information

MOP-CC

Mouse-off-page credit card information

MOP-EMAIL

Mouse-off-page email

MOP-NAME

Mouse-off-page name

MOP-PASSWORD

Mouse-off-page password

MOP-PHONE

Mouse-off-page telephone number

MOP-USERNAME

Mouse-off-page user name

MouseOffPageDetected

Mouse off page detected

PASTED-ADDR

Pasted address information

PASTED-CC

Pasted credit card information

PASTED-EMAIL

Pasted email

PASTED-NAME

Pasted name

PASTED-PASSWORD

Pasted password

PASTED-PHONE

Pasted telephone number

PASTED-USERNAME

Pasted user name

PasteDetected

Paste detected

Global velocity

The velocity information codes with the suffix -CC refer to credit card and direct debit account numbers.

Code Description

VEL-ADDR

Different billing and/or shipping states (U.S. and Canada only) have been used several times with the credit card number and/or email address.

VEL-CC

Different account numbers have been used several times with the same name or email address.

VEL-NAME

Different names have been used several times with the credit card number and/or email address.

VELS-CC

The account number has been used several times during the short tracking interval.

VELI-CC

The account number has been used several times during the medium tracking interval.

VELL-CC

The account number has been used several times during the long tracking interval.

VELV-CC

The account number has been used several times during the very long tracking interval.

VELS-EM

The customer’s email address has been used several times during the short tracking interval.

VELI-EM

The customer’s email address has been used several times during the medium tracking interval

VELL-EM

The customer’s email address has been used several times during the long tracking interval.

VELV-EM

The customer’s email address has been used several times during the very long tracking interval.

VELS-FP

The device fingerprint has been used several times during the short tracking interval.

VELI-FP

The device fingerprint has been used several times during the medium tracking interval.

VELL-FP

The device fingerprint has been used several times during the long tracking interval.

VELV-FP

The device fingerprint has been used several times during the very long tracking interval.

VELS-IP

The IP address has been used several times during the short tracking interval.

VELI-IP

The IP address has been used several times during the medium tracking interval.

VELL-IP

The IP address has been used several times during the long tracking interval.

VELV-IP

The IP address has been used several times during the very long tracking interval.

VELS-SA

The shipping address has been used several times during the short tracking interval.

VELI-SA

The shipping address has been used several times during the medium tracking interval.

VELL-SA

The shipping address has been used several times during the long tracking interval.

VELV-SA

The shipping address has been used several times during the very long tracking interval.

VELS-TIP

The true IP address has been used several times during the short interval.

VELI-TIP

The true IP address has been used several times during the medium interval.

VELL-TIP

The true IP address has been used several times during the long interval.

Identity change
Code Description

MORPH-B

The same billing address has been used several times with multiple customer identities.

MORPH-C

The same account number has been used several times with multiple customer identities.

MORPH-E

The same email address has been used several times with multiple customer identities.

MORPH-I

The same IP address has been used several times with multiple customer identities.

MORPH-P

The same phone number has been used several times with multiple customer identities.

MORPH-S

The same shipping address has been used several times with multiple customer identities.

ID-M-NEG

Correlation with past negative behavior.

ID-M-POS

Correlation with past positive behavior.

ID-M-HNEG

Correlation with past negative behavior is high.

ID-M-HPOS

Correlation with past positive behavior is high.

ID-MNoHistory

Correlation with past behavior not available due to no history.

ID-X-NEG

Correlation with past negative global behavior.

ID-X-POS

Correlation with past positive global behavior.

ID-X-HNEG

Correlation with past negative global behavior is high.

ID-X-HPOS

Correlation with past positive global behavior is high.

ID-XNoHistory

Correlation with past global behavior not available due to no history.

Internet
Code Description

FREE-EM

The customer’s email address is from a free email provider.

INTL-IPCO

The country of the customer’s IP address is outside of the U.S.

INV-EM

The customer’s email address is invalid.

MMEMBCO

The domain in the customer’s email address is not consistent with the country in the billing address.

MM-IPBC

The customer’s IP address is not consistent with the city in the billing address.

MM-IPBCO

The customer’s IP address is not consistent with the country in the billing address.

MM-IPBST

The customer’s IP address is not consistent with the state in the billing address. However, this information code may not be returned when the inconsistency is between immediately adjacent states.

MM-IPEM

The customer’s email address is not consistent with the customer’s IP address.

RISK-EM

The customer’s email domain (for example, mail.example.com) is associated with higher risk.

UNV-NID

The customer’s IP address is from an anonymous proxy. These entities completely hide the IP information.

UNV-RISK

The IP address is from a risky source.

UNVEMBCO

The country of the customer’s email address does not match the country in the billing address.

Phone
Code Description

MMACBST

The customer’s phone number is not consistent with the state in the billing address.

RISK-AC

The customer’s area code is associated with higher risk.

RISK-PH

The U.S. or Canadian phone number is incomplete, or one or more parts of the number are risky.

TF-AC

The phone number uses a toll-free area code.

UNV-AC

The area code is invalid.

UNV-OC

The area code and/or the telephone prefix are/is invalid.

UNV-PH

The phone number is invalid.

Suspicious
Code Description

BAD-FP

The device is risky.

INTL-BIN

The credit card was issued outside of the U.S.

MM-TZTLO

The device’s time zone is inconsistent with the country’s time zones.

MUL-EM

The customer has used more than four different email addresses.

NON-BC

The billing city is nonsensical.

NON-FN

The customer’s first name and last name are identical.

NON-LN

The customer’s last name is nonsensical.

OBS-BC

The billing city contains obscenities.

OBS-EM

The email address contains obscenities.

OBS-FN

The customer’s first and last names contain obscenities.

OBS-LN

The customer’s middle or last name contains obscenities.

RISK-AVS

The combined AVS test result and normalized billing address are risky, such as when the AVS result indicates an exact match, but the normalized billing address is not deliverable.

RISK-BC

The billing city has repeated characters.

RISK-BIN

In the past, this payment card BIN has shown a high incidence of fraud.

RISK-DEV

Some of the device characteristics are risky.

RISK-FN

The customer’s first and last names contain unlikely letter combinations.

RISK-GEO

Indicates a suspicious combination of geographic location elements.

RISK-LN

The customer’s middle or last name contains unlikely letter combinations.

RISK-PIP

The proxy IP address is risky.

RISK-SD

The inconsistency in billing and shipping countries is risky.

RISK-TB

The day and time of the order associated with the billing address is risky.

RISK-TIP

The true IP address is risky.

RISK-TS

The day and time of the order associated with the shipping address is risky.

6.3.4. List handling

Use the list handling endpoint to add or delete entries from the negative or positive list. Set the parameters as follows:

  • list_name: NEGATIVE or POSITIVE according to which list to modify

  • action: either ADD or DELETE according to which action to perform

  • reason: the reason why to add or delete an entry to or from the list

Set the further fields to specify the matching criteria for the list entry.

6.3.5. Reporting fraudulent transactions

To improve the quality of the risk score, merchants are strongly encouraged to contact Deutsche Bank customer support to report fraudulent transactions.

6.4. eScore

eScore offers you various services to minimize the risk of non-payment. The following services are available:

See the linked sections for details on these services. The following sections include additional information regarding certain parameters of the request or response message.

6.4.1. Score

The following tables show the evaluation scheme for the determination of the return value for the parameter score for the different services.

score - Credit Assessment (ES0012)
Value scoring_rc Credit Assessment Description

550

G

KI

There are no negative features.

540

G

Feature cleared

A soft feature, cleared.

340

Y

Feature cleared

Medium feature(s), cleared or more than one soft feature cleared

320

Y

Mwr

A message with reservations, soft

310

Y

Feature

A soft feature

250

Y

Mwr

Message with reservations marked a) hard/medium or b) more than one data record exist

120

R

+

Person registered as deceased

110

R

TKZ 5

Requested address is registered as risk address

100

R

Features

Person with negative feature(s) medium or hard or more than one soft

Score - Integrated Address Verification, Credit Assessment and Scoring (ES0015)
Value scoring_rc Credit Assessment Address Verification Description

980

G

KI

PPB

no negative features, score >=500

970

G

KI

PHB

no negative features, score >=500

960

G

KI

PPB

no negative features, score >450 <500

950

G

KI

PHB

no negative features, score >450 <500

760

G

KI

PAB

no negative features, score >=500

750

G

KI

PAB

no negative features, score >450 <500

560

G

KI

PKI

no negative features, score >=500

550

G

KI

PKI

no negative features, score >450 <500

540

G

Feature cleared

Any

a soft feature, cleared

530

G

KI

Any

no negative features, score not possible

460

G

KI

PPF

no negative features, score >=500

450

G

KI

PPF

no negative features, score >450 <500

370

Y

KI

PNZ

no negative features, score >=500

360

Y

KI

PNZ

no negative features, score >450 <500

350

Y

KI

Any

no negative features, score ⇐450

340

Y

Feature cleared

Any

medium feature(s), cleared or more than one soft feature, cleared

320

Y

Mwr

Any

A message with reservations, soft

310

Y

Feature

Any

A soft feature

250

Y

Mwr

Any

Message with reservations marked a) hard/medium or b) more than one data record exist

120

R

+

Any

Person registered as deceased

110

R

TKZ 5

Any

Requested address is registered as risk address

100

R

Features

Any

Person with negative feature(s) medium or hard or more than one soft

6.4.2. Notifications upon divergence of request data

If in a credit assessment request all the following conditions occur:

  • No absolute match with one of the stored address or data records

  • Using phonetic and/or associative search algorithms, DB Merchant Solutions REST API determines that there is a data record (or several) stored, with only a (slight) divergence from the request data

  • DB Merchant Solutions REST API does not know whether the stored data are actually to be allocated to the requested person

then a respective note in the shape of a three-digit code is given, which consists of the following:

The first digit contains the number of data records, which were found and which differ (slightly) (max. 9). The second digit shows the “hardest” markedness of the respective negative feature on hand. The following codes are possible:

  • H (hard) – entries in the debtor register

  • M (medium) – court collection proceedings

  • W (soft) – pre-court collection proceedings

The third digit signifies the address component, which differs from the requested address with the “hardest” feature in the differing address.

The following codes are possible:

  • N – divergent surname

  • A – divergent address

  • V – divergent first name

  • G – divergent date of birth

The date stated is the date of creation of the negative feature on hand; in the case of several features it is the date of creation of the most recent, “hardest” feature. It is pointed out expressly that the data based on the code supplied is not necessary to be allocated to the requested person, but possibly (only) to a person of the same or very similar name and the same or very similar address.

That means that the code supplied does not readily allow deductions regarding the financial situations or the payment behavior of the requested person. The note should motivate and put the participant in a position to ascertain his request data, the data which is the basis for the credit assessment and/or the identity of the requested person.

Example 1

1WG 22.11.2000 means: Related to the request data the system could not ascertain any data record with a hundred percent match. However, 1 address or data record with divergent date of birth with (at least) one negative feature from the “soft” feature section (= pre-court collection proceedings; date of creation 22nd of November 2000) was ascertained.

Example 2

2MA 15.04.2000 means: Related to the request data the system could not ascertain any data record with a hundred percent match. However, 2 address or data records with negative features were ascertained. The “hardest” of the negative features on hand is allocated to the “medium” feature section (= court collection proceedings; date of creation: 15th of April 2000). The divergence of the data record with the “medium” feature lies in the address.

Example 3

3HV 30.03.2000 means: Related to the request data the system could not ascertain any data record with a hundred percent match. However, 3 address or data records with negative features were ascertained. The “hardest” of the negative features on hand is allocated to the “hard” feature section (= entries in the debtor register; entry dated: 30th of March 2000). The divergence of the data record with the “hard” feature lies in the first name.

Example 4

1WN * 12.02.2000 means: Related to the request data the system could not ascertain any data record with a hundred percent match. However, 1 address or data record with negative features was ascertained. The “hardest” of the negative features on hand is allocated to the “soft” feature section (= pre-court collection proceedings). The asterisk (*) means that the pre-court collection proceedings were cleared by payment. The divergence lies in the surname.

6.4.3. Response codes

The following table shows the most common response codes for eScore transactions. See Response codes for a complete list of possible response codes.

Response code Description

0

Transaction successful.

1523

Means of payment blocked.

1102

Gateway connection problem.

1213

No contract configured.

9000

Indeterminate error

1532

No suitable match.

1502

Configuration problem.

6.4.4. Test data

Address verification

For the address verification no explicit test data are available. However, even in the test system the address verification is against the entire data record of the Deutsche Post Direkt GmbH (German mail). The interface therefore can be tested by providing the interface with real address details.

Credit assessment

For the credit assessment there are two test data records in the following tables, which can be ascribed distinctly to the traffic light value.

Table 10. Test data scoring_rc=G
Parameter Data record 1 Data record 2

title

Mr

Mrs

first_name

Fritz

Anka

last_name

Wald

Wild

date_of_birth

1957-01-01

1957-01-01

street

August-Laemmle-Str.

Speiersgasse

number

58

61

postal_code

72411

97475

city

Bodelshausen

Zeil

country

DE

DE

Table 11. Test data scoring_rc=Y
Parameter Data record 1 Data record 2

title

Mr

Mrs

first_name

Wolfgang

Jovanka

last_name

Schmitt

Zeilfelder

date_of_birth

1957-01-01

1971-11-14

street

Hans-Otto-Str.

Koelner Str.

number

13

63

postal_code

04279

33647

city

Leipzig

Bielefeld

country

DE

DE

Table 12. Test data scoring_rc=R
Parameter Data record 1 Data record 2

title

Mr

Mrs

first_name

Gildo

Engel

last_name

Gauner

Zeilfelder

date_of_birth

1975-21-01

1975-21-01

street

Ottersdorfer Str.

Tilsiter Str.

number

17

55

postal_code

76437

28844

city

Rastatt

Weye

country

DE

DE

RPP Check
Table 13. Test data: valid bank account (ES0024), scoring_rc = G
IBAN BIC

DE25662500300000010868

SOLADES1BAD

Table 14. Test data: bank account (ES0024), return debit note, scoring_rc = R
IBAN BIC

DE62100208900001317270

HYVEDEMM488

Table 15. Test data: bank account (ES0024), non consumer account, scoring_rc = R
IBAN BIC

DE43120965970001131079

GENODEF1S10

6.5. PSD2 AIS

6.5.1. Introduction

DB Merchant Solutions REST API supports bank account information services as stipulated by the Payment Services Directive 2, abbreviated to PSD2 AIS.

The following services are available:

6.5.2. Check banks for supported PSD2 AIS functionality

Use the endpoint GET /info/banks/psd2 with the search criteria bank name, BIC, or German bank code (Bankleitzahl) to obtain a list of banks matching the search criteria and for each returned bank the following information:

  • psd2_supported: indicates if this bank supports PSD2 account information services.

  • capabilities:

    • AVAILABLE_ACCOUNTS: AIS can be used to find all the customer’s accounts with this bank.

    • AVAILABLE_ACCOUNTS_WITH_BALANCE: AIS can be used to find all the customer’s accounts with this bank, including the balances.

    • BANK_OFFERED_CONSENT: AIS can be used to find all the customer’s accounts with this bank. If the customer has more than one account, the bank will display the list of accounts and the customer chooses the accounts for which they grant access.

    • GLOBAL_CONSENT: AIS can be used to get the customer’s consent to access all accounts.

6.5.3. Obtain bank account information

Course of transaction

The course of transaction for PSD2 AIS is the same as for other Form service services, see Course of transaction. The following paragraphs detail the relevant steps for PSD2 AIS.

Initializing the AIS (step 2)

Use the endpoint POST /form/event/{event_id}/psd2/account_info for initialization.

Use the parameters bank, bank_code, or bank_id to identify the customer’s bank to which they will be redirected.

Use requested_details to furthermore request the owner, the balance, and the transactions (filtered by transaction_filter) of each account.

Use form_data, form_customer_continuation and callback as in other Form service requests. Note that via form_data.labels the following labels specific to PSD2 AIS may be changed:

  • TITLE_PSD2_ACCOUNT_INFO

  • TITLE_PSD2_AUTHORISATION_REQUIRED

  • TITLE_PSD2_AUTHORISE_AIS

Redirect (step 4 and 5)

Redirect the customer to the URL received in the response. The data to be entered may differ from bank to bank, as seen for example for Deutsche Bank and Postbank (here with locale set to de_DE):

psd2ais login deutsche bank
PSD2 AIS login Deutsche Bank
psd2ais login postbank
PSD2 AIS login Postbank
Customer interaction with the bank (step 8)

How the customer interacts with their bank depends on each bank and their PSD2 capabilities. The bank may choose one of the following approaches:

  • decoupled

  • embedded

  • redirect.

For the merchant, however, these approaches do not make a difference as DB Merchant Solutions REST API encapsulates the functionality.

Callback (step 9)

In the callback request from DB Merchant Solutions REST API to the merchant, the account data is returned in the field accounts.

6.5.4. Retrieve stored bank account details

Use GET /info/event/{event_id}/psd2/account_info with the event_id of the AIS call above to retrieve the bank account information as previously sent in the callback.

6.5.5. Response codes

The following table shows the most common response codes for PSD2 AIS transactions. See Response codes for a complete list of possible response codes.

Response code Description

0

Transaction successful.

1548

Transaction is pending.

1504

System error.

1547

Input failure.

1545

Authorisation problem.

1103

Illegible gateway response.

1506

Temporary error.

1615

Login/customer ID missing.

7. API reference

As a merchant, use DB Merchant Solutions REST API’s Security API as client for authentication and use DB Merchant Solutions REST API’s Services API as client to use the main functionality.

Implement the Callback API as server to receive callbacks during the transaction processing.

7.1. Security API

7.1.1. Authorization

POST /token
Header Parameters
Name Type Description

X-RandomValue

string

  • required

  • minLength: 1

  • maxLength: 100

A random value; part of the signature input.

Example: 4D-#h+P:I}x:tQ[UUWX)_{2/J/(;2]4wu=y?SipcRV8}B*/V^

X-RequestDate

string

  • required

Current timestamp formatted according to RFC 7231, section 7.1.1.2; part of the signature input.

Example: Fri, 10 Jan 2020 14:41:15 GMT

Request Body (required)
Type Content-Type

AccessTokenRequest

application/x-www-form-urlencoded

Responses
Code Type Content-Type Description

200

AccessTokenResponse

application/json

Authorization successful.

401

AccessTokenError

application/json

Not authorized, check credentials, scope and implementation.

default

AccessTokenError

application/json

An error occured during authorization process.

7.1.2. Model

AccessTokenError

The response object that is received after a failed authorization.

Property Type Description

cause

string

  • required

  • enum

    • request_invalid

    • grant_type_invalid

    • scope_invalid

    • unauthorized

  • grant_type_invalid - Invalid value in property grant_type.

  • request_invalid - Invalid request.

  • scope_invalid - Invalid value in property scope.

  • unauthorized - Invalid credentials.

description

string

A textual description detailing the cause of the failure.

AccessTokenRequest

Perform the request to get an authorization token. Make sure to have URL-encoding applied to the parameter values by your HTTP-client or implementation.

Property Type Description

client_id

string

  • required

  • minLength: 1

  • maxLength: 100

The client-id; part of the signature input.

Example: client_id_value

client_secret

string

  • required

  • minLength: 1

  • maxLength: 100

The calculated client secret. Consult the documentation for implementation details.

Example: V1:VoKCzVc+Cy0wmwpaqo/98KQheTjFvXL8w0xsfwZG68M=

grant_type

string

  • required

  • enum

    • client_credentials

The grant type of the request. Use fixed value client_credentials.

scope

string

  • required

  • enum

    • ftx

    • configuration

The application scope of the request.

AccessTokenResponse

The response object that is received after a successful authorization.

Property Type Description

access_token

string

  • required

The access token is used as credential for service requests.

Example: eyJraWQiOiJrMSIsInR5cCI6IkpXVCIsImFsZyI6IkhTMjU2In0…​

expires_in

integer

  • required

The duration in seconds the token is valid.

Example: 3600

expires_on

integer

  • required

  • format: int64

The time the token expires. Format is Unix time.

Example: 1579182837

scope

string

  • required

  • enum

    • ftx

    • configuration

The application scope of the request. Corresponds to scope in the request.

token_type

string

  • required

  • enum

    • Bearer

The type of the token.

7.2. Services API

7.2.1. Alias

The alias API contains endpoints to add, update or delete aliases for means of payment.

GET /alias/bankaccount/{alias}

Retrieves a bank account alias by its name.

Path Parameters
Name Type Description

alias

string

  • required

Name of the alias.

Example: da2c9029-b180-42a7-b473-50d182a01f8a

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Responses
Code Type Content-Type Description

200

AliasResponse

application/json

A return code and a message, accompanied by information about the alias. Sensitive bank account data may be masked, depending on the configuration of the merchant’s account. If the alias is unknown or in case of a known business or persistence error, only error code and message are provided.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

DELETE /alias/bankaccount/{alias}

Deletes a bank account alias.

Path Parameters
Name Type Description

alias

string

  • required

Name of the alias.

Example: da2c9029-b180-42a7-b473-50d182a01f8a

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Responses
Code Type Content-Type Description

200

BaseResponse

application/json

A return code and a message, indicating whether or not the operation was successful.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

PATCH /alias/bankaccount/{alias}

Updates the address attached to a bank account alias.

In most SEPA countries, address data is not required for payment processing. However, some countries require addresses in addition to means of payment data for successful authorization. This endpoint provides functionality to update this address data.

Path Parameters
Name Type Description

alias

string

  • required

Name of the alias.

Example: da2c9029-b180-42a7-b473-50d182a01f8a

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

CommonAddress

application/json

Request example Sample update of alias address

Request type: CommonAddress

{
  "address_line_1" : "Rohrteichstr 18",
  "postalCode" : "98765",
  "city" : "newCity",
  "country" : "DE"
}
Responses
Code Type Content-Type Description

200

AliasResponse

application/json

A return code and a message, accompanied by information about the updated alias. Sensitive bank account data may be masked, depending on the configuration of the merchant’s account. If the alias was unknown or in case of a known business or persistence error, only error code and message are provided.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /alias/bankaccount

Creates a new bank account alias.

Clients may specify a bank account alias themselves by submitting the desired value in the alias field. If the alias field is left blank, an alias will be generated. Bank account aliases may also be created during payment processing. The bank account field of the request requires an iban to be present. All other fields are optional. In most SEPA countries, address data is not required for payment processing. However, some countries require addresses in addition to means of payment data for successful authorization. This is why this endpoint provides an option to specify additional address data which will be stored along with the new alias if present. Bank accounts and aliases have a 1:1 relation, that is if an alias is assigned to a bank account creating another alias for the same bank account results in an error, as does assigning an existing alias to another bank account.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

AliasBankAccountRequest

application/json

Request example Sample creation of alias for a bank account

Request type: AliasBankAccountRequest

{
  "alias" : "example-dd-alias",
  "bank_account" : {
    "iban" : "DE39123456790009290701",
    "account_holder" : "Rene Holder"
  }
}
Responses
Code Type Content-Type Description

200

AliasResponse

application/json

A return code and a message, accompanied by information about the created alias. Sensitive bank account data may be masked, depending on the configuration of the merchant’s account. In case of a known business or persistence error, only error code and message are provided.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /alias/bankaccount/get

Retrieves a bank account alias by bank account data.

Due to security reasons, this is a GET with body payload (see https://opensource.zalando.com/restful-api-guidelines/#get-with-body) operation. No resources will be created.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

BankAccount

application/json

Request example Sample get bank account

Request type: BankAccount

{
  "iban" : "DE39123456790009290701",
  "account_holder" : "Rene Holder"
}
Responses
Code Type Content-Type Description

200

AliasResponse

application/json

A return code and a message, accompanied by information about the alias. Sensitive bank account data may be masked, depending on the configuration of the merchant’s account. In case of a known business or persistence error, only error code and message are provided.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /alias/creditcard

Creates a new credit card alias.

Clients may specify a card number alias themselves by submitting the desired value in the alias field. If the alias field is left blank, an alias will be generated. Card number aliases may also be created during payment processing. The credit card field of the request requires a number and an expiry date to be present. All other fields are optional. Credit cards and aliases have a 1:1 relation, that is if an alias is assigned to a credit card creating another alias for the same card results in an error, as does assigning an existing alias to another credit card.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

AliasCreditCardRequest

application/json

Request example Sample creation of an alias for a credit card

Request type: AliasCreditCardRequest

{
  "alias" : "example-cc-alias",
  "credit_card" : {
    "number" : "4111111111111111",
    "code" : "123",
    "cardholder" : "Card T. Holder",
    "expiry_date" : {
      "year" : 2029,
      "month" : 11
    }
  }
}
Responses
Code Type Content-Type Description

200

AliasResponse

application/json

A return code and a message, accompanied by information about the created alias. Sensitive credit card data may be masked, depending on the configuration of the merchant’s account. In case of a known business or persistence error, only error code and message are provided.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

GET /alias/creditcard/{alias}

Retrieves a credit card alias by its name.

Path Parameters
Name Type Description

alias

string

  • required

Name of the alias.

Example: da2c9029-b180-42a7-b473-50d182a01f8a

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Responses
Code Type Content-Type Description

200

AliasResponse

application/json

A return code and a message, accompanied by information about the alias. Sensitive credit card data may be masked, depending on the configuration of the merchant’s account. In case of a known business or persistence error, only error code and message are provided.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

DELETE /alias/creditcard/{alias}

Deletes a credit card alias.

Path Parameters
Name Type Description

alias

string

  • required

Name of the alias.

Example: da2c9029-b180-42a7-b473-50d182a01f8a

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Responses
Code Type Content-Type Description

200

BaseResponse

application/json

A return code and a message, indicating whether or not the operation was successful.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /alias/creditcard/get

Retrieves a credit card alias by credit card data.

Due to security reasons, this is a GET with body payload (see https://opensource.zalando.com/restful-api-guidelines/#get-with-body) operation. No resources will be created.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

CreditCard

application/json

Request example Sample retrieve credit card alias

Request type: CreditCard

{
  "number" : "4111111111111111",
  "code" : "123",
  "cardholder" : "Card T. Holder",
  "expiry_date" : {
    "year" : 2029,
    "month" : 11
  }
}
Responses
Code Type Content-Type Description

200

AliasResponse

application/json

A return code and a message, accompanied by information about the alias. Sensitive credit card data may be masked, depending on the configuration of the merchant’s account. If the credit card data did not match a known credit card or in case of a known business or persistence error, only error code and message are provided.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

GET /alias/{alias}

Retrieves an alias (credit card, bank account, or Klarna) by its name.

This is a generalized variant of the other GET alias endpoints of this API. May be used by clients that cannot or do not want to decide on the type of alias to be retrieved.

Path Parameters
Name Type Description

alias

string

  • required

Name of the alias.

Example: da2c9029-b180-42a7-b473-50d182a01f8a

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Responses
Code Type Content-Type Description

200

AliasResponse

application/json

A return code and a message, accompanied by information about the alias. Depending on the type of means of payment this alias is connected to, the appropriate fields will be set in the response. Sensitive means of payment data may be masked, depending on the configuration of the merchant’s account. If the alias is unknown or in case of a known business or persistence error, only error code and message are provided.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

DELETE /alias/{alias}

Deletes an alias (credit card, bank account, or Klarna).

This is a generalized variant of the other DELETE alias endpoints of this API. May be used by clients that cannot or do not want to decide on the type of alias to be deleted.

Path Parameters
Name Type Description

alias

string

  • required

Name of the alias.

Example: da2c9029-b180-42a7-b473-50d182a01f8a

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Responses
Code Type Content-Type Description

200

BaseResponse

application/json

A return code and a message, indicating whether or not the operation was successful.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

7.2.2. Apple Pay

The Apple Pay API contains endpoints to initiate a payment session to perform credit card payment transactions based on Apple Pay payment information.

POST /applepay/paymentSession/{event_id}

Perform payment session requests based on Apple Pay data.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

ApplePayPaymentSessionRequest

application/json

Request example Sample Apple Pay Payment Session request
{
  "merchant_id" : "merchant.processingpagateq.merchantsolution",
  "initiative_context" : "testmerch.directpos.de"
}
Responses
Code Type Content-Type Description

200

ApplePayPaymentSessionResponse

application/json

Information about the outcome of the transaction.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

Response examples Session has been created, no further actions required.

Status code:

200

Return type:

ApplePayPaymentSessionResponse

{
  "applepay_payment_session_token" : "eyJlcG9jaFRpbWVzdGFtcCI6MTY1OTUyODYxMzQ5MywiZXhwaXJlc0F0IjoxNjU5NTMyMjEzNDkzLCJtZXJjaGFudFNlc3Npb25JZGVudGlmaWVyIjoiU1NIRjUyNTM0MUM1OTY1NDE4ODkwMkZBRDM0RDA2NEQ0OTZfNTE2OTYyRkI1NUYyNEQ2NTU5RTg2MkU5Nzk5OTJCRDI5RENGQTVEMkJBOEFEOEQ0RDg5M0Y4Mzc1OTYwODNDQSIsIm5vbmNlIjoiNGEyMWYzZjAiLCJtZXJjaGFudElkZW50aWZpZXIiOiIyODczMkE0RjA1QUUwNTU1MDA3NzY0MkNDNkJBQkE4QzU5MjNFMzQ3QTA4MzgwM0MwQjdBODA4ODcxMEMzMUU0IiwiZG9tYWluTmFtZSI6InRlc3RtZXJjaC5kaXJlY3Rwb3MuZGUiLCJkaXNwbGF5TmFtZSI6IkRCLk1lcmNoYW50U29sdXRpb24uVGVzdE1lcmNoYW50Iiwic2lnbmF0dXJlIjoiMzA4MDA2MDkyYTg2NDg4NmY3MGQwMTA3MDJhMDgwMzA4MDAyMDEwMTMxMGYzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDAzMDgwMDYwOTJhODY0ODg2ZjcwZDAxMDcwMTAwMDBhMDgwMzA4MjAzZTMzMDgyMDM4OGEwMDMwMjAxMDIwMjA4NGMzMDQxNDk1MTlkNTQzNjMwMGEwNjA4MmE4NjQ4Y2UzZDA0MDMwMjMwN2EzMTJlMzAyYzA2MDM1NTA0MDMwYzI1NDE3MDcwNmM2NTIwNDE3MDcwNmM2OTYzNjE3NDY5NmY2ZTIwNDk2ZTc0NjU2NzcyNjE3NDY5NmY2ZTIwNDM0MTIwMmQyMDQ3MzMzMTI2MzAyNDA2MDM1NTA0MGIwYzFkNDE3MDcwNmM2NTIwNDM2NTcyNzQ2OTY2Njk2MzYxNzQ2OTZmNmUyMDQxNzU3NDY4NmY3MjY5NzQ3OTMxMTMzMDExMDYwMzU1MDQwYTBjMGE0MTcwNzA2YzY1MjA0OTZlNjMyZTMxMGIzMDA5MDYwMzU1MDQwNjEzMDI1NTUzMzAxZTE3MGQzMTM5MzAzNTMxMzgzMDMxMzMzMjM1Mzc1YTE3MGQzMjM0MzAzNTMxMzYzMDMxMzMzMjM1Mzc1YTMwNWYzMTI1MzAyMzA2MDM1NTA0MDMwYzFjNjU2MzYzMmQ3MzZkNzAyZDYyNzI2ZjZiNjU3MjJkNzM2OTY3NmU1ZjU1NDMzNDJkNTA1MjRmNDQzMTE0MzAxMjA2MDM1NTA0MGIwYzBiNjk0ZjUzMjA1Mzc5NzM3NDY1NmQ3MzMxMTMzMDExMDYwMzU1MDQwYTBjMGE0MTcwNzA2YzY1MjA0OTZlNjMyZTMxMGIzMDA5MDYwMzU1MDQwNjEzMDI1NTUzMzA1OTMwMTMwNjA3MmE4NjQ4Y2UzZDAyMDEwNjA4MmE4NjQ4Y2UzZDAzMDEwNzAzNDIwMDA0YzIxNTc3ZWRlYmQ2YzdiMjIxOGY2OGRkNzA5MGExMjE4ZGM3YjBiZDZmMmMyODNkODQ2MDk1ZDk0YWY0YTU0MTFiODM0MjBlZDgxMWYzNDA3ZTgzMzMxZjFjNTRjM2Y3ZWIzMjIwZDZiYWQ1ZDRlZmY0OTI4OTg5M2U3YzBmMTNhMzgyMDIxMTMwODIwMjBkMzAwYzA2MDM1NTFkMTMwMTAxZmYwNDAyMzAwMDMwMWYwNjAzNTUxZDIzMDQxODMwMTY4MDE0MjNmMjQ5YzQ0ZjkzZTRlZjI3ZTZjNGY2Mjg2YzNmYTJiYmZkMmU0YjMwNDUwNjA4MmIwNjAxMDUwNTA3MDEwMTA0MzkzMDM3MzAzNTA2MDgyYjA2MDEwNTA1MDczMDAxODYyOTY4NzQ3NDcwM2EyZjJmNmY2MzczNzAyZTYxNzA3MDZjNjUyZTYzNmY2ZDJmNmY2MzczNzAzMDM0MmQ2MTcwNzA2YzY1NjE2OTYzNjEzMzMwMzIzMDgyMDExZDA2MDM1NTFkMjAwNDgyMDExNDMwODIwMTEwMzA4MjAxMGMwNjA5MmE4NjQ4ODZmNzYzNjQwNTAxMzA4MWZlMzA4MWMzMDYwODJiMDYwMTA1MDUwNzAyMDIzMDgxYjYwYzgxYjM1MjY1NmM2OTYxNmU2MzY1MjA2ZjZlMjA3NDY4Njk3MzIwNjM2NTcyNzQ2OTY2Njk2MzYxNzQ2NTIwNjI3OTIwNjE2ZTc5MjA3MDYxNzI3NDc5MjA2MTczNzM3NTZkNjU3MzIwNjE2MzYzNjU3MDc0NjE2ZTYzNjUyMDZmNjYyMDc0Njg2NTIwNzQ2ODY1NmUyMDYxNzA3MDZjNjk2MzYxNjI2YzY1MjA3Mzc0NjE2ZTY0NjE3MjY0MjA3NDY1NzI2ZDczMjA2MTZlNjQyMDYzNmY2ZTY0Njk3NDY5NmY2ZTczMjA2ZjY2MjA3NTczNjUyYzIwNjM2NTcyNzQ2OTY2Njk2MzYxNzQ2NTIwNzA2ZjZjNjk2Mzc5MjA2MTZlNjQyMDYzNjU3Mjc0Njk2NjY5NjM2MTc0Njk2ZjZlMjA3MDcyNjE2Mzc0Njk2MzY1MjA3Mzc0NjE3NDY1NmQ2NTZlNzQ3MzJlMzAzNjA2MDgyYjA2MDEwNTA1MDcwMjAxMTYyYTY4NzQ3NDcwM2EyZjJmNzc3Nzc3MmU2MTcwNzA2YzY1MmU2MzZmNmQyZjYzNjU3Mjc0Njk2NjY5NjM2MTc0NjU2MTc1NzQ2ODZmNzI2OTc0NzkyZjMwMzQwNjAzNTUxZDFmMDQyZDMwMmIzMDI5YTAyN2EwMjU4NjIzNjg3NDc0NzAzYTJmMmY2MzcyNmMyZTYxNzA3MDZjNjUyZTYzNmY2ZDJmNjE3MDcwNmM2NTYxNjk2MzYxMzMyZTYzNzI2YzMwMWQwNjAzNTUxZDBlMDQxNjA0MTQ5NDU3ZGI2ZmQ1NzQ4MTg2ODk4OTc2MmY3ZTU3ODUwN2U3OWI1ODI0MzAwZTA2MDM1NTFkMGYwMTAxZmYwNDA0MDMwMjA3ODAzMDBmMDYwOTJhODY0ODg2Zjc2MzY0MDYxZDA0MDIwNTAwMzAwYTA2MDgyYTg2NDhjZTNkMDQwMzAyMDM0OTAwMzA0NjAyMjEwMGJlMDk1NzFmZTcxZTFlNzM1YjU1ZTVhZmFjYjRjNzJmZWI0NDVmMzAxODUyMjJjNzI1MTAwMmI2MWViZDZmNTUwMjIxMDBkMThiMzUwYTVkZDZkZDZlYjE3NDYwMzViMTFlYjJjZTg3Y2ZhM2U2YWY2Y2JkODM4MDg5MGRjODJjZGRhYTYzMzA4MjAyZWUzMDgyMDI3NWEwMDMwMjAxMDIwMjA4NDk2ZDJmYmYzYTk4ZGE5NzMwMGEwNjA4MmE4NjQ4Y2UzZDA0MDMwMjMwNjczMTFiMzAxOTA2MDM1NTA0MDMwYzEyNDE3MDcwNmM2NTIwNTI2ZjZmNzQyMDQzNDEyMDJkMjA0NzMzMzEyNjMwMjQwNjAzNTUwNDBiMGMxZDQxNzA3MDZjNjUyMDQzNjU3Mjc0Njk2NjY5NjM2MTc0Njk2ZjZlMjA0MTc1NzQ2ODZmNzI2OTc0NzkzMTEzMzAxMTA2MDM1NTA0MGEwYzBhNDE3MDcwNmM2NTIwNDk2ZTYzMmUzMTBiMzAwOTA2MDM1NTA0MDYxMzAyNTU1MzMwMWUxNzBkMzEzNDMwMzUzMDM2MzIzMzM0MzYzMzMwNWExNzBkMzIzOTMwMzUzMDM2MzIzMzM0MzYzMzMwNWEzMDdhMzEyZTMwMmMwNjAzNTUwNDAzMGMyNTQxNzA3MDZjNjUyMDQxNzA3MDZjNjk2MzYxNzQ2OTZmNmUyMDQ5NmU3NDY1Njc3MjYxNzQ2OTZmNmUyMDQzNDEyMDJkMjA0NzMzMzEyNjMwMjQwNjAzNTUwNDBiMGMxZDQxNzA3MDZjNjUyMDQzNjU3Mjc0Njk2NjY5NjM2MTc0Njk2ZjZlMjA0MTc1NzQ2ODZmNzI2OTc0NzkzMTEzMzAxMTA2MDM1NTA0MGEwYzBhNDE3MDcwNmM2NTIwNDk2ZTYzMmUzMTBiMzAwOTA2MDM1NTA0MDYxMzAyNTU1MzMwNTkzMDEzMDYwNzJhODY0OGNlM2QwMjAxMDYwODJhODY0OGNlM2QwMzAxMDcwMzQyMDAwNGYwMTcxMTg0MTlkNzY0ODVkNTFhNWUyNTgxMDc3NmU4ODBhMmVmZGU3YmFlNGRlMDhkZmM0YjkzZTEzMzU2ZDU2NjViMzVhZTIyZDA5Nzc2MGQyMjRlN2JiYTA4ZmQ3NjE3Y2U4OGNiNzZiYjY2NzBiZWM4ZTgyOTg0ZmY1NDQ1YTM4MWY3MzA4MWY0MzA0NjA2MDgyYjA2MDEwNTA1MDcwMTAxMDQzYTMwMzgzMDM2MDYwODJiMDYwMTA1MDUwNzMwMDE4NjJhNjg3NDc0NzAzYTJmMmY2ZjYzNzM3MDJlNjE3MDcwNmM2NTJlNjM2ZjZkMmY2ZjYzNzM3MDMwMzQyZDYxNzA3MDZjNjU3MjZmNmY3NDYzNjE2NzMzMzAxZDA2MDM1NTFkMGUwNDE2MDQxNDIzZjI0OWM0NGY5M2U0ZWYyN2U2YzRmNjI4NmMzZmEyYmJmZDJlNGIzMDBmMDYwMzU1MWQxMzAxMDFmZjA0MDUzMDAzMDEwMWZmMzAxZjA2MDM1NTFkMjMwNDE4MzAxNjgwMTRiYmIwZGVhMTU4MzM4ODlhYTQ4YTk5ZGViZWJkZWJhZmRhY2IyNGFiMzAzNzA2MDM1NTFkMWYwNDMwMzAyZTMwMmNhMDJhYTAyODg2MjY2ODc0NzQ3MDNhMmYyZjYzNzI2YzJlNjE3MDcwNmM2NTJlNjM2ZjZkMmY2MTcwNzA2YzY1NzI2ZjZmNzQ2MzYxNjczMzJlNjM3MjZjMzAwZTA2MDM1NTFkMGYwMTAxZmYwNDA0MDMwMjAxMDYzMDEwMDYwYTJhODY0ODg2Zjc2MzY0MDYwMjBlMDQwMjA1MDAzMDBhMDYwODJhODY0OGNlM2QwNDAzMDIwMzY3MDAzMDY0MDIzMDNhY2Y3MjgzNTExNjk5YjE4NmZiMzVjMzU2Y2E2MmJmZjQxN2VkZDkwZjc1NGRhMjhlYmVmMTljODE1ZTQyYjc4OWY4OThmNzliNTk5Zjk4ZDU0MTBkOGY5ZGU5YzJmZTAyMzAzMjJkZDU0NDIxYjBhMzA1Nzc2YzVkZjMzODNiOTA2N2ZkMTc3YzJjMjE2ZDk2NGZjNjcyNjk4MjEyNmY1NGY4N2E3ZDFiOTljYjliMDk4OTIxNjEwNjk5MGYwOTkyMWQwMDAwMzE4MjAxOGMzMDgyMDE4ODAyMDEwMTMwODE4NjMwN2EzMTJlMzAyYzA2MDM1NTA0MDMwYzI1NDE3MDcwNmM2NTIwNDE3MDcwNmM2OTYzNjE3NDY5NmY2ZTIwNDk2ZTc0NjU2NzcyNjE3NDY5NmY2ZTIwNDM0MTIwMmQyMDQ3MzMzMTI2MzAyNDA2MDM1NTA0MGIwYzFkNDE3MDcwNmM2NTIwNDM2NTcyNzQ2OTY2Njk2MzYxNzQ2OTZmNmUyMDQxNzU3NDY4NmY3MjY5NzQ3OTMxMTMzMDExMDYwMzU1MDQwYTBjMGE0MTcwNzA2YzY1MjA0OTZlNjMyZTMxMGIzMDA5MDYwMzU1MDQwNjEzMDI1NTUzMDIwODRjMzA0MTQ5NTE5ZDU0MzYzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDBhMDgxOTUzMDE4MDYwOTJhODY0ODg2ZjcwZDAxMDkwMzMxMGIwNjA5MmE4NjQ4ODZmNzBkMDEwNzAxMzAxYzA2MDkyYTg2NDg4NmY3MGQwMTA5MDUzMTBmMTcwZDMyMzIzMDM4MzAzMzMxMzIzMTMwMzEzMzVhMzAyYTA2MDkyYTg2NDg4NmY3MGQwMTA5MzQzMTFkMzAxYjMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMGExMGEwNjA4MmE4NjQ4Y2UzZDA0MDMwMjMwMmYwNjA5MmE4NjQ4ODZmNzBkMDEwOTA0MzEyMjA0MjBjYWRlZWE1ODc3MTE1OTVlMTg5ZDNhOTUyMDBmMDdhZTQwNTE2M2JmNzA1MTk2MWRlMDk1NzY0ZGYyOTcxOTQzMzAwYTA2MDgyYTg2NDhjZTNkMDQwMzAyMDQ0NzMwNDUwMjIxMDA5MDUyMWYzNjJmYzk1ZGNiMDhhZjQxOTMyYTNkM2Y2YTNhYzVkNWFiZTIyMmYxY2YxZDAxMDNiMjM5MWI3MzEwMDIyMDYxMzZlYzJkNGQ2N2MwODZiZDRiYTA5YTJjZjMwODY1ZjJhYTM5NWMwODlmZTFkM2UwYWM4YTgzM2YwNjIwZDUwMDAwMDAwMDAwMDAiLCJvcGVyYXRpb25hbEFuYWx5dGljc0lkZW50aWZpZXIiOiJEQi5NZXJjaGFudFNvbHV0aW9uLlRlc3RNZXJjaGFudDoyODczMkE0RjA1QUUwNTU1MDA3NzY0MkNDNkJBQkE4QzU5MjNFMzQ3QTA4MzgwM0MwQjdBODA4ODcxMEMzMUU0IiwicmV0cmllcyI6MCwicHNwSWQiOiIyODczMkE0RjA1QUUwNTU1MDA3NzY0MkNDNkJBQkE4QzU5MjNFMzQ3QTA4MzgwM0MwQjdBODA4ODcxMEMzMUU0In0=",
  "rc" : "0",
  "message" : "success"
}
Session creation failed

Status code:

200

Return type:

ApplePayPaymentSessionResponse

{
  "rc" : "1547",
  "message" : "Payment Services Exception merchantId=28 not registered for domain=unknown.domain.com"
}
POST /applepay/pay/{event_id}/{tx_action}/initialize

Perform payment requests based on Apple Pay data.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

tx_action

string

  • required

  • enum

    • authorization

    • preauthorization

    • credit

    • verify-mop

The action of an initial transaction.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

ApplePayPaymentRequest

application/json

Request example Sample Apple Pay payment request

Request type: ApplePayPaymentRequest

{
  "means_of_payment" : {
    "applepay_token" : "eyJwYXltZW50RGF0YSI6eyJ2ZXJzaW9uIjoiRUNfdjEiLCJkYXRhIjoiYWJONTBPS0FNd1pUU0lJV2Z4VWpYWGhncVVZNTIrMlVnZWY4Q0VMUTg2QTE3eFJwdEdhTWFjWHhvNXl1Um1UVDFOb2Y3VERYeHFncHFkL2Mwa2l1OXZKcy9DcVNKUHZNUG9BbkJEemlYTGtDK0JnRFBJVERuMzFLTlVHU3dYQ1QrVkJZdy85cHVocVVvSWQwcU1QRzRUQ2E1cDBVc3k4VmkxN0g2bGpJaGhpdStKNXoxWWpsTTJBbXZtMmdxSUZ2WHRWdmJYbTBGL05tZDBqZWEvcUQ4UUNmQURJa0NkSHZwQWJic2gyTlVMbzFYbm1UNFlodFRjN1o5Zy9helVtMm9YTjZWdlRYYXY0SHhzZGJueERjN2tpWGo5U3VYYVN3anZudTdtS21uUG0zVXlQMkk2QWc1cDJZTGQ3dXg4bURpUmxQUG9WY0FLM0U4N2dxRU90a0lHUGRaM0JCZ1paOHNjaFlJQVRqR1p4aWI4aHRFNk1mcE1jV0VJdFlrVlZ5QzFIREpMcWdsY2VjRU1rUWhRPT0iLCJzaWduYXR1cmUiOiJNSUFHQ1NxR1NJYjNEUUVIQXFDQU1JQUNBUUV4RFRBTEJnbGdoa2dCWlFNRUFnRXdnQVlKS29aSWh2Y05BUWNCQUFDZ2dEQ0NBK013Z2dPSW9BTUNBUUlDQ0V3d1FVbFJuVlEyTUFvR0NDcUdTTTQ5QkFNQ01Ib3hMakFzQmdOVkJBTU1KVUZ3Y0d4bElFRndjR3hwWTJGMGFXOXVJRWx1ZEdWbmNtRjBhVzl1SUVOQklDMGdSek14SmpBa0JnTlZCQXNNSFVGd2NHeGxJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNU1STXdFUVlEVlFRS0RBcEJjSEJzWlNCSmJtTXVNUXN3Q1FZRFZRUUdFd0pWVXpBZUZ3MHhPVEExTVRnd01UTXlOVGRhRncweU5EQTFNVFl3TVRNeU5UZGFNRjh4SlRBakJnTlZCQU1NSEdWall5MXpiWEF0WW5KdmEyVnlMWE5wWjI1ZlZVTTBMVkJTVDBReEZEQVNCZ05WQkFzTUMybFBVeUJUZVhOMFpXMXpNUk13RVFZRFZRUUtEQXBCY0hCc1pTQkpibU11TVFzd0NRWURWUVFHRXdKVlV6QlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJNSVZkKzNyMXNleUlZOW8zWENRb1NHTng3QzlieXdvUFlSZ2xkbEs5S1ZCRzROQ0R0Z1I4MEIrZ3pNZkhGVEQ5K3N5SU5hNjFkVHY5SktKaVQ1OER4T2pnZ0lSTUlJQ0RUQU1CZ05WSFJNQkFmOEVBakFBTUI4R0ExVWRJd1FZTUJhQUZDUHlTY1JQaytUdkorYkU5aWhzUDZLNy9TNUxNRVVHQ0NzR0FRVUZCd0VCQkRrd056QTFCZ2dyQmdFRkJRY3dBWVlwYUhSMGNEb3ZMMjlqYzNBdVlYQndiR1V1WTI5dEwyOWpjM0F3TkMxaGNIQnNaV0ZwWTJFek1ESXdnZ0VkQmdOVkhTQUVnZ0VVTUlJQkVEQ0NBUXdHQ1NxR1NJYjNZMlFGQVRDQi9qQ0J3d1lJS3dZQkJRVUhBZ0l3Z2JZTWdiTlNaV3hwWVc1alpTQnZiaUIwYUdseklHTmxjblJwWm1sallYUmxJR0o1SUdGdWVTQndZWEowZVNCaGMzTjFiV1Z6SUdGalkyVndkR0Z1WTJVZ2IyWWdkR2hsSUhSb1pXNGdZWEJ3YkdsallXSnNaU0J6ZEdGdVpHRnlaQ0IwWlhKdGN5QmhibVFnWTI5dVpHbDBhVzl1Y3lCdlppQjFjMlVzSUdObGNuUnBabWxqWVhSbElIQnZiR2xqZVNCaGJtUWdZMlZ5ZEdsbWFXTmhkR2x2YmlCd2NtRmpkR2xqWlNCemRHRjBaVzFsYm5SekxqQTJCZ2dyQmdFRkJRY0NBUllxYUhSMGNEb3ZMM2QzZHk1aGNIQnNaUzVqYjIwdlkyVnlkR2xtYVdOaGRHVmhkWFJvYjNKcGRIa3ZNRFFHQTFVZEh3UXRNQ3N3S2FBbm9DV0dJMmgwZEhBNkx5OWpjbXd1WVhCd2JHVXVZMjl0TDJGd2NHeGxZV2xqWVRNdVkzSnNNQjBHQTFVZERnUVdCQlNVVjl0djFYU0Job21KZGk5K1Y0VUg1NXRZSkRBT0JnTlZIUThCQWY4RUJBTUNCNEF3RHdZSktvWklodmRqWkFZZEJBSUZBREFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBdmdsWEgrY2VIbk5iVmVXdnJMVEhMK3RFWHpBWVVpTEhKUkFDdGg2OWIxVUNJUURSaXpVS1hkYmRickYwWURXeEhyTE9oOCtqNXE5c3ZZT0FpUTNJTE4ycVl6Q0NBdTR3Z2dKMW9BTUNBUUlDQ0VsdEw3ODZtTnFYTUFvR0NDcUdTTTQ5QkFNQ01HY3hHekFaQmdOVkJBTU1Fa0Z3Y0d4bElGSnZiM1FnUTBFZ0xTQkhNekVtTUNRR0ExVUVDd3dkUVhCd2JHVWdRMlZ5ZEdsbWFXTmhkR2x2YmlCQmRYUm9iM0pwZEhreEV6QVJCZ05WQkFvTUNrRndjR3hsSUVsdVl5NHhDekFKQmdOVkJBWVRBbFZUTUI0WERURTBNRFV3TmpJek5EWXpNRm9YRFRJNU1EVXdOakl6TkRZek1Gb3dlakV1TUN3R0ExVUVBd3dsUVhCd2JHVWdRWEJ3YkdsallYUnBiMjRnU1c1MFpXZHlZWFJwYjI0Z1EwRWdMU0JITXpFbU1DUUdBMVVFQ3d3ZFFYQndiR1VnUTJWeWRHbG1hV05oZEdsdmJpQkJkWFJvYjNKcGRIa3hFekFSQmdOVkJBb01Da0Z3Y0d4bElFbHVZeTR4Q3pBSkJnTlZCQVlUQWxWVE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRThCY1JoQm5YWklYVkdsNGxnUWQyNklDaTc5NTdyazNnamZ4TGsrRXpWdFZtV3pXdUl0Q1hkZzBpVG51NkNQMTJGODZJeTNhN1puQyt5T2dwaFA5VVJhT0I5ekNCOURCR0JnZ3JCZ0VGQlFjQkFRUTZNRGd3TmdZSUt3WUJCUVVITUFHR0ttaDBkSEE2THk5dlkzTndMbUZ3Y0d4bExtTnZiUzl2WTNOd01EUXRZWEJ3YkdWeWIyOTBZMkZuTXpBZEJnTlZIUTRFRmdRVUkvSkp4RStUNU84bjVzVDJLR3cvb3J2OUxrc3dEd1lEVlIwVEFRSC9CQVV3QXdFQi96QWZCZ05WSFNNRUdEQVdnQlM3c042aFdET0ltcVNLbWQ2K3ZldXYyc3NrcXpBM0JnTlZIUjhFTURBdU1DeWdLcUFvaGlab2RIUndPaTh2WTNKc0xtRndjR3hsTG1OdmJTOWhjSEJzWlhKdmIzUmpZV2N6TG1OeWJEQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0VBWUtLb1pJaHZkalpBWUNEZ1FDQlFBd0NnWUlLb1pJemowRUF3SURad0F3WkFJd09zOXlnMUVXbWJHRyt6WERWc3Bpdi9RWDdka1BkVTJpanI3eG5JRmVRcmVKK0pqM20xbWZtTlZCRFkrZDZjTCtBakF5TGRWRUliQ2pCWGRzWGZNNE81Qm4vUmQ4TENGdGxrL0djbW1DRW05VStIcDlHNW5MbXdtSklXRUdtUThKa2gwQUFER0NBWWd3Z2dHRUFnRUJNSUdHTUhveExqQXNCZ05WQkFNTUpVRndjR3hsSUVGd2NHeHBZMkYwYVc5dUlFbHVkR1ZuY21GMGFXOXVJRU5CSUMwZ1J6TXhKakFrQmdOVkJBc01IVUZ3Y0d4bElFTmxjblJwWm1sallYUnBiMjRnUVhWMGFHOXlhWFI1TVJNd0VRWURWUVFLREFwQmNIQnNaU0JKYm1NdU1Rc3dDUVlEVlFRR0V3SlZVd0lJVERCQlNWR2RWRFl3Q3dZSllJWklBV1VEQkFJQm9JR1RNQmdHQ1NxR1NJYjNEUUVKQXpFTEJna3Foa2lHOXcwQkJ3RXdIQVlKS29aSWh2Y05BUWtGTVE4WERUSXlNVEV3TnpFeE1qWXpObG93S0FZSktvWklodmNOQVFrME1Sc3dHVEFMQmdsZ2hrZ0JaUU1FQWdHaENnWUlLb1pJemowRUF3SXdMd1lKS29aSWh2Y05BUWtFTVNJRUlITDBiWkczRk51NHhsZ0tCcW9hVGh5dm1DWnJTeXY5UG51NjlZcUFrK2dVTUFvR0NDcUdTTTQ5QkFNQ0JFY3dSUUlnSnpFNG1adjNYc003M01PZHJFcU9EWjN0cXQ0ZE9wdlFhc0YyRGpyOVFiNENJUUMzT2hGczJmMVM0ZndhRThuNDNGVlRTZWo0NDl4YUpiZElMbnFHQVlMcXFRQUFBQUFBQUE9PSIsImhlYWRlciI6eyJlcGhlbWVyYWxQdWJsaWNLZXkiOiJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVpbXhhUmR4dGJaeFNVUEtYSVh2NG5RS3lSTHdUQjdHcUN5UjhDc2hKTGhraTlJUXErTVNsaHArOXlqQURvcVR1a0R6VkVXblBabUNnTnBDUTNUZ3ZyUT09IiwicHVibGljS2V5SGFzaCI6ImI2UXJSemt6NnJzRGdWV2hTdzh0ZkdGRHprcHdtOTV4RUpzYnFGSWJVcDQ9IiwidHJhbnNhY3Rpb25JZCI6IjY1ODYwNjA4Y2YwZDAxYzgzNTUyNmIwOGZjOTNmNTE1M2Y0NDdlZDgwZDU3MjhkMjNjMDMwNzhjZmIxMWIxMjUifX0sInBheW1lbnRNZXRob2QiOnsiZGlzcGxheU5hbWUiOiJNYXN0ZXJDYXJkIDA4MzkiLCJuZXR3b3JrIjoiTWFzdGVyQ2FyZCIsInR5cGUiOiJjcmVkaXQifSwidHJhbnNhY3Rpb25JZGVudGlmaWVyIjoiNjU4NjA2MDhDRjBEMDFDODM1NTI2QjA4RkM5M0Y1MTUzRjQ0N0VEODBENTcyOEQyM0MwMzA3OENGQjExQjEyNSJ9"
  },
  "processing_options" : [ "RISKCHECK" ],
  "amount_total" : {
    "amount" : 1000,
    "currency" : "EUR"
  },
  "tds_20_data" : {
    "communication_data" : {
      "method_notification_url" : "https://example.com/method_notification_url",
      "cres_notification_url" : "https://example.com/cres_notification_url"
    }
  }
}
Responses
Code Type Content-Type Description

200

Headless3DSecureResponse

application/json

Information about the outcome of the transaction.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

Response examples Transaction has been processed, no further actions required

Status code:

200

Return type:

Headless3DSecureResponse

{
  "outcome" : "PROCESSED",
  "processed" : {
    "amount_total" : {
      "amount" : 100,
      "currency" : "EUR"
    },
    "event_id" : "id1628241502404",
    "kind" : "CREDITCARD_3DS20",
    "tx_action" : "preauthorization",
    "tx_id" : "fCDszGoUje8piOUC2tVVU9",
    "back_rc" : "00",
    "transaction_info" : {
      "type" : "creditcard",
      "transaction_creditcard_info" : {
        "credit_card" : {
          "number" : "401200******7778",
          "expiry_date" : {
            "year" : 2034,
            "month" : 12
          },
          "cardholder" : "Card Holder"
        }
      }
    },
    "rc" : "0",
    "message" : "Transaction successful."
  },
  "rc" : "0",
  "message" : "Transaction successful."
}
Proceed with 3-D Secure method flow

Status code:

200

Return type:

Headless3DSecureResponse

{
  "outcome" : "METHOD_REQUIRED",
  "method_required" : {
    "method_request" : "ew0KICAiY29udGVudCIgOiAiZHVtbXkiDQp9",
  },
  "rc" : "1548",
  "message" : "Transaction is pending."
}
Proceed with 3-D Secure challenge flow

Status code:

200

Return type:

Headless3DSecureResponse

{
  "outcome" : "CHALLENGE_REQUIRED",
  "challenge_required" : {
    "acs_url" : "https://acs.example.com/acs/challenge/ew0KICAiZHVtbXkiIDogImR1bW15Ig0KfQ==",
    "creq" : "ew0KICAiZHVtbXkiIDogImNvbnRlbnQiDQp9"
  },
  "rc" : "1548",
  "message" : "Transaction is pending."
}

7.2.3. eScore

The eScore API contains endpoints to minimize non-payment risk.

POST /escore/event/{event_id}/addresscheck

Performs an Address Verification (ES0013).

Two scenarios of use are possible:

  1. The address details of a customer are verified with the address verification. If an address is supplied wrongly the customer is requested to correct it. Thereafter the address is verified again. After a successful address verification further information has to be collated via credit assessment.

  2. The transaction “integrated address verification, credit assessment and scoring” is carried out.

The address verification may only be carried out in connection with the credit assessment. Using the address verification on its own is not permissible for contractual reasons.

With the address verification the supplied address (name, town of residence, post code and street) is verified. This means that as a rule the address verification is related to the person.

The basis for the query is the post directory of the Deutsche Post Direkt GmbH (German mail) with roughly 95 m validated consumer addresses. The correction function is differentiated according to the individual address components and can provide evidence for their coherence and correct wrong details respectively.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

EScoreRequest

application/json

Request example Sample eScore address check

Request type: EScoreRequest

{
  "reason" : "ABK",
  "billing_address" : {
    "title" : "Mrs",
    "first_name" : "KATJA",
    "last_name" : "KOPLIN",
    "postal_code" : "10407",
    "city" : "BERLIN",
    "country" : "DE",
    "extensions" : {
      "alternative_address_data" : {
        "street" : "DANZIGER STR.",
        "street_number" : "67"
      }
    }
  },
  "basket" : {
    "basket_id" : "basketId1641228398709"
  },
  "customer_information" : {
    "customer_id" : "5x14120ffrG",
    "date_of_birth" : "1979-10-27"
  }
}
Responses
Code Type Content-Type Description

200

EScoreAddresscheckResponse

application/json

If the query could be carried out you receive the return value rc=0 as response independent from the outcome of the address verification. The outcome of the address verification is returned in the field address_note. Where applicable, the address fields of the response include the address components, which could be corrected. If possible you will receive the freight routing code for the corrected address in the field freight_routing_code.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

Response example Sample eScore address verification response

Status code:

200

Return type:

EScoreAddresscheckResponse

{
  "address_note" : "PPB",
  "freight_routing_code" : "10435003067",
  "rc" : "0",
  "message" : "Transaction successful.",
  "event_id" : "9184bf11-75ed-4a11-b9e6-557c11bd3853",
  "tx_id" : "2yYJ5nYkDIGuTdjWgCkJoK",
  "action" : "addresscheck",
  "basket_id" : "basketId1641293516625",
  "scoring_rc" : "G",
  "reason" : "ABK",
  "billing_address" : {
    "title" : "Mrs",
    "first_name" : "KATJA",
    "last_name" : "KOPLIN",
    "date_of_birth" : "1979-10-27",
    "postal_code" : "10407",
    "city" : "BERLIN",
    "country" : "DE",
    "extensions" : {
      "alternative_address_data" : {
        "street" : "DANZIGER STR.",
        "street_number" : "67"
      }
    }
  }
}
POST /escore/event/{event_id}/creditassessment

Performs a Credit Assessment (ES0012).

The credit assessment provides information about the customers' negative features. From the result the possible general payment behaviour and the creditworthiness of a purchaser may be deduced.

Upon entering the customer details during the order process it is verified in the background whether there is a negative feature related to this person resulting from extra judicial or judicial collection proceedings, enforcement by writ or affidavit.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

EScoreRequest

application/json

Request example Sample eScore credit assessment

Request type: EScoreRequest

{
  "reason" : "ABK",
  "billing_address" : {
    "title" : "Mrs",
    "first_name" : "KATJA",
    "last_name" : "KOPLIN",
    "postal_code" : "10407",
    "city" : "BERLIN",
    "country" : "DE",
    "extensions" : {
      "alternative_address_data" : {
        "street" : "DANZIGER STR.",
        "street_number" : "67"
      }
    }
  },
  "basket" : {
    "basket_id" : "basketId1641228398709"
  },
  "customer_information" : {
    "customer_id" : "5x14120ffrG",
    "date_of_birth" : "1979-10-27"
  }
}
Responses
Code Type Content-Type Description

200

EScoreCreditassessmentResponse

application/json

Depending on the negative features found you will receive in the field scoring_rc a classification of the data record following the traffic light system 'green', 'yellow/amber' and 'red' (This classification only takes place if the address was rectifiable postally, otherwise you will receive the return value rc=1538). The negative features are divided into the categories 'soft', 'medium' and 'hard'.

The allocation of the negative features to the traffic light values is as follows:

  • G: green - There are no negative features.

  • Y: yellow/amber - There is a soft negative feature.

  • R: red - There are more than one soft negative features or at least one medium or hard negative feature.

The field score provides you with a more subtly graduated result of the credit assessment.

In addition to the traffic light values and score all negative features are returned, which were relevant for the generation of the traffic light value.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

Response example Sample eScore credit assessment response

Status code:

200

Return type:

EScoreCreditassessmentResponse

{
  "customer_id" : "5x14120ffrG",
  "score" : "100",
  "negative_criteria" : [ {
    "kind" : "LP",
    "date" : "2021-01-08",
    "doc_reference" : "8IN303"
  }, {
    "kind" : "VB",
    "date" : "2021-12-07",
    "doc_reference" : "8IN306"
  } ],
  "rc" : "0",
  "message" : "Transaction successful.",
  "event_id" : "9dd00d1d-7888-4679-af78-7dc95eef052d",
  "tx_id" : "fC1DpbpWZeELL6tzmoHcKL",
  "action" : "creditassessment",
  "basket_id" : "basketId1641293519408",
  "scoring_rc" : "R",
  "reason" : "ABK",
  "billing_address" : {
    "title" : "MRS",
    "first_name" : "KATJA",
    "last_name" : "KOPLIN",
    "date_of_birth" : "1979-10-27",
    "postal_code" : "10407",
    "city" : "BERLIN",
    "country" : "DE",
    "extensions" : {
      "alternative_address_data" : {
        "street" : "DANZIGER STR.",
        "street_number" : "67"
      }
    }
  }
}
POST /escore/event/{event_id}/bankaccount

Performs an RPP Check (ES0024).

This service checks bank details for plausibility and current return debit notes.

The “return debit note prevention pool” (RPP) is a data pool where bank details are saved for which return debit notes are currently known. The pool primarily serves the prevention of cash loss for direct debits.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

EScoreRPPRequest

application/json

Request example Sample eScore RPP request

Request type: EScoreRPPRequest

{
  "bank_account" : {
    "bic" : "PZHSDE66XXX",
    "iban" : "DE84666500855073321010"
  },
  "basket" : {
    "basket_id" : "basketId1641228398709"
  },
  "customer_information" : {
    "customer_id" : "5x14120ffrG",
    "date_of_birth" : "1979-10-27"
  }
}
Responses
Code Type Content-Type Description

200

EScoreRPPResponse

application/json

In addition to information on return debit notes the following data are available:

  • data of stolen or lost EC cards (for example from the KUNO database)

  • data about publicly known bank details (NCA = non consumer account)

  • customer specific negative and positive lists

No personal data are saved in the RPP. This means it is not known who is the account holder.

The return debit note service is currently available for Germany.

The bank account details in the response possibly include corrections or additional information, for example IBAN and BIC when you submitted account number and bank code in the request.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

Response example Sample eScore RPP check response

Status code:

200

Return type:

EScoreRPPResponse

{
  "bank_account" : {
    "bic" : "PZHSDE66XXX",
    "iban" : "DE84666500855073321010",
    "bank_name" : "Sparkasse Pforzheim Calw"
  },
  "bank_account_validation_result" : "00",
  "bank_account_validation_message" : "The bank account is valid.",
  "rpp_match" : "0",
  "rc" : "0",
  "message" : "Transaction successful.",
  "event_id" : "abf1ccf6-a9d6-4904-99d3-cadb6521ee90",
  "tx_id" : "np5yYhvMr2dZQqWNub0BGj",
  "action" : "bankaccount",
  "basket_id" : "basketId1641293501021",
  "scoring_rc" : "G"
}
POST /escore/event/{event_id}/scoring

Performs an integrated Address Verification, Credit Assessment, and Scoring (ES0015).

This kind of transaction consists of address verification, credit assessment, and scoring.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

EScoreRequest

application/json

Request example Sample eScore scoring request

Request type: EScoreRequest

{
  "reason" : "ABK",
  "billing_address" : {
    "title" : "Mrs",
    "first_name" : "KATJA",
    "last_name" : "KOPLIN",
    "postal_code" : "10407",
    "city" : "BERLIN",
    "country" : "DE",
    "extensions" : {
      "alternative_address_data" : {
        "street" : "DANZIGER STR.",
        "street_number" : "67"
      }
    }
  },
  "basket" : {
    "basket_id" : "basketId1641228398709"
  },
  "customer_information" : {
    "customer_id" : "5x14120ffrG",
    "date_of_birth" : "1979-10-27"
  }
}
Responses
Code Type Content-Type Description

200

EScoreScoringResponse

application/json

If there are no negative entries for a person’s given name the probability of non-payments may be determined in a further step with help of the INFORMA score. The INFORMA score collates information from various socio-demographic parameters, such as details about the social structure of the town of residence. According to the risk assessment a recommendation for proceeding is provided. This value is included as essential component in the parameter score.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

Response example Sample eScore scoring response

Status code:

200

Return type:

EScoreScoringResponse

{
  "customer_id" : "5x14120ffrG",
  "address_note" : "PPB",
  "freight_routing_code" : "10435003067",
  "score" : "980",
  "informa_score_value" : "670",
  "rc" : "0",
  "message" : "Transaction successful.",
  "event_id" : "f66400e4-40f2-4fdf-8229-d6e7dca3bf4d",
  "tx_id" : "pXKc6vH91ASi0QrYfH7Ch7",
  "action" : "scoring",
  "basket_id" : "basketId1641293520741",
  "scoring_rc" : "G",
  "reason" : "ABK",
  "billing_address" : {
    "title" : "MRS",
    "first_name" : "KATJA",
    "last_name" : "KOPLIN",
    "date_of_birth" : "1979-10-27",
    "postal_code" : "10407",
    "city" : "BERLIN",
    "country" : "DE",
    "extensions" : {
      "alternative_address_data" : {
        "street" : "DANZIGER STR.",
        "street_number" : "67"
      }
    }
  }
}

7.2.4. Forms

The Forms API contains endpoints to initialize a form service interaction. It allows the merchant to redirect the customer to a customizable frontend page where the customer may enter sensitive payment data. After receipt of the necessary information, the frontend will carry out the transaction and redirect the customer back to the merchant’s page.

POST /form/alias/bankaccount

Creates a form to enter bank account data and create an alias for it.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

FormRegisterAliasRequest

application/json

Request example Sample registration of an alias for a bank account

Request type: FormRegisterAliasRequest

{
  "alias" : "AL1234_XY",
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  },
  "callback" : {
    "notify_url" : "http://www.example.com/notify"
  }
}
Responses
Code Type Content-Type Description

200

FormNoTxResponse

application/json

Values required to initialize a form interaction. No transaction is created.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /form/alias/creditcard

Creates a form to enter credit card data and create an alias for it.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

FormRegisterAliasRequest

application/json

Request example Sample registration of an alias for a credit card

Request type: FormRegisterAliasRequest

{
  "alias" : "AL1234_XY",
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  },
  "callback" : {
    "notify_url" : "http://www.example.com/notify"
  }
}
Responses
Code Type Content-Type Description

200

FormNoTxResponse

application/json

Values required to initialize a form interaction. No transaction is created.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /form/event/{event_id}/checkout/{tx_action}

Creates a redirect to a checkout page where the customer may choose one of the offered payment methods (for instance credit card or Request to Pay) and then continue the payment.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

tx_action

string

  • required

  • enum

    • authorization

    • preauthorization

The action of an initial transaction.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

FormCheckoutRequest

application/json

Request examples Sample initialization for a checkout selection with SDD and Request to Pay

Request type: FormCheckoutRequest

{
  "checkout_page_configuration" : {
    "direct_debit_data" : {
      "mandate" : {
        "reference" : "MDT1620213727383XY",
        "signed_on" : "2025-08-12",
        "mandate_sequence_type" : "RECURRING"
      }
    },
    "request_to_pay_data" : {
      "customer_id" : "testCustrID"
    },
    "checkout_entry_sorting_order" : [ "DIRECTDEBIT", "REQUEST_TO_PAY" ]
  },
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  },
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  },
  "callback" : {
    "notify_url" : "http://www.example.com/notify"
  }
}
Sample initialization for a checkout selection with all payment methods (English)

Request type: FormCheckoutRequest

{
  "amount_total" : {
    "amount" : 1300,
    "currency" : "EUR"
  },
  "basket" : {
    "basket_id" : "basketId1643192827792",
    "shipping_costs" : {
      "amount" : 100,
      "currency" : "EUR"
    },
    "basket_type" : "PHYSICAL",
    "basket_items" : [ {
      "name" : "PhysicalBasketItem",
      "description" : "A basket item",
      "reference" : "basketItem-reference1",
      "quantity" : {
        "quantity_amount" : 1,
        "quantity_unit" : "pcs"
      },
      "unit_price" : {
        "net" : 1008,
        "gross" : 1200,
        "currency" : "EUR",
        "tax" : 1900
      }
    } ]
  },
  "billing_address" : {
    "first_name" : "Heinz",
    "last_name" : "Mueller",
    "email" : "heinz@email.com",
    "address_line_1" : "Rohrteichstr 18",
    "postal_code" : "04347",
    "city" : "Leipzig",
    "country" : "DE"
  },
  "shipping_address" : {
    "first_name" : "Heinz",
    "last_name" : "Mueller",
    "email" : "heinz@email.com",
    "address_line_1" : "Rohrteichstr 18",
    "postal_code" : "04347",
    "city" : "Leipzig",
    "country" : "DE"
  },
  "callback" : {
    "notify_url" : "http://www.example.com/notify"
  },
  "checkout_page_configuration" : {
    "checkout_entry_sorting_order" : [ "DIRECTDEBIT", "CREDITCARD", "GOOGLEPAY", "REQUEST_TO_PAY", "PAYPAL", "KLARNA", "WECHATPAY", "P24", "CLICKTOPAY", "APPLEPAY", "IDEAL", "WERO" ],
    "apple_pay_credit_card_data" : { },
    "wero_data" : {
      "authorization_reference" : "user-123456-order-123456"
    },
    "click_to_pay_credit_card_data" : { },
    "credit_card_data" : {
      "tds_20_data" : {
        "customer_data" : {
          "billing_address" : {
            "city" : "Leipzig",
            "country" : "DE",
            "postal_code" : "04347",
            "street" : "Rohrteichstr 18"
          },
          "home_phone_number" : {
            "country" : "+49",
            "regional" : "2630864618"
          },
          "cardholder_email" : "heinz@email.com"
        }
      }
    },
    "google_pay_credit_card_data" : {
      "googlepay_merchant_id" : "BCR2DN4T7D65Z6BX",
      "googlepay_domain_name" : "www.example.com",
      "googlepay_country_code" : "DE"
    },
    "direct_debit_data" : {
      "mandate" : {
        "reference" : "MDT1643192827814",
        "signed_on" : "2020-12-30"
      }
    },
    "request_to_pay_data" : {
      "processing_options" : [ "INSTANT" ]
    },
    "paypal_data" : { },
    "wechatpay_data" : { },
    "p24_data" : { },
    "klarna_data" : { },
    "ideal_data" : {
      "description" : "description"
    }
  },
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  },
  "form_data" : {
    "locale" : "en"
  }
}
Sample initialization for a checkout selection with all payment methods (German)

Request type: FormCheckoutRequest

{
  "amount_total" : {
    "amount" : 1300,
    "currency" : "EUR"
  },
  "basket" : {
    "basket_id" : "basketId1643192827792",
    "shipping_costs" : {
      "amount" : 100,
      "currency" : "EUR"
    },
    "basket_type" : "PHYSICAL",
    "basket_items" : [ {
      "name" : "PhysicalBasketItem",
      "description" : "A basket item",
      "reference" : "basketItem-reference1",
      "quantity" : {
        "quantity_amount" : 1,
        "quantity_unit" : "pcs"
      },
      "unit_price" : {
        "net" : 1008,
        "gross" : 1200,
        "currency" : "EUR",
        "tax" : 1900
      }
    } ]
  },
  "billing_address" : {
    "first_name" : "Heinz",
    "last_name" : "Mueller",
    "email" : "heinz@email.com",
    "address_line_1" : "Rohrteichstr 18",
    "postal_code" : "04347",
    "city" : "Leipzig",
    "country" : "DE"
  },
  "shipping_address" : {
    "first_name" : "Heinz",
    "last_name" : "Mueller",
    "email" : "heinz@email.com",
    "address_line_1" : "Rohrteichstr 18",
    "postal_code" : "04347",
    "city" : "Leipzig",
    "country" : "DE"
  },
  "callback" : {
    "notify_url" : "http://www.example.com/notify"
  },
  "checkout_page_configuration" : {
    "checkout_entry_sorting_order" : [ "DIRECTDEBIT", "CREDITCARD", "GOOGLEPAY", "REQUEST_TO_PAY", "PAYPAL", "KLARNA", "WECHATPAY", "P24", "CLICKTOPAY", "APPLEPAY", "IDEAL", "WERO" ],
    "credit_card_data" : {
      "tds_20_data" : {
        "customer_data" : {
          "billing_address" : {
            "city" : "Leipzig",
            "country" : "DE",
            "postal_code" : "04347",
            "street" : "Rohrteichstr 18"
          },
          "home_phone_number" : {
            "country" : "+49",
            "regional" : "2630864618"
          },
          "cardholder_email" : "heinz@email.com"
        }
      }
    },
    "click_to_pay_credit_card_data" : { },
    "apple_pay_credit_card_data" : { },
    "wero_data" : {
      "authorization_reference" : "user-123456-order-123456"
    },
    "google_pay_credit_card_data" : {
      "googlepay_merchant_id" : "BCR2DN4T7D65Z6BX",
      "googlepay_domain_name" : "www.example.com",
      "googlepay_country_code" : "DE"
    },
    "direct_debit_data" : {
      "mandate" : {
        "reference" : "MDT1643192827814",
        "signed_on" : "2020-12-30"
      }
    },
    "request_to_pay_data" : {
      "processing_options" : [ "INSTANT" ]
    },
    "paypal_data" : { },
    "wechatpay_data" : { },
    "p24_data" : { },
    "klarna_data" : { },
    "ideal_data" : {
      "description" : "description"
    }
  },
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  },
  "form_data" : {
    "locale" : "de"
  }
}
Sample initialization for a checkout selection with CHF and TWINT

Request type: FormCheckoutRequest

{
  "amount_total" : {
    "amount" : 1300,
    "currency" : "CHF"
  },
  "basket" : {
    "basket_id" : "basketId1643192827792",
    "shipping_costs" : {
      "amount" : 100,
      "currency" : "CHF"
    },
    "basket_type" : "PHYSICAL",
    "basket_items" : [ {
      "name" : "PhysicalBasketItem",
      "description" : "A basket item",
      "reference" : "basketItem-reference1",
      "quantity" : {
        "quantity_amount" : 1,
        "quantity_unit" : "pcs"
      },
      "unit_price" : {
        "net" : 1008,
        "gross" : 1200,
        "currency" : "CHF",
        "tax" : 1900
      }
    } ]
  },
  "billing_address" : {
    "first_name" : "Heinz",
    "last_name" : "Mueller",
    "email" : "heinz@email.com",
    "address_line_1" : "Rohrteichstr 18",
    "postal_code" : "04347",
    "city" : "Leipzig",
    "country" : "DE"
  },
  "shipping_address" : {
    "first_name" : "Heinz",
    "last_name" : "Mueller",
    "email" : "heinz@email.com",
    "address_line_1" : "Rohrteichstr 18",
    "postal_code" : "04347",
    "city" : "Leipzig",
    "country" : "DE"
  },
  "callback" : {
    "notify_url" : "http://www.example.com/notify"
  },
  "checkout_page_configuration" : {
    "checkout_entry_sorting_order" : [ "CREDITCARD", "GOOGLEPAY", "REQUEST_TO_PAY", "PAYPAL", "KLARNA", "WECHATPAY", "TWINT", "APPLEPAY", "IDEAL" ],
    "credit_card_data" : {
      "tds_20_data" : {
        "customer_data" : {
          "billing_address" : {
            "city" : "Leipzig",
            "country" : "DE",
            "postal_code" : "04347",
            "street" : "Rohrteichstr 18"
          },
          "home_phone_number" : {
            "country" : "+49",
            "regional" : "2630864618"
          },
          "cardholder_email" : "heinz@email.com"
        }
      }
    },
    "apple_pay_credit_card_data" : { },
    "google_pay_credit_card_data" : {
      "googlepay_merchant_id" : "BCR2DN4T7D65Z6BX",
      "googlepay_domain_name" : "www.example.com",
      "googlepay_country_code" : "DE"
    },
    "request_to_pay_data" : {
      "processing_options" : [ "INSTANT" ]
    },
    "paypal_data" : { },
    "wechatpay_data" : { },
    "twint_data" : { },
    "klarna_data" : { },
    "ideal_data" : {
      "description" : "description"
    }
  },
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  },
  "form_data" : {
    "locale" : "de"
  }
}
Responses
Code Type Content-Type Description

200

FormResponse

application/json

Values required to initialize a form interaction, a return code and a message. In case of a known business or persistence error, only error code and message are provided.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /form/event/{event_id}/creditcard/{tx_action}

Creates a form to enter credit card data and then proceed with the transaction (pre-authorization, authorization, or verify MOP).

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

tx_action

string

  • required

  • enum

    • authorization

    • preauthorization

    • verify-mop

The action of an initial transaction.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

FormCreditCardRequest

application/json

Request example Sample initialization of a credit card transaction

Request type: FormCreditCardRequest

{
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  },
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  },
  "callback" : {
    "notify_url" : "http://www.example.com/notify"
  },
  "billing_address" : {
    "first_name" : "Heinz",
    "last_name" : "Müller",
    "email" : "heinz@email.com",
    "address_line_1" : "Rohrteichstr 18",
    "address_line_2" : "EG R. 184",
    "address_line_3" : "Wohnhaus",
    "state" : "SN",
    "postal_code" : "04347",
    "city" : "Leipzig",
    "country" : "DE"
  },
  "credit_card_data" : {
    "tds_20_data" : {
      "customer_data" : {
        "billing_address" : {
          "city" : "Leipzig",
          "country" : "DE",
          "postal_code" : "04347",
          "street" : "Rohrteichstr 18"
        },
        "home_phone_number" : {
          "country" : "+49",
          "regional" : "2630864618"
        },
        "cardholder_email" : "heinz@email.com"
      }
    }
  }
}
Responses
Code Type Content-Type Description

200

FormResponse

application/json

Values required to initialize a form interaction, a return code and a message. In case of a known business or persistence error, only error code and message are provided.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /form/event/{event_id}/directdebit/{tx_action}

Creates a form to enter bank account data and then proceed with an SDD transaction (pre-authorization, authorization, or verify MOP).

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

tx_action

string

  • required

  • enum

    • authorization

    • preauthorization

    • verify-mop

The action of an initial transaction.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

FormDirectDebitRequest

application/json

Request example Minimal direct debit initialization request

Request type: FormDirectDebitRequest

{
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  },
  "direct_debit_data" : {
    "mandate" : {
      "reference" : "MDT1620213727383XY",
      "signed_on" : "2025-08-12"
    }
  },
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  },
  "callback" : {
    "notify_url" : "http://www.example.com/notify"
  }
}
Responses
Code Type Content-Type Description

200

FormResponse

application/json

Values required to initialize a form interaction, a return code and a message. In case of a known business or persistence error, only error code and message are provided.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /form/event/{event_id}/ideal

Initializes an iDEAL transaction (authorization).

Start a new iDEAL transaction sequence. Customers should be redirected to the returned URL.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

FormIdealRequest

application/json

Request example Minimal iDEAL initialization request.

Request type: FormIdealRequest

{
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  },
  "basket" : {
    "basket_id" : "basketId1639066152436"
  },
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  },
  "ideal_data" : {
    "description" : "Purchase at example shop"
  },
  "callback" : {
    "notify_url" : "http://www.example.com/notify"
  }
}
Responses
Code Type Content-Type Description

200

FormResponse

application/json

A return code and a message, accompanied by an appropriate redirect URL. In case of a known business or persistence error, only error code and message are provided.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /form/event/{event_id}/klarna/{tx_action}

Initializes a Klarna transaction (pre-authorization or authorization).

Start a new Klarna transaction sequence. Customers should be redirected to the returned URL.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

tx_action

string

  • required

  • enum

    • authorization

    • preauthorization

    • verify-mop

The action of an initial transaction.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

FormKlarnaRequest

application/json

Request examples Minimal Klarna initialization request

Request type: FormKlarnaRequest

{
  "amount_total" : {
    "amount" : 59500,
    "currency" : "EUR"
  },
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  },
  "callback" : {
    "notify_url" : "http://www.example.com/notify"
  },
  "basket" : {
    "basket_items" : [ {
      "name" : "A fine shirt",
      "quantity" : {
        "quantity_amount" : 5,
        "quantity_unit" : "pcs"
      },
      "unit_price" : {
        "net" : 10000,
        "gross" : 11900,
        "currency" : "EUR",
        "tax" : 1900
      }
    } ]
  }
}
Sample Klarna initialization request

Request type: FormKlarnaRequest

{
  "shipping_address" : {
    "title" : "Ms",
    "first_name" : "Jane",
    "last_name" : "Doe",
    "email" : "test_jane@gmail.com",
    "address_line_1" : "Main Street 123",
    "address_line_2" : "Building A",
    "address_line_3" : "Apartment 12",
    "postal_code" : "80469",
    "city" : "Munich",
    "state" : "BY",
    "country" : "DE",
    "extensions" : {
      "alternative_address_data" : {
        "street" : "Main Street",
        "street_number" : "123a"
      }
    }
  },
  "billing_address" : {
    "title" : "Ms",
    "first_name" : "Jane",
    "last_name" : "Doe",
    "email" : "test_jane@gmail.com",
    "address_line_1" : "Main Street 123",
    "address_line_2" : "Building A",
    "address_line_3" : "Apartment 12",
    "postal_code" : "80469",
    "city" : "Munich",
    "state" : "BY",
    "country" : "DE"
  },
  "basket" : {
    "basket_id" : "basket123456",
    "invoice_id" : "RE123345",
    "soft_descriptor" : "800-123-1234",
    "shipping_costs" : {
      "amount" : 200,
      "currency" : "EUR"
    },
    "basket_type" : "PHYSICAL",
    "basket_items" : [ {
      "name" : "A fine shirt",
      "description" : "BI123456",
      "reference" : "UGG-BB-PUR-06",
      "quantity" : {
        "quantity_amount" : 5,
        "quantity_unit" : "pcs"
      },
      "unit_price" : {
        "net" : 10000,
        "gross" : 11900,
        "currency" : "EUR",
        "tax" : 1900
      },
      "item_discount" : {
        "net" : 0,
        "gross" : 0,
        "currency" : "EUR",
        "tax" : 1900
      },
      "extensions" : {
        "klarna_data" : {
          "image_url" : "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Camisade_pu%C3%B1o_doble.jpg/256px-Camisade_pu%C3%B1o_doble.jpg"
        }
      }
    } ]
  },
  "customer_information" : {
    "customer_id" : "C1234-AX",
    "date_of_birth" : "1975-06-30",
    "gender" : "FEMALE",
    "title" : "Ms",
    "personal_identifications" : [ {
      "type" : "PASSPORT",
      "id" : "T220001297",
      "issued_by" : "DE"
    } ]
  },
  "form_data" : {
    "locale" : "en"
  },
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  },
  "callback" : {
    "notify_url" : "http://www.example.com/notify"
  },
  "amount_total" : {
    "amount" : 59700,
    "currency" : "EUR"
  },
  "merchant_information" : {
    "merchant_data_1" : "merchantData1",
    "merchant_data_2" : "merchantData2",
    "merchant_data_3" : "merchantData3"
  }
}
Responses
Code Type Content-Type Description

200

FormResponse

application/json

A return code and a message, accompanied by an appropriate redirect URL. In case of a known business or persistence error, only error code and message are provided.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /form/event/{event_id}/p24

Initializes a P24 transaction (authorization).

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

FormP24Request

application/json

Request example Minimal P24 initialization request

Request type: FormP24Request

{
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  },
  "billing_address" : {
    "first_name" : "Heinz",
    "last_name" : "Müller",
    "email" : "heinz@email.com",
    "country" : "DE"
  },
  "callback" : {
    "notify_url" : "http://www.example.com/notify"
  },
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  }
}
Responses
Code Type Content-Type Description

200

FormResponse

application/json

Values required to initialize a form interaction, a return code and a message. In case of a known business or persistence error, only error code and message are provided.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /form/event/{event_id}/psd2/authorization

Initializes a PSD2 payment transaction (authorization).

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

FormPSD2AuthorizationRequest

application/json

Request example Sample initialization PSD2 payment
{
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  },
  "callback" : {
    "notify_url" : "http://www.example.com/notify"
  },
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  },
  "form_data" : {
    "locale" : "en"
  },
  "psd2_pis_data" : {
    "processing_options" : [ "INSTANT_IF_POSSIBLE" ]
  }
}
Responses
Code Type Content-Type Description

200

FormResponse

application/json

Values required to initialize a form interaction, a return code and a message. In case of a known business or persistence error, only error code and message are provided.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /form/event/{event_id}/psd2/reversal

Initializes a cancellation (reversal) of a PSD2 future dated payment.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

FormPSD2ReversalRequest

application/json

Request example Sample initialization of a PSD2 reversal

Request type: FormPSD2ReversalRequest

{
  "callback" : {
    "notify_url" : "http://www.example.com/notify"
  },
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  }
}
Responses
Code Type Content-Type Description

200

FormPSD2ReversalResponse

application/json

Values required to initialize a form interaction, a return code and a message. In case of a known business or persistence error, only error code and message are provided.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

Response examples The transaction has been processed, no further action is required

Status code:

200

Return type:

FormPSD2ReversalResponse

{
  "outcome" : "PROCESSED",
  "processed" : {
    "amount_total" : {
      "amount" : 100,
      "currency" : "EUR"
    },
    "tx_action" : "reversal",
    "transaction_info" : {
      "type" : "bankaccount",
      "transaction_bankaccount_info" : {
        "bank_account" : {
          "bic" : "TESTDEL0BK2",
          "iban" : "DE3912345679123456****"
        }
      }
    },
    "rc" : "0",
    "message" : "Transaction successful.",
    "event_id" : "e1661530099420",
    "tx_id" : "7PzZdYtamuTcTl8yhMpPXD"
  },
  "rc" : "0",
  "message" : "Transaction successful."
}
The customer has to authorize the reversal

Status code:

200

Return type:

FormPSD2ReversalResponse

{
  "outcome" : "REDIRECT_REQUIRED",
  "rc" : "0",
  "message" : "Transaction successful.",
  "tx_id" : "pOMnecOgs6cxDv34jrTVx9",
  "redirect_url" : "https://testmerch.directpos.de/web-api/de_DE/R.po?n=KMpGwCyjXoWq85VF9pKl4oMD9JXqYMT3yqgamsbhGjAm21"
}
POST /form/event/{event_id}/paypal/{tx_action}

Initializes a PayPal transaction (pre-authorization or authorization).

Start a new PayPal transaction sequence. Customers should be redirected to the returned URL.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

tx_action

string

  • required

  • enum

    • authorization

    • preauthorization

    • verify-mop

The action of an initial transaction.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

FormPayPalRequest

application/json

Request example Minimal PayPal initialization request

Request type: FormPayPalRequest

{
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  },
  "callback" : {
    "notify_url" : "http://www.example.com/notify"
  },
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  }
}
Responses
Code Type Content-Type Description

200

FormResponse

application/json

A return code and a message, accompanied by an appropriate redirect URL. In case of a known business or persistence error, only error code and message are provided.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /form/event/{event_id}/psd2/account_info

Initializes a PSD2 account information transaction.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

FormPSD2AccountInfoRequest

application/json

Request example Sample initialisation PSD2 account information
{
  "bank_id" : "bG0E",
  "requested_details" : [ "OWNER" ],
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  },
  "callback" : {
    "skip" : true
  }
}
Responses
Code Type Content-Type Description

200

FormResponse

application/json

Values required to initialise a form interaction.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /form/event/{event_id}/credittransfer

Initializes a Request to Pay transaction (authorization).

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

FormRequestToPayRequest

application/json

Request example Minimal Request to Pay initialization request

Request type: FormRequestToPayRequest

{
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  },
  "callback" : {
    "notify_url" : "http://www.example.com/notify"
  },
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  },
  "basket" : {
    "basket_id" : "basketId1639066152436"
  },
  "form_data" : {
    "locale" : "en"
  },
  "request_to_pay_data" : {
    "processing_options" : [ "INSTANT_IF_POSSIBLE" ]
  }
}
Responses
Code Type Content-Type Description

200

FormResponse

application/json

Values required to initialize a form interaction, a return code and a message. In case of a known business or persistence error, only error code and message are provided.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /form/event/{event_id}/twint

Initializes a TWINT transaction (authorization).

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

FormTwintRequest

application/json

Request example Minimal TWINT initialization request

Request type: FormTwintRequest

{
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  },
  "billing_address" : {
    "first_name" : "Heinz",
    "last_name" : "Müller",
    "email" : "heinz@email.com",
    "country" : "DE"
  },
  "callback" : {
    "notify_url" : "http://www.example.com/notify"
  },
  "amount_total" : {
    "amount" : 100,
    "currency" : "CHF"
  }
}
Responses
Code Type Content-Type Description

200

FormResponse

application/json

Values required to initialize a form interaction, a return code and a message. In case of a known business or persistence error, only error code and message are provided.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /form/event/{event_id}/wechatpay

Initializes a WeChat Pay transaction (authorization).

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

FormWeChatPayRequest

application/json

Request example Minimal WeChat Pay initialization request

Request type: FormWeChatPayRequest

{
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  },
  "billing_address" : {
    "first_name" : "Heinz",
    "last_name" : "Müller",
    "email" : "heinz@email.com",
    "country" : "DE"
  },
  "callback" : {
    "notify_url" : "http://www.example.com/notify"
  },
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  }
}
Responses
Code Type Content-Type Description

200

WeChatPayResponse

application/json

Values required to initialize a form interaction, a return code and a message. In case of a known business or persistence error, only error code and message are provided.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /form/event/{event_id}/wero/{tx_action}

Initializes a Wero transaction (pre-authorization or authorization).

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

tx_action

string

  • required

  • enum

    • authorization

    • preauthorization

The action of an initial transaction.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

FormWeroRequest

application/json

Request examples Minimal Wero authorization request

Request type: FormWeroRequest

{
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  },
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  },
  "callback" : {
    "notify_url" : "http://www.example.com/notify"
  },
  "wero_data" : {
    "authorization_reference" : "user-123456-order-123456"
  }
}
Minimal Wero pre-authorization request

Request type: FormWeroRequest

{
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  },
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  },
  "callback" : {
    "notify_url" : "http://www.example.com/notify"
  },
  "wero_data" : {
    "payment_plan" : {
      "amount_payment_type" : "PAY_UP_TO",
      "capture_event" : "SHIPPING"
    },
    "authorization_reference" : "user-123456-order-123456"
  }
}
Responses
Code Type Content-Type Description

200

FormResponse

application/json

Values required to initialize a form interaction, a return code and a message. In case of a known business or persistence error, only error code and message are provided.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

7.2.5. Google Pay

The Google Pay API contains endpoints to perform credit card payment transactions based on Google Pay payment information.

POST /googlepay/pay/{event_id}/{tx_action}/initialize

Perform payment requests based on Google Pay data.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

tx_action

string

  • required

  • enum

    • authorization

    • preauthorization

    • credit

    • verify-mop

The action of an initial transaction.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

GooglePayRequest

application/json

Request example Sample Google Pay request

Request type: GooglePayRequest

{
  "means_of_payment_google_pay" : {
    "googlepay_token" : "{\"signature\":\"MEUCIEx9BeftghFS3BeKpaOsmBYyOtP5NzJiBN9NknaTAUypAiEAgkDAuAa8upeKpKx3xWDMKvp4YvOY60jpPneFA/LGtBs\\u003d\",\"intermediateSigningKey\":{\"signedKey\":\"{\\\"keyValue\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/Cs+e5QTjlzCSkOeGy0UtI8waUV+2xxep1+MdYHOcFT1F/K0d55UidOTht9wziNEInHqCj3o+3X2+8H8hZEKoA\\\\u003d\\\\u003d\\\",\\\"keyExpiration\\\":\\\"1646101850734\\\"}\",\"signatures\":[\"MEUCIQD9TzJS/FYPaAbhPvKklnVj9IDkhZDXxgBWxnkFaboHSAIgDGU9MI3uKf9NG3eEL+B25eW+ylIzYnX8lzm6rysiKNQ\\u003d\"]},\"protocolVersion\":\"ECv2\",\"signedMessage\":\"{\\\"encryptedMessage\\\":\\\"qlZOdNSdm/G5pEFuyUWxZhjG2TSQrtq9c1xZIAaKs5ocrqs/EfcO/rTR0/SMHsxxdqlSv0TMduJUrzD1k7BCXQjamvST0DRVrz48bAeCDuXIitzKQcil/JvLqZA04DASMVSHMmEy2wCCXvzZndXvOob6nx95l2G/f3wlGfolfj9uCGp/W7LohCqvpTc/Eovp+sVfsSTRsb2QDNzm8awXPwnOAAfn4yqbLE4Be7mbaSQDGwhGI5tJYSJrJtOTsjAYlZWfjchKMRu49rW1NE0ghUOLeGWvWub7Qvj4bB9xVN1SBQIvvzswWDkXiDw3xPsVNs5dFoCwBip7OJp+xsOHXM/Xx+eKWR3fgNMQNvuzm4mLhaE4v2R56xQlUjWt21FhPg/iUY6fO9wws71hCjuSuOeBxkqFi7qGvvN2/0jDjyaW7c/4SBO9Dc1T4g/F7t60/77fmrHlMYzflC4j2n0EKAsaWr5BBNkcta9+DjDT9ahzvjNQlueD15abKaoOfuogC73T5D5wpHiFT0Uz657bWXYlMpVEACdu\\\",\\\"ephemeralPublicKey\\\":\\\"BIxk2eXO3LCyKyCytyYVi6MqIfSJ6HbJsxI/To4oVodJjiUi+l55Or9APgSKowxeLh5S+1mGP/zm83vEAGm1WvQ\\\\u003d\\\",\\\"tag\\\":\\\"8vMJhy/dCOtUIo4YQlOlLn7fys+BVAqmx2Lh9aWZaGU\\\\u003d\\\"}\"}"
  },
  "processing_options" : [ "RISKCHECK" ],
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  },
  "tds_20_data" : {
    "communication_data" : {
      "method_notification_url" : "https://example.com/method_notification_url",
      "cres_notification_url" : "https://example.com/cres_notification_url"
    }
  }
}
Responses
Code Type Content-Type Description

200

Headless3DSecureResponse

application/json

Information about the outcome of the transaction.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

Response examples Transaction has been processed, no further actions required

Status code:

200

Return type:

Headless3DSecureResponse

{
  "outcome" : "PROCESSED",
  "processed" : {
    "amount_total" : {
      "amount" : 100,
      "currency" : "EUR"
    },
    "event_id" : "id1628241502404",
    "kind" : "CREDITCARD_3DS20",
    "tx_action" : "preauthorization",
    "tx_id" : "fCDszGoUje8piOUC2tVVU9",
    "back_rc" : "00",
    "transaction_info" : {
      "type" : "creditcard",
      "transaction_creditcard_info" : {
        "credit_card" : {
          "number" : "401200******7778",
          "expiry_date" : {
            "year" : 2034,
            "month" : 12
          },
          "cardholder" : "Card Holder"
        }
      }
    },
    "rc" : "0",
    "message" : "Transaction successful."
  },
  "rc" : "0",
  "message" : "Transaction successful."
}
Proceed with 3-D Secure method flow

Status code:

200

Return type:

Headless3DSecureResponse

{
  "outcome" : "METHOD_REQUIRED",
  "method_required" : {
    "method_request" : "ew0KICAiY29udGVudCIgOiAiZHVtbXkiDQp9",
  },
  "rc" : "1548",
  "message" : "Transaction is pending."
}
Proceed with 3-D Secure challenge flow

Status code:

200

Return type:

Headless3DSecureResponse

{
  "outcome" : "CHALLENGE_REQUIRED",
  "challenge_required" : {
    "acs_url" : "https://acs.example.com/acs/challenge/ew0KICAiZHVtbXkiIDogImR1bW15Ig0KfQ==",
    "creq" : "ew0KICAiZHVtbXkiIDogImNvbnRlbnQiDQp9"
  },
  "rc" : "1548",
  "message" : "Transaction is pending."
}

7.2.6. Headless 3-D Secure

The Headless 3-D Secure API contains endpoints to conduct headless 3-D Secure transactions.

POST /headless3DSecure/event/{event_id}/final

Step 3 of a headless 3-D Secure transaction: finalizes transaction.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event. Use the same value as in the predecessor transaction the current transaction relates to.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

Headless3DSecureFinalRequest

application/json

Request example Sample credit card headless 3-D secure final request
{
  "cres" : "ew0KICAiZXhhbXBsZSIgOiAicmVxdWVzdCINCn0="
}
Responses
Code Type Content-Type Description

200

PaymentResponse

application/json

Information about the outcome of the transaction.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

Response example Sample headless 3-D secure final response

Status code:

200

Return type:

PaymentResponse

{
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  },
  "event_id" : "id1628241998006",
  "kind" : "CREDITCARD_3DS20",
  "tx_action" : "preauthorization",
  "tx_id" : "7P6cconB5vYqBQqGjyO8yR",
  "back_rc" : "00",
  "transaction_info" : {
    "type" : "creditcard",
    "transaction_creditcard_info" : {
      "credit_card" : {
        "number" : "401200******4444",
        "expiry_date" : {
          "year" : 2034,
          "month" : 12
        },
        "cardholder" : "Card Holder"
      }
    }
  },
  "rc" : "0",
  "message" : "Transaction successful."
}
POST /headless3DSecure/event/{event_id}/{tx_action}/initialize

Step 1 of a headless 3-D Secure transaction (authorization, pre-authorization, credit, verify MOP): initializes transaction.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

tx_action

string

  • required

  • enum

    • authorization

    • preauthorization

    • credit

    • verify-mop

The action of an initial transaction.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

Headless3DSecureInitializeRequest

application/json

Request examples Sample headless 3-D Secure initialize request
{
  "means_of_payment" : {
    "credit_card" : {
      "number" : "4012001037167778",
      "expiry_date" : {
        "year" : 2034,
        "month" : 12
      },
      "code" : "123",
      "cardholder" : "Cardholder"
    }
  },
  "tds_20_data" : {
    "communication_data" : {
      "method_notification_url" : "https://example.com/method_notification_url",
      "cres_notification_url" : "https://example.com/cres_notification_url"
    },
    "device_information" : {
      "ip_address" : "192.168.0.1",
      "http_browser_screen_height" : 1080,
      "http_browser_screen_width" : 1920
    },
    "customer_data" : {
      "billing_address" : {
        "street" : "Main street",
        "postal_code" : "12345",
        "city" : "New York",
        "state" : "NY",
        "country" : "US"
      },
      "cardholder_email" : "a@bc.de",
      "home_phone_number" : {
        "country" : "44",
        "regional" : "2071838750"
      }
    }
  },
  "merchant_risk_indicators" : {
    "delivery_email_address" : "delivery@example.com",
    "delivery_timeframe" : "ELECTRONIC",
    "gift_card_amount" : "900",
    "gift_card_count" : "1",
    "gift_card_currency" : "EUR",
    "pre_order_date" : "2021-10-25",
    "pre_order_purchase_indicator" : "AVAILABLE",
    "reordered_items_indicator" : "FIRST",
    "shipping_indicator" : "DIGITAL"
  },
  "device_information" : {
    "cookies_accepted" : "true",
    "http_accept_browser_value" : "text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, */*;q=0.8",
    "http_accept_content" : "text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, */*;q=0.8",
    "color_depth" : "B24",
    "http_browser_email" : "mustermann@example.com",
    "http_browser_java_enabled" : "true",
    "http_browser_java_script_enabled" : "true",
    "http_browser_language" : "de-DE",
    "http_browser_screen_height" : "1080",
    "http_browser_screen_width" : "1920",
    "http_browser_time_difference" : "60",
    "ip_address" : "192.168.0.1",
    "user_agent" : "Mozilla",
    "user_agent_browser_value" : "Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0"
  },
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  }
}
Minimal Visa Headless 3-D Secure initialize request
{
  "means_of_payment" : {
    "credit_card" : {
      "number" : "4761739090000088",
      "expiry_date" : {
        "year" : 2034,
        "month" : 12
      },
      "code" : "123",
      "cardholder" : "Cardholder"
    }
  },
  "tds_20_data" : {
    "communication_data" : {
      "method_notification_url" : "https://example.com/method_notification_url",
      "cres_notification_url" : "https://example.com/cres_notification_url"
    },
    "device_information" : {
      "ip_address" : "192.168.0.1",
      "http_browser_screen_height" : 1080,
      "http_browser_screen_width" : 1920
    },
    "customer_data" : {
      "billing_address" : {
        "street" : "Main street",
        "postal_code" : "12345",
        "city" : "New York",
        "state" : "NY",
        "country" : "US"
      },
      "cardholder_email" : "a@bc.de"
    }
  },
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  }
}
Minimal Mastercard Headless 3-D Secure initialize request
{
  "means_of_payment" : {
    "credit_card" : {
      "number" : "5453010000084541",
      "expiry_date" : {
        "year" : 2034,
        "month" : 12
      },
      "code" : "123",
      "cardholder" : "Cardholder"
    }
  },
  "tds_20_data" : {
    "communication_data" : {
      "method_notification_url" : "https://example.com/method_notification_url",
      "cres_notification_url" : "https://example.com/cres_notification_url"
    },
    "device_information" : {
      "ip_address" : "192.168.0.1",
      "http_browser_screen_height" : 1080,
      "http_browser_screen_width" : 1920
    },
    "customer_data" : {
      "billing_address" : {
        "street" : "Main street",
        "postal_code" : "12345",
        "city" : "New York",
        "state" : "NY",
        "country" : "US"
      },
      "shipping_address" : {
        "street" : "Main street",
        "postal_code" : "12345",
        "city" : "New York",
        "state" : "NY",
        "country" : "US"
      },
      "cardholder_email" : "a@bc.de",
      "home_phone_number" : {
        "country" : "44",
        "regional" : "2071838750"
      }
    }
  },
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  }
}
Responses
Code Type Content-Type Description

200

Headless3DSecureResponse

application/json

Information about the outcome of the transaction.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

Response examples Transaction has been processed, no further actions required

Status code:

200

Return type:

Headless3DSecureResponse

{
  "outcome" : "PROCESSED",
  "processed" : {
    "amount_total" : {
      "amount" : 100,
      "currency" : "EUR"
    },
    "event_id" : "id1628241502404",
    "kind" : "CREDITCARD_3DS20",
    "tx_action" : "preauthorization",
    "tx_id" : "fCDszGoUje8piOUC2tVVU9",
    "back_rc" : "00",
    "transaction_info" : {
      "type" : "creditcard",
      "transaction_creditcard_info" : {
        "credit_card" : {
          "number" : "401200******7778",
          "expiry_date" : {
            "year" : 2034,
            "month" : 12
          },
          "cardholder" : "Card Holder"
        }
      }
    },
    "rc" : "0",
    "message" : "Transaction successful."
  },
  "rc" : "0",
  "message" : "Transaction successful."
}
Proceed with 3-D Secure method flow

Status code:

200

Return type:

Headless3DSecureResponse

{
  "outcome" : "METHOD_REQUIRED",
  "method_required" : {
    "method_request" : "ew0KICAiY29udGVudCIgOiAiZHVtbXkiDQp9",
  },
  "rc" : "1548",
  "message" : "Transaction is pending."
}
Proceed with 3-D Secure challenge flow

Status code:

200

Return type:

Headless3DSecureResponse

{
  "outcome" : "CHALLENGE_REQUIRED",
  "challenge_required" : {
    "acs_url" : "https://acs.example.com/acs/challenge/ew0KICAiZHVtbXkiIDogImR1bW15Ig0KfQ==",
    "creq" : "ew0KICAiZHVtbXkiIDogImNvbnRlbnQiDQp9"
  },
  "rc" : "1548",
  "message" : "Transaction is pending."
}
POST /headless3DSecure/event/{event_id}/method_completed/{completed}

Step 2 of a headless 3-D Secure transaction: processes method completion.

Path Parameters
Name Type Description

completed

boolean

  • required

Indicates if the shop has received a request from the ACS to the methodNotificationURL within 10 seconds (true) or not (false).

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event. Use the same value as in the predecessor transaction the current transaction relates to.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Responses
Code Type Content-Type Description

200

Headless3DSecureResponse

application/json

Information about the outcome of the transaction.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

Response examples Transaction has been processed, no further actions required

Status code:

200

Return type:

Headless3DSecureResponse

{
  "outcome" : "PROCESSED",
  "processed" : {
    "amount_total" : {
      "amount" : 100,
      "currency" : "EUR"
    },
    "event_id" : "id1628241502404",
    "kind" : "CREDITCARD_3DS20",
    "tx_action" : "preauthorization",
    "tx_id" : "fCDszGoUje8piOUC2tVVU9",
    "back_rc" : "00",
    "transaction_info" : {
      "type" : "creditcard",
      "transaction_creditcard_info" : {
        "credit_card" : {
          "number" : "401200******7778",
          "expiry_date" : {
            "year" : 2034,
            "month" : 12
          },
          "cardholder" : "Card Holder"
        }
      }
    },
    "rc" : "0",
    "message" : "Transaction successful."
  },
  "rc" : "0",
  "message" : "Transaction successful."
}
Proceed with 3-D Secure challenge flow

Status code:

200

Return type:

Headless3DSecureResponse

{
  "outcome" : "CHALLENGE_REQUIRED",
  "challenge_required" : {
    "acs_url" : "https://acs.example.com/acs/challenge/ew0KICAiZHVtbXkiIDogImR1bW15Ig0KfQ==",
    "creq" : "ew0KICAiZHVtbXkiIDogImNvbnRlbnQiDQp9"
  },
  "rc" : "1548",
  "message" : "Transaction is pending."
}

7.2.7. iFrame

The iFrame API contains an endpoint to initialize an iFrame interaction. It allows the merchant to embed specific elements of a frontend page into their own web page. Entry of sensitive data is done in these elements so that they can be sent to the merchant without the merchant ever being in contact with it. After the API receives the entered data, it will inform the merchant who then calls the corresponding Payment API endpoint.

POST /iframe/initialize

Prepares an iFrame interaction.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

IFrameInitializeRequest

application/json

Request example Sample iFrame initialize request

Request type: IFrameInitializeRequest

{
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  }
}
Responses
Code Type Content-Type Description

200

IFrameInitializeResponse

application/json

Values required to initialize an iFrame interaction.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

7.2.8. Info

Information related operations.

GET /info/banks/psd2

Retrieves how banks matching the given search criteria support PSD 2 account information services.

Finds and returns banks which match the given query parameter. Use either name or bic or bank_code or any for filtering. If you use any banks including the given value in any of the fields name, bic or bank_code will be returned. Searching is carried out case-insensitive. When no search criteria are submitted, the complete list will be returned.

Query Parameters
Name Type Description

any

string

Fragment of either bank name, BIC or bank code.

bank_code

string

Fragment of German bank code (Bankleitzahl, BLZ).

bic

string

Fragment of BIC (business identifier code).

limit

integer

  • format: int32

  • default: 10

Maximum number of result items to be returned.

name

string

Fragment of bank name.

Example: Sparkasse

offset

integer

  • format: int32

  • default: 0

Number of rows to skip at the beginning of the total result set.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Responses
Code Type Content-Type Description

200

PSD2BankResults

application/json

Paged response with matching banks.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

Response example Sample bank PSD2 support response

Status code:

200

Return type:

PSD2BankResults

{
  "metadata" : {
    "limit" : 10,
    "offset" : 0,
    "total" : 2
  },
  "banks" : [ {
    "name" : "Sparkasse KölnBonn",
    "town" : "Köln",
    "bic" : "COLSDE33XXX",
    "bank_code" : "37050198",
    "psd2_supported" : false
  }, {
    "id" : "lsw",
    "name" : "Stadt- und Kreissparkasse Leipzig",
    "town" : "Leipzig",
    "bic" : "WELADE8LXXX",
    "bank_code" : "86055592",
    "psd2_supported" : true,
    "capabilities" : [ "AVAILABLE_ACCOUNTS", "AVAILABLE_ACCOUNTS_WITH_BALANCE", "GLOBAL_CONSENT" ]
  } ]
}
GET /info/event/{event_id}/psd2/account_info

Retrieves bank account details which were stored in a previous PSD 2 account information transaction.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Responses
Code Type Content-Type Description

200

PSD2AccountInfoResponse

application/json

Bank account details which were stored in a previous step.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

404

ErrorModel

application/json

The event_id was not found.

GET /info/request_to_pay/reports/payments

Retrieves a Request to Pay payments report.

Query Parameters
Name Type Description

from

string

  • format: date

Date from which resource details should be returned. If not specified current details are returned.

Example: 2007-09-23

limit

integer

  • format: int32

  • default: 100

Maximum number of result items to be returned.

offset

integer

  • format: int32

  • default: 0

Number of rows to skip at the beginning of the total result set.

statuses

array

Statuses of which resource details should be returned.

Example: ["SETTLED","REJECTED"]

to

string

  • format: date

Date until which resource details should be returned. If not specified current details are returned.

Example: 2007-09-23

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Responses
Code Type Content-Type Description

200

RequestToPayPaymentsReport

application/json

Request to Pay payments report.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

GET /info/request_to_pay/reports/refunds

Retrieves a Request to Pay refunds report.

Query Parameters
Name Type Description

from

string

  • format: date

Date from which resource details should be returned. If not specified current details are returned.

Example: 2007-09-23

limit

integer

  • format: int32

  • default: 100

Maximum number of result items to be returned.

offset

integer

  • format: int32

  • default: 0

Number of rows to skip at the beginning of the total result set.

statuses

array

Statuses of which resource details should be returned.

Example: ["SETTLED","REJECTED"]

to

string

  • format: date

Date until which resource details should be returned. If not specified current details are returned.

Example: 2007-09-23

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Responses
Code Type Content-Type Description

200

RequestToPayRefundsReport

application/json

Request to Pay refunds report.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

GET /info/multicurrencypricing

Performs a Multi Currency Pricing request to provide currently valid merchant specific exchange rates.

Query Parameters
Name Type Description

channel

string

  • enum

    • ECOM

    • POS

    • MOTO

Channel of the request.

Example: ECOM

merchant_id_mcp

string

Requesting merchant’s merchantId for Multi Currency Pricing at Deutsche Bank (GlueX) registered with funding currency.

Example: TEST-MERCHANT-1

req_currency_date

string

  • format: date-time

Requesting currency date and time. Date-time notation as defined by RFC 3339, section 5.6.

Example: 2023-07-14T08:59:12Z

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Responses
Code Type Content-Type Description

200

McpConsumerRatesResponse

application/json

Information about the outcome of the transaction.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

Response examples Consumer rates have been evaluated, no further actions required.

Status code:

200

Return type:

McpConsumerRatesResponse

{
  "merchant_id_mcp" : "28",
  "fundingCurrency" : "EUR",
  "response_timestamp" : "2022-11-30T08:32:56.849+01:00",
  "consumer_rates" : [ {
    "consumer_rate" : 0.982,
    "currency_pair" : "EURCHF",
    "offerable_from" : "2022-11-30T08:30:00+01:00",
    "offerable_to" : "2022-12-01T08:30:00+01:00"
  }, {
    "consumer_rate" : 1.0375,
    "currency_pair" : "EURUSD",
    "offerable_from" : "2022-11-30T08:30:00+01:00",
    "offerable_to" : "2022-12-01T08:30:00+01:00"
  } ],
  "rc" : "0",
  "message" : "Transaction successful."
}
Consumer rates evaluation failed

Status code:

200

Return type:

McpConsumerRatesResponse

{
  "rc" : "1547",
  "message" : "Payment Services Exception merchantId=28 not registered for multi currency pricing"
}

7.2.9. Payment

The Payment API contains endpoints to add or modify payment transactions. When using the API, the merchant is only integrated to the API at the backend. All use cases are triggered via an API call. It is the merchant’s responsibility to collect all relevant payment data via their own frontend.

POST /payment/event/{event_id}/creditcard/{tx_action}

Creates an initial creditcard payment transaction (authorization, pre-authorization, credit, or verify MOP).

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

tx_action

string

  • required

  • enum

    • authorization

    • preauthorization

    • credit

    • verify-mop

The action of an initial transaction.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

PaymentCreditCardRequestInitial

application/json

Request example Sample credit card initial request
{
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  },
  "means_of_payment" : {
    "credit_card" : {
      "number" : "4111111111111111",
      "expiry_date" : {
        "year" : 2027,
        "month" : 12
      },
      "code" : "111",
      "cardholder" : "Rene Meier"
    }
  }
}
Responses
Code Type Content-Type Description

200

PaymentResponse

application/json

Information about the payment

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /payment/event/{event_id}/directdebit/{tx_action}

Creates an initial SDD payment transaction (pre-authorization, authorization, credit, or verify MOP).

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

tx_action

string

  • required

  • enum

    • authorization

    • preauthorization

    • credit

    • verify-mop

The action of an initial transaction.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

PaymentDirectDebitRequestInitial

application/json

Request examples Sample SEPA direct debit initial request
{
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  },
  "means_of_payment" : {
    "bank_account" : {
      "account_holder" : "Rene Meier",
      "iban" : "DE39123456790009290701"
    }
  },
  "mandate" : {
    "reference" : "MDT1620213727383XY",
    "signed_on" : "2025-08-12",
    "mandate_sequence_type" : "RECURRING"
  }
}
Sample SEPA direct debit authorization with checklist
{
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  },
  "means_of_payment" : {
    "bank_account" : {
      "account_holder" : "Rene Meier",
      "iban" : "DE78860700000111111115"
    }
  },
  "mandate" : {
    "reference" : "MDT1620213727383XY",
    "signed_on" : "2025-08-12",
    "mandate_sequence_type" : "RECURRING"
  },
  "processing_options" : [ "CHECKLIST" ]
}
Responses
Code Type Content-Type Description

200

PaymentResponse

application/json

The request has been processed.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

GET /payment/event/{event_id}

Retrieves details of an event (consisting of one or more transactions).

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Responses
Code Type Content-Type Description

200

PaymentDiagnosisEventResponse

application/json

The request has been processed.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /payment/event/{event_id}/klarna/{tx_action}

Creates an initial Klarna payment transaction (pre-authorization, authorization) using an alias.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

tx_action

string

  • required

  • enum

    • authorization

    • preauthorization

The action of an initial transaction.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

PaymentKlarnaRequestInitial

application/json

Request example Sample Klarna initial request
{
  "customer_information" : {
    "date_of_birth" : "1980-01-01"
  },
  "shipping_address" : {
    "title" : "Ms",
    "first_name" : "Jane",
    "last_name" : "Doe",
    "email" : "test_jane@gmail.com",
    "address_line_1" : "Main Street 123",
    "address_line_2" : "Building A",
    "address_line_3" : "Apartment 12",
    "postal_code" : "80469",
    "phone_contact" : {
      "phone_type" : "MOBILE",
      "phone_number" : "+4917614287464"
    },
    "city" : "Munich",
    "country" : "DE",
    "extensions" : { }
  },
  "billing_address" : {
    "title" : "Ms",
    "first_name" : "Jane",
    "last_name" : "Doe",
    "email" : "test_jane@gmail.com",
    "address_line_1" : "Main Street 123",
    "address_line_2" : "Building A",
    "address_line_3" : "Apartment 12",
    "postal_code" : "80469",
    "phone_contact" : {
      "phone_type" : "MOBILE",
      "phone_number" : "+4917614287464"
    },
    "city" : "Munich",
    "country" : "DE",
    "extensions" : {
      "klarna_data" : {
        "custom_payment_method_ids" : [ ]
      }
    }
  },
  "basket" : {
    "basket_id" : "basket123456",
    "invoice_id" : "RE123345",
    "soft_descriptor" : "800-123-1234",
    "shipping_costs" : {
      "amount" : 200,
      "currency" : "EUR"
    },
    "basket_type" : "DIGITAL",
    "extensions" : {
      "paypal_data" : {
        "custom_id" : "CUSTOMID123"
      }
    },
    "basket_items" : [ {
      "name" : "A fine shirt",
      "description" : "BI123456",
      "reference" : "UGG-BB-PUR-06",
      "quantity" : {
        "quantity_amount" : 5,
        "quantity_unit" : "pcs"
      },
      "unit_price" : {
        "net" : 100,
        "gross" : 100,
        "currency" : "EUR",
        "tax" : 1900
      },
      "item_discount" : {
        "net" : 0,
        "gross" : 0,
        "currency" : "EUR",
        "tax" : 1900
      },
      "extensions" : {
        "klarna_data" : {
          "klarna_type" : "PHYSICAL",
          "image_url" : "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Camisade_pu%C3%B1o_doble.jpg/256px-Camisade_pu%C3%B1o_doble.jpg"
        }
      }
    } ]
  },
  "form_data" : {
    "locale" : "en"
  },
  "amount_total" : {
    "amount" : 700,
    "currency" : "EUR"
  },
  "merchant_information" : {
    "merchant_data_1" : "merchantData1",
    "merchant_data_2" : "merchantData2",
    "merchant_data_3" : "merchantData3"
  },
  "means_of_payment" : {
    "alias" : "the_alias"
  }
}
Responses
Code Type Content-Type Description

200

PaymentResponse

application/json

The request has been processed.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /payment/event/{event_id}/paypal/{tx_action}

Creates an initial PayPal payment transaction (pre-authorization, authorization) using an vault alias.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

tx_action

string

  • required

  • enum

    • authorization

    • preauthorization

The action of an initial transaction.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

PaymentPayPalRequestInitial

application/json

Request example Sample PayPal initial request
{
  "shipping_address" : {
    "title" : "Ms",
    "first_name" : "Jane",
    "last_name" : "Doe",
    "email" : "test_jane@gmail.com",
    "address_line_1" : "Main Street 123",
    "address_line_2" : "Building A",
    "address_line_3" : "Apartment 12",
    "postal_code" : "80469",
    "phone_contact" : {
      "phone_type" : "MOBILE",
      "phone_number" : "+4917614287464"
    },
    "city" : "Munich",
    "country" : "DE",
    "extensions" : { }
  },
  "billing_address" : {
    "title" : "Ms",
    "first_name" : "Jane",
    "last_name" : "Doe",
    "email" : "test_jane@gmail.com",
    "address_line_1" : "Main Street 123",
    "address_line_2" : "Building A",
    "address_line_3" : "Apartment 12",
    "postal_code" : "80469",
    "phone_contact" : {
      "phone_type" : "MOBILE",
      "phone_number" : "+4917614287464"
    },
    "city" : "Munich",
    "country" : "DE",
    "extensions" : {
      "klarna_data" : {
        "custom_payment_method_ids" : [ ]
      }
    }
  },
  "basket" : {
    "basket_id" : "basket123456",
    "invoice_id" : "RE123345",
    "soft_descriptor" : "800-123-1234",
    "shipping_costs" : {
      "amount" : 200,
      "currency" : "EUR"
    },
    "basket_type" : "DIGITAL",
    "extensions" : {
      "paypal_data" : {
        "custom_id" : "CUSTOMID123"
      }
    },
    "basket_items" : [ {
      "name" : "A fine shirt",
      "description" : "BI123456",
      "reference" : "UGG-BB-PUR-06",
      "quantity" : {
        "quantity_amount" : 5,
        "quantity_unit" : "pcs"
      },
      "unit_price" : {
        "net" : 100,
        "gross" : 100,
        "currency" : "EUR",
        "tax" : 1900
      },
      "item_discount" : {
        "net" : 0,
        "gross" : 0,
        "currency" : "EUR",
        "tax" : 1900
      },
      "extensions" : {
        "klarna_data" : {
          "klarna_type" : "PHYSICAL",
          "image_url" : "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Camisade_pu%C3%B1o_doble.jpg/256px-Camisade_pu%C3%B1o_doble.jpg"
        }
      }
    } ]
  },
  "amount_total" : {
    "amount" : 700,
    "currency" : "EUR"
  },
  "means_of_payment" : {
    "alias" : "the_alias"
  }
}
Responses
Code Type Content-Type Description

200

PaymentResponse

application/json

The request has been processed.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /payment/event/{event_id}/tx/{tx_id}/{tx_action}

Creates a subsequent transaction (capture, reversal, or refund) referencing a predecessor transaction (pre-authorization, capture, authorization, or credit).

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event. Use the same value as in the predecessor transaction the current transaction relates to.

tx_action

string

  • required

  • enum

    • capture

    • reversal

    • refund

The action of a subsequent transaction.

tx_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [/0-9a-zA-Z=_-]+

A reference to a transaction retrieved in a response (tx_reference_id).

Example: 020LMG10jxSI8FN0OC4vLR

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

PaymentRequestSubsequent

application/json

Request example Sample credit card subsequent transaction

Request type: PaymentRequestSubsequent

{
  "kind" : "CREDITCARD",
  "basket" : {
    "basket_id" : "basket123456"
  }
}
Responses
Code Type Content-Type Description

200

PaymentResponse

application/json

The request has been processed.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

GET /payment/tx/{tx_id}

Retrieves details of a (single) transaction.

Path Parameters
Name Type Description

tx_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [/0-9a-zA-Z=_-]+

A reference to a transaction retrieved in a response (tx_reference_id).

Example: 020LMG10jxSI8FN0OC4vLR

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Responses
Code Type Content-Type Description

200

PaymentResponse

application/json

The request has been processed.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /payment/widgetsolution/session/{id}

Creates the final widget solution payment transaction.

Path Parameters
Name Type Description

id

string

  • required

  • minLength: 3

  • maxLength: 1024

  • pattern: [a-zA-Z0-9]+

Widget Solution session ID of the transaction.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

WidgetSolutionFinalRequest

application/json

Request example Sample widgetsolution final request
{
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  }
}
Responses
Code Type Content-Type Description

200

WidgetSolutionPaymentResponse

application/json

The request has been processed.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

The Payment Link API contains endpoints to prepare payments your customers can carry out later by using the provided link.

POST /paymentlink/event/{event_id}/checkout/{tx_action}

Creates a link to a checkout page you can forward to your customer. Later, the customer can use this link to choose one of the offered payment methods and then carry out the payment.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

tx_action

string

  • required

  • enum

    • authorization

    • preauthorization

    • verify-mop

The action of an initial transaction.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

PaymentLinkRequest

application/json

Request examples Sample initialization for a checkout selection with SDD and Request to Pay

Request type: PaymentLinkRequest

{
  "expires" : "2023-12-19T19:11:59.212+01:00",
  "checkout_page_configuration" : {
    "direct_debit_data" : {
      "mandate" : {
        "reference" : "MDT1620213727383XY",
        "signed_on" : "2025-08-12",
        "mandate_sequence_type" : "RECURRING"
      }
    },
    "request_to_pay_data" : {
      "customer_id" : "testCustrID"
    },
    "checkout_entry_sorting_order" : [ "DIRECTDEBIT", "REQUEST_TO_PAY" ]
  },
  "basket" : {
    "basket_id" : "basketId1639066152436",
    "order_amount" : {
      "amount" : 900,
      "currency" : "EUR"
    },
    "shipping_costs" : {
      "amount" : 100,
      "currency" : "EUR"
    },
    "basket_type" : "PHYSICAL",
    "basket_items" : [ {
      "name" : "PhysicalBasketItem",
      "description" : "A basket item",
      "quantity" : {
        "quantity_amount" : 1,
        "quantity_unit" : "pcs"
      },
      "unit_price" : {
        "net" : 756,
        "gross" : 900,
        "currency" : "EUR",
        "tax" : 1900
      }
    } ]
  },
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  },
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  },
  "callback" : {
    "notify_url" : "http://www.example.com/notify"
  }
}
Sample initialization for a payment link with all payment methods (English)

Request type: PaymentLinkRequest

{
  "expires" : "2024-01-15T09:32:04.024",
  "amount_total" : {
    "amount" : 1300,
    "currency" : "EUR"
  },
  "basket" : {
    "basket_id" : "basketId1643192827792",
    "shipping_costs" : {
      "amount" : 100,
      "currency" : "EUR"
    },
    "basket_type" : "PHYSICAL",
    "basket_items" : [ {
      "name" : "PhysicalBasketItem",
      "description" : "A basket item",
      "reference" : "basketItem-reference1",
      "quantity" : {
        "quantity_amount" : 1,
        "quantity_unit" : "pcs"
      },
      "unit_price" : {
        "net" : 1008,
        "gross" : 1200,
        "currency" : "EUR",
        "tax" : 1900
      }
    } ]
  },
  "billing_address" : {
    "first_name" : "Heinz",
    "last_name" : "Mueller",
    "email" : "heinz@email.com",
    "address_line_1" : "Rohrteichstr 18",
    "address_line_2" : "EG R. 184",
    "address_line_3" : "Wohnhaus",
    "postal_code" : "04347",
    "city" : "Leipzig",
    "state" : "SN",
    "country" : "DE"
  },
  "shipping_address" : {
    "first_name" : "Heinz",
    "last_name" : "Mueller",
    "email" : "heinz@email.com",
    "address_line_1" : "Rohrteichstr 18",
    "postal_code" : "04347",
    "city" : "Leipzig",
    "country" : "DE"
  },
  "callback" : {
    "notify_url" : "http://www.example.com/notify"
  },
  "checkout_page_configuration" : {
    "checkout_entry_sorting_order" : [ "DIRECTDEBIT", "CREDITCARD", "GOOGLEPAY", "REQUEST_TO_PAY", "PAYPAL", "KLARNA", "WECHATPAY", "P24", "APPLEPAY", "IDEAL" ],
    "credit_card_data" : {
      "tds_20_data" : {
        "customer_data" : {
          "billing_address" : {
            "city" : "Leipzig",
            "country" : "DE",
            "postal_code" : "04347",
            "street" : "Rohrteichstr 18"
          },
          "home_phone_number" : {
            "country" : "+49",
            "regional" : "2630864618"
          },
          "cardholder_email" : "heinz@email.com"
        }
      }
    },
    "google_pay_credit_card_data" : {
      "googlepay_merchant_id" : "BCR2DN4T7D65Z6BX",
      "googlepay_domain_name" : "www.example.com",
      "googlepay_country_code" : "DE"
    },
    "apple_pay_credit_card_data" : { },
    "direct_debit_data" : {
      "mandate" : {
        "reference" : "MDT1643192827814",
        "signed_on" : "2020-12-30"
      }
    },
    "request_to_pay_data" : {
      "processing_options" : [ "INSTANT" ]
    },
    "paypal_data" : { },
    "wechatpay_data" : { },
    "p24_data" : { },
    "klarna_data" : { },
    "ideal_data" : {
      "description" : "description"
    }
  },
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  },
  "form_data" : {
    "locale" : "en"
  }
}
Sample initialization for a payment link with all payment methods (German)

Request type: PaymentLinkRequest

{
  "expires" : "2024-01-15T09:32:04.024",
  "amount_total" : {
    "amount" : 1300,
    "currency" : "EUR"
  },
  "basket" : {
    "basket_id" : "basketId1643192827792",
    "shipping_costs" : {
      "amount" : 100,
      "currency" : "EUR"
    },
    "basket_type" : "PHYSICAL",
    "basket_items" : [ {
      "name" : "PhysicalBasketItem",
      "description" : "A basket item",
      "reference" : "basketItem-reference1",
      "quantity" : {
        "quantity_amount" : 1,
        "quantity_unit" : "pcs"
      },
      "unit_price" : {
        "net" : 1008,
        "gross" : 1200,
        "currency" : "EUR",
        "tax" : 1900
      }
    } ]
  },
  "billing_address" : {
    "first_name" : "Heinz",
    "last_name" : "Mueller",
    "email" : "heinz@email.com",
    "address_line_1" : "Rohrteichstr 18",
    "address_line_2" : "EG R. 184",
    "address_line_3" : "Wohnhaus",
    "postal_code" : "04347",
    "city" : "Leipzig",
    "state" : "SN",
    "country" : "DE"
  },
  "shipping_address" : {
    "first_name" : "Heinz",
    "last_name" : "Mueller",
    "email" : "heinz@email.com",
    "address_line_1" : "Rohrteichstr 18",
    "postal_code" : "04347",
    "city" : "Leipzig",
    "country" : "DE"
  },
  "callback" : {
    "notify_url" : "http://www.example.com/notify"
  },
  "checkout_page_configuration" : {
    "checkout_entry_sorting_order" : [ "DIRECTDEBIT", "CREDITCARD", "GOOGLEPAY", "REQUEST_TO_PAY", "PAYPAL", "KLARNA", "WECHATPAY", "P24", "APPLEPAY", "IDEAL" ],
    "credit_card_data" : {
      "tds_20_data" : {
        "customer_data" : {
          "billing_address" : {
            "city" : "Leipzig",
            "country" : "DE",
            "postal_code" : "04347",
            "street" : "Rohrteichstr 18"
          },
          "home_phone_number" : {
            "country" : "+49",
            "regional" : "2630864618"
          },
          "cardholder_email" : "heinz@email.com"
        }
      }
    },
    "google_pay_credit_card_data" : {
      "googlepay_merchant_id" : "BCR2DN4T7D65Z6BX",
      "googlepay_domain_name" : "www.example.com",
      "googlepay_country_code" : "DE"
    },
    "apple_pay_credit_card_data" : { },
    "direct_debit_data" : {
      "mandate" : {
        "reference" : "MDT1643192827814",
        "signed_on" : "2020-12-30"
      }
    },
    "request_to_pay_data" : {
      "processing_options" : [ "INSTANT" ]
    },
    "paypal_data" : { },
    "wechatpay_data" : { },
    "p24_data" : { },
    "klarna_data" : { },
    "ideal_data" : {
      "description" : "description"
    }
  },
  "form_customer_continuation" : {
    "success_url" : "https://www.example.com/target.php?success",
    "error_url" : "https://www.example.com/target.php?error",
    "notification_failed_url" : "https://www.example.com/target.php?notifyfailed"
  },
  "form_data" : {
    "locale" : "de"
  }
}
Responses
Code Type Content-Type Description

200

PaymentLinkResponse

application/json

Values required to initialize a form interaction, a return code and a message. In case of a known business or persistence error, only error code and message are provided.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

GET /paymentlink/event/{event_id}

Retrieves details of a payment link.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Responses
Code Type Content-Type Description

200

PaymentLinkEventResponse

application/json

The request has been processed.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /paymentlink/event/{event_id}/deactivate

Deactivates a payment link.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Responses
Code Type Content-Type Description

200

PaymentLinkEventResponse

application/json

Response of the deactivation request of the payment link.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /paymentlink/event/{event_id}/update

Updates a payment link.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

PaymentLinkManagementUpdateRequest

application/json

Request example Sample update request
{
  "expires" : "2022-11-29T19:41:30.681"
}
Responses
Code Type Content-Type Description

200

PaymentLinkEventResponse

application/json

Response of the update request of the payment link.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

7.2.11. Risk Management

The Risk Management API contains endpoints to add and remove risk list entries and to calculate a risk score.

POST /riskmanagement/entry/{event_id}

Adds data to or deletes data from the positive or the negative list.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

RiskmanagementEntryRequest

application/json

Request example Sample risk management entry request
{
  "billing_address" : {
    "first_name" : "Heinz",
    "last_name" : "Mustermann",
    "email" : "heinz.mustermann@example.com",
    "phone_contact" : {
      "phone_type" : "MOBILE",
      "phone_number" : "+442071838750"
    },
    "address_line_1" : "Musterstraße 18",
    "address_line_2" : "EG Rechnungsraum. 184",
    "address_line_3" : "Rechnungsgebäude/Buchhaltung",
    "postal_code" : "84347",
    "city" : "Musterstadt",
    "state" : "SN",
    "country" : "DE"
  },
  "basket" : {
    "basket_id" : "123456-basketId-dummy",
    "shipping_costs" : {
      "amount" : 50,
      "currency" : "EUR"
    },
    "basket_type" : "PHYSICAL",
    "basket_items" : [ {
      "name" : "productName1",
      "description" : "productDescription1",
      "reference" : "reference1",
      "quantity" : {
        "quantity_amount" : 1,
        "quantity_unit" : "pcs"
      },
      "unit_price" : {
        "net" : 84034,
        "gross" : 100000,
        "currency" : "EUR",
        "tax" : 1900
      },
      "item_discount" : {
        "net" : 0,
        "gross" : 0,
        "currency" : "EUR",
        "tax" : 1900
      },
      "extensions" : {
        "riskcheck_data" : {
          "riskcheck_type" : "SHIPPING_ONLY",
          "distributor_product_sku" : "1234567890",
          "gift_card_currency" : "EUR",
          "product_risk" : "LOW",
          "risk_check_passenger" : {
            "type" : "ADT",
            "status" : "standard",
            "phone" : {
              "phone_type" : "MOBILE",
              "phone_number" : "+4917223456789"
            },
            "first_name" : "Maria",
            "last_name" : "Musterfrau",
            "id" : "B7564",
            "email" : "maria.musterfrau@passenger.com",
            "country" : "DE"
          },
          "shipping_destination_types" : "RESIDENTIAL",
          "is_gift" : false
        }
      }
    } ]
  },
  "device_information" : {
    "cookies_accepted" : true,
    "http_accept_browser_value" : "text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, */*;q=0.8",
    "http_accept_content" : "text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, */*;q=0.8",
    "color_depth" : "B24",
    "http_browser_email" : "mustermann@example.com",
    "http_browser_java_enabled" : true,
    "http_browser_java_script_enabled" : true,
    "http_browser_language" : "de-DE",
    "http_browser_screen_height" : 1080,
    "http_browser_screen_width" : 1920,
    "http_browser_time_difference" : 60,
    "ip_address" : "192.168.0.1",
    "user_agent" : "Mozilla",
    "user_agent_browser_value" : "Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0"
  },
  "shipping_address" : {
    "first_name" : "Klaus",
    "last_name" : "Mustermann",
    "address_line_1" : "Musterstraße 7",
    "address_line_2" : "2. OG Lieferraum 333",
    "address_line_3" : "Lieferhaus",
    "postal_code" : "10243",
    "city" : "Musterdorf",
    "state" : "BE",
    "country" : "DE"
  },
  "customer_information" : {
    "date_of_birth" : "1985-12-30",
    "gender" : "FEMALE",
    "title" : "Prof. Dr. Dr.",
    "personal_identifications" : [ ],
    "contacts" : {
      "phone_contacts" : [ {
        "phone_type" : "MOBILE",
        "phone_number" : "+442071838750"
      }, {
        "phone_type" : "FAX",
        "phone_number" : "+442071838751"
      } ]
    }
  },
  "credit_card_data" : {
    "number" : "4000056655665556",
    "expiry_date" : {
      "year" : 2028,
      "month" : 11
    },
    "code" : "123",
    "cardholder" : "Card T. Holder"
  },
  "bank_account" : {
    "bic" : "HYVEDEMMXXX",
    "iban" : "DE02700202700010108669",
    "account_holder" : "Rene Meier",
    "bank_name" : "UniCredit Bank - HypoVereinsbank"
  },
  "address" : {
    "first_name" : "Fritz",
    "last_name" : "Mustermann",
    "address_line_1" : "Musterteichstr 18",
    "address_line_2" : "EG R. 184",
    "address_line_3" : "Wohnhaus",
    "postal_code" : "94347",
    "city" : "Musterhausen",
    "state" : "SN",
    "country" : "DE"
  },
  "reason" : "SUSPECTED",
  "action" : "DELETE",
  "list_name" : "NEGATIVE"
}
Responses
Code Type Content-Type Description

200

RiskmanagementEntryResponse

application/json

Indicates the list interaction to add/remove an entry was performed. Result can be success or information regarding the problems occured.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

POST /riskmanagement/scoring/{event_id}

Calculates risk score of given data.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

RiskmanagementScoringRequest

application/json

Request example Sample risk management scoring request
{
  "billing_address" : {
    "first_name" : "Heinz",
    "last_name" : "Mustermann",
    "email" : "heinz.mustermann@example.com",
    "phone_contact" : {
      "phone_type" : "MOBILE",
      "phone_number" : "+442071838750"
    },
    "address_line_1" : "Musterstraße 18",
    "address_line_2" : "EG Rechnungsraum. 184",
    "address_line_3" : "Rechnungsgebäude/Buchhaltung",
    "postal_code" : "84347",
    "city" : "Musterstadt",
    "state" : "SN",
    "country" : "DE"
  },
  "basket" : {
    "basket_id" : "123456-basketId-dummy",
    "shipping_costs" : {
      "amount" : 50,
      "currency" : "EUR"
    },
    "basket_type" : "PHYSICAL",
    "basket_items" : [ {
      "name" : "productName1",
      "description" : "productDescription1",
      "reference" : "reference1",
      "quantity" : {
        "quantity_amount" : 1,
        "quantity_unit" : "pcs"
      },
      "unit_price" : {
        "net" : 84034,
        "gross" : 100000,
        "currency" : "EUR",
        "tax" : 1900
      },
      "item_discount" : {
        "net" : 0,
        "gross" : 0,
        "currency" : "EUR",
        "tax" : 1900
      },
      "extensions" : {
        "riskcheck_data" : {
          "riskcheck_type" : "SHIPPING_ONLY",
          "distributor_product_sku" : "1234567890",
          "gift_card_currency" : "EUR",
          "product_risk" : "LOW",
          "risk_check_passenger" : {
            "type" : "ADT",
            "status" : "standard",
            "phone" : {
              "phone_type" : "MOBILE",
              "phone_number" : "+4917223456789"
            },
            "first_name" : "Maria",
            "last_name" : "Musterfrau",
            "id" : "B7564",
            "email" : "maria.musterfrau@passenger.com",
            "country" : "DE"
          },
          "shipping_destination_types" : "RESIDENTIAL",
          "is_gift" : false
        }
      }
    } ]
  },
  "device_information" : {
    "cookies_accepted" : true,
    "http_accept_browser_value" : "text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, */*;q=0.8",
    "http_accept_content" : "text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, */*;q=0.8",
    "color_depth" : "B24",
    "http_browser_email" : "mustermann@example.com",
    "http_browser_java_enabled" : true,
    "http_browser_java_script_enabled" : true,
    "http_browser_language" : "de-DE",
    "http_browser_screen_height" : 1080,
    "http_browser_screen_width" : 1920,
    "http_browser_time_difference" : 60,
    "ip_address" : "192.168.0.1",
    "user_agent" : "Mozilla",
    "user_agent_browser_value" : "Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0"
  },
  "shipping_address" : {
    "first_name" : "Klaus",
    "last_name" : "Mustermann",
    "address_line_1" : "Musterstraße 7",
    "address_line_2" : "2. OG Lieferraum 333",
    "address_line_3" : "Lieferhaus",
    "postal_code" : "10243",
    "city" : "Musterdorf",
    "state" : "BE",
    "country" : "DE"
  },
  "account_information" : {
    "account_change_date" : "2021-10-25",
    "account_creation_indicator" : "GUEST",
    "account_id" : "MC_ACC_12345678",
    "account_opened_date" : "2021-10-25",
    "modification_indicator" : "ACCOUNT_UPDATED_NOW",
    "password_change_date" : "2021-10-25",
    "password_change_indicator" : "PASSWORD_CHANGED_NOW",
    "payment_account_date" : "2021-10-25",
    "payment_account_history" : "PAYMENT_ACCOUNT_ADDED_NOW",
    "add_card_attempts" : 1,
    "provisioning_day_count" : 1,
    "purchases_six_month_count" : 2,
    "shipping_address_first_use_date" : "2021-10-25",
    "shipping_address_first_use" : false,
    "shipping_name_indicator" : "02",
    "suspicious_account_activity" : false,
    "transactions_day_count" : 1,
    "transactions_year_count" : 1
  },
  "customer_information" : {
    "date_of_birth" : "1985-12-30",
    "gender" : "FEMALE",
    "title" : "Prof. Dr. Dr.",
    "personal_identifications" : [ {
      "type" : "PASSPORT",
      "id" : "T220001297",
      "issued_by" : "DE"
    }, {
      "type" : "DRIVERS_LICENSE",
      "id" : "DL220001297",
      "issued_by" : "BE"
    } ],
    "contacts" : {
      "phone_contacts" : [ {
        "phone_type" : "MOBILE",
        "phone_number" : "+442071838750"
      }, {
        "phone_type" : "FAX",
        "phone_number" : "+442071838751"
      } ]
    }
  },
  "merchant_risk_indicators" : {
    "delivery_email_address" : "delivery@example.com",
    "delivery_timeframe" : "MORE_THAN_ONE_DAY",
    "gift_card_amount" : "0",
    "gift_card_count" : "0",
    "gift_card_currency" : "EUR",
    "pre_order_date" : "2021-10-25",
    "pre_order_purchase_indicator" : "AVAILABLE",
    "reordered_items_indicator" : "FIRST",
    "shipping_indicator" : "DIGITAL"
  },
  "merchant_defined_information" : [ {
    "key" : "2",
    "value" : "high_volume_order"
  }, {
    "key" : "11",
    "value" : "nightly_order"
  }, {
    "key" : "52",
    "value" : "donation"
  }, {
    "key" : "99",
    "value" : "multi-packaging"
  }, {
    "key" : "100",
    "value" : "reordered-8times"
  }, {
    "key" : "103",
    "value" : "devices"
  } ],
  "travel_information" : {
    "actual_final_destination" : "LEJ",
    "complete_route" : "LEJ-LHR:LHR-JFK:JFK-LHR:LHR-LEJ",
    "departure_time" : "2024-07-01T07:40+01:00",
    "journey_type" : "ROUNDTRIP",
    "legs" : [ {
      "origination" : "LEJ",
      "destination" : "LHR",
      "carrier_code" : "LH",
      "departure_date" : "20240701"
    }, {
      "origination" : "LHR",
      "destination" : "JFK",
      "carrier_code" : "BA",
      "departure_date" : "20240701"
    }, {
      "origination" : "JFK",
      "destination" : "LHR",
      "carrier_code" : "BA",
      "departure_date" : "20240714"
    }, {
      "origination" : "LHR",
      "destination" : "LEJ",
      "carrier_code" : "LH",
      "departure_date" : "20240714"
    } ],
    "number_of_passengers" : 2,
    "passengers" : [ {
      "first_name" : "Heinz",
      "last_name" : "Mueller"
    }, {
      "first_name" : "Klaus",
      "last_name" : "Mueller"
    } ]
  },
  "risk_check_additional_information" : {
    "fingerprint_session_id" : "1234567890-0000000005"
  },
  "credit_card_data" : {
    "number" : "4000056655665556",
    "expiry_date" : {
      "year" : 2028,
      "month" : 11
    },
    "code" : "123",
    "cardholder" : "Card T. Holder"
  },
  "bank_account" : {
    "bic" : "HYVEDEMMXXX",
    "iban" : "DE02700202700010108669",
    "account_holder" : "Rene Meier",
    "bank_name" : "UniCredit Bank - HypoVereinsbank"
  },
  "address" : {
    "first_name" : "Fritz",
    "last_name" : "Mustermann",
    "address_line_1" : "Musterteichstr 18",
    "address_line_2" : "EG R. 184",
    "address_line_3" : "Wohnhaus",
    "postal_code" : "94347",
    "city" : "Musterhausen",
    "state" : "SN",
    "country" : "DE"
  },
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  }
}
Responses
Code Type Content-Type Description

200

RiskmanagementScoringResponse

application/json

Calculates the score of the given data and gives back more detailed information regarding the result calculation.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

7.2.12. Widget Solution

The Widget Solution API contains an endpoint to create a session for Widget Solution transactions.

POST /widgetsolution/session/event/{event_id}/{tx_action}

Prepares a new session for a Widget Solution transaction.

Path Parameters
Name Type Description

event_id

string

  • required

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

tx_action

string

  • required

  • enum

    • authorization

    • preauthorization

    • verify-mop

The action of an initial transaction.

Header Parameters
Name Type Description

Merchant-ID

string

  • minLength: 10

  • maxLength: 10

  • pattern: [0-9]+

Unique identification of the merchant for which the transaction is carried out. This parameter is required if the Merchant-ID cannot be derived from the client_id you used for authentication.

Request Body (required)
Type Content-Type

WidgetSolutionCreateSessionRequest

application/json

Request examples Sample Widget Solution create session with mandatory parameters for Google Pay only.
{
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  },
  "merchant_country" : "DE",
  "transaction_data" : {
    "googlepay_merchant_id" : "BCR2DN4T7D65Z6BX",
    "googlepay_domain_name" : "testshop.de"
  }
}
Sample Widget Solution create session with mandatory parameters for PayPal only.
{
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  },
  "merchant_country" : "DE"
}
Sample Widget Solution create session with all parameters.
{
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  },
  "merchant_country" : "DE",
  "transaction_data" : {
    "billing_address" : {
      "first_name" : "Heinz",
      "last_name" : "Mustermann",
      "email" : "heinz.mustermann@example.com",
      "phone_contact" : {
        "phone_type" : "MOBILE",
        "phone_number" : "+442071838750"
      },
      "address_line_1" : "Musterstraße 18",
      "address_line_2" : "EG Rechnungsraum. 184",
      "address_line_3" : "Rechnungsgebäude/Buchhaltung",
      "postal_code" : "84347",
      "city" : "Musterstadt",
      "state" : "SN",
      "country" : "DE"
    },
    "basket" : {
      "basket_id" : "123456-basketId-dummy",
      "shipping_costs" : {
        "amount" : 50,
        "currency" : "EUR"
      },
      "basket_type" : "PHYSICAL",
      "basket_items" : [ {
        "name" : "productName1",
        "description" : "productDescription1",
        "reference" : "reference1",
        "quantity" : {
          "quantity_amount" : 1,
          "quantity_unit" : "pcs"
        },
        "unit_price" : {
          "net" : 84034,
          "gross" : 100000,
          "currency" : "EUR",
          "tax" : 1900
        },
        "item_discount" : {
          "net" : 0,
          "gross" : 0,
          "currency" : "EUR",
          "tax" : 1900
        },
        "extensions" : {
          "riskcheck_data" : {
            "riskcheck_type" : "SHIPPING_ONLY",
            "distributor_product_sku" : "1234567890",
            "gift_card_currency" : "EUR",
            "product_risk" : "LOW",
            "risk_check_passenger" : {
              "type" : "ADT",
              "status" : "standard",
              "phone" : {
                "phone_type" : "MOBILE",
                "phone_number" : "+4917223456789"
              },
              "first_name" : "Maria",
              "last_name" : "Musterfrau",
              "id" : "B7564",
              "email" : "maria.musterfrau@passenger.com",
              "country" : "DE"
            },
            "shipping_destination_types" : "RESIDENTIAL",
            "is_gift" : false
          }
        }
      } ]
    },
    "device_information" : {
      "cookies_accepted" : true,
      "http_accept_browser_value" : "text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, */*;q=0.8",
      "http_accept_content" : "text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, */*;q=0.8",
      "color_depth" : "B24",
      "http_browser_email" : "mustermann@example.com",
      "http_browser_java_enabled" : true,
      "http_browser_java_script_enabled" : true,
      "http_browser_language" : "de-DE",
      "http_browser_screen_height" : 1080,
      "http_browser_screen_width" : 1920,
      "http_browser_time_difference" : 60,
      "ip_address" : "192.168.0.1",
      "user_agent" : "Mozilla",
      "user_agent_browser_value" : "Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0"
    },
    "shipping_address" : {
      "first_name" : "Klaus",
      "last_name" : "Mustermann",
      "address_line_1" : "Musterstraße 7",
      "address_line_2" : "2. OG Lieferraum 333",
      "address_line_3" : "Lieferhaus",
      "postal_code" : "10243",
      "city" : "Musterdorf",
      "state" : "BE",
      "country" : "DE"
    },
    "merchant_information" : {
      "locale" : "en",
      "merchant_data_1" : "further merchant information (1)",
      "merchant_data_2" : "further merchant information (2)",
      "merchant_data_3" : "further merchant information (3)"
    },
    "account_information" : {
      "account_change_date" : "2021-10-25",
      "account_creation_indicator" : "GUEST",
      "account_id" : "MC_ACC_12345678",
      "account_opened_date" : "2021-10-25",
      "modification_indicator" : "ACCOUNT_UPDATED_NOW",
      "password_change_date" : "2021-10-25",
      "password_change_indicator" : "PASSWORD_CHANGED_NOW",
      "payment_account_date" : "2021-10-25",
      "payment_account_history" : "PAYMENT_ACCOUNT_ADDED_NOW",
      "add_card_attempts" : 1,
      "provisioning_day_count" : 1,
      "purchases_six_month_count" : 2,
      "shipping_address_first_use_date" : "2021-10-25",
      "shipping_address_first_use" : false,
      "shipping_name_indicator" : "02",
      "suspicious_account_activity" : false,
      "transactions_day_count" : 1,
      "transactions_year_count" : 1
    },
    "customer_information" : {
      "date_of_birth" : "1985-12-30",
      "gender" : "FEMALE",
      "title" : "Prof. Dr. Dr.",
      "personal_identifications" : [ {
        "type" : "PASSPORT",
        "id" : "T220001297",
        "issued_by" : "DE"
      }, {
        "type" : "DRIVERS_LICENSE",
        "id" : "DL220001297",
        "issued_by" : "BE"
      } ],
      "contacts" : {
        "phone_contacts" : [ {
          "phone_type" : "MOBILE",
          "phone_number" : "+442071838750"
        }, {
          "phone_type" : "FAX",
          "phone_number" : "+442071838751"
        } ]
      }
    },
    "merchant_risk_indicators" : {
      "delivery_email_address" : "delivery@example.com",
      "delivery_timeframe" : "MORE_THAN_ONE_DAY",
      "gift_card_amount" : "0",
      "gift_card_count" : "0",
      "gift_card_currency" : "EUR",
      "pre_order_date" : "2021-10-25",
      "pre_order_purchase_indicator" : "AVAILABLE",
      "reordered_items_indicator" : "FIRST",
      "shipping_indicator" : "DIGITAL"
    },
    "merchant_defined_information" : [ {
      "key" : "2",
      "value" : "high_volume_order"
    }, {
      "key" : "11",
      "value" : "nightly_order"
    }, {
      "key" : "52",
      "value" : "donation"
    }, {
      "key" : "99",
      "value" : "multi-packaging"
    }, {
      "key" : "100",
      "value" : "reordered-8times"
    }, {
      "key" : "103",
      "value" : "devices"
    } ],
    "travel_information" : {
      "actual_final_destination" : "LEJ",
      "complete_route" : "LEJ-LHR:LHR-JFK:JFK-LHR:LHR-LEJ",
      "departure_time" : "2024-07-01T07:40+01:00",
      "journey_type" : "ROUNDTRIP",
      "legs" : [ {
        "origination" : "LEJ",
        "destination" : "LHR",
        "carrier_code" : "LH",
        "departure_date" : "20240701"
      }, {
        "origination" : "LHR",
        "destination" : "JFK",
        "carrier_code" : "BA",
        "departure_date" : "20240701"
      }, {
        "origination" : "JFK",
        "destination" : "LHR",
        "carrier_code" : "BA",
        "departure_date" : "20240714"
      }, {
        "origination" : "LHR",
        "destination" : "LEJ",
        "carrier_code" : "LH",
        "departure_date" : "20240714"
      } ],
      "number_of_passengers" : 2,
      "passengers" : [ {
        "first_name" : "Heinz",
        "last_name" : "Mueller"
      }, {
        "first_name" : "Klaus",
        "last_name" : "Mueller"
      } ]
    },
    "risk_check_additional_information" : {
      "fingerprint_session_id" : "1234567890-0000000005"
    },
    "googlepay_merchant_id" : "BCR2DN4T7D65Z6BX",
    "googlepay_domain_name" : "testshop.de",
    "alias_action" : {
      "action" : "CREATE"
    },
    "processing_options" : [ "RISKCHECK" ],
    "recurring_payment" : "07H987Tx3PF9VxL5G7RfNp",
    "sequence_type" : "RECURRING",
    "series_flag" : "RECURRING",
    "tds_20_data" : {
      "communication_data" : {
        "method_notification_url" : "https://example.com/method_notification_url",
        "cres_notification_url" : "https://example.com/cres_notification_url"
      }
    }
  }
}
Responses
Code Type Content-Type Description

200

WidgetSolutionCreateSessionResponse

application/json

Values required to initialize session for a Widget Solution interaction.

400

ErrorModel

application/json

Response in case of an error. Includes a response code and an error message.

401

ErrorModel

application/json

Unauthorized request. Response body may be empty.

403

ErrorModel

application/json

Access to this resource is forbidden with these credentials.

7.2.13. Model

AccountInformation

Information on a user’s account usage, payment history, transaction statistics.

Property Type Description

account_change_date

string

  • format: date

Date of the last change to the client’s account. This includes changes to the billing or shipping addresses, new payment methods or new users added.

Example: 2021-10-25

account_creation_indicator

string

  • enum

    • GUEST

    • NEW_ACCOUNT

    • EXISTING_ACCOUNT

What kind of account is it?

  • GUEST

  • NEW_ACCOUNT

  • EXISTING_ACCOUNT

Example: GUEST

account_id

string

The account ID.

Example: MC_ACC_12345678

account_opened_date

string

  • format: date

Date the client opened the account. This usually only applies if this is an EXISTING_ACCOUNT.

Example: 2021-10-25

add_card_attempts

integer

  • format: int32

  • maximum: 999

Number of add card attempts during the last 24 hours.

Example: 1

modification_indicator

string

  • enum

    • ACCOUNT_UPDATED_NOW

    • ACCOUNT_UPDATED_PAST

This field is applicable only if this is an EXISTING_ACCOUNT.

  • ACCOUNT_UPDATED_NOW

  • ACCOUNT_UPDATED_PAST

Example: ACCOUNT_UPDATED_NOW

password_change_date

string

  • format: date

Date the client last changed the account’s password. May be empty if the password has not been changed yet.

Example: 2021-10-25

password_change_indicator

string

  • enum

    • PASSWORD_CHANGED_NOW

    • PASSWORD_CHANGED_PAST

    • PASSWORD_NEVER_CHANGED

This field is applicable only if this is an EXISTING_ACCOUNT.

  • PASSWORD_CHANGED_NOW

  • PASSWORD_CHANGED_PAST

  • PASSWORD_NEVER_CHANGED

Example: PASSWORD_CHANGED_NOW

payment_account_date

string

  • format: date

Only applicable if PAYMENT_ACCOUNT_EXISTS.

Example: 2021-10-25

payment_account_history

string

  • enum

    • PAYMENT_ACCOUNT_EXISTS

    • PAYMENT_ACCOUNT_ADDED_NOW

This field is applicable only if this is a NEW_ACCOUNT or EXISTING_ACCOUNT.

  • PAYMENT_ACCOUNT_EXISTS

  • PAYMENT_ACCOUNT_ADDED_NOW

Example: PAYMENT_ACCOUNT_EXISTS

provisioning_day_count

integer

  • format: int32

  • maximum: 9999

The provisioning day counter.

Example: 1

purchases_six_month_count

integer

  • format: int32

  • maximum: 9999

Number of purchases with this account during the previous six months.

Example: 2

shipping_address_first_use

boolean

Applicable if this is not a guest account.

Example: false

shipping_address_first_use_date

string

  • format: date

Date when the shipping address was first used for this transaction. Only applies if firstUseOfShippingAddress is false and this is not a guest account.

Example: 2021-10-25

shipping_name_indicator

string

The shipping name indicator. Indicates if the account’s cardholder name equals the shipping name used for this transaction.

Example: 02

suspicious_account_activity

boolean

Indicates whether the merchant experienced suspicious activity (including previous fraud) on the account.

Example: false

transactions_day_count

integer

  • format: int32

  • maximum: 999

Number of transactions (successful or abandoned) of this account during the last 24 hours.

Example: 1

transactions_year_count

integer

  • format: int32

  • maximum: 9999

Number of transactions (successful or abandoned) of this account during the last 365 days.

Example: 1

AddressRequestData
Property Type Description

addition

boolean

Request to provide the addition of the address

Example: false

city

boolean

Request to provide the city of the address

Example: false

company_name

boolean

Request to provide the company name of the debtor

Example: false

country_name

boolean

Request to provide name of the country

Example: false

first_name

boolean

Request to provide the first name of the debtor

Example: false

house_number

boolean

Request to provide the house number of the address

Example: false

last_name

boolean

Request to provide the last name of the debtor

Example: false

postal_code

boolean

Request to provide the postal code of the address without spaces

Example: false

street

boolean

Request to provide the street of the address

Example: false

AliasAction

Specifies an alias and an operation to perform on it.

Property Type Description

action

string

  • required

  • enum

    • CREATE

    • UPDATE

    • USE

The action to perform.

  • CREATE: creates a new alias

  • UPDATE: updates an existing alias

  • USE: uses the data stored under the given alias (for example, to prefill a form).

alias

string

The alias value. If no value is set an alias is created by the system.

Example: 221f56ca355d8e6c42517749cf79ceb8

AliasBankAccountRequest

Contains information used to create an alias for a bank account. Either token or bank_account must be specified.

Property Type Description

address

Address data as applicable to most use cases.

alias

string

  • minLength: 0

  • maxLength: 50

The alias value. If no value is set an alias is created by the system.

Example: 221f56ca355d8e6c42517749cf79ceb8

bank_account

Information about a bank account.

token

string

  • minLength: 0

  • maxLength: 500

  • pattern: [a-zA-Z0-9/+=_-]*

The token value.

Example: eyJ0IjoiSFcyaS13cTB3PT0iLCJzIjoiaWIybzFRMHEifQ

AliasCreditCardRequest

Contains information used to create an alias for a credit card. Either token or credit_card must be specified.

Property Type Description

alias

string

  • minLength: 0

  • maxLength: 50

The alias value. If no value is set an alias is created by the system.

Example: 221f56ca355d8e6c42517749cf79ceb8

credit_card

Information about a credit card.

token

string

  • minLength: 0

  • maxLength: 500

  • pattern: [a-zA-Z0-9/+=_-]*

The token value.

Example: eyJ0IjoiSFcyaS13cTB3PT0iLCJzIjoiaWIybzFRMHEifQ

AliasInfo

Contains information about the created or updated alias. This field is null if the there was no 'alias_info' in the request.

Property Type Description

address

Address data as applicable to most use cases.

alias

string

Name of the alias.

Example: da2c9029-b180-42a7-b473-50d182a01f8a

bank_account

Information about a bank account.

credit_card

Information about a credit card.

AliasResponse

Common response of all alias requests.

Property Type Description

alias_info

Contains information about the created or updated alias. This field is null if the there was no 'alias_info' in the request.

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

AlternativeAddressData

Alternative address fields.

Property Type Description

street

string

  • minLength: 0

  • maxLength: 100

The street.

Example: Main Street

street_number

string

  • minLength: 0

  • maxLength: 10

The street number.

Example: 123a

AmountCurrency

An amount and a currency.

Property Type Description

amount

integer

  • required

  • format: int64

Minor currency value of an amount of money.

Example: 200

currency

string

  • required

  • minLength: 3

  • maxLength: 3

  • pattern: [A-Z]{3}

ISO 4217 currency code, three uppercase letters.

Example: EUR

ApplePayPaymentRequest

The payment request of the Apple Pay API.

Property Type Description

account_information

Information on a user’s account usage, payment history, transaction statistics.

alias_action

Specifies an alias and an operation to perform on it.

amount_total

  • required

An amount and a currency.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

customer_information

Details of a customer.

device_information

Technical details of a client.

means_of_payment

The means of payment that will be used. Exactly one of the given means is valid.

merchant_defined_information

merchant_information

Further information from the merchant.

merchant_risk_indicators

Contains data about the specific 3-D Secure 2.0 purchase which can be used for risk assessment.

processing_options

Array[string]

  • enum

    • FALLBACK_ON_SSL

    • RISKCHECK

Additional processing option for headless 3-D Secure transactions.

  • FALLBACK_ON_SSL: process the transaction flagged as channel-encrypted (SSL, 3-D Secure authentication was not performed) instead of 3-D Secure in case 3-D Secure authentication could not be performed.

  • RISKCHECK: process risk check transaction before start of 3-D Secure authentication. In case of declined risk check no credit card transaction is started

Example: ["RISKCHECK"]

recurring_payment

string

  • minLength: 1

  • maxLength: 50

  • pattern: [/0-9a-zA-Z_.:,+*$%-]+

Identifier of a recurring credit card payment.

Example: 07H987Tx3PF9VxL5G7RfNp

risk_check_additional_information

Additional information for calculation of the risk of a transaction.

sequence_type

string

  • enum

    • FINAL

    • FIRST

    • RECURRING

If this payment is part of a sequence of payments

  • FIRST: first payment of a sequence

  • RECURRING: follow-up payment

  • FINAL: last payment of a sequence

series_flag

string

  • enum

    • INSTALMENT

    • RECURRING

    • UCOF

Designates a payment as part of a series of payments.

  • INSTALMENT: for example in the case of paying a fixed sum in multiple partial payments.

  • RECURRING: for example in the case of a subscription or standing order.

  • UCOF: when a card number alias is created for future payments with the same credit card. In this case use alias_action with action CREATE with the first payment and the card number alias with the following payments. You can use the tx_action verify-mop with the first UCOF transaction to register a card number alias without a payment.

shipping_address

Address data as applicable to most use cases.

tds_20_data

3-D Secure data. Activates 3-D Secure processing if values are set.

travel_information

Travel information of the order.

ApplePayPaymentSessionRequest

The payment session creation request of the Apple Pay API.

Property Type Description

initiative_context

string

  • required

Domain where the payment is initiated and which is registered and validated at Apple Pay.

Example: testmerch.directpos.de

merchant_id

string

  • required

Merchant Identifier registered for payments at Apple Pay.

Example: merchant.9999900999.1.processingpagateq.merchantsolution

ApplePayPaymentSessionResponse
Property Type Description

applepay_payment_session_token

string

  • minLength: 1

  • maxLength: 10000

  • pattern: [a-zA-Z0-9:,\/+=_\-\\\{\}\[\]\" ]*

The Base64 encoded payment session response from Apple Pay.

Example: ewoJImVwb2NoVGltZXN0YW1wIjoxNjYzNzU0OTQwMDY5LAoJImV4cGlyZXNBdCI6MTY2Mzc1ODU0MDA2OSwKCSJtZXJjaGFudFNlc3Npb25JZGVudGlmaWVyIjoiU1NINTk3RjRCQjk5MkMzNEEzNjgwNDkwNTc1RjhEMTJBQ0NfQzIzQTBEMzAyNEZBQjhCMTJDQkI2NzY2MEI0QzFCNDhBQkYxMjcyRUM4QjYxMzk5RTNBNjQ3MjkwQzhCRTY3QSIsCgkibm9uY2UiOiI4NmI1ZDlmMSIsCgkibWVyY2hhbnRJZGVudGlmaWVyIjoiMjg3MzJBNEYwNUFFMDU1NTAwNzc2NDJDQzZCQUJBOEM1OTIzRTM0N0EwODM4MDNDMEI3QTgwODg3MTBDMzFFNCIsCgkiZG9tYWluTmFtZSI6InRlc3RtZXJjaC5kaXJlY3Rwb3MuZGUiLAoJImRpc3BsYXlOYW1lIjoiREIucHJvY2Vzc2luZ3BhZ2F0ZXEubWVyY2hhbnRzb2x1dGlvbiIsCgkic2lnbmF0dXJlIjoiMzA4MDA2MDkyYTg2NDg4NmY3MGQwMTA3MDJhMDgwMzA4MDAyMDEwMTMxMGYzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDAzMDgwMDYwOTJhODY0ODg2ZjcwZDAxMDcwMTAwMDBhMDgwMzA4MjAzZTMzMDgyMDM4OGEwMDMwMjAxMDIwMjA4NGMzMDQxNDk1MTlkNTQzNjMwMGEwNjA4MmE4NjQ4Y2UzZDA0MDMwMjMwN2EzMTJlMzAyYzA2MDM1NTA0MDMwYzI1NDE3MDcwNmM2NTIwNDE3MDcwNmM2OTYzNjE3NDY5NmY2ZTIwNDk2ZTc0NjU2NzcyNjE3NDY5NmY2ZTIwNDM0MTIwMmQyMDQ3MzMzMTI2MzAyNDA2MDM1NTA0MGIwYzFkNDE3MDcwNmM2NTIwNDM2NTcyNzQ2OTY2Njk2MzYxNzQ2OTZmNmUyMDQxNzU3NDY4NmY3MjY5NzQ3OTMxMTMzMDExMDYwMzU1MDQwYTBjMGE0MTcwNzA2YzY1MjA0OTZlNjMyZTMxMGIzMDA5MDYwMzU1MDQwNjEzMDI1NTUzMzAxZTE3MGQzMTM5MzAzNTMxMzgzMDMxMzMzMjM1Mzc1YTE3MGQzMjM0MzAzNTMxMzYzMDMxMzMzMjM1Mzc1YTMwNWYzMTI1MzAyMzA2MDM1NTA0MDMwYzFjNjU2MzYzMmQ3MzZkNzAyZDYyNzI2ZjZiNjU3MjJkNzM2OTY3NmU1ZjU1NDMzNDJkNTA1MjRmNDQzMTE0MzAxMjA2MDM1NTA0MGIwYzBiNjk0ZjUzMjA1Mzc5NzM3NDY1NmQ3MzMxMTMzMDExMDYwMzU1MDQwYTBjMGE0MTcwNzA2YzY1MjA0OTZlNjMyZTMxMGIzMDA5MDYwMzU1MDQwNjEzMDI1NTUzMzA1OTMwMTMwNjA3MmE4NjQ4Y2UzZDAyMDEwNjA4MmE4NjQ4Y2UzZDAzMDEwNzAzNDIwMDA0YzIxNTc3ZWRlYmQ2YzdiMjIxOGY2OGRkNzA5MGExMjE4ZGM3YjBiZDZmMmMyODNkODQ2MDk1ZDk0YWY0YTU0MTFiODM0MjBlZDgxMWYzNDA3ZTgzMzMxZjFjNTRjM2Y3ZWIzMjIwZDZiYWQ1ZDRlZmY0OTI4OTg5M2U3YzBmMTNhMzgyMDIxMTMwODIwMjBkMzAwYzA2MDM1NTFkMTMwMTAxZmYwNDAyMzAwMDMwMWYwNjAzNTUxZDIzMDQxODMwMTY4MDE0MjNmMjQ5YzQ0ZjkzZTRlZjI3ZTZjNGY2Mjg2YzNmYTJiYmZkMmU0YjMwNDUwNjA4MmIwNjAxMDUwNTA3MDEwMTA0MzkzMDM3MzAzNTA2MDgyYjA2MDEwNTA1MDczMDAxODYyOTY4NzQ3NDcwM2EyZjJmNmY2MzczNzAyZTYxNzA3MDZjNjUyZTYzNmY2ZDJmNmY2MzczNzAzMDM0MmQ2MTcwNzA2YzY1NjE2OTYzNjEzMzMwMzIzMDgyMDExZDA2MDM1NTFkMjAwNDgyMDExNDMwODIwMTEwMzA4MjAxMGMwNjA5MmE4NjQ4ODZmNzYzNjQwNTAxMzA4MWZlMzA4MWMzMDYwODJiMDYwMTA1MDUwNzAyMDIzMDgxYjYwYzgxYjM1MjY1NmM2OTYxNmU2MzY1MjA2ZjZlMjA3NDY4Njk3MzIwNjM2NTcyNzQ2OTY2Njk2MzYxNzQ2NTIwNjI3OTIwNjE2ZTc5MjA3MDYxNzI3NDc5MjA2MTczNzM3NTZkNjU3MzIwNjE2MzYzNjU3MDc0NjE2ZTYzNjUyMDZmNjYyMDc0Njg2NTIwNzQ2ODY1NmUyMDYxNzA3MDZjNjk2MzYxNjI2YzY1MjA3Mzc0NjE2ZTY0NjE3MjY0MjA3NDY1NzI2ZDczMjA2MTZlNjQyMDYzNmY2ZTY0Njk3NDY5NmY2ZTczMjA2ZjY2MjA3NTczNjUyYzIwNjM2NTcyNzQ2OTY2Njk2MzYxNzQ2NTIwNzA2ZjZjNjk2Mzc5MjA2MTZlNjQyMDYzNjU3Mjc0Njk2NjY5NjM2MTc0Njk2ZjZlMjA3MDcyNjE2Mzc0Njk2MzY1MjA3Mzc0NjE3NDY1NmQ2NTZlNzQ3MzJlMzAzNjA2MDgyYjA2MDEwNTA1MDcwMjAxMTYyYTY4NzQ3NDcwM2EyZjJmNzc3Nzc3MmU2MTcwNzA2YzY1MmU2MzZmNmQyZjYzNjU3Mjc0Njk2NjY5NjM2MTc0NjU2MTc1NzQ2ODZmNzI2OTc0NzkyZjMwMzQwNjAzNTUxZDFmMDQyZDMwMmIzMDI5YTAyN2EwMjU4NjIzNjg3NDc0NzAzYTJmMmY2MzcyNmMyZTYxNzA3MDZjNjUyZTYzNmY2ZDJmNjE3MDcwNmM2NTYxNjk2MzYxMzMyZTYzNzI2YzMwMWQwNjAzNTUxZDBlMDQxNjA0MTQ5NDU3ZGI2ZmQ1NzQ4MTg2ODk4OTc2MmY3ZTU3ODUwN2U3OWI1ODI0MzAwZTA2MDM1NTFkMGYwMTAxZmYwNDA0MDMwMjA3ODAzMDBmMDYwOTJhODY0ODg2Zjc2MzY0MDYxZDA0MDIwNTAwMzAwYTA2MDgyYTg2NDhjZTNkMDQwMzAyMDM0OTAwMzA0NjAyMjEwMGJlMDk1NzFmZTcxZTFlNzM1YjU1ZTVhZmFjYjRjNzJmZWI0NDVmMzAxODUyMjJjNzI1MTAwMmI2MWViZDZmNTUwMjIxMDBkMThiMzUwYTVkZDZkZDZlYjE3NDYwMzViMTFlYjJjZTg3Y2ZhM2U2YWY2Y2JkODM4MDg5MGRjODJjZGRhYTYzMzA4MjAyZWUzMDgyMDI3NWEwMDMwMjAxMDIwMjA4NDk2ZDJmYmYzYTk4ZGE5NzMwMGEwNjA4MmE4NjQ4Y2UzZDA0MDMwMjMwNjczMTFiMzAxOTA2MDM1NTA0MDMwYzEyNDE3MDcwNmM2NTIwNTI2ZjZmNzQyMDQzNDEyMDJkMjA0NzMzMzEyNjMwMjQwNjAzNTUwNDBiMGMxZDQxNzA3MDZjNjUyMDQzNjU3Mjc0Njk2NjY5NjM2MTc0Njk2ZjZlMjA0MTc1NzQ2ODZmNzI2OTc0NzkzMTEzMzAxMTA2MDM1NTA0MGEwYzBhNDE3MDcwNmM2NTIwNDk2ZTYzMmUzMTBiMzAwOTA2MDM1NTA0MDYxMzAyNTU1MzMwMWUxNzBkMzEzNDMwMzUzMDM2MzIzMzM0MzYzMzMwNWExNzBkMzIzOTMwMzUzMDM2MzIzMzM0MzYzMzMwNWEzMDdhMzEyZTMwMmMwNjAzNTUwNDAzMGMyNTQxNzA3MDZjNjUyMDQxNzA3MDZjNjk2MzYxNzQ2OTZmNmUyMDQ5NmU3NDY1Njc3MjYxNzQ2OTZmNmUyMDQzNDEyMDJkMjA0NzMzMzEyNjMwMjQwNjAzNTUwNDBiMGMxZDQxNzA3MDZjNjUyMDQzNjU3Mjc0Njk2NjY5NjM2MTc0Njk2ZjZlMjA0MTc1NzQ2ODZmNzI2OTc0NzkzMTEzMzAxMTA2MDM1NTA0MGEwYzBhNDE3MDcwNmM2NTIwNDk2ZTYzMmUzMTBiMzAwOTA2MDM1NTA0MDYxMzAyNTU1MzMwNTkzMDEzMDYwNzJhODY0OGNlM2QwMjAxMDYwODJhODY0OGNlM2QwMzAxMDcwMzQyMDAwNGYwMTcxMTg0MTlkNzY0ODVkNTFhNWUyNTgxMDc3NmU4ODBhMmVmZGU3YmFlNGRlMDhkZmM0YjkzZTEzMzU2ZDU2NjViMzVhZTIyZDA5Nzc2MGQyMjRlN2JiYTA4ZmQ3NjE3Y2U4OGNiNzZiYjY2NzBiZWM4ZTgyOTg0ZmY1NDQ1YTM4MWY3MzA4MWY0MzA0NjA2MDgyYjA2MDEwNTA1MDcwMTAxMDQzYTMwMzgzMDM2MDYwODJiMDYwMTA1MDUwNzMwMDE4NjJhNjg3NDc0NzAzYTJmMmY2ZjYzNzM3MDJlNjE3MDcwNmM2NTJlNjM2ZjZkMmY2ZjYzNzM3MDMwMzQyZDYxNzA3MDZjNjU3MjZmNmY3NDYzNjE2NzMzMzAxZDA2MDM1NTFkMGUwNDE2MDQxNDIzZjI0OWM0NGY5M2U0ZWYyN2U2YzRmNjI4NmMzZmEyYmJmZDJlNGIzMDBmMDYwMzU1MWQxMzAxMDFmZjA0MDUzMDAzMDEwMWZmMzAxZjA2MDM1NTFkMjMwNDE4MzAxNjgwMTRiYmIwZGVhMTU4MzM4ODlhYTQ4YTk5ZGViZWJkZWJhZmRhY2IyNGFiMzAzNzA2MDM1NTFkMWYwNDMwMzAyZTMwMmNhMDJhYTAyODg2MjY2ODc0NzQ3MDNhMmYyZjYzNzI2YzJlNjE3MDcwNmM2NTJlNjM2ZjZkMmY2MTcwNzA2YzY1NzI2ZjZmNzQ2MzYxNjczMzJlNjM3MjZjMzAwZTA2MDM1NTFkMGYwMTAxZmYwNDA0MDMwMjAxMDYzMDEwMDYwYTJhODY0ODg2Zjc2MzY0MDYwMjBlMDQwMjA1MDAzMDBhMDYwODJhODY0OGNlM2QwNDAzMDIwMzY3MDAzMDY0MDIzMDNhY2Y3MjgzNTExNjk5YjE4NmZiMzVjMzU2Y2E2MmJmZjQxN2VkZDkwZjc1NGRhMjhlYmVmMTljODE1ZTQyYjc4OWY4OThmNzliNTk5Zjk4ZDU0MTBkOGY5ZGU5YzJmZTAyMzAzMjJkZDU0NDIxYjBhMzA1Nzc2YzVkZjMzODNiOTA2N2ZkMTc3YzJjMjE2ZDk2NGZjNjcyNjk4MjEyNmY1NGY4N2E3ZDFiOTljYjliMDk4OTIxNjEwNjk5MGYwOTkyMWQwMDAwMzE4MjAxOGQzMDgyMDE4OTAyMDEwMTMwODE4NjMwN2EzMTJlMzAyYzA2MDM1NTA0MDMwYzI1NDE3MDcwNmM2NTIwNDE3MDcwNmM2OTYzNjE3NDY5NmY2ZTIwNDk2ZTc0NjU2NzcyNjE3NDY5NmY2ZTIwNDM0MTIwMmQyMDQ3MzMzMTI2MzAyNDA2MDM1NTA0MGIwYzFkNDE3MDcwNmM2NTIwNDM2NTcyNzQ2OTY2Njk2MzYxNzQ2OTZmNmUyMDQxNzU3NDY4NmY3MjY5NzQ3OTMxMTMzMDExMDYwMzU1MDQwYTBjMGE0MTcwNzA2YzY1MjA0OTZlNjMyZTMxMGIzMDA5MDYwMzU1MDQwNjEzMDI1NTUzMDIwODRjMzA0MTQ5NTE5ZDU0MzYzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDBhMDgxOTUzMDE4MDYwOTJhODY0ODg2ZjcwZDAxMDkwMzMxMGIwNjA5MmE4NjQ4ODZmNzBkMDEwNzAxMzAxYzA2MDkyYTg2NDg4NmY3MGQwMTA5MDUzMTBmMTcwZDMyMzIzMDM5MzIzMTMxMzAzMDM5MzAzMDVhMzAyYTA2MDkyYTg2NDg4NmY3MGQwMTA5MzQzMTFkMzAxYjMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMGExMGEwNjA4MmE4NjQ4Y2UzZDA0MDMwMjMwMmYwNjA5MmE4NjQ4ODZmNzBkMDEwOTA0MzEyMjA0MjAwOWNhYmJiZWVhMjFmNWRiOWM4ZDdjNzdjMjM3N2ZkOThkNDdkYjQ2ZTIxNjlkZmU1ZWU1MGM0OWQwZTRmNjJkMzAwYTA2MDgyYTg2NDhjZTNkMDQwMzAyMDQ0ODMwNDYwMjIxMDA5ZDczN2Q4NTY5YmE0M2U4NTkyODU3MmZlNThkYzIxODYzODMzY2JhY2QxNTI1YTlhZWQ3NjE0ODk4NGFkMjc0MDIyMTAwZDA3YWNiOTUyYTBhMGVlMzk0ZGZlYjY5ZWUxMmRiODFmNDRmY2JmMGRjMWRmMzMxMTFkMmUxOTBkZTNhYjIyMTAwMDAwMDAwMDAwMCIsCgkib3BlcmF0aW9uYWxBbmFseXRpY3NJZGVudGlmaWVyIjoiREIucHJvY2Vzc2luZ3BhZ2F0ZXEubWVyY2hhbnRzb2x1dGlvbjoyODczMkE0RjA1QUUwNTU1MDA3NzY0MkNDNkJBQkE4QzU5MjNFMzQ3QTA4MzgwM0MwQjdBODA4ODcxMEMzMUU0IiwKCSJyZXRyaWVzIjowLAoJInBzcElkIjoiMjg3MzJBNEYwNUFFMDU1NTAwNzc2NDJDQzZCQUJBOEM1OTIzRTM0N0EwODM4MDNDMEI3QTgwODg3MTBDMzFFNCIKfQo=

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

BankAccount

Information about a bank account.

Property Type Description

account_holder

string

  • minLength: 1

  • maxLength: 70

The account holder of the bank account.

Example: Max Muster

bank_name

string

Name of the bank.

Example: Musterbank

bic

string

  • minLength: 11

  • maxLength: 11

  • pattern: [A-Z]{6}[A-Z2-9][A-NP-Z0-9][A-Z0-9]{3}

The business identifier code (BIC) of a bank account. If the branch identifier (positions 9 to 11) is not applicable, it is set to "XXX".

Example: VZVDDED1XXX

iban

string

  • required

  • minLength: 15

  • maxLength: 34

  • pattern: [A-Z]{2}[0-9]{2}[A-Z0-9*]{11,30}

The international bank account number of the bank account.

Example: DE86100700004567891263

BaseResponse
Property Type Description

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

Basket

A generalized shopping basket.

Property Type Description

basket_discount

An amount and a currency.

basket_id

string

  • minLength: 0

  • maxLength: 140

Identification of the basket. Depending on the backend services the value might be shortened or special characters might be removed before sending.

See the user guide for the respective payment system for more information.

Example: basket123456

basket_items

Array[BasketItem]

An array of items that the customer purchases from the merchant.

basket_type

string

  • enum

    • DIGITAL

    • MIXED

    • PHYSICAL

Type of a shopping basket.

  • DIGITAL: Basket contains digital items only.

  • MIXED: Basket contains items of various types.

  • PHYSICAL: Basket contains physical items only.

Example: DIGITAL

extensions

Service specific basket fields.

invoice_id

string

  • minLength: 0

  • maxLength: 127

The API caller-provided external invoice number for this order.

Example: RE123345

shipping_costs

An amount and a currency.

soft_descriptor

string

Dynamic text used to construct the statement descriptor that appears on a payer’s card statement.

Example: 800-123-1234

BasketExtensions

Service specific basket fields.

Property Type Description

paypal_data

Service specific basket fields for PayPal.

BasketItem

A purchasable item that is part of a shopping basket’s list of items.

Property Type Description

description

string

  • minLength: 0

  • maxLength: 127

Used for storing merchant’s internal order number or other reference.

Example: BI123456

extensions

Service specific basket item fields.

item_discount

Net and gross money amount accompanied by a tax percentage and currency.

name

string

  • minLength: 0

  • maxLength: 127

Descriptive name of the order item.

Example: A fine shirt

quantity

A quantity.

reference

string

  • minLength: 0

  • maxLength: 64

Article number, SKU or similar.

Example: UGG-BB-PUR-06

unit_price

Net and gross money amount accompanied by a tax percentage and currency.

BasketItemExtensions

Service specific basket item fields.

Property Type Description

klarna_data

Service specific basket item fields for Klarna related use cases.

paypal_data

Service specific basket item fields for PayPal.

riskcheck_data

Service specific basket item fields for riskcheck related use cases.

BasketItemKlarnaData

Service specific basket item fields for Klarna related use cases.

Property Type Description

image_url

string

  • minLength: 0

  • maxLength: 1024

Product image URL in the merchant’s webshop. May be used to embed the image into communication between Klarna and the customer.

product_identifiers

Additional information identifying the basket item.

product_url

string

  • minLength: 0

  • maxLength: 1024

Product’s URL in the merchant’s webshop. May be used in communication between Klarna and the customer.

BasketItemPayPalData

Service specific basket item fields for PayPal.

Property Type Description

paypal_type

string

  • required

  • enum

    • DIGITAL_GOODS

    • PHYSICAL_GOODS

    • DONATION

PayPal specific type of an order item.

  • DIGITAL_GOODS: Goods that are stored, delivered, and used in electronic format.

  • PHYSICAL_GOODS: A tangible item that can be shipped with proof of delivery.

  • DONATION: A contribution or gift for which no good or service is exchanged.

Example: PHYSICAL_GOODS

BasketItemRiskCheckData

Service specific basket item fields for riskcheck related use cases.

Property Type Description

distributor_product_sku

string

  • minLength: 0

  • maxLength: 15

Product’s identifier code.

Example: 12345678

gift_card_currency

string

If riskcheck_type is GIFT_CERTIFICATE, this field must contain the ISO-4217-3 alpha-numeric currency code used for the gift card purchase.

Example: EUR

is_gift

boolean

If billing and shipping addresses are different:

true: Order risk increases slightly. false: Order risk increases significantly.

Example: true

product_risk

string

  • enum

    • LOW

    • NORMAL

    • HIGH

Indicates the product’s risk level. This field may contain one of the following values:

  • LOW: The product is associated with a low number of chargebacks.

  • NORMAL: The product is associated with a normal number of chargebacks.

  • HIGH: The product is associated with a high number of chargebacks.

Example: NORMAL

risk_check_passenger

A (plane) passenger as modelled from the point of view of a risk check service.

riskcheck_type

string

  • enum

    • ADULT_CONTENT

    • COUPON

    • DEFAULT

    • ELECTRONIC_GOOD

    • ELECTRONIC_SOFTWARE

    • GIFT_CERTIFICATE

    • HANDLING_ONLY

    • SERVICE

    • SHIPPING_ONLY

    • SHIPPING_AND_HANDLING

    • SUBSCRIPTION

Riskcheck specific type of an order item.

  • ADULT_CONTENT: Adult content.

  • COUPON: Coupon applied to the entire order.

  • DEFAULT: Default value for the product code. This value is used if a request message does not include a value for the product code.

  • ELECTRONIC_GOOD: Electronic product other than software.

  • ELECTRONIC_SOFTWARE: Software distributed electronically rather than on physical media.

  • GIFT_CERTIFICATE: Gift certificate.

  • HANDLING_ONLY: A fee that covers the merchant’s administrative selling costs.

  • SERVICE: An arbitrary service that a merchant performs for customers.

  • SHIPPING_ONLY: Charge for transporting tangible personal property from the merchant to the customer.

  • SHIPPING_AND_HANDLING: Handling & Shipping fees combined.

  • SUBSCRIPTION: Subscription to a website or other type of subscribable content.

Example: SHIPPING_ONLY

shipping_destination_types

string

  • enum

    • COMMERCIAL

    • RESIDENTIAL

    • STORE

Destination to where the item will be shipped.

  • COMMERCIAL

  • RESIDENTIAL

  • STORE

Example: RESIDENTIAL

BasketPayPalData

Service specific basket fields for PayPal.

Property Type Description

custom_id

string

  • minLength: 0

  • maxLength: 127

The API caller-provided external ID. Used to reconcile client transactions with PayPal transactions. Appears in transaction and settlement reports but is not visible to the payer.

Example: CUSTOMID123

Callback

Data for the shop notification.

Property Type Description

additional_data

string

  • minLength: 0

  • maxLength: 255

Freely allocatable field. Will be returned in the shop notification.

Example: SESSION_1234X

notify_url

string

  • minLength: 1

  • maxLength: 500

URL for the shop notification.

skip

boolean

  • default: false

If true the shop notification is skipped.

CommonAddress

Address data as applicable to most use cases.

Property Type Description

address_line_1

string

  • minLength: 0

  • maxLength: 60

An address line.

Example: Main Street 123

address_line_2

string

  • minLength: 0

  • maxLength: 60

An address line. For 3DS this maps to additional1.

Example: Building A

address_line_3

string

  • minLength: 0

  • maxLength: 60

An address line. For 3DS this maps to additional2.

Example: Apartment 12

city

string

  • minLength: 0

  • maxLength: 60

City of the address.

Example: Munich

company_name

string

  • minLength: 0

  • maxLength: 60

Name of the company.

Example: Acme Inc.

country

string

  • minLength: 2

  • maxLength: 2

  • pattern: [A-Z]{2}

The ISO 3166 Alpha-2 country code (upper case) of the individual’s homeland.

Example: DE

email

string

  • minLength: 0

  • maxLength: 255

  • pattern: .*@.*\..*

Email address of the individual.

Example: test_jane@gmail.com

extensions

Service specific address fields.

first_name

string

  • minLength: 0

  • maxLength: 60

First name of the individual.

Example: Jane

last_name

string

  • minLength: 0

  • maxLength: 60

Last name of the individual.

Example: Doe

phone_contact

A means of contacting a customer by phone.

postal_code

string

  • minLength: 0

  • maxLength: 60

Postal code of the address.

Example: 80469

state

string

  • minLength: 0

  • maxLength: 100

State or province of the address.

Example: BY

title

string

  • minLength: 0

  • maxLength: 100

Customer’s title.

Example: Mrs

CommonAddressExtensions

Service specific address fields.

Property Type Description

alternative_address_data

Alternative address fields.

Contacts

Means of contacting the customer.

Property Type Description

phone_contacts

Array[PhoneContact]

A means of contacting a customer by phone.

Example:

{"phone_contacts":[{"phone_type":"FAX","phone_number":"+442071838750"}]}
CreditCard

Information about a credit card.

Property Type Description

cardholder

string

  • minLength: 2

  • maxLength: 27

The holder of a credit card. Required for 3-D Secure 2.0 payments.

Example: Max Muster

code

string

  • minLength: 3

  • maxLength: 4

  • pattern: [0-9]*

Card verification number of the credit card (also CVV or CVC).

Example: 332

expiry_date

  • required

The credit card expiry date.

number

string

  • required

  • minLength: 10

  • maxLength: 19

  • pattern: [0-9]*

The credit card number (Primary Account Number). It is sometimes masked in response messages, for example 411111**1111.

Example: 41111111111111111

CreditCardInfo

Information about a credit card.

Property Type Description

brand

string

  • enum

    • AMEX

    • DINERS

    • JCB

    • MAESTRO

    • MASTERCARD

    • VISA

The credit card brand. The use of this field requires an explicit activation. Please contact customer support. Possible values:

  • AMEX

  • DINERS

  • JCB

  • MAESTRO

  • MASTERCARD

  • VISA

Example: VISA

cardholder

string

  • minLength: 2

  • maxLength: 27

The holder of a credit card.

Example: Max Muster

expiry_date

  • required

The credit card expiry date.

issuer_country

string

The card issuers country of origin. The use of this field requires an explicit activation. Please contact customer support.

number

string

  • required

  • minLength: 10

  • maxLength: 19

  • pattern: [0-9]*

The credit card number (Primary Account Number). It is sometimes masked in response messages, for example 411111**1111.

Example: 41111111111111111

CustomerExtensionPayPalData

PayPal specific customer information fields.

Property Type Description

payer_id

string

  • minLength: 0

  • maxLength: 13

Example: 23456789ABCDE

tax_info

Legal tax information of the payer.

CustomerInformation

Details of a customer.

Property Type Description

contacts

Means of contacting the customer.

customer_id

string

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

Technical identification number of a customer.

Example: C1234-AX

date_of_birth

string

  • format: date

Customer’s date of birth.

Example: 1975-06-30

extensions

Service specific customer information fields.

gender

string

  • enum

    • DIVERSE

    • FEMALE

    • MALE

Customer’s gender.

  • DIVERSE

  • FEMALE

  • MALE

Example: FEMALE

personal_identifications

Customer’s available identifications.

title

string

  • minLength: 0

  • maxLength: 100

Customer’s title.

Example: Mrs

CustomerInformationExtensions

Service specific customer information fields.

Property Type Description

paypal_data

PayPal specific customer information fields.

DebtorContactDetailsRequestData
Property Type Description

email

boolean

Request to provide the e-mail address of the debtor

Example: false

phone_number

boolean

Request to provide the phone number of the debtor in E.164 format

Example: false

DeviceInformation

Technical details of a client.

Property Type Description

color_depth

string

  • enum

    • B1

    • B4

    • B8

    • B15

    • B16

    • B24

    • B32

    • B48

The bit depth of the color palette for displaying images, in bits per pixel. See https://en.wikipedia.org/wiki/Color_depth. Possible values:

  • B1

  • B4

  • B8

  • B15

  • B16

  • B24

  • B32

  • B48.

If the actual color depth is not supported by this enum, round down to the nearest supported color depth. For example, in case of deep color (30-bit), set B24.

Example: B24

cookies_accepted

boolean

Whether or not the browser accepts cookies.

Example: true

http_accept_browser_value

string

  • minLength: 0

  • maxLength: 2048

Value of the 'Accept' header sent by the customer’s web browser. Note: If the customer’s browser provides a value, you must include it with your request.

Example: text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, /;q=0.8

http_accept_content

string

  • minLength: 0

  • maxLength: 2048

The exact content of the HTTP accept header.

Example: text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, /;q=0.8

http_browser_email

string

  • minLength: 0

  • maxLength: 255

  • pattern: .*@.*\..*

Email address set in the customer’s browser. May differ from customer’s actual email.

Example: mustermann@example.com

http_browser_java_enabled

boolean

Is the browser able to execute Java. Value is taken from the navigator.javaEnabled property.

Example: false

http_browser_java_script_enabled

boolean

Is the browser able to execute JavaScript. Background: Merchants may want to fingerprint a cardholder’s browser.

Example: false

http_browser_language

string

  • minLength: 0

  • maxLength: 8

Browser language as defined in IETF BCP47. See https://en.wikipedia.org/wiki/IETF_language_tag.

Example: en-US

http_browser_screen_height

integer

  • format: int32

  • minimum: 0

Total height of the client’s screen in pixels.

Example: 864

http_browser_screen_width

integer

  • format: int32

  • minimum: 0

Total width of the client’s screen in pixels.

Example: 1536

http_browser_time_difference

integer

  • format: int32

  • minimum: -1440

  • maximum: 1440

Time difference between UTC time and the client’s browser’s local time in minutes.

Example: 300

ip_address

string

  • minLength: 0

  • maxLength: 45

  • pattern: 

    ((^\s*((([0-9]|..
    Show Pattern

IP address of the client. Both IPv4 and IPv6 are supported.

Example: 192.168.0.1

user_agent

string

  • minLength: 0

  • maxLength: 40

Client’s browser as identified by the HTTP header data.

Example: Mozilla

user_agent_browser_value

string

  • minLength: 0

  • maxLength: 255

Value of the User-Agent header sent by the client’s browser.

Example: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0

EScoreAddresscheckResponse
Property Type Description

address

Address data as applicable to most use cases.

address_note

string

  • enum

    • PPB

    • PHB

    • PAB

    • PNZ

    • PPV

    • PKI

    • PPF

    • PNP

    • PUG

    • PUZ

Possible features for the result of address verification. The following values are valid:

PPB: Confirmation on personal level. The address supplied (incl. name and first name) was completely correct or could be corrected completely. In this case only the freight routing code and possibly the corrected fields are returned to the initiator.

PHB: Confirmation on household level. The address supplied (incl. name without first name) could be corrected completely or was completely correct on household level and had a first name, which is not rectifiable/known. In this case the corrected fields except the first name are returned to the initiator, as the first name could not be confirmed. The existence of the first name at this address could not be confirmed. In addition the field eScoreFreightRoutingCode is returned to the initiator as long as the freight routing code is available.

PAB: Confirmation on address level. The address supplied (without name, without first name) could be corrected completely or on address level was already complete and had not rectifiable/known personal data. In this case the corrected fields except the first name and surname are returned to the initiator, as the first name and surname could not be confirmed. The existence of the first name and surname at this address could not be confirmed. In addition the field eScoreFreightRoutingCode is returned to the initiator as long as the freight routing code is available.

PNZ: The person at the address supplied is known, but at this address is not or no longer deliverable. This corresponds to a confirmation on address level (PAB), however, with the above-mentioned limitation, that the person queried is undeliverable there.

PPV: The person at the address supplied is deceased according to the Deutsche Post (German mail).

PKI: The response of the Deutsche Post (German mail) is possibly contradictory and/or ambiguous. Therefore the person/address is not assessed!

PPF: The address is postally wrong.

PNP: The address cannot be checked because it contains structural errors, for example the name is missing.

PUG: The address is formally correct, but the building is not known.

PUZ: Outdated address. The person moved away, but the new address is known.

Example: PPB

customer_information

Details of a customer.

event_id

string

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Example: E5686585867636541231230

freight_routing_code

string

  • minLength: 0

  • maxLength: 12

  • pattern: .*

Freight routing code of the Deutsche Post AG (German mail).

Example: 04109056012

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

reason

string

  • required

  • default: ABK

  • enum

    • ABK

    • ABV

    • BZV

    • BMT

    • BFT

    • ABI

    • ABF

    • ABD

    • ABW

    • ABL

    • BKV

    • BKE

    • BKA

    • BBS

    • BMV

    • BFV

    • BER

Codes for the classification of the credit assessments. The following values are valid:

ABK: Request for credit assessment before concluding a purchase contract (in particular purchase on account or by instalments.

ABV: Request for credit assessment before concluding an insurance contract.

BZV: Credit assessment within the scope of evaluating the reliability of an insurance broker or an insurance field representative.

BMT: Credit assessment before opening or installing a mobile telecommunication account.

BFT: Request for credit assessment before or in connection with the initiation or carrying out of debt-collecting measures.

ABI: Request for credit assessment before takeover/purchase of a claim or before assuming del credere liability.

ABF: Request for credit assessment before concluding a service contract.

ABD: Request for credit assessment before concluding a contract for work and labour.

ABW: Request for credit assessment before concluding a contract for work and labour.

ABL: Request for credit assessment before concluding a lease or rental contract (chattels).

BKV: Credit assessment before granting of credit.

BKE: Credit assessment before opening an account.

BKA: Credit assessment due to a credit or customer card application.

BBS: Credit assessment before concluding a building loan contract.

BMV: Credit assessment before concluding a rental contract (real estate).

BFV: Credit assessment before concluding a franchising contract.

BER: Credit assessment due to ascertainment order (credit agency company).

Example: ABD

scoring_rc

string

  • default: U

  • enum

    • G

    • Y

    • R

    • U

Traffic light value that allows you a basic estimate of a customer’s credit-worthiness. The following values are valid:

G: green - There are no negative features.

Y: yellow/amber - There is a soft negative feature.

R: red - There are more than one soft negative features or at least one medium or hard negative feature.

U: unknown

Example: G

tx_id

string

Unique transaction identifier. Can be used to reference this transaction.

Example: 020LMG10jxSI8FN0OC4vLR

EScoreCreditassessmentResponse
Property Type Description

address

Address data as applicable to most use cases.

customer_information

Details of a customer.

event_id

string

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Example: E5686585867636541231230

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

negative_criteria

If scoring_rc=Y or scoring_rc=R, several possible.

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

reason

string

  • required

  • default: ABK

  • enum

    • ABK

    • ABV

    • BZV

    • BMT

    • BFT

    • ABI

    • ABF

    • ABD

    • ABW

    • ABL

    • BKV

    • BKE

    • BKA

    • BBS

    • BMV

    • BFV

    • BER

Codes for the classification of the credit assessments. The following values are valid:

ABK: Request for credit assessment before concluding a purchase contract (in particular purchase on account or by instalments.

ABV: Request for credit assessment before concluding an insurance contract.

BZV: Credit assessment within the scope of evaluating the reliability of an insurance broker or an insurance field representative.

BMT: Credit assessment before opening or installing a mobile telecommunication account.

BFT: Request for credit assessment before or in connection with the initiation or carrying out of debt-collecting measures.

ABI: Request for credit assessment before takeover/purchase of a claim or before assuming del credere liability.

ABF: Request for credit assessment before concluding a service contract.

ABD: Request for credit assessment before concluding a contract for work and labour.

ABW: Request for credit assessment before concluding a contract for work and labour.

ABL: Request for credit assessment before concluding a lease or rental contract (chattels).

BKV: Credit assessment before granting of credit.

BKE: Credit assessment before opening an account.

BKA: Credit assessment due to a credit or customer card application.

BBS: Credit assessment before concluding a building loan contract.

BMV: Credit assessment before concluding a rental contract (real estate).

BFV: Credit assessment before concluding a franchising contract.

BER: Credit assessment due to ascertainment order (credit agency company).

Example: ABD

score

string

Subtly graduated result of the credit assessment. The following values are valid:

Credit Assessment (ES0012):

550: There are no negative features., scoring_rc = G, credit assessment = KI

540: A soft feature, cleared., scoring_rc = G, credit assessment = Feature cleared

340: Medium feature(s), cleared or more than one soft feature cleared., scoring_rc = Y, credit assessment = Feature cleared

320: A message with reservations, soft., scoring_rc = Y, credit assessment = Mwr

310: A soft feature., scoring_rc = Y, credit assessment = Feature

250: Message with reservations marked a) hard/medium or b) more than one data record exist., scoring_rc = Y, credit assessment = Mwr

120: Person registered as deceased., scoring_rc = R, credit assessment = +

110: Requested address is registered as risk address., scoring_rc = R, credit assessment = TKZ 5

100: Person with negative feature(s) medium or hard or more than one soft., scoring_rc = R, credit assessment = Features

Integrated Address Verification, Credit Assessment, and Scoring (ES0015):

980: No negative features, score >= 500., scoring_rc = G, credit assessment = KI, address verification = PPB

970: No negative features, score >= 500., scoring_rc = G, credit assessment = KI, address verification = PHB

960: No negative features, score >450 <500., scoring_rc = G, credit assessment = KI, address verification = PPB

950: No negative features, score >450 <500., scoring_rc = G, credit assessment = KI, address verification = PHB

760: No negative features, score >= 500., scoring_rc = G, credit assessment = KI, address verification = PAB

750: No negative features, score >450 <500., scoring_rc = G, credit assessment = KI, address verification = PAB

560: No negative features, score >= 500., scoring_rc = G, credit assessment = KI, address verification = PKI

550: No negative features, score >450 <500., scoring_rc = G, credit assessment = KI, address verification = PKI

540: A soft feature, cleared., scoring_rc = G, credit assessment = Feature cleared, address verification = Any

530: No negative features, score not possible., scoring_rc = G, credit assessment = KI, address verification = Any

460: No negative features, score >=500., scoring_rc = G, credit assessment = KI, address verification = PPF

450: No negative features, score >450 <500., scoring_rc = G, credit assessment = KI, address verification = PPF

370: No negative features, score >=500., scoring_rc = Y, credit assessment = KI, address verification = PNZ

360: No negative features, score >450 <500., scoring_rc = Y, credit assessment = KI, address verification = PNZ

350: No negative features, score ⇐450., scoring_rc = Y, credit assessment = KI, address verification = Any

340: Medium feature(s), cleared or more than one soft feature, cleared., scoring_rc = Y, credit assessment = Feature cleared, address verification = Any

320: A message with reservations, soft., scoring_rc = Y, credit assessment = Mwr, address verification = Any

310: A soft feature., scoring_rc = Y, credit assessment = Feature, address verification = Any

250: Message with reservations marked a) hard/medium or b) more than one data record exist., scoring_rc = Y, credit assessment = Mwr, address verification = Any

120: Person registered as deceased., scoring_rc = R, credit assessment = +, address verification = Any

110: Requested address is registered as risk address., scoring_rc = R, credit assessment = TKZ 5, address verification = Any

100: Person with negative feature(s)medium or hard or more than one soft., scoring_rc = R, credit assessment = Features, address verification = Any

Example: 550

scoring_rc

string

  • default: U

  • enum

    • G

    • Y

    • R

    • U

Traffic light value that allows you a basic estimate of a customer’s credit-worthiness. The following values are valid:

G: green - There are no negative features.

Y: yellow/amber - There is a soft negative feature.

R: red - There are more than one soft negative features or at least one medium or hard negative feature.

U: unknown

Example: G

tx_id

string

Unique transaction identifier. Can be used to reference this transaction.

Example: 020LMG10jxSI8FN0OC4vLR

EScoreRPPRequest
Property Type Description

bank_account

  • required

Information about a bank account.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

customer_information

Details of a customer.

device_information

Technical details of a client.

merchant_information

Further information from the merchant.

shipping_address

Address data as applicable to most use cases.

EScoreRPPResponse
Property Type Description

bank_account

  • required

Information about a bank account.

bank_account_validation_message

string

  • minLength: 0

  • maxLength: 30

  • pattern: .*

Description of the validation result.

bank_account_validation_result

string

  • minLength: 0

  • maxLength: 2

  • pattern: [0-9]+

Result of the validation. The following values are valid:

00: The bank account details are valid.

01: The bank account details are valid but the bank code belongs to a subsidiary of the Bundesbank.

02: The bank code is marked as deleted and was replaced by the successor bank code.

03: The BIC does not match the bank code included in the IBAN.

04: The bank code does not match the bank code included in the IBAN.

05: The account number does not match the account number included in the IBAN.

06: The country code does not match the country code included in the IBAN.

07: The IBAN could not be determined unambiguously or the account number could not be validated unambiguously. If possible, the bank account details should be verified manually.

08: The BIC could not be determined.

10: The IBAN check sum is invalid.

11: The country code in the IBAN is invalid.

12: The IBAN format is invalid.

13: The BIC is invalid.

14: The bank code is invalid.

15: The IBAN cannot be determined.

16: The account number is invalid.

Example: 08

error_code_name

string

  • minLength: 0

  • maxLength: 33

  • pattern: .*

Error code of the RPP check.

Example: parsingError

error_description

string

  • minLength: 0

  • maxLength: 50

  • pattern: .*

Error description of the RPP check.

event_id

string

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Example: E5686585867636541231230

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

rpp_match

string

  • pattern: [01]

  • enum

    • 0

    • 1

Hit in RPP. The following values are valid:

0: no hit

1: hit(s)

Example: 1

rpp_result

Result of an RPP check.

scoring_rc

string

  • default: U

  • enum

    • G

    • Y

    • R

    • U

Traffic light value that allows you a basic estimate of a customer’s credit-worthiness. The following values are valid:

G: green - There are no negative features.

Y: yellow/amber - There is a soft negative feature.

R: red - There are more than one soft negative features or at least one medium or hard negative feature.

U: unknown

Example: G

tx_id

string

Unique transaction identifier. Can be used to reference this transaction.

Example: 020LMG10jxSI8FN0OC4vLR

EScoreRequest
Property Type Description

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

customer_information

Details of a customer.

device_information

Technical details of a client.

merchant_information

Further information from the merchant.

reason

string

  • default: ABK

  • enum

    • ABK

    • ABV

    • BZV

    • BMT

    • BFT

    • ABI

    • ABF

    • ABD

    • ABW

    • ABL

    • BKV

    • BKE

    • BKA

    • BBS

    • BMV

    • BFV

    • BER

Codes for the classification of the credit assessments. The following values are valid:

ABK: Request for credit assessment before concluding a purchase contract (in particular purchase on account or by instalments.

ABV: Request for credit assessment before concluding an insurance contract.

BZV: Credit assessment within the scope of evaluating the reliability of an insurance broker or an insurance field representative.

BMT: Credit assessment before opening or installing a mobile telecommunication account.

BFT: Request for credit assessment before or in connection with the initiation or carrying out of debt-collecting measures.

ABI: Request for credit assessment before takeover/purchase of a claim or before assuming del credere liability.

ABF: Request for credit assessment before concluding a service contract.

ABD: Request for credit assessment before concluding a contract for work and labour.

ABW: Request for credit assessment before concluding a contract for work and labour.

ABL: Request for credit assessment before concluding a lease or rental contract (chattels).

BKV: Credit assessment before granting of credit.

BKE: Credit assessment before opening an account.

BKA: Credit assessment due to a credit or customer card application.

BBS: Credit assessment before concluding a building loan contract.

BMV: Credit assessment before concluding a rental contract (real estate).

BFV: Credit assessment before concluding a franchising contract.

BER: Credit assessment due to ascertainment order (credit agency company).

Example: ABD

shipping_address

Address data as applicable to most use cases.

EScoreScoringResponse
Property Type Description

address

Address data as applicable to most use cases.

address_note

string

  • required

  • enum

    • PPB

    • PHB

    • PAB

    • PNZ

    • PPV

    • PKI

    • PPF

    • PNP

    • PUG

    • PUZ

Possible features for the result of address verification. The following values are valid:

PPB: Confirmation on personal level. The address supplied (incl. name and first name) was completely correct or could be corrected completely. In this case only the freight routing code and possibly the corrected fields are returned to the initiator.

PHB: Confirmation on household level. The address supplied (incl. name without first name) could be corrected completely or was completely correct on household level and had a first name, which is not rectifiable/known. In this case the corrected fields except the first name are returned to the initiator, as the first name could not be confirmed. The existence of the first name at this address could not be confirmed. In addition the field eScoreFreightRoutingCode is returned to the initiator as long as the freight routing code is available.

PAB: Confirmation on address level. The address supplied (without name, without first name) could be corrected completely or on address level was already complete and had not rectifiable/known personal data. In this case the corrected fields except the first name and surname are returned to the initiator, as the first name and surname could not be confirmed. The existence of the first name and surname at this address could not be confirmed. In addition the field eScoreFreightRoutingCode is returned to the initiator as long as the freight routing code is available.

PNZ: The person at the address supplied is known, but at this address is not or no longer deliverable. This corresponds to a confirmation on address level (PAB), however, with the above-mentioned limitation, that the person queried is undeliverable there.

PPV: The person at the address supplied is deceased according to the Deutsche Post (German mail).

PKI: The response of the Deutsche Post (German mail) is possibly contradictory and/or ambiguous. Therefore the person/address is not assessed!

PPF: The address is postally wrong.

PNP: The address cannot be checked because it contains structural errors, for example the name is missing.

PUG: The address is formally correct, but the building is not known.

PUZ: Outdated address. The person moved away, but the new address is known.

Example: PPB

customer_information

Details of a customer.

event_id

string

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Example: E5686585867636541231230

freight_routing_code

string

  • minLength: 0

  • maxLength: 12

  • pattern: .*

Freight routing code of the Deutsche Post AG (German mail).

Example: 04109056012

informa_score_value

string

  • minLength: 0

  • maxLength: 3

  • pattern: .*

Generated scoring value of the InFoScore Consumer Data GmbH.

Example: 480

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

negative_criteria

If scoring_rc=Y or scoring_rc=R, several possible.

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

reason

string

  • required

  • default: ABK

  • enum

    • ABK

    • ABV

    • BZV

    • BMT

    • BFT

    • ABI

    • ABF

    • ABD

    • ABW

    • ABL

    • BKV

    • BKE

    • BKA

    • BBS

    • BMV

    • BFV

    • BER

Codes for the classification of the credit assessments. The following values are valid:

ABK: Request for credit assessment before concluding a purchase contract (in particular purchase on account or by instalments.

ABV: Request for credit assessment before concluding an insurance contract.

BZV: Credit assessment within the scope of evaluating the reliability of an insurance broker or an insurance field representative.

BMT: Credit assessment before opening or installing a mobile telecommunication account.

BFT: Request for credit assessment before or in connection with the initiation or carrying out of debt-collecting measures.

ABI: Request for credit assessment before takeover/purchase of a claim or before assuming del credere liability.

ABF: Request for credit assessment before concluding a service contract.

ABD: Request for credit assessment before concluding a contract for work and labour.

ABW: Request for credit assessment before concluding a contract for work and labour.

ABL: Request for credit assessment before concluding a lease or rental contract (chattels).

BKV: Credit assessment before granting of credit.

BKE: Credit assessment before opening an account.

BKA: Credit assessment due to a credit or customer card application.

BBS: Credit assessment before concluding a building loan contract.

BMV: Credit assessment before concluding a rental contract (real estate).

BFV: Credit assessment before concluding a franchising contract.

BER: Credit assessment due to ascertainment order (credit agency company).

Example: ABD

score

string

Subtly graduated result of the credit assessment. The following values are valid:

Credit Assessment (ES0012):

550: There are no negative features., scoring_rc = G, credit assessment = KI

540: A soft feature, cleared., scoring_rc = G, credit assessment = Feature cleared

340: Medium feature(s), cleared or more than one soft feature cleared., scoring_rc = Y, credit assessment = Feature cleared

320: A message with reservations, soft., scoring_rc = Y, credit assessment = Mwr

310: A soft feature., scoring_rc = Y, credit assessment = Feature

250: Message with reservations marked a) hard/medium or b) more than one data record exist., scoring_rc = Y, credit assessment = Mwr

120: Person registered as deceased., scoring_rc = R, credit assessment = +

110: Requested address is registered as risk address., scoring_rc = R, credit assessment = TKZ 5

100: Person with negative feature(s) medium or hard or more than one soft., scoring_rc = R, credit assessment = Features

Integrated Address Verification, Credit Assessment, and Scoring (ES0015):

980: No negative features, score >= 500., scoring_rc = G, credit assessment = KI, address verification = PPB

970: No negative features, score >= 500., scoring_rc = G, credit assessment = KI, address verification = PHB

960: No negative features, score >450 <500., scoring_rc = G, credit assessment = KI, address verification = PPB

950: No negative features, score >450 <500., scoring_rc = G, credit assessment = KI, address verification = PHB

760: No negative features, score >= 500., scoring_rc = G, credit assessment = KI, address verification = PAB

750: No negative features, score >450 <500., scoring_rc = G, credit assessment = KI, address verification = PAB

560: No negative features, score >= 500., scoring_rc = G, credit assessment = KI, address verification = PKI

550: No negative features, score >450 <500., scoring_rc = G, credit assessment = KI, address verification = PKI

540: A soft feature, cleared., scoring_rc = G, credit assessment = Feature cleared, address verification = Any

530: No negative features, score not possible., scoring_rc = G, credit assessment = KI, address verification = Any

460: No negative features, score >=500., scoring_rc = G, credit assessment = KI, address verification = PPF

450: No negative features, score >450 <500., scoring_rc = G, credit assessment = KI, address verification = PPF

370: No negative features, score >=500., scoring_rc = Y, credit assessment = KI, address verification = PNZ

360: No negative features, score >450 <500., scoring_rc = Y, credit assessment = KI, address verification = PNZ

350: No negative features, score ⇐450., scoring_rc = Y, credit assessment = KI, address verification = Any

340: Medium feature(s), cleared or more than one soft feature, cleared., scoring_rc = Y, credit assessment = Feature cleared, address verification = Any

320: A message with reservations, soft., scoring_rc = Y, credit assessment = Mwr, address verification = Any

310: A soft feature., scoring_rc = Y, credit assessment = Feature, address verification = Any

250: Message with reservations marked a) hard/medium or b) more than one data record exist., scoring_rc = Y, credit assessment = Mwr, address verification = Any

120: Person registered as deceased., scoring_rc = R, credit assessment = +, address verification = Any

110: Requested address is registered as risk address., scoring_rc = R, credit assessment = TKZ 5, address verification = Any

100: Person with negative feature(s)medium or hard or more than one soft., scoring_rc = R, credit assessment = Features, address verification = Any

Example: 550

scoring_rc

string

  • default: U

  • enum

    • G

    • Y

    • R

    • U

Traffic light value that allows you a basic estimate of a customer’s credit-worthiness. The following values are valid:

G: green - There are no negative features.

Y: yellow/amber - There is a soft negative feature.

R: red - There are more than one soft negative features or at least one medium or hard negative feature.

U: unknown

Example: G

tx_id

string

Unique transaction identifier. Can be used to reference this transaction.

Example: 020LMG10jxSI8FN0OC4vLR

ErrorModel

Includes data returned in case of an error.

Property Type Description

message

string

  • required

Describes the error.

Example: unexpected error

rc

string

  • required

Four digit response code.

Example: 9000

ExpiryDate

The credit card expiry date.

Property Type Description

month

integer

  • required

  • format: int32

  • minimum: 1

  • maximum: 12

The credit card expiry month.

Example: 11

year

integer

  • required

  • format: int32

  • minimum: 2000

  • maximum: 2099

The credit card expiry year.

Example: 2021

FormCheckoutConfiguration

Contains required and optional data for each payment method that should be offered.

Property Type Description

apple_pay_credit_card_data

Base credit card data to initialize a form checkout service interaction.

checkout_entry_sorting_order

Array[string]

  • required

  • enum

    • CREDITCARD

    • DIRECTDEBIT

    • REQUEST_TO_PAY

    • PAYPAL

    • KLARNA

    • WECHATPAY

    • P24

    • TWINT

    • IDEAL

    • CLICKTOPAY

    • GOOGLEPAY

    • APPLEPAY

    • PSD2

    • WERO

The order in which the payment methods of the checkout_page_configuration are displayed. Possible values:

  • CREDITCARD

  • DIRECTDEBIT

  • REQUEST_TO_PAY

  • PAYPAL

  • KLARNA

  • WECHATPAY

  • P24

  • TWINT

  • CLICKTOPAY

  • GOOGLEPAY

  • APPLEPAY

  • PSD2

  • IDEAL

  • WERO

click_to_pay_credit_card_data

Base credit card data to initialize a form checkout service interaction.

credit_card_data

Base credit card data to initialize a form checkout service interaction.

direct_debit_data

Data to initialize a direct debit form service interaction.

google_pay_credit_card_data

Base credit card data to initialize a form checkout service interaction.

ideal_data

Data to initialize an iDEAL form service interaction.

klarna_data

Data to initialize a Klarna form service interaction. Currently contains no fields. See the user guide for when to generate this object.

p24_data

Data to initialize a P24 form service interaction. Currently contains no fields. See the user guide for when to generate this object.

paypal_data

Data to initialize a PayPal form service interaction.

psd2_pis_data

Data to initialize a PSD2 payment form service interaction.

request_to_pay_data

Data to initialize a Request to Pay form service interaction.

twint_data

Data to initialize a Twint form service interaction. Currently contains no fields. See the user guide for when to generate this object.

wechatpay_data

Data to initialize a WeChat Pay form service interaction. Currently contains no fields. See the user guide for when to generate this object.

wero_data

Data to initialize a wero form service interaction.

FormCheckoutCreditCardData

Base credit card data to initialize a form checkout service interaction.

Property Type Description

processing_options

Array[string]

  • enum

    • RISKCHECK

    • FALL_BACK_ON_SSL

Additional processing option for a credit card transaction.

  • RISKCHECK: before the transaction a risk check is performed. Only available if this option has been activated for the shop.

  • FALL_BACK_ON_SSL: process the transaction flagged as channel-encrypted (SSL, 3-D Secure authentication was not performed) instead of 3-D Secure in case 3-D Secure authentication could not be performed.

Example: ["RISKCHECK"]

recurring_payment

string

  • minLength: 1

  • maxLength: 50

  • pattern: [/0-9a-zA-Z_.:,+*$%-]+

Identifier of a recurring credit card payment.

Example: 07H987Tx3PF9VxL5G7RfNp

sequence_type

string

  • enum

    • FINAL

    • FIRST

    • RECURRING

If this payment is part of a sequence of payments

  • FIRST: first payment of a sequence

  • RECURRING: follow-up payment

  • FINAL: last payment of a sequence

series_flag

string

  • enum

    • INSTALMENT

    • RECURRING

    • UCOF

Designates a payment as part of a series of payments.

  • INSTALMENT: for example in the case of paying a fixed sum in multiple partial payments.

  • RECURRING: for example in the case of a subscription or standing order.

  • UCOF: when a card number alias is created for future payments with the same credit card. In this case use alias_action with action CREATE with the first payment and the card number alias with the following payments. You can use the tx_action verify-mop with the first UCOF transaction to register a card number alias without a payment.

tds_20_data

3-D Secure data. Activates 3-D Secure processing if values are set.

FormCheckoutGooglePayCreditCardData

Base credit card data to initialize a form checkout service interaction.

Property Type Description

googlepay_country_code

string

  • required

The country code of the acquiring bank.

Example: DE

googlepay_domain_name

string

  • required

The URL of the redirecting shop.

Example: testshop.de

googlepay_merchant_id

string

  • required

The merchant ID given by Google Pay.

Example: BCR2DN4T7D65Z6BX

processing_options

Array[string]

  • enum

    • RISKCHECK

    • FALL_BACK_ON_SSL

Additional processing option for a credit card transaction.

  • RISKCHECK: before the transaction a risk check is performed. Only available if this option has been activated for the shop.

  • FALL_BACK_ON_SSL: process the transaction flagged as channel-encrypted (SSL, 3-D Secure authentication was not performed) instead of 3-D Secure in case 3-D Secure authentication could not be performed.

Example: ["RISKCHECK"]

recurring_payment

string

  • minLength: 1

  • maxLength: 50

  • pattern: [/0-9a-zA-Z_.:,+*$%-]+

Identifier of a recurring credit card payment.

Example: 07H987Tx3PF9VxL5G7RfNp

sequence_type

string

  • enum

    • FINAL

    • FIRST

    • RECURRING

If this payment is part of a sequence of payments

  • FIRST: first payment of a sequence

  • RECURRING: follow-up payment

  • FINAL: last payment of a sequence

series_flag

string

  • enum

    • INSTALMENT

    • RECURRING

    • UCOF

Designates a payment as part of a series of payments.

  • INSTALMENT: for example in the case of paying a fixed sum in multiple partial payments.

  • RECURRING: for example in the case of a subscription or standing order.

  • UCOF: when a card number alias is created for future payments with the same credit card. In this case use alias_action with action CREATE with the first payment and the card number alias with the following payments. You can use the tx_action verify-mop with the first UCOF transaction to register a card number alias without a payment.

tds_20_data

3-D Secure data. Activates 3-D Secure processing if values are set.

FormCheckoutRequest

Request data that is being used after selecting a payment method on the checkout page.

Property Type Description

account_information

Information on a user’s account usage, payment history, transaction statistics.

amount_total

An amount and a currency.

bank_account

Information about a bank account.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

callback

Data for the shop notification.

checkout_page_configuration

Contains required and optional data for each payment method that should be offered.

customer_information

Details of a customer.

device_information

Technical details of a client.

form_customer_continuation

Includes data for redirecting a customer after a form service payment. Required except for payment links.

form_data

Data to customize forms, such as labels, theme, and style properties.

merchant_defined_information

merchant_information

Further information from the merchant.

merchant_risk_indicators

Contains data about the specific 3-D Secure 2.0 purchase which can be used for risk assessment.

processing_options

Array[string]

  • enum

    • COOKIES_ACCEPTED

    • STORE_CHECKOUT_PAGE_PREFERENCES

Specific options for checkout page processing. Valid values are:

  • COOKIES_ACCEPTED: The customer has already agreed to the use of cookies.

  • STORE_CHECKOUT_PAGE_PREFERENCES: The customer has agreed to store checkout page preferences in cookie value. For this, the customer must also have agreed to the use of cookies.

risk_check_additional_information

Additional information for calculation of the risk of a transaction.

shipping_address

Address data as applicable to most use cases.

travel_information

Travel information of the order.

FormCreditCardData

Base credit card for a form service interaction.

Property Type Description

processing_options

Array[string]

  • enum

    • RISKCHECK

    • FALL_BACK_ON_SSL

Additional processing option for a credit card transaction.

  • RISKCHECK: before the transaction a risk check is performed. Only available if this option has been activated for the shop.

  • FALL_BACK_ON_SSL: process the transaction flagged as channel-encrypted (SSL, 3-D Secure authentication was not performed) instead of 3-D Secure in case 3-D Secure authentication could not be performed.

Example: ["RISKCHECK"]

recurring_payment

string

  • minLength: 1

  • maxLength: 50

  • pattern: [/0-9a-zA-Z_.:,+*$%-]+

Identifier of a recurring credit card payment.

Example: 07H987Tx3PF9VxL5G7RfNp

sequence_type

string

  • enum

    • FINAL

    • FIRST

    • RECURRING

If this payment is part of a sequence of payments

  • FIRST: first payment of a sequence

  • RECURRING: follow-up payment

  • FINAL: last payment of a sequence

series_flag

string

  • enum

    • INSTALMENT

    • RECURRING

    • UCOF

Designates a payment as part of a series of payments.

  • INSTALMENT: for example in the case of paying a fixed sum in multiple partial payments.

  • RECURRING: for example in the case of a subscription or standing order.

  • UCOF: when a card number alias is created for future payments with the same credit card. In this case use alias_action with action CREATE with the first payment and the card number alias with the following payments. You can use the tx_action verify-mop with the first UCOF transaction to register a card number alias without a payment.

tds_20_data

3-D Secure data. Activates 3-D Secure processing if values are set.

FormCreditCardRequest

Request data to initialize a form service interaction.

Property Type Description

account_information

Information on a user’s account usage, payment history, transaction statistics.

alias_action

Specifies an alias and an operation to perform on it.

amount_total

An amount and a currency.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

callback

Data for the shop notification.

credit_card_data

Base credit card for a form service interaction.

customer_information

Details of a customer.

device_information

Technical details of a client.

form_customer_continuation

Includes data for redirecting a customer after a form service payment. Required except for payment links.

form_data

Data to customize forms, such as labels, theme, and style properties.

merchant_defined_information

merchant_information

Further information from the merchant.

merchant_risk_indicators

Contains data about the specific 3-D Secure 2.0 purchase which can be used for risk assessment.

risk_check_additional_information

Additional information for calculation of the risk of a transaction.

shipping_address

Address data as applicable to most use cases.

travel_information

Travel information of the order.

FormCustomerContinuation

Includes data for redirecting a customer after a form service payment. Required except for payment links.

Property Type Description

error_url

string

  • minLength: 0

  • maxLength: 1500

URL the customer should be redirected to after a failed form service payment.

notification_failed_url

string

  • minLength: 0

  • maxLength: 1500

URL the customer should be redirected to after a successful form service transaction for which the notification of your application failed.

redirect

boolean

If true the customer will be redirected directly. If false a page with a link "back to the shop" is shown to the customer. For PayPal the customer will always be redirected directly to the shop.

Example: true

success_url

string

  • required

  • minLength: 0

  • maxLength: 1500

URL the customer should be redirected to after a successful form service payment.

FormData

Data to customize forms, such as labels, theme, and style properties.

Property Type Description

label

Array[FormLabel]

locale

string

Language of the form to be displayed according to ISO 639-1. The following languages are available: bg - Bulgarian, ca - Catalan, cs - Czech, da - Danish, de - German, el - Greek, en - English, es - Spanish, et - Estonian, eu - Basque, fi - Finnish, fr - French, gl - Galician, hr - Croatian, hu - Hungarian, it - Italian, ja - Japanese, lt - Lithuanian, lv - Latvian, mt - Maltese, nl - Dutch, pl - Polish, pt - Portuguese, ro - Romanian, ru - Russian, sk - Slovak, sl - Slovenian, sv - Swedish. If not submitted and not specified otherwise in the user guide for the respective payment system, the German form will be displayed. Additional "locales" with modified text exist for donations: de_DE_sp (donation, German) and en_GB_sp (donation, English).

Example: en

retries

integer

  • format: int32

  • minimum: 0

  • maximum: 100

Specifies how often the customer may retry the payment if the payment fails. Default: 0.

theme_properties

FormDirectDebitData

Data to initialize a direct debit form service interaction.

Property Type Description

address

Address data as applicable to most use cases.

debit_method

string

  • enum

    • SDD

    • B2B

Direct debit method. If not specified, an SDD will be carried out.

  • SDD: SEPA Core Direct Debit

  • B2B: SEPA Business to Business Direct Debit

Example: B2B

due_date

string

  • format: date

Due date of a direct debit payment, that is, the date on which it shall be booked. Full-date notation as defined by RFC 3339, section 5.6. See the user guide for more information.

mandate

  • required

processing_options

Array[string]

  • enum

    • CHECKLIST

    • RISKCHECK

Additional processing option for direct debit.

  • CHECKLIST: before the direct debit a blocklist is checked. Only available if this option has been activated for the shop.

  • RISKCHECK: before the direct debit a risk check is performed. Only available if this option has been activated for the shop.

Example: ["CHECKLIST","RISKCHECK"]

FormDirectDebitRequest

Request data to initialize a form service direct debit interaction.

Property Type Description

account_information

Information on a user’s account usage, payment history, transaction statistics.

alias_action

Specifies an alias and an operation to perform on it.

amount_total

An amount and a currency.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

callback

Data for the shop notification.

customer_information

Details of a customer.

device_information

Technical details of a client.

direct_debit_data

Data to initialize a direct debit form service interaction.

form_customer_continuation

Includes data for redirecting a customer after a form service payment. Required except for payment links.

form_data

Data to customize forms, such as labels, theme, and style properties.

merchant_defined_information

merchant_information

Further information from the merchant.

merchant_risk_indicators

Contains data about the specific 3-D Secure 2.0 purchase which can be used for risk assessment.

risk_check_additional_information

Additional information for calculation of the risk of a transaction.

shipping_address

Address data as applicable to most use cases.

travel_information

Travel information of the order.

FormIdealData

Data to initialize an iDEAL form service interaction.

Property Type Description

description

string

  • required

  • minLength: 1

  • maxLength: 35

Reason for the transaction as will be shown to the customer during the transaction and on their bank statement.

Example: description

expected_checkout_data

This field indicates the shop’s desire to receive checkout details of the debtor in the transaction callback. Only applicable for transaction_flow = FAST_CHECKOUT.

expiration_period

integer

  • format: int64

Time in seconds after which the transaction will expire. Default will be 1200.

Example: 1200

issuer_id

string

  • minLength: 8

  • maxLength: 11

The business identifier code (BIC) of the issuer.

transaction_flow

string

  • enum

    • STANDARD

    • FAST_CHECKOUT

Transaction flow which the shop desires to initiate (STANDARD or FAST_CHECKOUT). Currently, only STANDARD is supported. Default will be STANDARD.

Example: STANDARD

FormIdealRequest

Request data to initialize a form service iDEAL interaction.

Property Type Description

amount_total

An amount and a currency.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

callback

Data for the shop notification.

device_information

Technical details of a client.

form_customer_continuation

Includes data for redirecting a customer after a form service payment. Required except for payment links.

form_data

Data to customize forms, such as labels, theme, and style properties.

ideal_data

  • required

Data to initialize an iDEAL form service interaction.

merchant_information

Further information from the merchant.

shipping_address

Address data as applicable to most use cases.

FormKlarnaData

Data to initialize a Klarna form service interaction. Currently contains no fields. See the user guide for when to generate this object.

FormKlarnaRequest
Property Type Description

alias_action

Specifies an alias and an operation to perform on it.

amount_total

An amount and a currency.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

callback

Data for the shop notification.

customer_information

Details of a customer.

device_information

Technical details of a client.

form_customer_continuation

Includes data for redirecting a customer after a form service payment. Required except for payment links.

form_data

Data to customize forms, such as labels, theme, and style properties.

merchant_information

Further information from the merchant.

shipping_address

Address data as applicable to most use cases.

FormLabel

Custom label to be displayed in the form instead of the standard text.

Property Type Description

key

string

  • required

  • enum

    • LABEL_AMOUNT

    • LABEL_DATE

    • LABEL_CANCEL

    • LABEL_IBAN

    • LABEL_MERCHANT

    • LABEL_NAME_ON_CARD

    • LABEL_SUBMIT

    • LABEL_WAIT

    • MESSAGE_PAYMENT_CANCELED

    • MESSAGE_PLEASE_GO

    • MESSAGE_BACK_TO_CHECKOUT

    • MERCHANTNAME

    • TITLE_PAYMENT_DATA

    • TITLE_PAYMENT_SUCCESSFUL

    • TITLE_PSD2_ACCOUNT_INFO

    • TITLE_PSD2_AUTHORISATION_REQUIRED

    • TITLE_PSD2_AUTHORISE_AIS

    • TITLE_PSD2_AUTHORISE_PIS

    • TITLE_PAYMENT_CANCELED

    • TITLE_CHECKOUT

The form label ID to be modified.

value

string

  • required

The new form label value.

FormNoTxResponse

Values required to initialize a form interaction.

Property Type Description

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

redirect_url

string

  • minLength: 0

  • maxLength: 1024

FormP24Data

Data to initialize a P24 form service interaction. Currently contains no fields. See the user guide for when to generate this object.

FormP24Request

Request data that is being used for P24 transaction init.

Property Type Description

amount_total

An amount and a currency.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

callback

Data for the shop notification.

device_information

Technical details of a client.

form_customer_continuation

Includes data for redirecting a customer after a form service payment. Required except for payment links.

form_data

Data to customize forms, such as labels, theme, and style properties.

merchant_information

Further information from the merchant.

preferred_lanuage

string

The 2-letter language code (for example, de) of the language preferred when presenting payment pages to the consumer.

Example: de

shipping_address

Address data as applicable to most use cases.

FormPSD2AccountInfoRequest

Includes data to find a customer’s bank account details.

Property Type Description

bank_code

string

  • minLength: 8

  • maxLength: 8

  • pattern: [0-9]{8}

The bank code (Bankleitzahl, BLZ) of the bank. In rare cases the bank code is required in addition to the BIC to identify the bank.

Example: 38011000

bank_id

string

  • minLength: 1

  • maxLength: 16

  • pattern: [A-Za-z0-9_-]+

The ID of a bank as returned in the response of a previous bank search.

Example: bG0E

bic

string

  • minLength: 11

  • maxLength: 11

  • pattern: [A-Z]{6}[A-Z2-9][A-NP-Z0-9][A-Z0-9]{3}

The business identifier code (BIC) of the bank. Identifies the bank if bank_id is not submitted.

Example: VZVDDED1XXX

callback

Data for the shop notification.

form_customer_continuation

Includes data for redirecting a customer after a form service payment. Required except for payment links.

form_data

Data to customize forms, such as labels, theme, and style properties.

requested_details

Array[string]

  • enum

    • OWNER

    • BALANCE

    • TRANSACTIONS

Specifies which additional bank account details are requested.

  • OWNER: the account owner

  • BALANCE: the account balance,

  • TRANSACTIONS: transactions of the bank account

Example: ["OWNER"]

transaction_filter

Contains properties to filter the transactions if requested_details includes TRANSACTIONS. If booking_status is not submitted BOOKED transactions will be requested from the customer’s bank.

FormPSD2AuthorizationRequest

Request data to initialize a form service interaction.

Property Type Description

account_information

Information on a user’s account usage, payment history, transaction statistics.

alias_action

Specifies an alias and an operation to perform on it.

amount_total

An amount and a currency.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

callback

Data for the shop notification.

customer_information

Details of a customer.

device_information

Technical details of a client.

form_customer_continuation

Includes data for redirecting a customer after a form service payment. Required except for payment links.

form_data

Data to customize forms, such as labels, theme, and style properties.

merchant_defined_information

merchant_information

Further information from the merchant.

merchant_risk_indicators

Contains data about the specific 3-D Secure 2.0 purchase which can be used for risk assessment.

psd2_pis_data

Data to initialize a PSD2 payment form service interaction.

risk_check_additional_information

Additional information for calculation of the risk of a transaction.

shipping_address

Address data as applicable to most use cases.

travel_information

Travel information of the order.

FormPSD2PaymentData

Data to initialize a PSD2 payment form service interaction.

Property Type Description

due_date

string

  • format: date

Due date of the credit transfer. Full-date notation as defined by RFC 3339, section 5.6. If you leave this field empty the credit transfer is carried out as soon as possible.

iban

string

  • minLength: 22

  • maxLength: 22

  • pattern: DE[0-9]{20}

The international bank account number of a German bank account.

Example: DE17215730140403340300

processing_options

Array[string]

  • enum

    • INSTANT

    • INSTANT_IF_POSSIBLE

Defines an additional processing option for credit transfers. One of

  • INSTANT: Process as instant payment.

  • INSTANT_IF_POSSIBLE: Process as instant payment if possible.

FormPSD2ReversalRequest

Request data to initialize a form service interaction.

Property Type Description

amount_total

An amount and a currency.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

callback

Data for the shop notification.

device_information

Technical details of a client.

form_customer_continuation

Includes data for redirecting a customer after a form service payment. Required except for payment links.

form_data

Data to customize forms, such as labels, theme, and style properties.

merchant_information

Further information from the merchant.

shipping_address

Address data as applicable to most use cases.

FormPSD2ReversalResponse
Property Type Description

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

outcome

string

  • required

  • enum

    • PROCESSED

    • REDIRECT_REQUIRED

Indicates the outcome of the PSD2 reversal transaction.

  • PROCESSED: The reversal has been processed, no further action is required. Consult attribute processed for details of the processed transaction.

  • REDIRECT_REQUIRED: The customer has to authorize the reversal.

processed

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

redirect_url

string

  • minLength: 0

  • maxLength: 1024

tx_id

string

Unique transaction identifier. Can be used to reference this transaction.

Example: 020LMG10jxSI8FN0OC4vLR

FormPayPalData

Data to initialize a PayPal form service interaction.

Property Type Description

merchant_id

string

Business identifier of a merchant.

Example: 8711200000

FormPayPalRequest
Property Type Description

account_information

Information on a user’s account usage, payment history, transaction statistics.

alias_action

Specifies an alias and an operation to perform on it.

amount_total

An amount and a currency.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

callback

Data for the shop notification.

customer_information

Details of a customer.

device_information

Technical details of a client.

form_customer_continuation

Includes data for redirecting a customer after a form service payment. Required except for payment links.

form_data

Data to customize forms, such as labels, theme, and style properties.

merchant_defined_information

merchant_information

Further information from the merchant.

merchant_risk_indicators

Contains data about the specific 3-D Secure 2.0 purchase which can be used for risk assessment.

paypal_data

Data to initialize a PayPal form service interaction.

risk_check_additional_information

Additional information for calculation of the risk of a transaction.

shipping_address

Address data as applicable to most use cases.

travel_information

Travel information of the order.

FormRegisterAliasRequest

Request data to register a means of payment alias using the form service.

Property Type Description

alias

string

  • minLength: 0

  • maxLength: 50

The alias value. If no value is set an alias is created by the system.

Example: 221f56ca355d8e6c42517749cf79ceb8

callback

Data for the shop notification.

form_customer_continuation

Includes data for redirecting a customer after a form service payment. Required except for payment links.

form_data

Data to customize forms, such as labels, theme, and style properties.

FormRequestToPayData

Data to initialize a Request to Pay form service interaction.

Property Type Description

customer_id

string

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

Technical identification number of a customer.

Example: C1234-AX

iban

string

  • minLength: 15

  • maxLength: 34

  • pattern: [A-Z]{2}[0-9]{2}[A-Z0-9*]{11,30}

The international bank account number of the bank account.

Example: DE86100700004567891263

processing_options

Array[string]

  • enum

    • INSTANT

    • INSTANT_IF_POSSIBLE

Defines an additional processing option for credit transfers. One of

  • INSTANT: Process as instant payment.

  • INSTANT_IF_POSSIBLE: Process as instant payment if possible.

FormRequestToPayRequest
Property Type Description

amount_total

An amount and a currency.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

callback

Data for the shop notification.

device_information

Technical details of a client.

form_customer_continuation

Includes data for redirecting a customer after a form service payment. Required except for payment links.

form_data

Data to customize forms, such as labels, theme, and style properties.

merchant_information

Further information from the merchant.

request_to_pay_data

Data to initialize a Request to Pay form service interaction.

shipping_address

Address data as applicable to most use cases.

FormResponse

Values required to initialize a form interaction. Contains a reference to the created transaction.

Property Type Description

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

redirect_url

string

  • minLength: 0

  • maxLength: 1024

tx_id

string

Unique transaction identifier. Can be used to reference this transaction.

Example: 020LMG10jxSI8FN0OC4vLR

FormThemeProperty

Custom theme property to be displayed in the form instead of the standard presentation.

Property Type Description

selector

string

  • required

  • enum

    • PREDEFINED

    • GLOBAL_ZINDEX

    • POPUP_BOX_SHADOW

    • GLOBAL_FONT_FAMILY

    • GLOBAL_LETTER_SPACING

    • GLOBAL_FINEPRINT_LETTER_SPACING

    • GLOBAL_INTERACTIVE_COLOR

    • GLOBAL_INTERACTIVE_HOVER_COLOR

    • MODAL_BACKGROUND_COLOR

    • CARD_BACKGROUND_COLOR

    • CARD_COLOR

    • HEADER_BACKGROUND_COLOR

    • FOOTER_BACKGROUND_COLOR

    • BUTTON_SECONDARY_BACKGROUND_COLOR

    • BUTTON_PRIMARY_COLOR

    • INPUT_BACKGROUND_COLOR

    • INPUT_CAPTION_COLOR

    • INPUT_PLACEHOLDER_COLOR

    • INPUT_BORDER_COLOR

    • INPUT_TEXT_COLOR

    • GLOBAL_INTERACTIVE_GLOW

    • CARD_BORDER_COLOR

    • HEADER_FOREGROUND_COLOR

    • HEADER_JUSTIFY_CONTENT

    • SEPARATOR_COLOR

    • ERROR_BACKGROUND_COLOR

    • ERROR_ICON_FOREGROUND_COLOR

    • ERROR_TEXT_FOREGROUND_COLOR

    • WARNING_BACKGROUND_COLOR

    • WARNING_ICON_FOREGROUND_COLOR

    • WARNING_TEXT_FOREGROUND_COLOR

    • INFO_BACKGROUND_COLOR

    • INFO_ICON_FOREGROUND_COLOR

    • INFO_TEXT_FOREGROUND_COLOR

    • SHOP_LOGO_VISIBLE

    • SHOP_NAME_IN_HEADLINE

For a number of elements custom CSS attributes can be applied.

Properties ending with ZINDEX, BOX_SHADOW, FONT_FAMILY, LETTER_SPACING, JUSTIFY_CONTENT or COLOR refer to the following CSS attributes:

Name of the theme properties:

  • PREDEFINED: the main theming. Available options are dark or bright

  • GLOBAL_ZINDEX: Global z-index. This z-index has to be higher than any z-index that may occur on page.

  • POPUP_BOX_SHADOW: Box shadow for whole popup.

  • GLOBAL_FONT_FAMILY: The one and only font family to use for any text in popup.

  • GLOBAL_LETTER_SPACING: Letter spacing for regular text.

  • GLOBAL_FINEPRINT_LETTER_SPACING: Letter spacing for fine print like caption above input fields.

  • GLOBAL_INTERACTIVE_COLOR Interactive color for elements like buttons or links.

  • GLOBAL_INTERACTIVE_HOVER_COLOR Color to use for hovering above interactive elements.

  • GLOBAL_INTERACTIVE_GLOW Color to indicate which form element has the input focus.

  • MODAL_BACKGROUND_COLOR Background color for modal element that covers everything below the popup.

  • CARD_BACKGROUND_COLOR Background color for main card.

  • CARD_BORDER_COLOR Border color for main card.

  • CARD_COLOR Text color for main card. In css notation.

  • HEADER_BACKGROUND_COLOR Background color for header.

  • HEADER_FOREGROUND_COLOR Foreground color for header.

  • HEADER_JUSTIFY_CONTENT Justification for content in header.

  • FOOTER_BACKGROUND_COLOR Background color for footer. Important for mobile view.

  • BUTTON_SECONDARY_BACKGROUND_COLOR Secondary colors may have a special background color instead of being transparent.

  • BUTTON_PRIMARY_COLOR Text color for primary buttons.

  • INPUT_BACKGROUND_COLOR Background color for input fields.

  • INPUT_CAPTION_COLOR Text color of captions above input fields.

  • INPUT_PLACEHOLDER_COLOR Text color for placeholders inside input fields.

  • INPUT_BORDER_COLOR The border color around input fields.

  • INPUT_TEXT_COLOR The text color for user entered values.

  • SEPARATOR_COLOR Color of separator lines between input elements.

  • ERROR_BACKGROUND_COLOR Background color for error message boxes

  • ERROR_ICON_FOREGROUND_COLOR Icon color for error message boxes

  • ERROR_TEXT_FOREGROUND_COLOR Text color for error message boxes

  • WARNING_BACKGROUND_COLOR Background color for warning message boxes

  • WARNING_ICON_FOREGROUND_COLOR Icon color for warning message boxes

  • WARNING_TEXT_FOREGROUND_COLOR Text color for warning message boxes

  • INFO_BACKGROUND_COLOR Background color for info message boxes

  • INFO_ICON_FOREGROUND_COLOR Icon color for info message boxes

  • INFO_TEXT_FOREGROUND_COLOR Text color for info message boxes

  • SHOP_LOGO_VISIBLE Specifies whether the shop logo should be visible if one is set. Available options are true or false. The default value is false.

  • SHOP_NAME_IN_HEADLINE Specifies whether the shop name should be visible in the headline. Available options are true or false. The default value is false. If this property is set to true, the shop name will not be displayed further down.

value

string

  • required

The property value.

FormTwintData

Data to initialize a Twint form service interaction. Currently contains no fields. See the user guide for when to generate this object.

FormTwintRequest

Request data that is being used for TWINT transaction init.

Property Type Description

amount_total

An amount and a currency.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

callback

Data for the shop notification.

device_information

Technical details of a client.

form_customer_continuation

Includes data for redirecting a customer after a form service payment. Required except for payment links.

form_data

Data to customize forms, such as labels, theme, and style properties.

merchant_information

Further information from the merchant.

shipping_address

Address data as applicable to most use cases.

FormWeChatPayData

Data to initialize a WeChat Pay form service interaction. Currently contains no fields. See the user guide for when to generate this object.

FormWeChatPayRequest

Request data that is being used for WeChat Pay transaction init.

Property Type Description

amount_total

An amount and a currency.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

callback

Data for the shop notification.

device_information

Technical details of a client.

form_customer_continuation

Includes data for redirecting a customer after a form service payment. Required except for payment links.

form_data

Data to customize forms, such as labels, theme, and style properties.

merchant_information

Further information from the merchant.

preferred_lanuage

string

The 2-letter language code (for example, de) of the language preferred when presenting payment pages to the consumer.

Example: de

shipping_address

Address data as applicable to most use cases.

FormWeroData

Data to initialize a wero form service interaction.

Property Type Description

authorization_reference

string

  • required

  • minLength: 1

  • maxLength: 35

  • pattern: [a-zA-Z0-9_-]+

A unique reference for the (pre-)authorization. This field will be included in the customer remittance information of the transaction.

description

string

  • minLength: 1

  • maxLength: 128

A description of the transaction, for example, "Your purchase at The Cool Shop".

gift

boolean

  • default: false

Indicates whether the purchased goods are a gift for someone else.

Example: false

order_page_url

string

  • minLength: 0

  • maxLength: 2048

  • pattern: 

    ^https?://(?:(?:\..
    Show Pattern

The URL of the order page, which can be called by the wallet to display the order inside the shop application. The URL must be a valid HTTPS URL.

payment_plan

FormWeroRequest

Request data that is being used for Wero transaction init.

Property Type Description

amount_total

An amount and a currency.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

callback

Data for the shop notification.

device_information

Technical details of a client.

form_customer_continuation

Includes data for redirecting a customer after a form service payment. Required except for payment links.

form_data

Data to customize forms, such as labels, theme, and style properties.

merchant_information

Further information from the merchant.

shipping_address

Address data as applicable to most use cases.

wero_data

  • required

Data to initialize a wero form service interaction.

GooglePayRequest

The payment request of the Google Pay API.

Property Type Description

account_information

Information on a user’s account usage, payment history, transaction statistics.

alias_action

Specifies an alias and an operation to perform on it.

amount_total

  • required

An amount and a currency.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

customer_information

Details of a customer.

device_information

Technical details of a client.

means_of_payment_google_pay

The means of payment that will be used. Only a Google Pay token is valid.

merchant_defined_information

merchant_information

Further information from the merchant.

merchant_risk_indicators

Contains data about the specific 3-D Secure 2.0 purchase which can be used for risk assessment.

processing_options

Array[string]

  • enum

    • FALLBACK_ON_SSL

    • RISKCHECK

Additional processing option for headless 3-D Secure transactions.

  • FALLBACK_ON_SSL: process the transaction flagged as channel-encrypted (SSL, 3-D Secure authentication was not performed) instead of 3-D Secure in case 3-D Secure authentication could not be performed.

  • RISKCHECK: process risk check transaction before start of 3-D Secure authentication. In case of declined risk check no credit card transaction is started

Example: ["RISKCHECK"]

recurring_payment

string

  • minLength: 1

  • maxLength: 50

  • pattern: [/0-9a-zA-Z_.:,+*$%-]+

Identifier of a recurring credit card payment.

Example: 07H987Tx3PF9VxL5G7RfNp

risk_check_additional_information

Additional information for calculation of the risk of a transaction.

sequence_type

string

  • enum

    • FINAL

    • FIRST

    • RECURRING

If this payment is part of a sequence of payments

  • FIRST: first payment of a sequence

  • RECURRING: follow-up payment

  • FINAL: last payment of a sequence

series_flag

string

  • enum

    • INSTALMENT

    • RECURRING

    • UCOF

Designates a payment as part of a series of payments.

  • INSTALMENT: for example in the case of paying a fixed sum in multiple partial payments.

  • RECURRING: for example in the case of a subscription or standing order.

  • UCOF: when a card number alias is created for future payments with the same credit card. In this case use alias_action with action CREATE with the first payment and the card number alias with the following payments. You can use the tx_action verify-mop with the first UCOF transaction to register a card number alias without a payment.

shipping_address

Address data as applicable to most use cases.

tds_20_data

3-D Secure data. Activates 3-D Secure processing if values are set.

travel_information

Travel information of the order.

Headless3DSecureFinalRequest

3-D Secure challenge response data. Make sure only one of the attributes are set depending on the 3-D Secure version.

Property Type Description

PaRes

string

3-D Secure Payer Authentication Response received from the ACS.

cres

string

3-D Secure challenge response data received from the ACS.

Headless3DSecureInitializeRequest
Property Type Description

account_information

Information on a user’s account usage, payment history, transaction statistics.

alias_action

Specifies an alias and an operation to perform on it.

amount_total

  • required

An amount and a currency.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

customer_information

Details of a customer.

device_information

Technical details of a client.

means_of_payment

The means of payment that will be used. Exactly one of the given means is valid.

merchant_defined_information

merchant_information

Further information from the merchant.

merchant_risk_indicators

Contains data about the specific 3-D Secure 2.0 purchase which can be used for risk assessment.

processing_options

Array[string]

  • enum

    • FALLBACK_ON_SSL

    • RISKCHECK

Additional processing option for headless 3-D Secure transactions.

  • FALLBACK_ON_SSL: process the transaction flagged as channel-encrypted (SSL, 3-D Secure authentication was not performed) instead of 3-D Secure in case 3-D Secure authentication could not be performed.

  • RISKCHECK: process risk check transaction before start of 3-D Secure authentication. In case of declined risk check no credit card transaction is started

Example: ["FALLBACK_ON_SSL","RISKCHECK"]

recurring_payment

string

  • minLength: 1

  • maxLength: 50

  • pattern: [/0-9a-zA-Z_.:,+*$%-]+

Identifier of a recurring credit card payment.

Example: 07H987Tx3PF9VxL5G7RfNp

risk_check_additional_information

Additional information for calculation of the risk of a transaction.

sequence_type

string

  • enum

    • FINAL

    • FIRST

    • RECURRING

If this payment is part of a sequence of payments

  • FIRST: first payment of a sequence

  • RECURRING: follow-up payment

  • FINAL: last payment of a sequence

series_flag

string

  • enum

    • INSTALMENT

    • RECURRING

    • UCOF

Designates a payment as part of a series of payments.

  • INSTALMENT: for example in the case of paying a fixed sum in multiple partial payments.

  • RECURRING: for example in the case of a subscription or standing order.

  • UCOF: when a card number alias is created for future payments with the same credit card. In this case use alias_action with action CREATE with the first payment and the card number alias with the following payments. You can use the tx_action verify-mop with the first UCOF transaction to register a card number alias without a payment.

shipping_address

Address data as applicable to most use cases.

tds_20_data

  • required

3-D Secure data. Activates 3-D Secure processing if values are set.

travel_information

Travel information of the order.

Headless3DSecureResponse
Property Type Description

challenge_required

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

method_required

outcome

string

  • required

  • enum

    • PROCESSED

    • METHOD_REQUIRED

    • CHALLENGE_REQUIRED

Indicates the outcome of the current headless 3-D Secure transaction.

  • PROCESSED: The transaction has been processed, no further action required. Consult attribute processed for details of the processed transaction.

  • METHOD_REQUIRED: 3-D Secure method flow needs to be started. Consult attribute method_required for required data.

  • CHALLENGE_REQUIRED: 3-D Secure challenge flow needs to be started. Consult attribute challenge_required for required data.

Example: PROCESSED

processed

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

IFrameInitializeRequest

Request data to initialize an iFrame interaction.

Property Type Description

amount_total

  • required

An amount and a currency.

processing_options

Array[string]

  • enum

    • MOTO

Additional processing option for an iFrame interaction.

  • MOTO: A credit card token should be created for use in a MOTO payment transaction. This skips the 3D-Secure process.

Example: ["MOTO"]

tds_20_data

3-D Secure data. Activates 3-D Secure processing if values are set.

IFrameInitializeResponse

Contains data to initialize an iFrame interaction with JavaScript.

Property Type Description

client_configuration

string

  • minLength: 0

  • maxLength: 2000

  • pattern: [a-zA-Z0-9/+=_-]*

The iFrame client configuration.

Example: eyJob3N0IjoiaHR0cDovL2hvc3Q6ODA4MCIsIm9wdGlvbnMiLi4u

client_session

string

  • minLength: 0

  • maxLength: 255

  • pattern: [a-zA-Z0-9/+=_-]*

The iFrame client session ID.

Example: 8qOMTG3gdTwb8cjQtKW8fx

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

IdealExpectedCheckoutData

This field indicates the shop’s desire to receive checkout details of the debtor in the transaction callback. Only applicable for transaction_flow = FAST_CHECKOUT.

Property Type Description

debtor_contact_details

invoice_address

shipping_address

KlarnaProductIdentifier

Klarna specific unique identification attributes of a product.

Property Type Description

brand

string

The product’s brand name as generally recognized by consumers. If no brand is available for a product, do not supply any value.

Example: Intel

category_path

string

  • minLength: 0

  • maxLength: 750

The product’s category path as used in the merchant’s webshop. Include the full and most detailed category and separate the segments with '>'.

Example: Electronics Store > Computers & Tablets > Desktops

gtin

string

  • pattern: [a-zA-Z0-9]*

The product’s Global Trade Item Number (GTIN). Common types of GTIN are EAN, ISBN or UPC. Dashes and spaces must be omitted.

Example: 735858293167

mpn

string

The product’s Manufacturer Part Number (MPN), which - together with the brand - uniquely identifies a product. Only submit MPNs assigned by a manufacturer and use the most specific MPN possible.

Example: BOXNUC5CPYH

McpConsumerRate

List of the evaluated rates of all supported currencies.

Property Type Description

consumer_rate

string

The exchange rate between funding currency of merchant and other currency.

Example: 6.44145

currency_pair

string

Pair of funding currency of merchant and other currency.

Example: EURCHF

offerable_from

string

The time of the beginning of the validity of the guaranteed consumer rate.

Example: 2022-11-21T11:21:57.129184+01:00

offerable_to

string

The time of the end of the validity of the guaranteed consumer rate.

Example: 2022-11-22T11:21:57.129184+01:00

McpConsumerRatesResponse
Property Type Description

consumer_rates

List of the evaluated rates of all supported currencies.

funding_currency

string

The funding currency of the merchant.

Example: CHF

merchant_id_mcp

string

  • minLength: 1

  • maxLength: 100

Business identifier of a merchant registered for multi currency pricing.

Example: merchant1234

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

response_timestamp

string

The time of the consumerrates transaction.

Example: 2022-11-21T11:21:57.129184+01:00

MeansOfPaymentApplePay

The means of payment that will be used. Exactly one of the given means is valid.

Property Type Description

applepay_token

string

  • required

  • minLength: 1

  • maxLength: 10000

  • pattern: [a-zA-Z0-9:,\/+=_\-\\\{\}\[\]\" ]*

The complete token generated by Apple Pay as contained in session.onpaymentauthorized in event.payment.token as Base64 encoded value.

Example: eyJwYXltZW50RGF0YSI6eyJ2ZXJzaW9uIjoiRUNfdjEiLCJkYXRhIjoiY3NIdGNucGtqcWFkT2NTMWNIRmVOK2xveWtlK1ZtRlNFUVoxL1kxdlIzNkRISGtCRy81MFVJVG9SYjZJeHFsNkRVVE5UQ1hWYnlkV1J6OElUUldQSkFDVkcwZHZNcEFXa09CRklrUHM5SDBLVkpWSjNzdFJDT08wcXVrV0tMS2M0VFhyWmpuNk1teExZTWw5LzVNM2NaRlgveXlMVWFuNGpDMms5WnJHUGZZaGZLTm9SN1B2OHJnemMzMWRVZTlIcCtQc0oxMytVVDVDbXVyS0V1d0hEdTd2UE9QK1FtejRaVVl4WDI0clhFbVFYaXpLaUZteFFGN0R4eHNoaCtLWm42Z1QrdUhUKy9hQnN2MC93dzhIWDFPYkNyWDltNGpMZGdESEhvQ213NkRnUTRaekZwdG5IRnRkVlljQk1xL1c4cmJIaFc4RjE4cUpyYVhvTzdGb2hSWFVDMWJpdytjQzJITFlQeTEvVXptRFgxWTNHK2htZzlPTVNYSUV2cXNYWURzZmxXVU9VcmtyYXFqL1hRPT0iLCJzaWduYXR1cmUiOiJNSUFHQ1NxR1NJYjNEUUVIQXFDQU1JQUNBUUV4RFRBTEJnbGdoa2dCWlFNRUFnRXdnQVlKS29aSWh2Y05BUWNCQUFDZ2dEQ0NBK013Z2dPSW9BTUNBUUlDQ0V3d1FVbFJuVlEyTUFvR0NDcUdTTTQ5QkFNQ01Ib3hMakFzQmdOVkJBTU1KVUZ3Y0d4bElFRndjR3hwWTJGMGFXOXVJRWx1ZEdWbmNtRjBhVzl1SUVOQklDMGdSek14SmpBa0JnTlZCQXNNSFVGd2NHeGxJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNU1STXdFUVlEVlFRS0RBcEJjSEJzWlNCSmJtTXVNUXN3Q1FZRFZRUUdFd0pWVXpBZUZ3MHhPVEExTVRnd01UTXlOVGRhRncweU5EQTFNVFl3TVRNeU5UZGFNRjh4SlRBakJnTlZCQU1NSEdWall5MXpiWEF0WW5KdmEyVnlMWE5wWjI1ZlZVTTBMVkJTVDBReEZEQVNCZ05WQkFzTUMybFBVeUJUZVhOMFpXMXpNUk13RVFZRFZRUUtEQXBCY0hCc1pTQkpibU11TVFzd0NRWURWUVFHRXdKVlV6QlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJNSVZkKzNyMXNleUlZOW8zWENRb1NHTng3QzlieXdvUFlSZ2xkbEs5S1ZCRzROQ0R0Z1I4MEIrZ3pNZkhGVEQ5K3N5SU5hNjFkVHY5SktKaVQ1OER4T2pnZ0lSTUlJQ0RUQU1CZ05WSFJNQkFmOEVBakFBTUI4R0ExVWRJd1FZTUJhQUZDUHlTY1JQaytUdkorYkU5aWhzUDZLNy9TNUxNRVVHQ0NzR0FRVUZCd0VCQkRrd056QTFCZ2dyQmdFRkJRY3dBWVlwYUhSMGNEb3ZMMjlqYzNBdVlYQndiR1V1WTI5dEwyOWpjM0F3TkMxaGNIQnNaV0ZwWTJFek1ESXdnZ0VkQmdOVkhTQUVnZ0VVTUlJQkVEQ0NBUXdHQ1NxR1NJYjNZMlFGQVRDQi9qQ0J3d1lJS3dZQkJRVUhBZ0l3Z2JZTWdiTlNaV3hwWVc1alpTQnZiaUIwYUdseklHTmxjblJwWm1sallYUmxJR0o1SUdGdWVTQndZWEowZVNCaGMzTjFiV1Z6SUdGalkyVndkR0Z1WTJVZ2IyWWdkR2hsSUhSb1pXNGdZWEJ3YkdsallXSnNaU0J6ZEdGdVpHRnlaQ0IwWlhKdGN5QmhibVFnWTI5dVpHbDBhVzl1Y3lCdlppQjFjMlVzSUdObGNuUnBabWxqWVhSbElIQnZiR2xqZVNCaGJtUWdZMlZ5ZEdsbWFXTmhkR2x2YmlCd2NtRmpkR2xqWlNCemRHRjBaVzFsYm5SekxqQTJCZ2dyQmdFRkJRY0NBUllxYUhSMGNEb3ZMM2QzZHk1aGNIQnNaUzVqYjIwdlkyVnlkR2xtYVdOaGRHVmhkWFJvYjNKcGRIa3ZNRFFHQTFVZEh3UXRNQ3N3S2FBbm9DV0dJMmgwZEhBNkx5OWpjbXd1WVhCd2JHVXVZMjl0TDJGd2NHeGxZV2xqWVRNdVkzSnNNQjBHQTFVZERnUVdCQlNVVjl0djFYU0Job21KZGk5K1Y0VUg1NXRZSkRBT0JnTlZIUThCQWY4RUJBTUNCNEF3RHdZSktvWklodmRqWkFZZEJBSUZBREFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBdmdsWEgrY2VIbk5iVmVXdnJMVEhMK3RFWHpBWVVpTEhKUkFDdGg2OWIxVUNJUURSaXpVS1hkYmRickYwWURXeEhyTE9oOCtqNXE5c3ZZT0FpUTNJTE4ycVl6Q0NBdTR3Z2dKMW9BTUNBUUlDQ0VsdEw3ODZtTnFYTUFvR0NDcUdTTTQ5QkFNQ01HY3hHekFaQmdOVkJBTU1Fa0Z3Y0d4bElGSnZiM1FnUTBFZ0xTQkhNekVtTUNRR0ExVUVDd3dkUVhCd2JHVWdRMlZ5ZEdsbWFXTmhkR2x2YmlCQmRYUm9iM0pwZEhreEV6QVJCZ05WQkFvTUNrRndjR3hsSUVsdVl5NHhDekFKQmdOVkJBWVRBbFZUTUI0WERURTBNRFV3TmpJek5EWXpNRm9YRFRJNU1EVXdOakl6TkRZek1Gb3dlakV1TUN3R0ExVUVBd3dsUVhCd2JHVWdRWEJ3YkdsallYUnBiMjRnU1c1MFpXZHlZWFJwYjI0Z1EwRWdMU0JITXpFbU1DUUdBMVVFQ3d3ZFFYQndiR1VnUTJWeWRHbG1hV05oZEdsdmJpQkJkWFJvYjNKcGRIa3hFekFSQmdOVkJBb01Da0Z3Y0d4bElFbHVZeTR4Q3pBSkJnTlZCQVlUQWxWVE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRThCY1JoQm5YWklYVkdsNGxnUWQyNklDaTc5NTdyazNnamZ4TGsrRXpWdFZtV3pXdUl0Q1hkZzBpVG51NkNQMTJGODZJeTNhN1puQyt5T2dwaFA5VVJhT0I5ekNCOURCR0JnZ3JCZ0VGQlFjQkFRUTZNRGd3TmdZSUt3WUJCUVVITUFHR0ttaDBkSEE2THk5dlkzTndMbUZ3Y0d4bExtTnZiUzl2WTNOd01EUXRZWEJ3YkdWeWIyOTBZMkZuTXpBZEJnTlZIUTRFRmdRVUkvSkp4RStUNU84bjVzVDJLR3cvb3J2OUxrc3dEd1lEVlIwVEFRSC9CQVV3QXdFQi96QWZCZ05WSFNNRUdEQVdnQlM3c042aFdET0ltcVNLbWQ2K3ZldXYyc3NrcXpBM0JnTlZIUjhFTURBdU1DeWdLcUFvaGlab2RIUndPaTh2WTNKc0xtRndjR3hsTG1OdmJTOWhjSEJzWlhKdmIzUmpZV2N6TG1OeWJEQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0VBWUtLb1pJaHZkalpBWUNEZ1FDQlFBd0NnWUlLb1pJemowRUF3SURad0F3WkFJd09zOXlnMUVXbWJHRyt6WERWc3Bpdi9RWDdka1BkVTJpanI3eG5JRmVRcmVKK0pqM20xbWZtTlZCRFkrZDZjTCtBakF5TGRWRUliQ2pCWGRzWGZNNE81Qm4vUmQ4TENGdGxrL0djbW1DRW05VStIcDlHNW5MbXdtSklXRUdtUThKa2gwQUFER0NBWWd3Z2dHRUFnRUJNSUdHTUhveExqQXNCZ05WQkFNTUpVRndjR3hsSUVGd2NHeHBZMkYwYVc5dUlFbHVkR1ZuY21GMGFXOXVJRU5CSUMwZ1J6TXhKakFrQmdOVkJBc01IVUZ3Y0d4bElFTmxjblJwWm1sallYUnBiMjRnUVhWMGFHOXlhWFI1TVJNd0VRWURWUVFLREFwQmNIQnNaU0JKYm1NdU1Rc3dDUVlEVlFRR0V3SlZVd0lJVERCQlNWR2RWRFl3Q3dZSllJWklBV1VEQkFJQm9JR1RNQmdHQ1NxR1NJYjNEUUVKQXpFTEJna3Foa2lHOXcwQkJ3RXdIQVlKS29aSWh2Y05BUWtGTVE4WERUSXlNRGN5TmpFd05UWXdOMW93S0FZSktvWklodmNOQVFrME1Sc3dHVEFMQmdsZ2hrZ0JaUU1FQWdHaENnWUlLb1pJemowRUF3SXdMd1lKS29aSWh2Y05BUWtFTVNJRUlKVGFtUk56aEJWQUJ2eWRrd2ZVTFpPZFFOeGl6NzNIUk9GSTlrNTRnUWlPTUFvR0NDcUdTTTQ5QkFNQ0JFY3dSUUlnRElBTVJCdXM2MnNSVWQzaXpFRCs3blY4akN5R1hhdzVxMVpUWXB0Unp2d0NJUUN0aHUvdmI4Wmc5TjNtSDZyRkxpU3Q1VEdVYU9mS0R4eXRzQzduUk1hRmdnQUFBQUFBQUE9PSIsImhlYWRlciI6eyJlcGhlbWVyYWxQdWJsaWNLZXkiOiJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUV1dmxlTmFocEJ6TGExUGFPTWlxU0xzMStIK3Y1SE9zS0F2cTZMYnNYRjJpT1JCcmwydWI5cE9rWlF5VlB1UjdXcGtNNDBLaDZSMHVSV216dU5FcFAzZz09IiwicHVibGljS2V5SGFzaCI6ImI2UXJSemt6NnJzRGdWV2hTdzh0ZkdGRHprcHdtOTV4RUpzYnFGSWJVcDQ9IiwidHJhbnNhY3Rpb25JZCI6IjJhODU1ZmQwOWQyOTQxZTM1MjhkMjQ5YWUwMWM4YThlOWE5M2RiNjZjYzZiNWExNmE3MTgwZWQ1OTQyYWY4ZDMifX0sInBheW1lbnRNZXRob2QiOnsiZGlzcGxheU5hbWUiOiJNYXN0ZXJDYXJkIDE0NzEiLCJuZXR3b3JrIjoiTWFzdGVyQ2FyZCIsInR5cGUiOiJkZWJpdCJ9LCJ0cmFuc2FjdGlvbklkZW50aWZpZXIiOiIyQTg1NUZEMDlEMjk0MUUzNTI4RDI0OUFFMDFDOEE4RTlBOTNEQjY2Q0M2QjVBMTZBNzE4MEVENTk0MkFGOEQzIn0=

MeansOfPaymentCreditCard

The means of payment that will be used. Exactly one of the given means is valid.

Property Type Description

alias

string

A previously registered alias.

Example: 221f56ca355d8e6c42517749cf79ceb8

credit_card

Information about a credit card.

token

string

  • minLength: 0

  • maxLength: 500

  • pattern: [a-zA-Z0-9/+=_-]*

The token value.

Example: eyJ0IjoiSFcyaS13cTB3PT0iLCJzIjoiaWIybzFRMHEifQ

MeansOfPaymentDirectDebit

The means of payment that will be used. Exactly one of the given means is valid.

Property Type Description

alias

string

A previously registered alias.

Example: 221f56ca355d8e6c42517749cf79ceb8

bank_account

Information about a bank account.

token

string

  • minLength: 0

  • maxLength: 500

  • pattern: [a-zA-Z0-9/+=_-]*

The token value.

Example: eyJ0IjoiSFcyaS13cTB3PT0iLCJzIjoiaWIybzFRMHEifQ

MeansOfPaymentGooglePay

The means of payment that will be used. Only a Google Pay token is valid.

Property Type Description

cardholder

string

  • minLength: 2

  • maxLength: 27

The holder of a credit card.

Example: Max Muster

googlepay_token

string

  • minLength: 1

  • maxLength: 5000

  • pattern: [a-zA-Z0-9:,\/+=_\-\\\{\}\[\]\" ]*

The complete token generated by Google Pay as contained in paymentData.paymentMethodData.tokenizationData.token. Note: use for example JSON.stringify before sending.

Example: {\"signature\":\"MEUCIQD8RtwzL8/Mzjm1wpQYXrZedFp++ZyqNI6fE4i+eZWVyAIgTLIJWwzx2vYpYxJAiY4ze5c9Ja96+cljw9JCOYG6q/M\\u003d\",\"intermediateSigningKey\":{\"signedKey\":\"{\\\"keyValue\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2zv+MrfoTlZ4ccBmOCyPf2mV59d1KtpenaoI/QOXY/GWptmRapfFiE9r864vw9ggpUf8ZZbs3T/SmNgA95fyQw\\\\u003d\\\\u003d\\\",\\\"keyExpiration\\\":\\\"1646865007568\\\"}\",\"signatures\":[\"MEQCIEa8OSuqEqFHzYIBF0rYJAYvp8Tuxt4m5Eia4kw8SvKkAiB0Jolsc583JA1nghgbM2rSQ4fme+ZwzwRvYZNvsjVsxQ\\u003d\\u003d\"]},\"protocolVersion\":\"ECv2\",\"signedMessage\":\"{\\\"encryptedMessage\\\":\\\"0Ey+Y+F/9Wu6qLxo1tlEJaadbEV8dLLwgGWsrWId/7AKQVVO9lnzuoE6Z286ttquMc+X9BRGGpLQ6VPAuxdKBrDPeMd8cQoM/fqDLnq7oLQk3aKkcpULav3YusBqit33j2VAE3BcqjUmKz7QueoHUzUDEkYgmiasPujQ9TgsBYOFioXw6kOLy2NZZImIV8FzlI2deDgVG8+oW6P/G2VhEzY2KU+BSZ5ukepDeYyLOd/BIGxzqyoVRTkyG7m3PxZl0Ofp0qjwS816ruxBpXsWHQjuZgtSn7JWz2WPuevE8YT9JGm5mjzIaCxOq1QTKKyeKR0r0hXLkXtGd5NEvn9y/a1/tRtQtvQerTp/aFdjSX3IazmVfFpFqOnWD76TIi8mNAwtKuDyDfUMHMKATpJZhaFhw5/25bUbEdkTGjBBQpkpzGfxBlbnvEtCLUjCjzwppIi50FSu4IxPj9PhDxtMB+UWmhDzM4Lq/OzK/xol7cYfPkLhccHlht+SHqNz2aOOZw8qVlgyYAScOYaJtUGtBGtyJJ00yKDXC/xnXPewt8QKGuNr/i/PpUg2Ma1t7iXKHh+oa+3hB8De\\\",\\\"ephemeralPublicKey\\\":\\\"BEmwMBAo38JnpnZexSNBbgsLMXg0xF5SKqBb/nptzFsaFPQjI70yKMLXv4bEa3kJ15VBLiaDsketAHe7B4Hp7go\\\\u003d\\\",\\\"tag\\\":\\\"zOz55zo9efgTP/e6hxdylmDsXVqfxXfyuUrWzrAEDuc\\\\u003d\\\"}\"}

MeansOfPaymentPost

The means of payment that will be used. Only an alias is valid.

Property Type Description

alias

string

  • required

A previously registered alias.

Example: 221f56ca355d8e6c42517749cf79ceb8

MerchantInformation

Further information from the merchant.

Property Type Description

extensions

Service specific merchant information fields.

locale

string

Language of the form to be displayed according to ISO 639-1.

Example: en

merchant_data_1

string

  • minLength: 0

  • maxLength: 255

The first merchant data field. Refer to the user guide of the payment system for its meaning for the payment system.

Example: 123456789

merchant_data_2

string

  • minLength: 0

  • maxLength: 255

The second merchant data field. Refer to the user guide of the payment system for its meaning for the payment system.

Example: 123456789

merchant_data_3

string

  • minLength: 0

  • maxLength: 255

The third merchant data field. Refer to the user guide of the payment system for its meaning for the payment system.

Example: 123456789

MerchantInformationDPGData

DPG specific MerchantInformation fields.

Property Type Description

tx_report_ext_id

string

  • minLength: 0

  • maxLength: 30

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

Merchant defined ID for DPG reports.

MerchantInformationExtensions

Service specific merchant information fields.

Property Type Description

klarna_data

Klarna specific MerchantInformation fields.

merchant_information_dpg_data

DPG specific MerchantInformation fields.

MerchantInformationKlarnaData

Klarna specific MerchantInformation fields.

Property Type Description

custom_payment_method_ids

Array[string]

List of custom payment method ids.

Example: ["klarna_invoice","klarna_installments"]

MerchantRiskIndicators

Contains data about the specific 3-D Secure 2.0 purchase which can be used for risk assessment.

Property Type Description

delivery_email_address

string

  • pattern: .*@.*\..*

The delivery email address.

delivery_timeframe

string

  • enum

    • ELECTRONIC

    • MORE_THAN_ONE_DAY

    • OVERNIGHT

    • SAME_DAY

The delivery time frame for this order.

gift_card_amount

string

The gift card amount.

gift_card_count

string

The gift card count.

gift_card_currency

string

The gift card currency.

pre_order_date

string

  • format: date

The preorder date. Full-date notation as defined by RFC 3339 section 5.6.

pre_order_purchase_indicator

string

  • enum

    • AVAILABLE

    • FUTURE

The preorder purchase indicator.

reordered_items_indicator

string

  • enum

    • FIRST

    • REORDERED

The reordered items indicator.

shipping_indicator

string

  • enum

    • DIGITAL

    • OTHER

    • BILLING_ADDRESS

    • DIFFERENT_ADDRESS

    • STORE

    • VERIFIED_ADDRESS

The shipping indicator.

NegativeCriterionResponse

If scoring_rc=Y or scoring_rc=R, several possible.

Property Type Description

completion_date

string

  • format: date

Clearing date of a feature.

Example: 2007-09-23

completion_flag

boolean

Clearing sign of the feature.

date

string

  • required

  • format: date

Example: 2007-09-23

doc_reference

string

  • minLength: 0

  • maxLength: 14

  • pattern: .*

File reference of the feature.

Example: DFS-sf-12345

kind

string

  • required

The codes of the negative features supplied in the response. The following values are valid:

Soft Negative Features:

IA: Debt-collecting delinquency procedure initiated.

AM: Ongoing extra judicial debt-collecting delinquency procedure after partial payment or in the case of payments in instalments.

IE: Suspension of the extra judicial debt-collecting delinquency procedure due to futility.

Medium Negative Features:

MB: Application for default summons.

VB: Application for enforcement order.

TR: Payer by instalments after claims entitlement.

ZWA: Enforcement by writ of movables.

ZWI: Enforcement by writ of immovables.

FRP: Effectless attachment.

FRP: Effectless attachment.

LP: Attachment of salary or other claims due to a garnishee order.

UBV: Address unknown (having left liabilities of monetary or goods credits).

Hard Negative Features:

HB: Arrest warrant to enforce affidavit.

HV: Execution of arrest warrant to enforce affidavit.

EV: Affidavit (“oath of manifestation”).

EEV: Amendment of affidavit.

WEV: Repeated affidavit, § 903 ZPO (Code of Civil Procedure).

SVV: Refusal of asset information according to §882c para. 1 no. 1 ZPO.

SAV: Recognisable futility of enforcement according to §882c para. 1 no. 2 ZPO.

SNZ: Non-payer according to §882c para. 1 no. 3 ZPO.

IVE: Attempt of out-of-court settlement within the scope of insolvency proceedings.

ISP: Settlement of debts procedure initiated / application for initiation of insolvency proceedings.

IVS: Order of preliminary measures of protection in the insolvency proceedings.

IVA: Repeal of preliminary measures of protection in the insolvency proceedings.

IBE: Initiation of insolvency proceedings / decree.

IBA: Dismissal or suspension of the insolvency proceedings for lack of assets, § 26 Para. 2 InsO (Insolvency Statute).

IWP: Repeal of insolvency proceedings.

IRB: Issuance of waiver of remaining debts.

IRV: Refusal of waiver of remaining debts.

KON: Dismissal of application for initiation of insolvency proceedings for lack of assets, §107 KO (Bankruptcy Act).

KER: Initiation of bankruptcy proceedings, § 108 KO (Bankruptcy Act).

KEM: Suspension of bankruptcy proceedings for lack of assets, §§ 202, 204 KO (Bankruptcy Act).

KAS: Repeal of bankruptcy proceedings (after closing date), § 163 KO (Bankruptcy Act)

VGE: Initiation of composition procedure, § 11 ff VerglO (Rules of conciliation).

VGA: Dismissal of application for initiation of composition procedure.

VEM: Suspension of composition procedure after repealing the scheme of arrangement, §99 ff VerglO (Rules of conciliation).

VAS: Repeal of composition procedure, § 90 ff VerglO (Rules of conciliation).

GVA: Dismissal of application for initiation of general enforcement for lack of assets, §4 Abs. 2 GesO (General enforcement policy).

GVE: Initiation or order of general enforcement, § 5 GesO (General enforcement policy).

GEM: Suspension of general enforcement proceedings.

GAS: Repeal of general enforcement proceedings.

Other Negative Features:

*: Respective negative feature stated, if the claim based on the collection operation has been cleared effectively – that is by payment.

AE: Note regarding address.

+: Person deceased.

HI: Notes regarding person or company.

HA: Notes regarding address.

Example: IA

PSD2Account
Property Type Description

bban

string

Used for payment accounts which have no IBAN.

currency

string

  • pattern: [A-Z]{3}

ISO 4217 currency code, three uppercase letters.

Example: EUR

iban

string

  • minLength: 15

  • maxLength: 34

  • pattern: [A-Z]{2}[0-9]{2}[A-Z0-9*]{11,30}

The international bank account number of the bank account.

Example: DE86100700004567891263

masked_pan

string

  • minLength: 0

  • maxLength: 35

Primary Account Number (PAN) of a card in a masked form.

msisdn

string

  • minLength: 0

  • maxLength: 35

An alias to access a payment account via a registered mobile phone number.

pan

string

  • minLength: 0

  • maxLength: 35

Primary Account Number (PAN) of a card, can be tokenized by the ASPSP due to PCI DSS requirements.

PSD2AccountDetails

Contains details of a customer’s bank account.

Property Type Description

balances

Array[PSD2Balance]

Balance(s) of the account. There might be more than one balance with different types.

currency

string

  • pattern: [A-Z]{3}

ISO 4217 currency code, three uppercase letters.

Example: EUR

details

string

  • minLength: 0

  • maxLength: 500

Specifications that might be provided by the ASPSP such as characteristics of the account or characteristics of the relevant card.

iban

string

The international bank account number of the bank account.

Example: DE86100700004567891263

name

string

  • minLength: 0

  • maxLength: 35

Name of the account given by the bank or the PSU in online-banking.

owner_name

string

  • minLength: 0

  • maxLength: 140

Name(s) of the account owner(s).

product

string

  • minLength: 0

  • maxLength: 35

Product name of the bank for this account, proprietary definition.

status

string

  • enum

    • ENABLED

    • DELETED

    • BLOCKED

Status of the account

  • ENABLED: account is available

  • DELETED: account is terminated

  • BLOCKED: account is blocked for example for legal reasons

transactions

usage

string

  • enum

    • PRIV

    • ORGA

    • TEST_USAGE

Specifies the usage of the account

  • PRIV: private personal account

  • ORGA: professional account

  • TEST_USAGE: returned by Sparkassen sandbox

PSD2AccountInfoResponse
Property Type Description

accounts

Bank account details which were stored in a previous step.

accounts_as_of

string

  • format: date-time

Date and time of the account information request. Date-time notation as defined by RFC 3339, section 5.6.

Example: 2021-07-14T08:59:12Z

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

transaction_filter

Contains properties to filter the transactions if requested_details includes TRANSACTIONS. If booking_status is not submitted BOOKED transactions will be requested from the customer’s bank.

PSD2Balance
Property Type Description

amount

  • required

An amount and a currency.

credit_limit_included

boolean

A flag indicating if the credit limit of the corresponding account is included in the calculation of the balance, where applicable.

last_change

string

  • format: date-time

This data element might be used to indicate for example with the expected or booked balance that no action is known on the account, which is not yet booked. Date-time notation as defined by RFC 3339, section 5.6.

Example: 2021-07-14T08:59:12Z

reference_date

string

  • format: date

Indicates the date of the balance. Full-date notation as defined by RFC 3339, section 5.6.

Example: 2021-07-14

type

string

  • required

  • enum

    • CLOSING_BOOKED

    • EXPECTED

    • OPENING_BOOKED

    • INTERIM_AVAILABLE

    • INTERIM_BOOKED

    • FORWARD_AVAILABLE

    • NON_INVOICED

    • PREVIOUSLY_CLOSED

The following balance types are excluding credit limits unless the credit_limit_included element is present and equals true in the corresponding balance element. This definition is following ISO20022 logic for defining balance types.

  • CLOSING_BOOKED: Balance of the account at the end of the pre-agreed account reporting period. It is the sum of the opening booked balance at the beginning of the period and all entries booked to the account during the pre-agreed account reporting period. For card-accounts, this is composed of invoiced, but not yet paid entries

  • EXPECTED: Balance composed of booked entries and pending items known at the time of calculation, which projects the end of day balance if everything is booked on the account and no other entry is posted. For card accounts, this is composed of invoiced, but not yet paid entries, not yet invoiced but already booked entries and pending items (not yet booked),

  • OPENING_BOOKED: Book balance of the account at the beginning of the account reporting period. It always equals the closing book balance from the previous report.

  • INTERIM_AVAILABLE: Available balance calculated in the course of the account servicer’s business day, at the time specified, and subject to further changes during the business day. The interim balance is calculated on the basis of booked credit and debit items during the calculation time/period specified. For card-accounts, this is composed of invoiced, but not yet paid entries and not yet invoiced but already booked entries

  • INTERIM_BOOKED: Balance calculated in the course of the account servicer’s business day, at the time specified, and subject to further changes during the business day. The interim balance is calculated on the basis of booked credit and debit items during the calculation time/period specified.

  • FORWARD_AVAILABLE: Forward available balance of money that is at the disposal of the account owner on the date specified.

  • NON_INVOICED: Only for card accounts, to be defined yet.

  • PREVIOUSLY_CLOSED: Balance of the account at the previously closed account reporting period.

Example: CLOSING_BOOKED

PSD2Bank

Contains bank details.

Property Type Description

bank_code

string

German bank code (Bankleitzahl, BLZ).

bic

string

  • minLength: 8

  • maxLength: 11

  • pattern: [A-Z]{6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3})?

BIC (business identifier code).

capabilities

id

string

Temporary system identifier for this bank - if PSD2 is supported.

name

string

  • required

Name of the bank.

psd2_supported

boolean

  • required

If true this bank can be used for the PSD2 account information and payment initiation services.

town

string

Town where the bank is located.

PSD2BankResults
Property Type Description

banks

Array[PSD2Bank]

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

metadata

Metadata for a paged data result.

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

PSD2CapabilityEnum
  • AVAILABLE_ACCOUNTS: PSD2 account information service AIS can be used to find all the customer’s accounts with this bank.

  • AVAILABLE_ACCOUNTS_WITH_BALANCE: AIS can be used to find all the customer’s account including the balances

  • BANK_OFFERED_CONSENT: AIS can be used to find the customer’s accounts with this bank. If the customer has more than one account the bank will display the list of accounts and the customer chooses the accounts for which she/he wants to grant access.

  • GLOBAL_CONSENT: AIS can be used to get the customer’s consent to access all accounts.

PSD2CurrencyExchange
Property Type Description

contract_identification

string

Unique identification to unambiguously identify the foreign exchange contract.

exchange_rate

string

Factor used to convert an amount from one currency into another. This reflects the price at which one currency was bought with another currency.

quotation_date

string

  • format: date

Date at which an exchange rate is quoted.

source_currency

string

Currency from which an amount is to be converted in a currency conversion.

Example: USD

target_currency

string

  • pattern: [A-Z]{3}

Currency into which an amount is to be converted in a currency conversion.

Example: EUR

unit_currency

string

  • pattern: [A-Z]{3}

Currency in which the rate of exchange is expressed in a currency exchange. In the example 1 EUR = xxx CUR, the unit currency is EUR.

Example: EUR

PSD2Remittance
Property Type Description

reference

string

  • minLength: 0

  • maxLength: 35

reference_issuer

string

  • minLength: 0

  • maxLength: 35

reference_type

string

  • minLength: 0

  • maxLength: 35

PSD2Transaction

A transaction of a bank account.

Property Type Description

additional_information

string

Might be used by the ASPSP to transport additional transaction related information to the PSU.

amount

  • required

An amount and a currency.

balance_after_transaction

bank_transaction_code

string

Bank transaction code as used by the ASPSP and using the sub-elements of this structured code defined by ISO20022.

booking_date

string

  • format: date

The date when an entry is posted to an account on the ASPSPs books.

booking_status

string

  • required

  • enum

    • BOOKED

    • PENDING

Booking status of a transaction

  • BOOKED

  • PENDING

Example: BOOKED

check_id

string

  • minLength: 0

  • maxLength: 35

Identification of a check.

creditor_account

creditor_agent

string

  • minLength: 11

  • maxLength: 11

  • pattern: [A-Z]{6}[A-Z2-9][A-NP-Z0-9][A-Z0-9]{3}

A BIC.

Example: VZVDDED1XXX

creditor_id

string

  • minLength: 8

  • maxLength: 35

  • pattern: [a-zA-Z0-9]+

Identification of creditors, for example, a SEPA Creditor ID.

Example: DE98ZZZ09999999999

creditor_name

string

  • minLength: 0

  • maxLength: 70

Name of the creditor of a "debited" transaction.

currency_exchange

debtor_account

debtor_agent

string

  • minLength: 11

  • maxLength: 11

  • pattern: [A-Z]{6}[A-Z2-9][A-NP-Z0-9][A-Z0-9]{3}

A BIC.

Example: VZVDDED1XXX

debtor_name

string

  • minLength: 0

  • maxLength: 70

Name of the debtor of a "credited" transaction.

end_to_end_id

string

  • minLength: 0

  • maxLength: 35

Unique end to end identifier.

entry_reference

string

Entry reference, for example from camt.052 message.

mandate_id

string

  • minLength: 0

  • maxLength: 35

Identification of mandates, for example, a SEPA mandate ID.

proprietary_bank_transaction_code

string

Proprietary bank transaction code as used within a community or within an ASPSP, for example for MT94x based transaction reports.

purpose_code

string

ExternalPurpose1Code according to ISO 20022.

remittance_information_structured

remittance_information_unstructured

Array[string]

Unstructured remittance information.

ultimate_creditor

string

  • minLength: 0

  • maxLength: 70

Name of the ultimate creditor of a "debited" transaction.

ultimate_debtor

string

  • minLength: 0

  • maxLength: 70

Name of the ultimate debtor of a "credited" transaction.

value_date

string

  • format: date

Date at which assets become available to the account owner in case of a credit entry, or cease to be available to the account owner in case of a debit entry. Usage: If entry status is pending and value date is present, then the value date refers to an expected/requested value date.

PSD2TransactionFilter

Contains properties to filter the transactions if requested_details includes TRANSACTIONS. If booking_status is not submitted BOOKED transactions will be requested from the customer’s bank.

Property Type Description

booking_status

Array[string]

  • enum

    • BOOKED

    • PENDING

Booking status of a transaction

  • BOOKED

  • PENDING

Example: ["BOOKED"]

date_from

string

  • format: date

Starting date of the transaction list. Full-date notation as defined by RFC 3339, section 5.6.

Example: 2021-07-13

date_to

string

  • format: date

End date of the transaction list. Full-date notation as defined by RFC 3339, section 5.6.

Example: 2021-07-14

PagedMetadata

Metadata for a paged data result.

Property Type Description

limit

integer

  • format: int32

Maximum number of result items to be returned.

Example: 50

offset

integer

  • format: int32

Number of rows to skip at the beginning of the total result set.

Example: 50

total

integer

  • format: int32

The result count total for the current query.

Example: 572

PaymentCreditCardRequestInitial
Property Type Description

account_information

Information on a user’s account usage, payment history, transaction statistics.

aid

string

  • minLength: 0

  • maxLength: 32

Approval number of authorizing party.

Example: a34232

alias_action

Specifies an alias and an operation to perform on it.

amount_total

  • required

An amount and a currency.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

customer_information

Details of a customer.

device_information

Technical details of a client.

entry_channel

string

  • enum

    • ECOM

    • MOTO

Indicates the channel where the credit card data is recorded. The transaction is processed as an eCommerce transaction if no value is set.

  • ECOM: eCommerce

  • MOTO: Mail Order/Telephone Order

means_of_payment

The means of payment that will be used. Exactly one of the given means is valid.

merchant_defined_information

merchant_information

Further information from the merchant.

merchant_risk_indicators

Contains data about the specific 3-D Secure 2.0 purchase which can be used for risk assessment.

processing_options

Array[string]

  • enum

    • RISKCHECK

    • FALL_BACK_ON_SSL

Additional processing option for a credit card transaction.

  • RISKCHECK: before the transaction a risk check is performed. Only available if this option has been activated for the shop.

  • FALL_BACK_ON_SSL: process the transaction flagged as channel-encrypted (SSL, 3-D Secure authentication was not performed) instead of 3-D Secure in case 3-D Secure authentication could not be performed.

Example: ["RISKCHECK"]

recurring_payment

string

  • minLength: 1

  • maxLength: 50

  • pattern: [/0-9a-zA-Z_.:,+*$%-]+

Identifier of a recurring credit card payment.

Example: 07H987Tx3PF9VxL5G7RfNp

risk_check_additional_information

Additional information for calculation of the risk of a transaction.

sequence_type

string

  • enum

    • FINAL

    • FIRST

    • RECURRING

If this payment is part of a sequence of payments

  • FIRST: first payment of a sequence

  • RECURRING: follow-up payment

  • FINAL: last payment of a sequence

series_flag

string

  • enum

    • INSTALMENT

    • RECURRING

    • UCOF

Designates a payment as part of a series of payments.

  • INSTALMENT: for example in the case of paying a fixed sum in multiple partial payments.

  • RECURRING: for example in the case of a subscription or standing order.

  • UCOF: when a card number alias is created for future payments with the same credit card. In this case use alias_action with action CREATE with the first payment and the card number alias with the following payments. You can use the tx_action verify-mop with the first UCOF transaction to register a card number alias without a payment.

shipping_address

Address data as applicable to most use cases.

tds_external_data

3-D Secure data provided by an MPI/3DS Server.

travel_information

Travel information of the order.

PaymentDiagnosisEventResponse

Response contains all transactions belonging to the event.

Property Type Description

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

payment_link_info

Contains information about the created or updated payment link.

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

transactions

All transactions that are assigned to this event.

PaymentDiagnosisResponse

Response contains transaction details and all child transactions if present.

Property Type Description

alias_info

Contains information about the created or updated alias. This field is null if the there was no 'alias_info' in the request.

amount_total

An amount and a currency.

back_ext_id

string

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

Transaction reference number of the backend system.

Example: 4SK49197932713631

back_rc

string

  • minLength: 0

  • maxLength: 255

Response code of a backend system, for example the GICC response code.

Example: 00

children

A list of all transactions that were sent as follow-up transactions.

event_id

string

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Example: E5686585867636541231230

kind

string

  • enum

    • DIRECTDEBIT

    • CREDITCARD

    • CREDITCARD_3DS20

    • CREDITTRANSFER

    • SOFORTUEBERWEISUNG

    • PAYPAL

    • PAYDIREKT

    • WECHATPAY

    • P24

    • TWINT

    • GIROPAY

    • KLARNA

    • PSD2

    • IDEAL

    • WERO

The type of transaction.

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

riskmanagement_info

timestamp

string

  • required

  • format: date-time

Timestamp of the transaction.

transaction_info

tx_action

string

  • enum

    • authorization

    • capture

    • credit

    • preauthorization

    • refund

    • reversal

    • risk_check

    • verify-mop

    • payment

    • account_information

The action of a transaction.

tx_id

string

Unique transaction identifier. Can be used to reference this transaction.

Example: 020LMG10jxSI8FN0OC4vLR

PaymentDirectDebitRequestInitial
Property Type Description

account_information

Information on a user’s account usage, payment history, transaction statistics.

address

Address data as applicable to most use cases.

alias_action

Specifies an alias and an operation to perform on it.

amount_total

  • required

An amount and a currency.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

customer_information

Details of a customer.

debit_method

string

  • enum

    • SDD

    • B2B

Direct debit method. If not specified, an SDD will be carried out.

  • SDD: SEPA Core Direct Debit

  • B2B: SEPA Business to Business Direct Debit

Example: B2B

device_information

Technical details of a client.

due_date

string

  • format: date

Due date of a direct debit payment, that is, the date on which it shall be booked. Full-date notation as defined by RFC 3339, section 5.6. See the user guide for more information.

mandate

  • required

means_of_payment

The means of payment that will be used. Exactly one of the given means is valid.

merchant_defined_information

merchant_information

Further information from the merchant.

merchant_risk_indicators

Contains data about the specific 3-D Secure 2.0 purchase which can be used for risk assessment.

processing_options

Array[string]

  • enum

    • CHECKLIST

    • RISKCHECK

Additional processing option for direct debit.

  • CHECKLIST: before the direct debit a blocklist is checked. Only available if this option has been activated for the shop.

  • RISKCHECK: before the direct debit a risk check is performed. Only available if this option has been activated for the shop.

Example: ["CHECKLIST","RISKCHECK"]

risk_check_additional_information

Additional information for calculation of the risk of a transaction.

shipping_address

Address data as applicable to most use cases.

travel_information

Travel information of the order.

PaymentKlarnaRequestInitial
Property Type Description

amount_total

  • required

An amount and a currency.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

customer_information

Details of a customer.

means_of_payment

The means of payment that will be used. Only an alias is valid.

merchant_information

Further information from the merchant.

shipping_address

Address data as applicable to most use cases.

PaymentLinkEventResponse

Response contains all information about payment link belonging to the event.

Property Type Description

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

payment_link_info

Contains information about the created or updated payment link.

payment_link_url

string

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

PaymentLinkInfo

Contains information about the created or updated payment link.

Property Type Description

expires

string

  • format: date-time

Specifies until when the payment link is usable (in local German time).

status

string

  • enum

    • LINK_INITIALIZED

    • LINK_DEACTIVATED

    • LINK_EXPIRED

    • PAYMENT_SUCCESSFUL

The payment link status

  • LINK_INITIALIZED: payment link is initialized

  • LINK_DEACTIVATED: payment link is deactivated

  • LINK_EXPIRED: payment link has exceeded its validity period

  • PAYMENT_SUCCESSFUL: payment link was used for a successful payment

Example: PAYMENT_SUCCESSFUL

PaymentLinkManagementUpdateRequest

The request to be executed on the Payment Link management API .

Property Type Description

expires

string

  • format: date-time

Specifies until when the payment link is valid and usable. The time must not be in the past and not more than 60 days in the future.

PaymentLinkRequest

Request data that is being used to create a payment link.

Property Type Description

account_information

Information on a user’s account usage, payment history, transaction statistics.

amount_total

An amount and a currency.

bank_account

Information about a bank account.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

callback

Data for the shop notification.

checkout_page_configuration

Contains required and optional data for each payment method that should be offered.

customer_information

Details of a customer.

device_information

Technical details of a client.

expires

string

  • required

  • format: date-time

Specifies until when the payment link is valid and usable. The time must not be in the past and not more than 60 days in the future.

form_customer_continuation

Includes data for redirecting a customer after a form service payment. Required except for payment links.

form_data

Data to customize forms, such as labels, theme, and style properties.

merchant_defined_information

merchant_information

Further information from the merchant.

merchant_risk_indicators

Contains data about the specific 3-D Secure 2.0 purchase which can be used for risk assessment.

processing_options

Array[string]

  • enum

    • COOKIES_ACCEPTED

    • STORE_CHECKOUT_PAGE_PREFERENCES

Specific options for checkout page processing. Valid values are:

  • COOKIES_ACCEPTED: The customer has already agreed to the use of cookies.

  • STORE_CHECKOUT_PAGE_PREFERENCES: The customer has agreed to store checkout page preferences in cookie value. For this, the customer must also have agreed to the use of cookies.

risk_check_additional_information

Additional information for calculation of the risk of a transaction.

shipping_address

Address data as applicable to most use cases.

travel_information

Travel information of the order.

PaymentLinkResponse
Property Type Description

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

payment_link

string

  • minLength: 0

  • maxLength: 1024

The payment link url, which is used by the customer to pay.

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

PaymentPayPalRequestInitial
Property Type Description

amount_total

  • required

An amount and a currency.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

means_of_payment

The means of payment that will be used. Only an alias is valid.

shipping_address

Address data as applicable to most use cases.

PaymentPlan
Property Type Description

amount_payment_type

string

  • enum

    • PAY

    • PAY_UP_TO

The Wero amount payment type. * PAY: Consumer must be charged the complete amount * PAY_UP_TO: Consumer must be charged up to the amount

capture_event

string

  • enum

    • SHIPPING

    • DELIVERY

    • AVAILABILITY

    • SERVICE_FULFILMENT

    • OTHER

The Wero capture trigger. * SHIPPING * DELIVERY * AVAILABILITY * SERVICE_FULFILMENT * OTHER Required when payment plan is EVENT_DEPENDENT

max_auth_to_capture_time

integer

  • format: int64

  • maximum: 864000

  • default: 604800

The maximum time, in seconds, between pre-authorization and capture. The default value is 604800 , which translates to one week.

Example: 604800

PaymentRequestSubsequent
Property Type Description

basket

A generalized shopping basket.

changed_amount

integer

  • format: int64

  • minimum: 1

The transaction amount of the subsequent transaction to indicate a partial capture, refund, or reversal. If changed_amount is not set, the transaction will be a full capture, refund, or reversal.

Example: 200

description

string

The description of the transaction.

Example: The description of the transaction.

due_date

string

  • format: date

Optional in the case of a direct debit capture. Due date of a direct debit payment, that is, the date on which it shall be booked. Full-date notation as defined by RFC 3339, section 5.6. See the user guide for more information.

kind

string

  • required

  • enum

    • DIRECTDEBIT

    • CREDITCARD

    • CREDITCARD_3DS20

    • CREDITTRANSFER

    • SOFORTUEBERWEISUNG

    • PAYPAL

    • PAYDIREKT

    • WECHATPAY

    • P24

    • TWINT

    • GIROPAY

    • KLARNA

    • PSD2

    • IDEAL

    • WERO

The type of transaction.

shipping_info

PaymentResponse
Property Type Description

alias_info

Contains information about the created or updated alias. This field is null if the there was no 'alias_info' in the request.

amount_total

An amount and a currency.

back_ext_id

string

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

Transaction reference number of the backend system.

Example: 4SK49197932713631

back_rc

string

  • minLength: 0

  • maxLength: 255

Response code of a backend system, for example the GICC response code.

Example: 00

event_id

string

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Example: E5686585867636541231230

kind

string

  • enum

    • DIRECTDEBIT

    • CREDITCARD

    • CREDITCARD_3DS20

    • CREDITTRANSFER

    • SOFORTUEBERWEISUNG

    • PAYPAL

    • PAYDIREKT

    • WECHATPAY

    • P24

    • TWINT

    • GIROPAY

    • KLARNA

    • PSD2

    • IDEAL

    • WERO

The type of transaction.

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

riskmanagement_info

timestamp

string

  • required

  • format: date-time

Timestamp of the transaction.

transaction_info

tx_action

string

  • enum

    • authorization

    • capture

    • credit

    • preauthorization

    • refund

    • reversal

    • risk_check

    • verify-mop

    • payment

    • account_information

The action of a transaction.

tx_id

string

Unique transaction identifier. Can be used to reference this transaction.

Example: 020LMG10jxSI8FN0OC4vLR

PersonalIdentification

Customer’s legal ID data.

Property Type Description

id

string

  • minLength: 0

  • maxLength: 26

The value of the identification type. For 'PASSPORT', this is the customer’s passport number. For 'CPF', set this field to the Cadastro de Pessoas Fisicas.

Example: T220001297

issued_by

string

The government agency that issued the identification. For 'DRIVERS_LICENSE', this is the administrative area where it was issued. For 'PASSPORT', this is the country that issued the passport. Use the two-character state, province or territory codes respectively for United States and Canada.

Example: DE

type

string

  • enum

    • NATIONAL

    • PASSPORT

    • CPF

    • CNPJ

    • CURP

    • SSN

    • DRIVERS_LICENSE

Type of identification.

  • NATIONAL

  • PASSPORT

  • CPF

  • CNPJ

  • CURP

  • SSN

  • DRIVERS_LICENSE

Example: PASSPORT

PhoneContact

A means of contacting a customer by phone.

Property Type Description

phone_number

string

  • required

  • minLength: 0

  • maxLength: 16

  • pattern: \+[1-9]\d{1,14}

A phone number in its canonical international E.164 numbering plan format.

Example: +442071838750

phone_type

string

  • required

  • enum

    • FAX

    • HOME

    • MOBILE

    • OTHER

    • PAGER

    • WORK

The phone type.

  • FAX

  • HOME

  • MOBILE

  • OTHER

  • PAGER

  • WORK

Example: FAX

Example:

{"phone_type":"FAX","phone_number":"+442071838750"}
ProvidedMandate
Property Type Description

mandate_name

string

  • minLength: 1

  • maxLength: 70

  • pattern: [0-9a-zA-Z +?/\-:().,']+

Name of the recipient that was used in the SEPA mandate. If not submitted, the name that is configured in the standing data of the shop will be used.

Example: Smith and Jones

mandate_sequence_type

string

  • default: ONEOFF

  • enum

    • ONEOFF

    • FIRST

    • RECURRING

    • FINAL

Sequence type of a payment. If not submitted a single payment is assumed.

  • ONEOFF: single payment

  • FIRST: first payment of a sequence

  • RECURRING: follow-up payment

  • FINAL: last payment of a sequence

Example: FIRST

previous_bic

string

  • minLength: 11

  • maxLength: 11

  • pattern: [A-Z]{6}[A-Z2-9][A-NP-Z0-9][A-Z0-9]{3}

Previous BIC of the customer if the SEPA mandate is modified. Only in the case of recurring payments with the first payment after the mandate changed. Is determined by DB Merchant Solutions in the case of a German previous IBAN. Required in case of a previous IBAN (field previous_iban) from another country.

Example: VZVDDED1XXX

previous_creditor_id

string

  • minLength: 8

  • maxLength: 35

  • pattern: [a-zA-Z0-9]+

Previous creditor ID if the SEPA mandate is modified. Only in the case of recurring payments with the first payment after the mandate changed.

Example: DE98ZZZ09999999999

previous_iban

string

  • minLength: 15

  • maxLength: 34

  • pattern: [A-Z]{2}[0-9]{2}[A-Z0-9*]{11,30}

Previous IBAN of the customer if the SEPA mandate is modified. Only in the case of recurring payments with the first payment after the mandate changed.

Example: DE86100700004567891263

previous_reference

string

  • minLength: 1

  • maxLength: 35

  • pattern: [0-9a-zA-Z +?/\-:().,']+

Previous mandate reference number if the SEPA mandate is modified. Only in the case of recurring payments with the first payment after the mandate changed. A forward slash '/' is not allowed as the first or last character of the mandate reference number. Inside the mandate reference number two consecutive forward slashes are not allowed.

Example: M2013-987/1-AB

reference

string

  • required

  • minLength: 1

  • maxLength: 35

  • pattern: [0-9a-zA-Z +?/\-:().,']+

Reference number, unique identification of the SEPA mandate. A forward slash '/' is not allowed as the first or last character of the mandate reference number. Inside the mandate reference number two consecutive forward slashes are not allowed.

Example: M2013-987/1-AB

signed_on

string

  • required

  • format: date

Date when the SEPA mandate was issued. Full-date notation as defined by RFC 3339, section 5.6

Example: 2017-01-01

Quantity

A quantity.

Property Type Description

quantity_amount

integer

  • required

  • format: int64

  • minimum: 0

Amount of units.

Example: 5

quantity_unit

string

  • required

  • minLength: 0

  • maxLength: 8

Unit used to describe the quantity.

Example: pcs

RequestToPayAccountReference

Information about a bank account.

Property Type Description

account_holder

string

The account holder of the bank account.

Example: Max Muster

currency

string

ISO 4217 currency code, three uppercase letters.

Example: EUR

iban

string

The international bank account number of the bank account.

Example: DE86100700004567891263

RequestToPayPaymentStatus

Status of the payment.

Property Type Description

code

string

  • enum

    • RECEIVED

    • AUTHORISED

    • PROCESSED

    • ACCEPTED

    • CLEARED

    • SETTLED

    • REJECTED

    • CANCELLED

    • IDEAL_OPEN

    • IDEAL_SUCCESS

    • IDEAL_CANCELLED

    • IDEAL_EXPIRED

    • IDEAL_FAILURE

Request to Pay or iDEAL payment status code. Possible values:

  • RECEIVED: Payment request has been captured for further processing.

  • AUTHORISED: Payment has been accepted for execution.

  • PROCESSED: Payment request has been processed by the bank.

  • ACCEPTED: Payment is booked on the recipient account.

  • CLEARED: Payment has been cleared.

  • SETTLED: Payment has been settled.

  • REJECTED: Payment request has been rejected.

  • CANCELLED: Payment request has been cancelled.

  • IDEAL_OPEN: Final status of iDEAL payment not yet known.

  • IDEAL_SUCCESS: iDEAL payment has succeeded.

  • IDEAL_CANCELLED: iDEAL payment has been cancelled by the consumer.

  • IDEAL_EXPIRED: iDEAL payment has expired.

  • IDEAL_FAILURE: iDEAL payment has failed due to unknown reason.

date_time

string

  • format: date-time

Date and time when the payment status was set.

Example: 2022-08-15T04:30:59Z

RequestToPayPaymentsReport
Property Type Description

metadata

Metadata for a paged data result.

payments

RequestToPayPaymentsReportItem

A single payment in the report.

Property Type Description

adjusted_payment_reference

string

Adjusted payment reference that will appear on the payment statement.

Example: ADJUSTEDPMNTREF

creditor_account

Information about a bank account.

debtor_account

Information about a bank account.

instructed_amount

An amount and a currency.

payment_alternative_id

string

Value submitted as payment alternative ID in the payment initiation request.

Example: 0123456789ABCDEF

payment_id

string

Payment identifier submitted in the payment initiation request.

Example: e3349334-f539-453e-85ba-d19f2d86c630

payment_products

Array[string]

payment_reference

string

Value submitted as payment reference in the payment initiation request.

Example: PMNTREF

scheme

string

  • enum

    • OB

    • IDEAL

Scheme of the payment:

  • OPEN_BANKING: Open Banking

  • IDEAL: iDEAL

settled_debtor_account

Information about a bank account.

status

Status of the payment.

total_refund_instructed_amount

An amount and a currency.

total_refund_settled_amount

An amount and a currency.

RequestToPayRefundStatus

Status of the refund.

Property Type Description

code

string

  • enum

    • RECEIVED

    • SETTLED

    • REJECTED

Request to Pay refund status code. Possible values:

  • RECEIVED: Refund request has been captured for further processing.

  • SETTLED: Refund has been completed.

  • REJECTED: Refund has been rejected.

date_time

string

  • format: date-time

Date and time when the refund status was set.

Example: 2022-08-15T04:30:59Z

RequestToPayRefundsReport
Property Type Description

metadata

Metadata for a paged data result.

payments

RequestToPayRefundsReportItem

A single refund in the report.

Property Type Description

instructed_amount

An amount and a currency.

payment_id

string

Payment identifier submitted in the payment initiation request.

Example: e3349334-f539-453e-85ba-d19f2d86c630

refund_alternative_id

string

Optional attribute not processed by the API. It will be sent back with a refund details.

Example: ZYX9876543210

refund_id

string

Refund identifier unique per the payment.

Example: 123-1234-123456

refund_reference

string

Business reference field that will be passed as a part of E2E reference.

Example: RFNDREF

status

Status of the refund.

RiskCheckAdditionalInformation

Additional information for calculation of the risk of a transaction.

Property Type Description

fingerprint_session_id

string

  • minLength: 0

  • maxLength: 88

Fingerprint session ID of the device and request of the customer.

Example: 529572354443398504

RiskCheckMerchantDefinedInformation

Merchant defined information of the order. This must not be used to capture personally identifying information.

Property Type Description

key

string

  • minLength: 0

  • maxLength: 255

Merchant-defined data fields are not intended to and must not be used to capture personally identifying information. Accordingly, merchants are prohibited from capturing, obtaining, and/or transmitting any personally identifying information in or via the merchant-defined data fields. Personally identifying information includes, but is not limited to, address, credit card number, social security number, driver’s license number, state-issued identification number, passport number, and card verification numbers (CVV, CVC2, CVV2, CID, CVN). In the event Riskmanagement discovers that a merchant is capturing and/or transmitting personally identifying information via the merchant-defined data fields, whether or not intentionally, Riskmanagement will immediately suspend the merchant’s account, which will result in a rejection of any and all transaction requests submitted by the merchant after the point of suspension.

Example: MDD_001

value

string

  • minLength: 0

  • maxLength: 255

String value for the key.

Example: nightly order

RiskCheckPassenger

A (plane) passenger as modelled from the point of view of a risk check service.

Property Type Description

country

string

  • minLength: 2

  • maxLength: 2

  • pattern: [A-Z]{2}

The ISO 3166 Alpha-2 country code (upper case) of the individual’s homeland.

Example: DE

email

string

  • minLength: 0

  • maxLength: 255

  • pattern: .*@.*\..*

Email address of the individual.

Example: test_jane@gmail.com

first_name

string

  • minLength: 0

  • maxLength: 60

First name of the individual.

Example: Jane

id

string

  • minLength: 0

  • maxLength: 40

ID of the passenger to whom a ticket was issued. For example, this field may contain the frequent flyer number.

Example: B7564

last_name

string

  • minLength: 0

  • maxLength: 60

Last name of the individual.

Example: Doe

phone

A means of contacting a customer by phone.

status

string

  • minLength: 0

  • maxLength: 32

Merchant specific passenger classification, such as standard, gold, or platinum.

Example: standard

type

string

  • enum

    • ADT

    • CNN

    • INF

    • YTH

    • STU

    • SCR

    • MIL

Passenger classification as indicated by the price discount class of the ticket. The following values are valid:

  • ADT: Adult

  • CNN: Child

  • INF: Infant

  • YTH: Youth

  • STU: Student

  • SCR: Senior Citizen

  • MIL: Military

Example: ADT

RiskCheckTravelInformation

Travel information of the order.

Property Type Description

actual_final_destination

string

  • minLength: 0

  • maxLength: 3

IATA Code for the actual final destination that the customer intends to travel to. It should be a destination on the complete_route.

Example: SFO

complete_route

string

  • minLength: 0

  • maxLength: 255

Concatenation of individual travel legs in the format ORIG1-DEST1[:ORIG2-DEST2…​:ORIGn-DESTn]

Example: SFO-JFK:JFK-LHR:LHR-CDG

departure_time

string

  • format: date-time

Departure date and time of the first leg of the trip.

journey_type

string

  • enum

    • ONEWAY

    • ROUNDTRIP

Type of travel, for example one way or round trip.

  • ONEWAY

  • ROUNDTRIP

Example: ONEWAY

legs

Single legs of the complete journey.

number_of_passengers

string

Number of passengers for whom the ticket was issued.

Example: 1

passengers

RiskmanErrorFieldInformation

Field name and reason why the request was rejected.

Property Type Description

field

string

The name of the field which was the reason of the request rejection.

Example: orderInformation.billTo.firstName

reason

string

The reason why the request was rejected.

Example: MISSING_FIELD

RiskmanErrorInformation

Detailed error information including fields which had been the reasons for unsuccessful processing.

Property Type Description

error_field_information

Detailed field level information regarding the reason why the request was rejected.

error_message

string

The reason why the request was rejected.

Example: Declined - The request is missing one or more fields.

error_reason

string

The reason why the request was rejected from the backend system.

Example: MISSING_FIELD

error_status

string

The status why the request was rejected from the backend system.

Example: INVALID_REQUEST

RiskmanagementEntryRequest

Denotes a set of data elements like addresses or credit card PAN to add to the negative or positive list.

Property Type Description

account_information

Information on a user’s account usage, payment history, transaction statistics.

action

string

  • enum

    • ADD

    • DELETE

The action to perform with the list.

Example: ADD

address

Address data as applicable to most use cases.

bank_account

Information about a bank account.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

credit_card_data

Information about a credit card.

customer_information

Details of a customer.

delivery_email_address

string

  • pattern: .*@.*\..*

The delivery email address which has to be added to or removed from a list.

device_information

Technical details of a client.

list_name

string

  • enum

    • NEGATIVE

    • POSITIVE

The list name where to perform the action.

Example: NEGATIVE

merchant_defined_information

merchant_information

Further information from the merchant.

merchant_risk_indicators

Contains data about the specific 3-D Secure 2.0 purchase which can be used for risk assessment.

reason

string

  • enum

    • FRAUD_CHARGEBACK

    • NON_FRAUD_CHARGEBACK

    • SUSPECTED

    • CREDITBACK

The reason why to add an entry to the list or remove an entry from the list.

Example: SUSPECTED

risk_check_additional_information

Additional information for calculation of the risk of a transaction.

shipping_address

Address data as applicable to most use cases.

travel_information

Travel information of the order.

RiskmanagementEntryResponse
Property Type Description

error_information

Detailed error information including fields which had been the reasons for unsuccessful processing.

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

status

string

The status of the external processed risk check transaction.

Example: COMPLETED

tx_id

string

Unique transaction identifier. Can be used to reference this transaction.

Example: 6388615628286356704005

utc_time

string

The UTC time of the risk check.

Example: 2021-11-11T11:36:03Z

RiskmanagementInfoResponse
Property Type Description

case_priority

string

Riskcheck information regarding the case priority.

Example: 1

error_information

Detailed error information including fields which had been the reasons for unsuccessful processing.

event_id

string

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Example: E5686585867636541231230

infocodes_address

Array[string]

Riskcheck information regarding the address risk check. See user guide for details and all possible values.

infocodes_customerlist

Array[string]

Riskcheck information regarding the customer list risk check. See user guide for details and all possible values.

infocodes_device_behaviour

Array[string]

Indicates the device behavior information code(s) returned from device fingerprinting. See user guide for details and all possible values.

infocodes_globalvelocity

Array[string]

Riskcheck information regarding the velocity risk check. See user guide for details and all possible values.

infocodes_identitychange

Array[string]

Riskcheck information regarding the identity change. See user guide for details and all possible values.

infocodes_internet

Array[string]

Riskcheck information regarding the internet check. See user guide for details and all possible values.

infocodes_phone

Array[string]

Riskcheck information regarding the phone risk check. See user guide for details and all possible values.

infocodes_suspicious

Array[string]

Riskcheck information regarding suspicious risk. See user guide for details and all possible values.

infocodes_velocity

Array[string]

List of information codes triggered by the order. These information codes were generated when you created the order and product velocity rules and are returned so that you can associate them with the rules. See user guide for details and all possible values.

localtime

string

Riskcheck information regarding the local time of the risk check.

Example: 15:18:03

profile_destination_queue

string

Riskcheck information regarding the profile destination queue of the risk check.

Example: dst-queue

profile_name

string

Riskcheck information regarding the profile of the risk check.

Example: example-profile

profile_selectorrule

string

Riskcheck information regarding the profile selector rule risk check.

Example: example-rule

providers

Array[string]

Providers used to calculate the risk.

rules

Array[string]

Riskcheck information regarding the matched rules in risk check.

score

string

Calculated risk score of request data.

Example: 14

score_factor_codes

Array[string]

Riskcheck information regarding the profile factor codes of the risk check. See user guide for all possible values.

score_model_used

string

Name of the score model used for the transaction. This field contains the name of risk management’s selected model.

Example: default_eu

travel_actual_final_dst_country

string

Actual country of final destination of the travel.

Example: US

travel_actual_final_dst_locality

string

Actual city of final destination of the travel.

Example: Chicago

travel_first_departure_country

string

First departure country of the travel.

Example: US

travel_first_departure_locality

string

First departure city of the travel.

Example: San Francisco

tx_risk_status

string

Status result of an external risk management transaction. See user guide for all possible values.

Example: ACCEPTED

tx_scoring_id

string

Unique scoring transaction identifier. Can be used to reference the depending scoring transaction.

Example: 6373172383866963604006

utc_time

string

Riskcheck information regarding the UTC time of the risk check, used in error cases.

Example: 2021-12-21T14:18:04Z

RiskmanagementScoringRequest

Denotes a set of data elements like addresses or credit card PAN to add to the negative or positive list.

Property Type Description

account_information

Information on a user’s account usage, payment history, transaction statistics.

address

Address data as applicable to most use cases.

amount_total

  • required

An amount and a currency.

bank_account

Information about a bank account.

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

credit_card_data

Information about a credit card.

customer_information

Details of a customer.

device_information

Technical details of a client.

merchant_defined_information

merchant_information

Further information from the merchant.

merchant_risk_indicators

Contains data about the specific 3-D Secure 2.0 purchase which can be used for risk assessment.

risk_check_additional_information

Additional information for calculation of the risk of a transaction.

shipping_address

Address data as applicable to most use cases.

travel_information

Travel information of the order.

RiskmanagementScoringResponse
Property Type Description

event_id

string

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Example: E5686585867636541231230

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

riskmanagement_info

tx_id

string

Unique transaction identifier. Can be used to reference this transaction.

Example: 020LMG10jxSI8FN0OC4vLR

RiskmanagementTravelInformationLeg

Information about a leg of the complete journey.

Property Type Description

carrier_code

string

  • minLength: 0

  • maxLength: 2

International Air Transport Association (IATA) code for the carrier for this leg of the trip. Required for each leg.

Example: LH

departure_date

string

  • minLength: 8

  • maxLength: 8

Departure date for the first leg of the trip.

Example: 20240212

destination

string

  • minLength: 0

  • maxLength: 3

Use to specify the airport code for the destination of the leg of the trip, which is designated by the pound (#) symbol in the field name. This code is usually three digits long, for example: SFO = San Francisco. Do not use the colon (:) or the dash (-). For airport codes, see the IATA Airline and Airport Code Search.

Example: LHR

origination

string

  • minLength: 0

  • maxLength: 3

Use to specify the airport code for the origin of the leg of the trip, which is designated by the pound (#) symbol in the field name. This code is usually three digits long, for example: SFO = San Francisco. Do not use the colon (:) or the dash (-). For airport codes, see the IATA Airline and Airport Code Search.

Example: SFO

RiskmanagementTravelInformationPassenger

Information about a passenger.

Property Type Description

first_name

string

  • minLength: 0

  • maxLength: 60

First name of the individual.

Example: Jane

last_name

string

  • minLength: 0

  • maxLength: 60

Last name of the individual.

Example: Doe

RppResultResponse

Result of an RPP check.

Property Type Description

content_code

string

  • minLength: 0

  • maxLength: 2

  • pattern: [0-9]+

Reason of the notice. The following values are valid:

If eScoreContentType=0 (open/settled/historical return debit note):

1: For want of cover / not paid.

2: Account wrong.

3: Objection.

5: Account expired.

6: other

7: No information.

8: No valid mandate.

If eScoreContentType=3 (institution/public bank details):

0: Unclassified.

1: Donations and aid organisations.

2: Offices and public facilities.

3: Societies.

4: educational institutions and church

5: Recreational institutions & tourism.

6: Associations and foundations.

7: Companies.

9: eBay seller.

12: Private person.

31: Credit accounts.

If eScoreContentType=7 (cards locked):

0: Debit card of the bank account was reported stolen/lost.

1: There is an entry in the KUNO database for this bank account.

If eScoreContentType=14 (PAP):

1: Donations and aid organisations.

2: offices and public facilities

3: Societies.

4: Educational institutions and church.

5: Recreational institutions & tourism.

6: Associations and foundations.

7: Companies.

Example: 1

content_description

string

  • minLength: 0

  • maxLength: 30

  • pattern: .*

Content description, for example RLS for a return debit note or NCA for publicly known bank details ("non consumer account").

Example: NCA

content_type

string

  • minLength: 0

  • maxLength: 2

  • pattern: [0-9]+

Type of the notice. Is returned if rpp_match=1, that is if a return debit note is present. The following values are valid:

0: Open return debit note.

1: Settled return debit note.

2: Historical return debit note.

3: Institution/public bank details

5: Client related negative list.

6: Client related positive list.

7: Cards blocked.

14: Personal Account Protection (PAP).

first_notice_date

string

  • format: date

Date of the first notice.

Example: 2007-08-24

last_notice_date

string

  • format: date

Date of the last notice.

Example: 2007-08-24

no_of_matches

string

  • minLength: 0

  • maxLength: 1

  • pattern: [0-9]+

Number of matches.

Example: 1

SettledDebtorAccount
Property Type Description

account_holder

string

The name of the account holder.

Example: John Doe

iban

string

  • required

The international bank account number of the bank account.

Example: DE86100700004567891263

ShippingInfo
Property Type Description

return_shipping_company

string

Name of the shipping company for the return shipment (as specific as possible).

Example: DHL US

return_tracking_number

string

Tracking number for the return shipment.

Example: 123456789

shipping_company

string

Name of the shipping company (as specific as possible).

Example: DHL

shipping_delay

integer

  • format: int64

Delay (in days) before the order will be shipped.

Example: 5

shipping_method

string

  • enum

    • PickUpStore

    • Home

    • BoxReg

    • BoxUnreg

    • PickUpPoint

    • Own

    • Postal

    • DHLPackstation

    • Digital

    • Undefined

Shipping method.

Example: PickUpStore

tracking_number

string

Tracking number for the shipment.

Example: 123456789

tracking_uri

string

URI where the customer can track their shipment.

TDS10ExternalData

3-D Secure data provided by an MPI for 3DS version 1.

Property Type Description

cavv

string

  • minLength: 0

  • maxLength: 28

3-D Secure field. Determined by ACS. Contains a 20 byte value that has beenBase64 encoded, giving a 28 character result.

Example: AAABAElUFUhRd3IHRFQVAAAAAAA=

ucaf

string

  • minLength: 0

  • maxLength: 80

3-D Secure field. Base64 encoded binary data.

Example: jA/edkhsKdv1ARADDZlme6PCY+Y=

xid

string

  • minLength: 0

  • maxLength: 28

3-D Secure field. Unique transaction identifier determined by merchant. Contains a 20 byte statistically unique value that has been Base64 encoded, giving a 28 character result.

Example: ICAgICAgIDExOTAwMTg3MTUxMzc

TDS20Address

Address data for 3DS 2.1 or 2.2 transactions.

Property Type Description

additional1

string

An additional first line.

additional2

string

An additional second line.

city

string

  • required

City of the address.

Example: Munich

country

string

  • required

  • minLength: 2

  • maxLength: 2

  • pattern: [A-Z]{2}

The ISO 3166 Alpha-2 country code (upper case) of the individual’s homeland.

Example: DE

postal_code

string

  • required

Postal code of the address.

Example: 80469

state

string

  • minLength: 0

  • maxLength: 100

State or province of the address.

Example: BY

street

string

  • required

The street.

street_number

string

The street number.

TDS20CardHolderAccountInfo
Property Type Description

account_age_indicator

string

  • enum

    • LESS_30

    • MORE_30_LESS_60

    • MORE_60

    • NEVER

    • NOW

The account age indicator.

account_change

string

  • enum

    • LESS_30

    • MORE_30_LESS_60

    • MORE_60

    • NOW

The account change.

account_change_date

string

  • format: date

The account change date.

account_id

string

The account ID.

account_opened_date

string

  • format: date

The account opened date.

password_change_date

string

  • format: date

The password change date.

password_change_indicator

string

  • enum

    • LESS_30

    • MORE_30_LESS_60

    • MORE_60

    • NEVER

    • NOW

The account password change indicator.

payment_account_age

string

  • format: date

The payment account age.

payment_account_age_indicator

string

  • enum

    • LESS_30

    • MORE_30_LESS_60

    • MORE_60

    • NEVER

    • NOW

The payment account age indicator.

provisioning_day_count

integer

  • format: int32

The provisioning day counter

purchases_six_month_count

integer

  • format: int32

The 6 month purchases counter

shipping_address_age

string

  • format: date

The shipping address age.

shipping_address_age_indicator

string

  • enum

    • LESS_30

    • MORE_30_LESS_60

    • MORE_60

    • NOW

The shipping address age indicator.

shipping_name_indicator

string

  • enum

    • DIFFERENT

    • IDENTICAL

The shipping name indicator.

suspicious_account_activity

string

  • enum

    • OBSERVED

    • NOT_OBSERVED

The suspicious account activity.

transactions_day_count

integer

  • format: int32

The transaction day counter

transactions_year_count

integer

  • format: int32

The transaction year counter

TDS20CommunicationData

Callback URLs of the shop for 3-D Secure 2.0 payments. Required for headless 3-D Secure 2.0 initialization requests.

Property Type Description

cres_notification_url

string

The URL to send the CRes to. Required for headless 3-D Secure 2.0 initialization requests.

method_notification_url

string

The URL to send the method notification to. Required for headless 3-D Secure 2.0 initialization requests.

TDS20CustomerData

Information about the customer for 3-D Secure 2.0 payments.

Property Type Description

addresses_match

string

  • enum

    • MATCHES

    • DOES_NOT_MATCH

billing_address

Address data for 3DS 2.1 or 2.2 transactions.

cardholder_account_info

cardholder_email

string

  • pattern: .*@.*\..*

home_phone_number

Phone number with country code.

mobile_phone_number

Phone number with country code.

shipping_address

Address data for 3DS 2.1 or 2.2 transactions.

work_phone_number

Phone number with country code.

TDS20Data

3-D Secure data. Activates 3-D Secure processing if values are set.

Property Type Description

communication_data

Callback URLs of the shop for 3-D Secure 2.0 payments. Required for headless 3-D Secure 2.0 initialization requests.

customer_data

Information about the customer for 3-D Secure 2.0 payments.

device_information

Technical details of a client.

requestor_challenge_indicator

string

  • enum

    • NO_PREFERENCE

    • NO_CHALLENGE_REQUESTED

    • CHALLENGE_REQUESTED_3DS_REQUESTOR_PREFERENCE

    • CHALLENGE_REQUESTED_MANDATE

    • NO_CHALLENGE_REQUESTED_RISK_ANALYSIS_ALREADY_PERFORMED

    • NO_CHALLENGE_REQUESTED_DATA_SHARE_ONLY

    • NO_CHALLENGE_REQUESTED_STRONGER_CONSUMER_AUTHENTICATION_ALREADY_PERFORMED

    • NO_CHALLENGE_REQUESTED_UTILISE_WHITELIST_EXEMPTION_IF_NO_CHALLENGE_REQUIRED

    • CHALLENGE_REQUESTED_WHITELIST_PROMPT_REQUESTED_IF_CHALLENGE_REQUIRED

transaction_attributes

TDS20ExternalData

3-D Secure data provided by a 3DS Server for 3DS version 2.

Property Type Description

tds_authentication_value

string

  • minLength: 0

  • maxLength: 28

  • pattern: [a-zA-Z0-9+/]*={0,2}

Assigned by the 3-D Secure Directory Server or ACS (authenticationValue).Contains a 20 byte value that has been Base64 encoded, giving a 28 characterresult.

Example: ICAgICAgIDExOTAwMTg3MTUxMzc=

tds_ds_trans_id

string

  • minLength: 0

  • maxLength: 36

Unique transaction identifier assigned by the 3-D Secure Directory Server.

Example: f81d4fae-7dec-11d0-a765-00a0c91e6bf6

tds_eci

string

  • minLength: 2

  • maxLength: 2

The Electronic Commerce Indicator (eci) provided by the 3-D Secure directory server or ACS.

TDS20PhoneNumber

Phone number with country code.

Property Type Description

country

string

The country code of the phone number.

regional

string

The regional part of the phone number.

TDS20TransactionAttributes
Property Type Description

purchase_instalment_data

integer

  • format: int32

  • minimum: 2

  • maximum: 999

Maximum number of authorizations permitted for instalment payments, must be > 1.

recurring_expiry

string

  • format: date

Date after which no further authorizations shall be carried out.

recurring_frequency

integer

  • format: int32

  • minimum: 1

  • maximum: 9999

Minimum number of days between authorizations.

transaction_type

string

  • enum

    • PURCHASE

    • CHECK_ACCEPTANCE

    • ACCOUNT_FUNDING

    • QUASI_CASH

    • PREPAID_ACTIVATION

Type of 3-D Secure 2.1 or 2.2 payment.

TDSExternalData

3-D Secure data provided by an MPI/3DS Server.

Property Type Description

tds_10_external_data

3-D Secure data provided by an MPI for 3DS version 1.

tds_20_external_data

3-D Secure data provided by a 3DS Server for 3DS version 2.

tds_trans_status

string

  • enum

    • Y

    • A

The 3D-Secure transaction status.

  • Y: Full

  • A: Attempt

Example: A

tds_version

string

  • enum

    • V1

    • V2_1

    • V2_2

The 3D-Secure version.

  • V1: Version 1 (1.0.2)

  • V2_1: Version 2.1.0

  • V2_2: Version 2.2.0

Example: V2_1

TDSInfo

Contains 3-D Secure response data. The use of this field requires an explicit activation. Please contact customer support.

Property Type Description

tds_ares_cardholder_info

string

  • minLength: 0

  • maxLength: 80

3-D Secure 2: ARes card holder information.

tds_ares_error_code

string

  • minLength: 0

  • maxLength: 80

3-D Secure 2: ARes error code.

tds_ares_error_component

string

  • minLength: 0

  • maxLength: 80

3-D Secure 2: ARes error component.

tds_ares_error_description

string

  • minLength: 0

  • maxLength: 80

3-D Secure 2: ARes error description.

tds_ares_error_detail

string

  • minLength: 0

  • maxLength: 80

3-D Secure 2: ARes error detail.

tds_ares_trans_status

string

  • minLength: 0

  • maxLength: 1

3-D Secure 2: ARes transaction status.

Example: Y

tds_ares_trans_status_reason

string

  • minLength: 0

  • maxLength: 80

3-D Secure 2: reason for the ARes transaction status.

Example: MediumConfidence

tds_auth_level

string

  • enum

    • FULL

    • ATTEMPT

The 3D-Secure transaction status.

  • FULL: Full 3-D Secure Authentification

  • ATTEMPT: 3-D Secure Authentification attempted

Example: ATTEMPT

tds_rreq_challenge_cancel_indicator

string

  • minLength: 0

  • maxLength: 80

Optional 3-D Secure 2 response parameter.

Example: CardholderCancel

tds_rreq_error_code

string

  • minLength: 0

  • maxLength: 80

3-D Secure 2: RReq error code.

tds_rreq_error_component

string

  • minLength: 0

  • maxLength: 80

3-D Secure 2: RReq error component.

tds_rreq_error_description

string

  • minLength: 0

  • maxLength: 80

3-D Secure 2: RReq error description.

tds_rreq_error_detail

string

  • minLength: 0

  • maxLength: 80

3-D Secure 2: RReq error detail.

tds_rreq_trans_status

string

  • minLength: 0

  • maxLength: 1

3-D Secure 2: RReq transaction status.

tds_rreq_trans_status_reason

string

  • minLength: 0

  • maxLength: 80

3-D Secure 2: reason for the RReq transaction status.

Example: MediumConfidence

tds_version

string

  • minLength: 0

  • maxLength: 10

3-D Secure version.

TDSecure20ChallengeRequiredResponse
Property Type Description

PaReq

string

3-D Secure Payer Authentication Request that has to be sent to the ACS.

acs_url

string

  • required

The URL to which the customer should be redirected.

creq

string

3-D Secure challenge request data that has to be sent to the ACS.

TDSecure20MethodRequiredResponse
Property Type Description

method_request

string

method_url

string

TaxInfo

Legal tax information of the payer.

Property Type Description

tax_id

string

  • required

The customer’s tax ID value.

Example: 867.226.847-41

tax_id_type

string

  • required

  • enum

    • BR_CPF

    • BR_CNPJ

    • OTHER

Type of tax ID. May be country specific. Different types may adhere to different patterns.

  • BR_CPF : Brazilian individual tax id type.

  • BR_CNPJ : Brazilian business tax id type.

  • OTHER : None of the above.

Example: BR_CPF

TaxedAmountCurrency

Net and gross money amount accompanied by a tax percentage and currency.

Property Type Description

currency

string

  • required

  • minLength: 3

  • maxLength: 3

  • pattern: [A-Z]{3}

ISO 4217 currency code, three uppercase letters.

Example: EUR

gross

integer

  • required

  • format: int64

Amount of money incl. tax in the minor currency unit.

Example: 100

net

integer

  • required

  • format: int64

Amount of money excl. tax in the minor currency unit.

Example: 100

tax

integer

  • required

  • format: int32

  • minimum: 0

  • maximum: 10000

Tax percentage. Non-negative value. The percentage value is represented with two implicit decimals.

Example: 1900

TransactionBankAccountInfo
Property Type Description

bank_account

Information about a bank account.

settled_debtor_account

TransactionCreditCardInfo
Property Type Description

avs_result

string

  • enum

    • MATCH

    • NO_MATCH

Response code of the address verification according to the response of a backend system. This value is available on some backend systems. The use of this field requires an explicit activation. Please contact customer support. Possible values:

  • MATCH

  • NO_MATCH

Example: MATCH

credit_card

Information about a credit card.

cvc_result

string

  • enum

    • CVC_MATCH

    • CVC_NO_MATCH

    • CVC_NO_RESPONSE_RECEIVED

    • CVC_NOT_PROCESSED

    • CVC_NOT_PROVIDED

    • CVC_SHOULD_BE_ON_CARD

    • CVC_VERIFICATION_UNAVAILABLE

Response code of the verification of the card verification code according to the response of a backend system. This value is available on some backend systems. The use of this field requires an explicit activation. Please contact customer support. Possible values:

  • CVC_MATCH

  • CVC_NO_MATCH

  • CVC_NO_RESPONSE_RECEIVED

  • CVC_NOT_PROCESSED

  • CVC_NOT_PROVIDED

  • CVC_SHOULD_BE_ON_CARD

  • CVC_VERIFICATION_UNAVAILABLE

Example: CVC_MATCH

recurring_payment

string

  • minLength: 1

  • maxLength: 50

  • pattern: [/0-9a-zA-Z_.:,+*$%-]+

Identifier of a recurring credit card payment.

Example: 07H987Tx3PF9VxL5G7RfNp

tds_info

Contains 3-D Secure response data. The use of this field requires an explicit activation. Please contact customer support.

TransactionInfo
Property Type Description

back_state

string

  • enum

    • DECLINED

    • AUTHORIZED

    • REVERSED

    • CAPTURED

    • SETTLED

State of a transaction according to the response of a backend system. This value is available on some backend systems. The use of this field requires an explicit activation. Please contact customer support. Possible values:

  • DECLINED

  • AUTHORIZED

  • REVERSED

  • CAPTURED

  • SETTLED

Example: REVERSED

ip_address

string

The customer’s IP address associated with this transaction. The use of this field requires an explicit activation. Please contact customer support.

transaction_bankaccount_info

transaction_creditcard_info

type

string

  • enum

    • creditcard

    • bankaccount

WeChatPayResponse
Property Type Description

cny_amount

string

The amount deducted from the consumer’s wallet. In CNY major units.

Example: 7.84

expiry_timestamp

string

The expiry time of the transaction.

Example: 1574869035

fix_rate

string

This exchange rate is guaranteed for potential refunds.

Example: 6.44145

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

payment_purpose

string

Reflects what the consumer will see on the proof of payment.

Example: 47X6G4V

qr_code_url

string

The string used for generating the payment QR code image.

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

redirect_url

string

  • minLength: 0

  • maxLength: 1024

settlement_amount

string

The amount in the settlement currency of the transaction. The amount is calculated by WeChat Pay. In minor units according to ISO 4217.

Example: 160

settlement_currency

string

The settlement currency of the transaction.

Example: USD

src_amount

string

The total amount debited from the consumer’s WeChat Wallet.

Example: 784

src_currency

string

The currency of the consumer’s WeChat wallet.

Example: CNY

tx_id

string

Unique transaction identifier. Can be used to reference this transaction.

Example: 020LMG10jxSI8FN0OC4vLR

WidgetSolutionCreateSessionRequest
Property Type Description

amount_total

  • required

An amount and a currency.

merchant_country

string

  • required

Country of the merchant where the transaction is processed.

Example: DE

transaction_data

The Widget Solution transaction data.

WidgetSolutionCreateSessionResponse
Property Type Description

id

string

  • minLength: 0

  • maxLength: 1024

Widget Solution session ID of the transaction.

Example: AgT3Nwm__rW1FO4EcAjJGsrosuEeY8_Tu-m98Js1jQuYdd6Feg1CUGSxdomMsIwD5B9nk_tHsA_Ez0AUhh5-ZzaCCg

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

WidgetSolutionCreateSessionTransactionData

The Widget Solution transaction data.

Property Type Description

account_information

Information on a user’s account usage, payment history, transaction statistics.

alias_action

Specifies an alias and an operation to perform on it.

apple_pay_domain_name

string

Domain where the payment is initiated and which is registered and validated at Apple Pay.

Example: testmerch.directpos.de

apple_pay_merchant_id

string

Merchant Identifier registered for payments at Apple Pay.

Example: merchant.9999900999.1.processingpagateq.merchantsolution

basket

A generalized shopping basket.

billing_address

Address data as applicable to most use cases.

customer_email

string

Email of a customer.

customer_information

Details of a customer.

device_information

Technical details of a client.

googlepay_domain_name

string

The URL of the redirecting shop.

Example: testshop.de

googlepay_merchant_id

string

The merchant ID given by Google Pay.

Example: BCR2DN4T7D65Z6BX

merchant_defined_information

merchant_information

Further information from the merchant.

merchant_risk_indicators

Contains data about the specific 3-D Secure 2.0 purchase which can be used for risk assessment.

paypal_cancel_url

string

The PayPal specific cancel URL.

paypal_return_url

string

The PayPal specific return URL.

paypal_shipping_preference

string

  • enum

    • NO_SHIPPING

    • GET_FROM_FILE

    • SET_PROVIDED_ADDRESS

Controls the handling of the shipping address on the PayPal site.

  • NO_SHIPPING: Redacts the shipping address from the PayPal site. Recommended for digital goods.

  • GET_FROM_FILE: Get the customer-provided shipping address on the PayPal site.

  • SET_PROVIDED_ADDRESS: Use the merchant-provided address. The customer cannot change this address on the PayPal site. If the merchant does not provide an address, the customer can choose the address on the PayPal site.

Example: GET_FROM_FILE

paypal_shop_name

string

The PayPal shop name.

processing_options

Array[string]

  • enum

    • RISKCHECK

    • FALL_BACK_ON_SSL

Additional processing option for a credit card transaction.

  • RISKCHECK: before the transaction a risk check is performed. Only available if this option has been activated for the shop.

  • FALL_BACK_ON_SSL: process the transaction flagged as channel-encrypted (SSL, 3-D Secure authentication was not performed) instead of 3-D Secure in case 3-D Secure authentication could not be performed.

Example: ["RISKCHECK"]

recurring_payment

string

  • minLength: 1

  • maxLength: 50

  • pattern: [/0-9a-zA-Z_.:,+*$%-]+

Identifier of a recurring credit card payment.

Example: 07H987Tx3PF9VxL5G7RfNp

risk_check_additional_information

Additional information for calculation of the risk of a transaction.

sequence_type

string

  • enum

    • FINAL

    • FIRST

    • RECURRING

If this payment is part of a sequence of payments

  • FIRST: first payment of a sequence

  • RECURRING: follow-up payment

  • FINAL: last payment of a sequence

series_flag

string

  • enum

    • INSTALMENT

    • RECURRING

    • UCOF

Designates a payment as part of a series of payments.

  • INSTALMENT: for example in the case of paying a fixed sum in multiple partial payments.

  • RECURRING: for example in the case of a subscription or standing order.

  • UCOF: when a card number alias is created for future payments with the same credit card. In this case use alias_action with action CREATE with the first payment and the card number alias with the following payments. You can use the tx_action verify-mop with the first UCOF transaction to register a card number alias without a payment.

shipping_address

Address data as applicable to most use cases.

tds_20_data

3-D Secure data. Activates 3-D Secure processing if values are set.

travel_information

Travel information of the order.

WidgetSolutionFinalRequest
Property Type Description

amount_total

  • required

An amount and a currency.

WidgetSolutionPaymentResponse
Property Type Description

alias_info

Contains information about the created or updated alias. This field is null if the there was no 'alias_info' in the request.

amount_total

An amount and a currency.

back_ext_id

string

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

Transaction reference number of the backend system.

Example: 4SK49197932713631

back_rc

string

  • minLength: 0

  • maxLength: 255

Response code of a backend system, for example the GICC response code.

Example: 00

billing_address

Address data as applicable to most use cases.

customer_email

string

customer_name

string

event_id

string

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Example: E5686585867636541231230

kind

string

  • enum

    • DIRECTDEBIT

    • CREDITCARD

    • CREDITCARD_3DS20

    • CREDITTRANSFER

    • SOFORTUEBERWEISUNG

    • PAYPAL

    • PAYDIREKT

    • WECHATPAY

    • P24

    • TWINT

    • GIROPAY

    • KLARNA

    • PSD2

    • IDEAL

    • WERO

The type of transaction.

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

riskmanagement_info

shipping_address

Address data as applicable to most use cases.

timestamp

string

  • required

  • format: date-time

Timestamp of the transaction.

transaction_info

tx_action

string

  • enum

    • authorization

    • capture

    • credit

    • preauthorization

    • refund

    • reversal

    • risk_check

    • verify-mop

    • payment

    • account_information

The action of a transaction.

tx_id

string

Unique transaction identifier. Can be used to reference this transaction.

Example: 020LMG10jxSI8FN0OC4vLR

7.3. Callback API

When using the Form service, DB Merchant Solutions REST API interacts with the customer. To notify the merchant about the outcome of this interaction, there are two options possible:

  1. (Shop notification) The merchant implements the Callback API as a server and sets the parameter callback.notify_url to the corresponding endpoint on the merchant’s side. During the transaction (see Course of transaction), DB Merchant Solutions REST API will send a request to this endpoint, see Callback and diagnosis request.

  2. (Diagnosis) The merchant implements the so-called diagnosis endpoints GET /payment/event/{event_id}, GET /payment/tx/{tx_id} (for payment transactions), and GET /info/event/{event_id}/psd2/account_info (for PSD2 AIS). Then the merchant may set callback.skip to true, in which case they will not receive a callback request but have to use the diagnosis endpoints to obtain the information.

Note that either the callback request or the diagnosis requests have to be implemented to obtain the transaction’s tx_id, which is needed for a subsequent capture, reversal, or refund of this transaction. In case the merchant does not receive a callback request (for example, due to technical problems), they may use the diagnosis requests as a fallback.

For details on verifying callback requests, see Verifying callback requests.

7.3.1. Callback

The merchant’s system has to implement this endpoint to receive callback requests.

POST /callback
Header Parameters
Name Type Description

Digest

string

  • required

SHA-256 hash of the message body.

Example: SHA-256=/oTBp9ySS9jdnJjaX49msjmzWSsl868V7pWPrcp3mO4=

Signature

string

  • required

HMAC-256 signature. The values of the "Digest", "X-RequestDate" and "X-RandomValue" headers are concatenated. The signature is calculated using the client_key as the secret.

Example: LeeTB596cJBmDozTElmCsvc69HzDpzrnllJAqcL2sac=

X-RandomValue

string

  • required

A random value; part of the signature input.

Example: X1c1IInswtMPNSTfmtGx

X-RequestDate

string

  • required

Current timestamp formatted according to RFC 7231, section 7.1.1.2; part of the signature input.

Example: Fri, 10 Jan 2021 14:41:15 GMT

Request Body (required)
Type Content-Type

CallbackRequest

application/json

Request examples Sample callback request for an SDD transaction

Request type: CallbackRequest

{
  "client_id" : "secret",
  "transaction_info" : {
    "type" : "bankaccount",
    "transaction_bankaccount_info" : {
      "bankAccount" : {
        "bic" : "TESTDEL0BK2",
        "iban" : "DE39123456790009290701",
        "account_holder" : "Jörg Müller-Beßler"
      }
    }
  },
  "rc" : "0",
  "message" : "Transaction successful.",
  "amount_total" : {
    "amount" : 100,
    "currency" : "EUR"
  },
  "event_id" : "id1622635202153",
  "kind" : "DIRECTDEBIT",
  "tx_action" : "preauthorization",
  "tx_id" : "pmrM4SYsoJo5jQgtnlDzwm",
  "basket_id" : "bid1622635202153",
  "additional_data" : "ADDI_1234XY"
}
Sample callback request for an Request to Pay transaction

Request type: CallbackRequest

{
  "client_id" : "secretAtosTest_account_api_testshop1",
  "rc" : "0",
  "message" : "Transaction successful.",
  "event_id" : "2885a52b-5c7b-43f",
  "tx_id" : "9XGbszStC8pab41kulcWrz",
  "amount_total" : {
    "amount" : 1300,
    "currency" : "EUR"
  },
  "kind" : "CREDITTRANSFER",
  "tx_action" : "authorization",
  "back_rc" : "SETTLED",
  "timestamp" : "2024-08-23T08:30:54.097",
  "transaction_info" : {
    "type" : "bankaccount",
    "transaction_bankaccount_info" : {
      "bank_account" : {
        "iban" : "FR400000064575NCU6YN1IC****"
      }
    }
  },
  "additional_data" : "Additional callback data for RtP",
  "extensions" : {
    "request_to_pay_data" : {
      "payment_product" : "SEPA_CREDIT_TRANSFER"
    }
  }
}
Sample callback request for an iDEAL transaction

Request type: CallbackRequest

{
  "client_id" : "secretAtosTest_account_api_testshop1",
  "rc" : "0",
  "message" : "Transaction successful.",
  "event_id" : "37f25ebe-abc4-414",
  "tx_id" : "8lDJRxH5FK6NNhDpiOc8ol",
  "amount_total" : {
    "amount" : 123,
    "currency" : "EUR"
  },
  "kind" : "IDEAL",
  "tx_action" : "authorization",
  "timestamp" : "2024-08-23T15:29:11.01",
  "basket_id" : "20240823152855",
  "extensions" : {
    "ideal_data" : {
      "transactionId" : "8152207954673455",
      "amount" : {
        "amount" : 123,
        "type" : "FIXED",
        "currency" : "EUR"
      },
      "description" : "new description",
      "reference" : "20240823152855",
      "createdDateTimestamp" : "2024-08-23T13:29:12.575Z",
      "expiryDateTimestamp" : "2024-08-23T13:49:12.575Z",
      "finalStateDateTimestamp" : "2024-08-23T13:29:29.062Z",
      "status" : "SUCCESS",
      "guaranteedAmount" : 123,
      "debtor" : {
        "iban" : "NL44RABO0123456789",
        "bic" : "TESTNL2A",
        "name" : "Pino Thebird"
      },
      "issuerID" : "TESTNL2A"
    }
  }
}
Responses
Code Type Content-Type Description

200

application/json

Acknowledges the receipt of the callback.

400

application/json

Signals an error.

7.3.2. Model

AliasInfo

Contains information about the created or updated alias. This field is null if the there was no 'alias_info' in the request.

Property Type Description

address

Address data as applicable to most use cases.

alias

string

Name of the alias.

Example: da2c9029-b180-42a7-b473-50d182a01f8a

bank_account

Information about a bank account.

credit_card

Information about a credit card.

AlternativeAddressData

Alternative address fields.

Property Type Description

street

string

  • minLength: 0

  • maxLength: 100

The street.

Example: Main Street

street_number

string

  • minLength: 0

  • maxLength: 10

The street number.

Example: 123a

AmountCurrency

An amount and a currency.

Property Type Description

amount

integer

  • required

  • format: int64

Minor currency value of an amount of money.

Example: 200

currency

string

  • required

  • minLength: 3

  • maxLength: 3

  • pattern: [A-Z]{3}

ISO 4217 currency code, three uppercase letters.

Example: EUR

BankAccount

Information about a bank account.

Property Type Description

account_holder

string

  • minLength: 1

  • maxLength: 70

The account holder of the bank account.

Example: Max Muster

bank_name

string

Name of the bank.

Example: Musterbank

bic

string

  • minLength: 11

  • maxLength: 11

  • pattern: [A-Z]{6}[A-Z2-9][A-NP-Z0-9][A-Z0-9]{3}

The business identifier code (BIC) of a bank account. If the branch identifier (positions 9 to 11) is not applicable, it is set to "XXX".

Example: VZVDDED1XXX

iban

string

  • required

  • minLength: 15

  • maxLength: 34

  • pattern: [A-Z]{2}[0-9]{2}[A-Z0-9*]{11,30}

The international bank account number of the bank account.

Example: DE86100700004567891263

CallbackExtensions
Property Type Description

accounts

Account details after a PSD2 account info request.

ideal_data

object

Map (key-value pairs) of data as received from iDEAL.

paypal_data

Request to Pay related data.

request_to_pay_data

Request to Pay related data.

CallbackRequest
Property Type Description

additional_data

string

As submitted in the initial request.

Example: SESSION_1234X

alias_info

Contains information about the created or updated alias. This field is null if the there was no 'alias_info' in the request.

amount_total

An amount and a currency.

back_ext_id

string

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

Transaction reference number of the backend system.

Example: 4SK49197932713631

back_rc

string

  • minLength: 0

  • maxLength: 255

Response code of a backend system, for example the GICC response code.

Example: 00

basket_id

string

The shopping basket number as submitted in the initial request.

Example: basket123456

client_id

string

  • required

The client ID used to calculate the signature.

Example: 2b48b7c6-8a3b-4f96-a64d-7a08d0c74627

event_id

string

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Example: E5686585867636541231230

extensions

kind

string

  • enum

    • DIRECTDEBIT

    • CREDITCARD

    • CREDITCARD_3DS20

    • CREDITTRANSFER

    • SOFORTUEBERWEISUNG

    • PAYPAL

    • PAYDIREKT

    • WECHATPAY

    • P24

    • TWINT

    • GIROPAY

    • KLARNA

    • PSD2

    • IDEAL

    • WERO

The type of transaction.

message

string

  • required

Success or error message, text for the response code.

Example: Transaction successful.

rc

string

  • required

Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors.

Example: 0

riskmanagement_info

timestamp

string

  • required

  • format: date-time

Timestamp of the transaction.

transaction_info

tx_action

string

  • enum

    • authorization

    • capture

    • credit

    • preauthorization

    • refund

    • reversal

    • risk_check

    • verify-mop

    • payment

    • account_information

The action of a transaction.

tx_id

string

Unique transaction identifier. Can be used to reference this transaction.

Example: 020LMG10jxSI8FN0OC4vLR

CommonAddress

Address data as applicable to most use cases.

Property Type Description

address_line_1

string

  • minLength: 0

  • maxLength: 60

An address line.

Example: Main Street 123

address_line_2

string

  • minLength: 0

  • maxLength: 60

An address line. For 3DS this maps to additional1.

Example: Building A

address_line_3

string

  • minLength: 0

  • maxLength: 60

An address line. For 3DS this maps to additional2.

Example: Apartment 12

city

string

  • minLength: 0

  • maxLength: 60

City of the address.

Example: Munich

company_name

string

  • minLength: 0

  • maxLength: 60

Name of the company.

Example: Acme Inc.

country

string

  • minLength: 2

  • maxLength: 2

  • pattern: [A-Z]{2}

The ISO 3166 Alpha-2 country code (upper case) of the individual’s homeland.

Example: DE

email

string

  • minLength: 0

  • maxLength: 255

  • pattern: .*@.*\..*

Email address of the individual.

Example: test_jane@gmail.com

extensions

Service specific address fields.

first_name

string

  • minLength: 0

  • maxLength: 60

First name of the individual.

Example: Jane

last_name

string

  • minLength: 0

  • maxLength: 60

Last name of the individual.

Example: Doe

phone_contact

A means of contacting a customer by phone.

postal_code

string

  • minLength: 0

  • maxLength: 60

Postal code of the address.

Example: 80469

state

string

  • minLength: 0

  • maxLength: 100

State or province of the address.

Example: BY

street

string

The street.

Example: Main Street

street_number

string

The street number.

Example: 123a

title

string

  • minLength: 0

  • maxLength: 100

Customer’s title.

Example: Mrs

CommonAddressExtensions

Service specific address fields.

Property Type Description

alternative_address_data

Alternative address fields.

CreditCardInfo

Information about a credit card.

Property Type Description

brand

string

  • enum

    • AMEX

    • DINERS

    • JCB

    • MAESTRO

    • MASTERCARD

    • VISA

The credit card brand. The use of this field requires an explicit activation. Please contact customer support. Possible values:

  • AMEX

  • DINERS

  • JCB

  • MAESTRO

  • MASTERCARD

  • VISA

Example: VISA

cardholder

string

  • minLength: 2

  • maxLength: 27

The holder of a credit card.

Example: Max Muster

expiry_date

  • required

The credit card expiry date.

issuer_country

string

The card issuers country of origin. The use of this field requires an explicit activation. Please contact customer support.

number

string

  • required

  • minLength: 10

  • maxLength: 19

  • pattern: [0-9]*

The credit card number (Primary Account Number). It is sometimes masked in response messages, for example 411111**1111.

Example: 41111111111111111

ExpiryDate

The credit card expiry date.

Property Type Description

month

integer

  • required

  • format: int32

  • minimum: 1

  • maximum: 12

The credit card expiry month.

Example: 11

year

integer

  • required

  • format: int32

  • minimum: 2000

  • maximum: 2099

The credit card expiry year.

Example: 2021

PSD2Account
Property Type Description

bban

string

Used for payment accounts which have no IBAN.

currency

string

  • pattern: [A-Z]{3}

ISO 4217 currency code, three uppercase letters.

Example: EUR

iban

string

  • minLength: 15

  • maxLength: 34

  • pattern: [A-Z]{2}[0-9]{2}[A-Z0-9*]{11,30}

The international bank account number of the bank account.

Example: DE86100700004567891263

masked_pan

string

  • minLength: 0

  • maxLength: 35

Primary Account Number (PAN) of a card in a masked form.

msisdn

string

  • minLength: 0

  • maxLength: 35

An alias to access a payment account via a registered mobile phone number.

pan

string

  • minLength: 0

  • maxLength: 35

Primary Account Number (PAN) of a card, can be tokenized by the ASPSP due to PCI DSS requirements.

PSD2AccountDetails

Contains details of a customer’s bank account.

Property Type Description

balances

Array[PSD2Balance]

Balance(s) of the account. There might be more than one balance with different types.

currency

string

  • pattern: [A-Z]{3}

ISO 4217 currency code, three uppercase letters.

Example: EUR

details

string

  • minLength: 0

  • maxLength: 500

Specifications that might be provided by the ASPSP such as characteristics of the account or characteristics of the relevant card.

iban

string

The international bank account number of the bank account.

Example: DE86100700004567891263

name

string

  • minLength: 0

  • maxLength: 35

Name of the account given by the bank or the PSU in online-banking.

owner_name

string

  • minLength: 0

  • maxLength: 140

Name(s) of the account owner(s).

product

string

  • minLength: 0

  • maxLength: 35

Product name of the bank for this account, proprietary definition.

status

string

  • enum

    • ENABLED

    • DELETED

    • BLOCKED

Status of the account

  • ENABLED: account is available

  • DELETED: account is terminated

  • BLOCKED: account is blocked for example for legal reasons

transactions

usage

string

  • enum

    • PRIV

    • ORGA

    • TEST_USAGE

Specifies the usage of the account

  • PRIV: private personal account

  • ORGA: professional account

  • TEST_USAGE: returned by Sparkassen sandbox

PSD2Balance
Property Type Description

amount

  • required

An amount and a currency.

credit_limit_included

boolean

A flag indicating if the credit limit of the corresponding account is included in the calculation of the balance, where applicable.

last_change

string

  • format: date-time

This data element might be used to indicate for example with the expected or booked balance that no action is known on the account, which is not yet booked. Date-time notation as defined by RFC 3339, section 5.6.

Example: 2021-07-14T08:59:12Z

reference_date

string

  • format: date

Indicates the date of the balance. Full-date notation as defined by RFC 3339, section 5.6.

Example: 2021-07-14

type

string

  • required

  • enum

    • CLOSING_BOOKED

    • EXPECTED

    • OPENING_BOOKED

    • INTERIM_AVAILABLE

    • INTERIM_BOOKED

    • FORWARD_AVAILABLE

    • NON_INVOICED

    • PREVIOUSLY_CLOSED

The following balance types are excluding credit limits unless the credit_limit_included element is present and equals true in the corresponding balance element. This definition is following ISO20022 logic for defining balance types.

  • CLOSING_BOOKED: Balance of the account at the end of the pre-agreed account reporting period. It is the sum of the opening booked balance at the beginning of the period and all entries booked to the account during the pre-agreed account reporting period. For card-accounts, this is composed of invoiced, but not yet paid entries

  • EXPECTED: Balance composed of booked entries and pending items known at the time of calculation, which projects the end of day balance if everything is booked on the account and no other entry is posted. For card accounts, this is composed of invoiced, but not yet paid entries, not yet invoiced but already booked entries and pending items (not yet booked),

  • OPENING_BOOKED: Book balance of the account at the beginning of the account reporting period. It always equals the closing book balance from the previous report.

  • INTERIM_AVAILABLE: Available balance calculated in the course of the account servicer’s business day, at the time specified, and subject to further changes during the business day. The interim balance is calculated on the basis of booked credit and debit items during the calculation time/period specified. For card-accounts, this is composed of invoiced, but not yet paid entries and not yet invoiced but already booked entries

  • INTERIM_BOOKED: Balance calculated in the course of the account servicer’s business day, at the time specified, and subject to further changes during the business day. The interim balance is calculated on the basis of booked credit and debit items during the calculation time/period specified.

  • FORWARD_AVAILABLE: Forward available balance of money that is at the disposal of the account owner on the date specified.

  • NON_INVOICED: Only for card accounts, to be defined yet.

  • PREVIOUSLY_CLOSED: Balance of the account at the previously closed account reporting period.

Example: CLOSING_BOOKED

PSD2CurrencyExchange
Property Type Description

contract_identification

string

Unique identification to unambiguously identify the foreign exchange contract.

exchange_rate

string

Factor used to convert an amount from one currency into another. This reflects the price at which one currency was bought with another currency.

quotation_date

string

  • format: date

Date at which an exchange rate is quoted.

source_currency

string

Currency from which an amount is to be converted in a currency conversion.

Example: USD

target_currency

string

  • pattern: [A-Z]{3}

Currency into which an amount is to be converted in a currency conversion.

Example: EUR

unit_currency

string

  • pattern: [A-Z]{3}

Currency in which the rate of exchange is expressed in a currency exchange. In the example 1 EUR = xxx CUR, the unit currency is EUR.

Example: EUR

PSD2Remittance
Property Type Description

reference

string

  • minLength: 0

  • maxLength: 35

reference_issuer

string

  • minLength: 0

  • maxLength: 35

reference_type

string

  • minLength: 0

  • maxLength: 35

PSD2Transaction

A transaction of a bank account.

Property Type Description

additional_information

string

Might be used by the ASPSP to transport additional transaction related information to the PSU.

amount

  • required

An amount and a currency.

balance_after_transaction

bank_transaction_code

string

Bank transaction code as used by the ASPSP and using the sub-elements of this structured code defined by ISO20022.

booking_date

string

  • format: date

The date when an entry is posted to an account on the ASPSPs books.

booking_status

string

  • required

  • enum

    • BOOKED

    • PENDING

Booking status of a transaction

  • BOOKED

  • PENDING

Example: BOOKED

check_id

string

  • minLength: 0

  • maxLength: 35

Identification of a check.

creditor_account

creditor_agent

string

  • minLength: 11

  • maxLength: 11

  • pattern: [A-Z]{6}[A-Z2-9][A-NP-Z0-9][A-Z0-9]{3}

A BIC.

Example: VZVDDED1XXX

creditor_id

string

  • minLength: 8

  • maxLength: 35

  • pattern: [a-zA-Z0-9]+

Identification of creditors, for example, a SEPA Creditor ID.

Example: DE98ZZZ09999999999

creditor_name

string

  • minLength: 0

  • maxLength: 70

Name of the creditor of a "debited" transaction.

currency_exchange

debtor_account

debtor_agent

string

  • minLength: 11

  • maxLength: 11

  • pattern: [A-Z]{6}[A-Z2-9][A-NP-Z0-9][A-Z0-9]{3}

A BIC.

Example: VZVDDED1XXX

debtor_name

string

  • minLength: 0

  • maxLength: 70

Name of the debtor of a "credited" transaction.

end_to_end_id

string

  • minLength: 0

  • maxLength: 35

Unique end to end identifier.

entry_reference

string

Entry reference, for example from camt.052 message.

mandate_id

string

  • minLength: 0

  • maxLength: 35

Identification of mandates, for example, a SEPA mandate ID.

proprietary_bank_transaction_code

string

Proprietary bank transaction code as used within a community or within an ASPSP, for example for MT94x based transaction reports.

purpose_code

string

ExternalPurpose1Code according to ISO 20022.

remittance_information_structured

remittance_information_unstructured

Array[string]

Unstructured remittance information.

ultimate_creditor

string

  • minLength: 0

  • maxLength: 70

Name of the ultimate creditor of a "debited" transaction.

ultimate_debtor

string

  • minLength: 0

  • maxLength: 70

Name of the ultimate debtor of a "credited" transaction.

value_date

string

  • format: date

Date at which assets become available to the account owner in case of a credit entry, or cease to be available to the account owner in case of a debit entry. Usage: If entry status is pending and value date is present, then the value date refers to an expected/requested value date.

PayPalCallbackData

Request to Pay related data.

Property Type Description

shipping_address

Address data as applicable to most use cases.

PhoneContact

A means of contacting a customer by phone.

Property Type Description

phone_number

string

  • required

  • minLength: 0

  • maxLength: 16

  • pattern: \+[1-9]\d{1,14}

A phone number in its canonical international E.164 numbering plan format.

Example: +442071838750

phone_type

string

  • required

  • enum

    • FAX

    • HOME

    • MOBILE

    • OTHER

    • PAGER

    • WORK

The phone type.

  • FAX

  • HOME

  • MOBILE

  • OTHER

  • PAGER

  • WORK

Example: FAX

Example:

{"phone_type":"FAX","phone_number":"+442071838750"}
RiskmanErrorFieldInformation

Field name and reason why the request was rejected.

Property Type Description

field

string

The name of the field which was the reason of the request rejection.

Example: orderInformation.billTo.firstName

reason

string

The reason why the request was rejected.

Example: MISSING_FIELD

RiskmanErrorInformation

Detailed error information including fields which had been the reasons for unsuccessful processing.

Property Type Description

error_field_information

Detailed field level information regarding the reason why the request was rejected.

error_message

string

The reason why the request was rejected.

Example: Declined - The request is missing one or more fields.

error_reason

string

The reason why the request was rejected from the backend system.

Example: MISSING_FIELD

error_status

string

The status why the request was rejected from the backend system.

Example: INVALID_REQUEST

RiskmanagementInfoResponse
Property Type Description

case_priority

string

Riskcheck information regarding the case priority.

Example: 1

error_information

Detailed error information including fields which had been the reasons for unsuccessful processing.

event_id

string

  • minLength: 1

  • maxLength: 50

  • pattern: [\/0-9a-zA-Z_.:,\-+*$%]+

A unique ID for the event.

Example: E5686585867636541231230

infocodes_address

Array[string]

Riskcheck information regarding the address risk check. See user guide for details and all possible values.

infocodes_customerlist

Array[string]

Riskcheck information regarding the customer list risk check. See user guide for details and all possible values.

infocodes_device_behaviour

Array[string]

Indicates the device behavior information code(s) returned from device fingerprinting. See user guide for details and all possible values.

infocodes_globalvelocity

Array[string]

Riskcheck information regarding the velocity risk check. See user guide for details and all possible values.

infocodes_identitychange

Array[string]

Riskcheck information regarding the identity change. See user guide for details and all possible values.

infocodes_internet

Array[string]

Riskcheck information regarding the internet check. See user guide for details and all possible values.

infocodes_phone

Array[string]

Riskcheck information regarding the phone risk check. See user guide for details and all possible values.

infocodes_suspicious

Array[string]

Riskcheck information regarding suspicious risk. See user guide for details and all possible values.

infocodes_velocity

Array[string]

List of information codes triggered by the order. These information codes were generated when you created the order and product velocity rules and are returned so that you can associate them with the rules. See user guide for details and all possible values.

localtime

string

Riskcheck information regarding the local time of the risk check.

Example: 15:18:03

profile_destination_queue

string

Riskcheck information regarding the profile destination queue of the risk check.

Example: dst-queue

profile_name

string

Riskcheck information regarding the profile of the risk check.

Example: example-profile

profile_selectorrule

string

Riskcheck information regarding the profile selector rule risk check.

Example: example-rule

providers

Array[string]

Providers used to calculate the risk.

rules

Array[string]

Riskcheck information regarding the matched rules in risk check.

score

string

Calculated risk score of request data.

Example: 14

score_factor_codes

Array[string]

Riskcheck information regarding the profile factor codes of the risk check. See user guide for all possible values.

score_model_used

string

Name of the score model used for the transaction. This field contains the name of risk management’s selected model.

Example: default_eu

travel_actual_final_dst_country

string

Actual country of final destination of the travel.

Example: US

travel_actual_final_dst_locality

string

Actual city of final destination of the travel.

Example: Chicago

travel_first_departure_country

string

First departure country of the travel.

Example: US

travel_first_departure_locality

string

First departure city of the travel.

Example: San Francisco

tx_risk_status

string

Status result of an external risk management transaction. See user guide for all possible values.

Example: ACCEPTED

tx_scoring_id

string

Unique scoring transaction identifier. Can be used to reference the depending scoring transaction.

Example: 6373172383866963604006

utc_time

string

Riskcheck information regarding the UTC time of the risk check, used in error cases.

Example: 2021-12-21T14:18:04Z

RtPCallbackData

Request to Pay related data.

Property Type Description

payment_product

string

  • enum

    • SEPA_CREDIT_TRANSFER

    • SEPA_INSTANT_CREDIT_TRANSFER

Request to Pay payment product.

  • SEPA_CREDIT_TRANSFER SEPA credit transfer

  • SEPA_INSTANT_CREDIT_TRANSFER SEPA instant credit transfer

Example: SEPA_INSTANT_CREDIT_TRANSFER

SettledDebtorAccount
Property Type Description

account_holder

string

The name of the account holder.

Example: John Doe

iban

string

  • required

The international bank account number of the bank account.

Example: DE86100700004567891263

TDSInfo

Contains 3-D Secure response data. The use of this field requires an explicit activation. Please contact customer support.

Property Type Description

tds_ares_cardholder_info

string

  • minLength: 0

  • maxLength: 80

3-D Secure 2: ARes card holder information.

tds_ares_error_code

string

  • minLength: 0

  • maxLength: 80

3-D Secure 2: ARes error code.

tds_ares_error_component

string

  • minLength: 0

  • maxLength: 80

3-D Secure 2: ARes error component.

tds_ares_error_description

string

  • minLength: 0

  • maxLength: 80

3-D Secure 2: ARes error description.

tds_ares_error_detail

string

  • minLength: 0

  • maxLength: 80

3-D Secure 2: ARes error detail.

tds_ares_trans_status

string

  • minLength: 0

  • maxLength: 1

3-D Secure 2: ARes transaction status.

Example: Y

tds_ares_trans_status_reason

string

  • minLength: 0

  • maxLength: 80

3-D Secure 2: reason for the ARes transaction status.

Example: MediumConfidence

tds_auth_level

string

  • enum

    • FULL

    • ATTEMPT

The 3D-Secure transaction status.

  • FULL: Full 3-D Secure Authentification

  • ATTEMPT: 3-D Secure Authentification attempted

Example: ATTEMPT

tds_rreq_challenge_cancel_indicator

string

  • minLength: 0

  • maxLength: 80

Optional 3-D Secure 2 response parameter.

Example: CardholderCancel

tds_rreq_error_code

string

  • minLength: 0

  • maxLength: 80

3-D Secure 2: RReq error code.

tds_rreq_error_component

string

  • minLength: 0

  • maxLength: 80

3-D Secure 2: RReq error component.

tds_rreq_error_description

string

  • minLength: 0

  • maxLength: 80

3-D Secure 2: RReq error description.

tds_rreq_error_detail

string

  • minLength: 0

  • maxLength: 80

3-D Secure 2: RReq error detail.

tds_rreq_trans_status

string

  • minLength: 0

  • maxLength: 1

3-D Secure 2: RReq transaction status.

tds_rreq_trans_status_reason

string

  • minLength: 0

  • maxLength: 80

3-D Secure 2: reason for the RReq transaction status.

Example: MediumConfidence

tds_version

string

  • minLength: 0

  • maxLength: 10

3-D Secure version.

TransactionBankAccountInfo
Property Type Description

bank_account

Information about a bank account.

settled_debtor_account

TransactionCreditCardInfo
Property Type Description

avs_result

string

  • enum

    • MATCH

    • NO_MATCH

Response code of the address verification according to the response of a backend system. This value is available on some backend systems. The use of this field requires an explicit activation. Please contact customer support. Possible values:

  • MATCH

  • NO_MATCH

Example: MATCH

credit_card

Information about a credit card.

cvc_result

string

  • enum

    • CVC_MATCH

    • CVC_NO_MATCH

    • CVC_NO_RESPONSE_RECEIVED

    • CVC_NOT_PROCESSED

    • CVC_NOT_PROVIDED

    • CVC_SHOULD_BE_ON_CARD

    • CVC_VERIFICATION_UNAVAILABLE

Response code of the verification of the card verification code according to the response of a backend system. This value is available on some backend systems. The use of this field requires an explicit activation. Please contact customer support. Possible values:

  • CVC_MATCH

  • CVC_NO_MATCH

  • CVC_NO_RESPONSE_RECEIVED

  • CVC_NOT_PROCESSED

  • CVC_NOT_PROVIDED

  • CVC_SHOULD_BE_ON_CARD

  • CVC_VERIFICATION_UNAVAILABLE

Example: CVC_MATCH

recurring_payment

string

  • minLength: 1

  • maxLength: 50

  • pattern: [/0-9a-zA-Z_.:,+*$%-]+

Identifier of a recurring credit card payment.

Example: 07H987Tx3PF9VxL5G7RfNp

tds_info

Contains 3-D Secure response data. The use of this field requires an explicit activation. Please contact customer support.

TransactionInfo
Property Type Description

back_state

string

  • enum

    • DECLINED

    • AUTHORIZED

    • REVERSED

    • CAPTURED

    • SETTLED

State of a transaction according to the response of a backend system. This value is available on some backend systems. The use of this field requires an explicit activation. Please contact customer support. Possible values:

  • DECLINED

  • AUTHORIZED

  • REVERSED

  • CAPTURED

  • SETTLED

Example: REVERSED

ip_address

string

The customer’s IP address associated with this transaction. The use of this field requires an explicit activation. Please contact customer support.

transaction_bankaccount_info

transaction_creditcard_info

type

string

  • enum

    • creditcard

    • bankaccount

7.4. SDD return callback API

DB Merchant Solutions REST API offers the feature of monitoring the merchant’s bank account for SDD returns.

To use this feature, implement the SDD return callback API as a server.

7.4.1. SDD Return Callback

The merchant’s system has to implement this endpoint to receive callback requests for SDD returns.

POST /sddreturncallback
Header Parameters
Name Type Description

Digest

string

  • required

SHA-256 hash of the message body.

Example: SHA-256=/oTBp9ySS9jdnJjaX49msjmzWSsl868V7pWPrcp3mO4=

Signature

string

  • required

HMAC-256 signature. The values of the "Digest", "X-RequestDate" and "X-RandomValue" headers are concatenated. The signature is calculated using the client_key as the secret.

Example: LeeTB596cJBmDozTElmCsvc69HzDpzrnllJAqcL2sac=

X-RandomValue

string

  • required

A random value; part of the signature input.

Example: X1c1IInswtMPNSTfmtGx

X-RequestDate

string

  • required

Current timestamp formatted according to RFC 7231, section 7.1.1.2; part of the signature input.

Example: Fri, 10 Jan 2021 14:41:15 GMT

Request Body (required)
Type Content-Type

SddReturnCallbackRequest

application/json

Request example Sample SDD return callback request

Request type: SddReturnCallbackRequest

{
  "iban_merchant" : "DE78860700000111111115",
  "iban_customer" : "DE39123456790009290701",
  "original_amount" : "14900",
  "booking_date" : "2022-09-19",
  "booking_amount" : "15600",
  "fee_merchantbank" : "234",
  "fee_customerbank" : "412",
  "reason_code" : "AC04",
  "reason_code_proprietary" : "DUPL",
  "additional_reason_information" : "RUECKLASTSCHRIFT Konto aufgeloest",
  "end_to_end_id" : "p9TXxi.id1658936858958",
  "tx_id" : "020LMG10jxSI8FN0OC4vLR",
  "event_id" : "E5686585867636541231230"
}
Responses
Code Type Content-Type Description

200

application/json

Acknowledges the receipt of the callback.

400

application/json

Signals an error.

7.4.2. Model

SddReturnCallbackRequest
Property Type Description

additional_reason_information

string

Textual description of the reason for the SDD return.

Example: RUECKLASTSCHRIFT Konto aufgeloest

booking_amount

integer

  • format: int64

The booking amount of the SDD return in eurocents. Includes fees if they are not booked separately.

Example: 4711

booking_date

string

  • format: date-time

Booking date of the SDD return.

end_to_end_id

string

The end to end ID of the original transaction.

Example: p9TXxi.id1658936858958

event_id

string

A unique ID for the event. Use the same value as in the predecessor transaction the current transaction relates to.

Example: E5686585867636541231230

fee_customerbank

integer

  • format: int64

The fee by the customer’s bank for the SDD return in eurocents. Only set if the fee is not booked separately.

Example: 412

fee_merchantbank

integer

  • format: int64

The fee by the merchant’s bank for the SDD return in eurocents. Only set if the fee is not booked separately.

Example: 234

iban_customer

string

IBAN of the customer account.

Example: DE1234567901

iban_merchant

string

IBAN of the merchant account.

Example: DE1234567901

original_amount

integer

  • format: int64

Amount of original transaction in eurocents.

Example: 1001

reason_code

string

The reason code of type ExternalReturnReason1Code for the SDD return, see https://www.iso20022.org/catalogue-messages/additional-content-messages/external-code-sets. Alternatively, the proprietary reason code is provided if the code is not included in the code set.

Example: AC04

reason_code_proprietary

string

The proprietary reason code for the SDD return. Example values: DUPL, TECH, FRAD, CUTA, see https://www.ebics.de/de/datenformate. Alternatively, the reason code is provided if the code is included in the code set.

Example: DUPL

tx_id

string

A reference to the original transaction.

Example: 020LMG10jxSI8FN0OC4vLR

8. Further information

8.1. Abbreviations

The following abbreviations are used in this documentation. See the glossary for a detailed explanation of some of these terms.

Abbreviation Description

3DS

3-D Secure

ACS

Access Control Server

AFC

Anti Financial Crime

AIS

Account Information Services

AOC

Attestation of Compliance

API

Application Programming Interface

ASCII

American Standard Code for Information Interchange

ASPSP

Account Servicing Payment Service Provider

AVS

Address Verification Service

B2B

Business-2-Business / Business-To-Business

BCP

Best Current Practices

BIC

Business Identifier Code

BIN

Bank Identification Number

BLZ

Bankleitzahl

camt

Cash management

CCTIID

Credit Card Type Indicator ID

CCV

Card Code Verification

CDCVM

Customer Device Cardholder Verification Method

CID

Card ID

CIT

Customer-initiated transaction

CNP

Card Not Present

CNPJ

Cadastro Nacional da Pessoa Jurídica

CPF

Cadastro da Pessoa Física

CSC

Card Security Code

CSS

Cascading Style Sheets

CVC

Card Validation Code

CVC2

CVC 2

CVN

Card Validation Number

CVV

Card Verification Value

CVV2

CVV 2

DB

Deutsche Bank

DE

German: Deutschland

DSS

Data Security Standard

DTI

German: Datenträgeraustausch Information

EAN

European Article Number

ECI

Electronic Commerce Indicator

EEA

European Economic Area

EMV

Europay (International), MasterCard, VISA

EPI

European Payments Initiative

EU

European Union

EUR

Euro

GDPR

General Data Protection Regulation

GICC

German ISO 8583 Credit Card (Protocol)

GMT

Greenwich Mean Time

GTIN

Global Trade Item Number

GUID

Globally Unique Identifier

HMAC

Hash-based MAC

HTML

HyperText Markup Language

HTTP

HyperText Transfer Protocol

HTTPS

HTTP Secure

IATA

International Air Transport Association

IBAN

International Bank Account Number

ID

Identifier / Identification

IETF

Internet Engineering Task Force

IP

Internet Protocol

ISBN

International Standard Book Number

ISO

International Organization for Standardization

JSON

JavaScript Object Notation

KSN

Key Serial Number

MAC

Message authentication code

MCP

Multi-currency pricing

MD

Merchant Data

MIT

Merchant-initiated transaction

MOP

Means of payment

MOTO

Mail Order/Telephone order

MPI

Merchant Plug-In

MPN

Manufacturer Part Number

MSISDN

Mobile Station International Subscriber Directory Number

MT

Message type

P24

Przelewy24

PAN

Primary Account Number

PCI

Payment Card Industry

PDF

Portable Document Format

PHP

PHP: Hypertext Preprocessor

PIN

Personal Identification Number

PIS

Payment Initiation Service

PSD2

Payment Services Directive 2

PSP

Payment Service Provider

PSU

Payment Service User

QR

Quick Response

QSA

Qualified Security Assessor

RC

Response code

REST

Representational state transfer

RFC

Request for Comments

ROC

Report on Compliance

RPP

Return debit note Prevention Pool

RtP

Request to Pay

SAQ

Self-assessment questionnaire

SCA

Strong customer authentication

SCC

Security Standards Council

SCT

SEPA Credit Transfer

SCT Inst

SEPA Instant Credit Transfer

SDD

SEPA Direct Debit

SDK

Software Development Kit

SEPA

Single Euro Payments Area

SHA

Secure Hash Algorithm

SKU

Stock keeping unit

SMS

Short Message Service

SSL

Secure Sockets Layer

SSN

Social Security number

TAN

Transaction authentication number

TARGET2

Trans-European Automated Real-time Gross Settlement Express Transfer 2

TDS

Three DS / 3DS

TLS

Transport Layer Security

TTL

Time to live

UCOF

Unscheduled Credential on File

UPC

Universal Product Code

URI

Uniform Resource Identifier

URL

Uniform Resource Locator

US

United States

USD

US dollar

UTC

Coordinated Universal Time

UUID

Universally unique identifier

V

Version

WCAG

Web Content Accessibility Guidelines

8.2. Glossary

ACS

Access Control Server. Part of the 3-D Secure system. Checks if a credit card participates in the 3-D Secure procedure and where applicable carries out the payment authorisation.

AIS

Account Information Services. Services provided (for example) by a bank to provide account information (like balances) to third party organizations (like PSPs). AIS (and PIS) are regulated within PSD2.

API

Application Programming Interface. A digital component which can used by a computer system to accomplish tasks in a structured way.

BIC

Business Identifier Code. Unique identification code for both financial and non-financial institutions participating in international money transfers.

Client

Computer in a network (for example internet or intranet), which makes use of the services of a central computer (the server) such as data, memory space and resources.

CNP

Card Not Present. Credit card transaction in the internet where the physical card can not be presented.

CVV

Card Verification Value. Additional security feature for credit card transactions.

EEA

European Economic Area. Association of european countries which share common regulation for example on SCA for financial transactions.

HTTPS

Hypertext Transfer Protocol Secure: particularly safe transfer protocol for the data exchange in computer networks, uses TLS (Transport Layer Security).

IBAN

International Bank Account Number. Internationally agreed means of identifying bank accounts.

MCP

Multi Currency Pricing. A system allowing customers to pay in other currencies than their own.

MOTO

Mail Order/Telephone Order. Credit card transaction authorized via (classic) mail or telephone.

P24

Przelewy24. Payment method used in Poland.

PCI DSS

Payment Card Industry Data Security Standard. Ruleset administered by the PCI SCC to enhance credit card security (among others) by protecting sensitive information like the credit card number.

PCI SCC

Payment Card Industry Security Standards Council. The PCI SCC defines and administers the PCI DSS targeting credit card security.

PIS

Payment Initiation Services. Services provided by (for example) a bank which enable online payments and inform the merchant immediately of the payment initiation. PIS and (AIS) are regulated within PSD2.

PSD2

Payment Service Directive 2. Revised payment service directive of the European Union. Among other things it obliges banks to offer interfaces which give authorised third party providers access to customer bank accounts if authorised by a customer (AIS and PIS).

PSP

Payment Service Provider. A company which allows businesses to accept electronic payments by integrating (generally several) payment methods (like credit cards, or SDD).

REST

Representational State Transfer is a software architectural style that defines a set of constraints to be used for creating Web services.

RPP

Return debit note Prevention Pool (eScore). A data pool, where bank details are saved, for which return debit notes are currently known. The main purpose of the pool is to prevent cash loss for direct debits.

RtP

Request to Pay. A payment method where a creditor (merchant) requests a payment from a debtor (customer).

SCA

Strong customer authentication. Requirement of the PSD2 to reliably prove the card owner’s identity in CNP transactions.

SDD

SEPA Direct Debit. A payment method where a debtor gives the creditor a mandate which the creditor uses to request a payment from the creditor’s bank

SEPA

Single Euro Payments Area. Aims at improving the efficiency of cross border payments.

Server

Central computer in a network (for example internet or intranet). The server makes services such as data, memory space and resources available for other computers (the clients).

8.3. Test data for payment transactions

For the tests of the functionality during the integration of DB Merchant Solutions test data are available. Use these test data on the test system only. Payments are only simulated there. In general, only payments with valid currencies are accepted.

For each payment method, see the corresponding section of the user guide for which test data to use.

8.4. Response codes

A transaction that contains the response code value 0 (Transaction successful) is completed and successful. A transaction that contains the response code value 1345 (The selected transaction is currently in work), 1548 (Transaction is pending), or 1734 (Form service session is currently being processed) is not yet completed.

A transaction that contains a different response code value is completed and not successful.

The response code value 9000 has to be handled with special care. It means that the source of the problem has not been anticipated. Therefore, the response code is unspecific. You may contact Deutsche Bank customer support for this. If possible, provide information (like endpoint, point of time) to narrow down the problem.

There are the following categories for not successful transactions:

Number range Description

1000 - 1199

Communication errors during processing.

1200 - 1299

Configuration errors during processing.

1300 - 1499

Validation errors in the merchant server.

1500 - 1699

Validation errors in the backend systems.

1700 - 9000

Various errors.

The following table contains all possible response codes.

Response Code Description

0

Transaction successful.

1000

Discrepancy to backend system.

1001

Invalid return value of a bank account validation.

1002

Cancelled - timeout.

1003

Maintenance work.

1004

Money amount discrepancy

1100

Unexpected error.

1101

Wrong field in response message from backend gateway.

1102

Gateway connection problem.

1103

Illegible gateway response.

1105

Backend system error.

1200

Wrong format of GICC version.

1202

CCTIID not supported.

1203

Terminal of the predecessor transaction invalid.

1204

No standard contract configured.

1205

No communication parameters configured.

1206

No notification URL configured.

1207

No MAC key configured.

1208

MAC validation failed.

1209

No bank account configured.

1210

Invalid Gateway URI.

1211

Invalid gateway configuration.

1212

Invalid login to gateway.

1213

No contract configured.

1214

Not all required contracts configured.

1215

Protocol wrong or missing.

1216

No URL for redirect after success.

1217

No URL for redirect after error.

1218

No URL for redirect after abort.

1219

No 3-D Secure data configured for card acceptor.

1222

No country configured.

1230

Incomplete SEPA standing data of the shop.

1231

Configuration incomplete.

1232

No postal address configured.

1233

No standard contract with bank account configured.

1240

No EMV application configured.

1241

No configuration for current transaction attributes.

1242

Missing shop configuration.

1301

IBAN missing.

1302

Invalid transaction type.

1303

Negative amount.

1304

Could not find referenced transaction.

1305

Invalid account number.

1306

Invalid bank code.

1307

Illegal sequence of transactions.

1308

Amount of the follow-up transaction too high.

1309

Transaction type not allowed.

1310

Predecessor transaction already processed.

1311

Referenced transaction failed.

1312

Invalid transaction attributes.

1313

Unknown currency.

1314

Invalid card number.

1315

Invalid means of payment qualifier.

1316

Referenced transaction belongs to another record.

1317

Credit card number missing.

1320

3-D Secure data missing.

1321

Transaction not submitted as 3-D Secure.

1322

Access denied.

1323

Error detected during validation of input data.

1325

Credit card not issued in an accepted country.

1327

Limit exceeded.

1328

IP address not from an accepted country.

1329

Country of the IP address unknown.

1330

Card issuing country unknown.

1331

Country does not match other country.

1332

Useless comparison of two country lists.

1333

Given country rejected by list.

1337

Event ID already assigned.

1338

Alias already allocated for another means of payment.

1339

The use of card number aliases is not allowed.

1340

Only transactions with card number aliases are allowed.

1341

Unknown alias.

1342

Card number alias not correct.

1343

Means of payment already registered with another alias.

1344

Invalid external timestamp.

1345

The selected transaction is currently in work.

1346

Reference to predecessor not allowed for this type of transaction.

1347

Transaction exists with wrong type.

1348

Card verification code missing.

1349

Transaction already captured.

1350

Referenced transaction already reversed.

1351

Referenced transaction already cleared.

1352

The currency of a follow-up transaction has to be the same as for the initial transaction.

1353

Transaction already processed.

1354

The merchant is not allowed to submit credit card data at this interface.

1355

The transaction cannot be assigned to a shop.

1356

Means of payment blacklisted.

1358

Type of transaction blocked.

1359

Transactions with this means of payment exceed limits.

1360

Country of delivery blocked.

1361

Submitted country of delivery requires additional approval.

1362

Card issuing country blocked.

1363

Card issuing country requires additional approval.

1364

Card issuing country and country of delivery do not match. Additional approval required.

1365

Card issuing country and country of delivery do not match.

1366

Partial reversal not allowed.

1367

Follow-up transaction not allowed.

1368

Transaction kind transition invalid.

1369

Qualifier is missing.

1370

Invalid query cause.

1371

The given event ID does not match the event ID of the predecessor.

1372

Token unknown.

1373

Stored means of payment for different payment method.

1374

Transaction not submitted as external 3-D Secure.

1375

BIC missing.

1376

Bank code or BIC missing.

1377

Bank code and BIC submitted.

1378

Invalid IBAN.

1379

Alias contains card number.

1380

Person data is missing.

1381

Firstname is missing.

1382

Name is missing.

1383

Street is missing.

1384

Street number is missing.

1385

City is missing.

1386

Postal code is missing.

1387

Delivery country is missing.

1388

Invalid service.

1389

Service is missing.

1390

Automatic capture not supported.

1391

Capture date in the past.

1392

Capture date too far in the future.

1393

Capture date not set.

1394

A capture is not possible as an automatic capture is pending.

1395

No predecessor transaction was specified.

1396

No URL for redirect after success of a PayPal bank transfer payment.

1397

No URL for redirect after cancel of a PayPal giropay or bank transfer payment.

1398

No URL for redirect after success of a PayPal giropay payment.

1399

Incomplete SEPA mandate data.

1400

No user input/timeout.

1401

Cancelled by user.

1402

Shop is being notified.

1403

Shop has been notified.

1404

Aborted by follow-up transaction.

1405

No payment method left.

1501

Voice authorisation expected.

1502

Configuration problem.

1503

Card issuer not reachable.

1504

System error.

1505

Pre-authorisation expired.

1506

Temporary error.

1507

Transaction rejected.

1508

Transaction rejected by card holder.

1509

Card expired.

1510

Card invalid.

1511

Card stolen.

1512

Card suspicious.

1513

Card unknown.

1514

Card restricted.

1515

Invalid amount.

1516

Retain card.

1521

Invalid currency.

1522

Transaction not found.

1523

Means of payment blocked.

1524

3-D Secure authorisation failed on directory lookup.

1525

Bank code blocked.

1526

Limit exceeded.

1528

Account invalid.

1530

Not an account for online banking.

1531

Transaction status unknown.

1532

No suitable match.

1533

Missing data for person.

1534

No eligible interest for query.

1535

Card not identical to the card of the underlying transaction (possibly reservation expired).

1536

Configuration problem.

1537

Outcome of the transaction unknown.

1538

Transaction finished.

1539

Shop funded.

1543

Bank not available.

1544

Transaction with this bank not possible.

1545

Authorisation problem.

1546

Transaction rejected.

1547

Input failure.

1548

Transaction is pending.

1549

Amount too high.

1550

Rejected for risk control.

1551

Event ID already assigned.

1552

Invalid amounts.

1553

3-D Secure authentication failed.

1554

3-D Secure authentication failed.

1555

Invalid IBAN.

1556

IBAN calculation failed.

1557

BIC not available.

1560

Invalid address check.

1561

Scoring refused.

1562

Reference transaction not found.

1563

BIC invalid for IBAN.

1564

Previous IBAN invalid.

1565

Previous BIC not available.

1566

Service blocked for bank account.

1567

Booking status not allowed.

1568

MasterCard tokenization error.

1569

Incorrect state of referenced transaction.

1570

Click to Pay failed.

1590

Invalid transaction.

1591

Function not supported.

1592

Invalid PayPal token.

1593

Review at PayPal needed.

1594

Change payment method.

1595

Transaction not confirmed.

1596

Invalid shipping address.

1597

Denied.

1598

Transaction cancelled on PayPal.

1600

Transaction not permitted.

1601

Mandate signed in the future.

1602

Mandate changes only in recurring payments.

1604

Due date invalid.

1605

Invalid sequence number.

1606

Card blocked.

1609

Invalid parameter value.

1611

Aborted by client.

1612

Reversal not allowed.

1613

Shop not active.

1614

Account holder missing.

1615

Login/customer ID missing.

1616

PSD2 payment not possible.

1617

PSD2 instant payment not possible.

1618

Incomplete recurring payment data.

1619

Recurring payment identifier already assigned.

1620

Recurring payment does not exist.

1621

PSD2 future dated payment not possible.

1622

Transaction not possible.

1623

Click to Pay failed.

1700

The means of payment of a follow-up transaction has to be the same as for the initial transaction.

1702

Invalid transaction for complex event.

1703

Reference not found.

1704

Delivery country blocked by AFC Policy.

1705

The issuing country of the card is blocked by AFC Policy.

1706

Country of the client IP address blocked by AFC Policy.

1707

Number of transactions allowed for this operation exceeded.

1709

Apple Pay Token decryption failed.

1710

Validation of Apple Pay token failed.

1711

Public key hash from Apple Pay token not found.

1712

No domains of Apple Pay merchant registration.

1713

Apple Pay merchant identifier not found.

1714

Apple Pay merchant registration failed.

1722

Country is unknown.

1723

Cursor invalid.

1727

Creditor ID is invalid.

1728

BIC does not belong to a German account or to Deutsche Bank.

1733

Clearing path was not found.

1734

Form service session is currently being processed.

1735

Request blocked by Hotscan AFC policy.

1736

Request blocked by Cybersource AFC policy.

1805

Charging already carried out.

1806

Strong customer authentication required.

8010

Invalid "aid"

8100

Form initialization failed.

9000

Indeterminate error.

8.5. Changelog

This changelog records relevant changes to the documentation, that is, bugfixes, improvements, and new features. It does not record editorial changes such as fixed typos.

2.1.92.0 2025-08-29

2.1.91.0 2025-08-15

  • Apple Pay: Clarification on onboarding, especially the domain verification.

  • Bugfixes in Widget Solution: Widget Solution now reacts correctly to a total_amount which isn’t a number. Cancelling and reopening a payment is now possible in some situations where errors occurred previously.

  • Bugfix in iDEAL: DB Merchant Solutions REST API now responds to prohibited subsequent transactions following an authorization with the correct response code 1307 "Illegal sequence".

  • Improvement in Form service: The checkout request now fails on initialization (instead of during processing) if the shipping country is on the embargo list.

  • Bugfix for PayPal: Backend errors now lead to the correct response code 1105 "Backend system error" in some situations where the response code 9000 was returned before.

2.1.90.0 2025-08-01

  • Bugfix in Request to Pay (RtP): DB Merchant Solutions REST API now also sends a shop notification in case of a status change without the field debtor_account.

  • Bugfix in Credit card transactions: Recurring credit card transactions of type unscheduled credential on file (UCOF) now use the sequence type.

  • Improvement in PSD2 AIS: In the callback response, duplicate entries in remittance_information_unstructured are now removed.

  • Improvement in Form service: The Form service now supports screen readers.

2.1.89.0 2025-07-18

  • Additional security measure in Widget Solution for PayPal: The response code 1004 "Money amount discrepancy" is returned in case of a discrepancy between the expected total amount and the actual total amount of a payment (see Finalize payment).

  • Bugfix in Widget Solution for PayPal: The field state of the shipping address is now correctly submitted in the response of Finalize payment.

  • Bugfix for SEPA Direct Debit (SDD): The diagnosis now returns the correct response code 1704 for transaction which are blocked due to AFC check.

  • Bugfix for Payment link: Payment via payment link for the payment methods TWINT and PayPal incorrectly led to an error, when no basket was given in the request. This has now been corrected.

2.1.88.0 2025-07-04

  • Improvement in Widget Solution: An example is given to display several express checkout buttons in parallel.

  • Correction in documentation of TWINT: Added missing sections on Refund and Test data.

  • Changes in the Klarna API: The endpoint POST /form/alias/klarna has been replaced by the Forms endpoint for Klarna with the transaction kind tx_action set to verify-mop. This endpoint creates a billing agreement without an initial transaction. Now, the corresponding transaction is identified by an event_id.

  • Bugfix in Form service: In some situations, a double click on a submit button led to errors. This is now corrected by disabling the button after the first click.

  • Enhancement in Services API: A new optional subfield merchant_information_dpg_data has been added to the field merchant_information.extensions (where available). This may contain a merchant specific information for the corresponding transaction.

2.1.87.0 2025-06-20

2.1.86.0 2025-06-06

2.1.85.0 2025-05-23

2.1.84.0 2025-05-09

  • Services API: Removed objects and references relating to the removed feature "Managed Mandate" from the API.

2.1.83.0 2025-04-25

  • Bugfix for Google Pay in Form service: In the Google Pay modal view, the shipping address is not any more selectable by the customer.

2.1.82.0 2025-04-11

2.1.81.0 2025-03-28

  • giropay, Sofortüberweisung: Part of the documentation of the disabled payment methods has been removed.

  • iFrame Service: Provided labels in sequence diagram.

  • Bugfix in PayPal: back_rc is provided for the diagnosis request also if version v2 of the PayPal API is used.

  • Diagnosis request: Bugfix on failing diagnosis in some situation where it refers to failed transactions.

  • Diagnosis request: Bugfix on failing diagnosis on a verify-mop transaction for PayPal.

2.1.80.0 2025-03-14

  • TWINT: DB Merchant Solutions REST API supports the swiss payment method TWINT.

  • Klarna: Default values for the Klarna metadata fields merchant_reference1 and merchant_reference2 can now be overwritten by the merchant (see Klarna metadata).

  • Introduction: Added chapter clarifying general concepts relating Aliases and recurring payments.

  • Przelewy24 (P24), WeChat Pay: Changed the behaviour (wait interval and notification url) for the exceptional case that the transaction status remains pending for a longer time (see the courses of transaction, step 20 for P24, step 17 for WeChat Pay).

2.1.79.0 2025-02-28

  • Multi-currency pricing (MCP): Clarification on registration and test data.

  • Services API: Removed the endpoints for "Managed Mandate".

  • Examples in Forms: Removed configuration concerning the discontinued payment methods Sofortüberweisung and giropay.

  • PayPal: Improvement for handling the shipping address if the basket_type is PHYSICAL or MIXED.

2.1.78.0 2025-02-14

  • SEPA Direct Debit (SDD): The service SEPA mandate management is not offered anymore. The corresponding service has been removed from the documentation.

  • Response codes: Removed some response codes which are not relevant for DB Merchant Solutions REST API.

  • Widget Solution: Recurring payments and MIT are also supported for Google Pay and Apple Pay.

  • iDEAL: Bugfix concerning the back_rc for the diagnosis request.

  • Improvement for PayPal in Form service: The shipping_address is not required (and not displayed in the PayPal window) if the basket_type is DIGITAL.

2.1.77.0 2025-01-31

  • Widget Solution: Widget Solution supports one-click payments using PayPal automatic payments.

  • Widget Solution: Pointed out that the field paypal_cancel_url is required in some situations concerning recurring payments.

  • Introduction: Editorial changes concerning transactions and related basic concepts.

  • Response codes: New response code 1735 for AFC.

2.1.76.0 2025-01-17

2.1.75.0 2025-01-03

2.1.74.0 2024-12-06

2.1.73.0 2024-11-22

2.1.72.0 2024-11-08

  • Shop plug-ins: A new version of the shop plug-ins is available which supports JTL.

  • Diagnosis request: Restriction on the number of diagnosis requests for an event.

  • Bug fix on a problem leading to failing diagnosis requests on an event with a complex transaction history including many aborted (PayPal) transactions.

2.1.71.0 2024-10-25

  • Request to Pay: Adds SettledDebtorAccount in TransactionBankAccountInfo.

  • Small editorial improvements.

2.1.70.0 2024-10-11

2.1.69.0 2024-09-27

  • Shop plug-ins: A new version of the shop plug-ins is available. The version is required for release 3.0 or larger of OpenCart.

  • SDD: Added test data to test creating a mandate for integration type AIS.

  • Apple Pay: Clarified use of Apple Pay payment session token for Apple Managed Integration.

  • PayPal test data: Clarified testing error scenarios.

2.1.68.0 2024-09-13

2.1.67.0 2024-08-30

2.1.66.0 2024-08-16

  • Response codes: New response code 1734 (Form service session is currently being processed) signifying a not yet completed transaction.

  • Credit card: Clarified for which transaction kinds a reversal is possible.

  • Apple Pay: Clarified that after initialization, the transaction result (successful or not successful) is contained in process.rc.

2.1.65.0 2024-08-02

2.1.64.0 2024-07-19

2.1.63.0 2024-07-05

2.1.62.0 2024-06-21

2.1.61.0 2024-06-07

  • Creditcard:

    • Bug fix: When erroneously submitting two captures for a pre-authorization, a diagnosis for the event now returns a proper message.

    • Bug fix: Now supporting transactions with TDS20PhoneNumber.regionalCode set to 0000000000

    • Bug fix: Now supporting transactions with http_browser_language = en-GB-oxendict.

    • Bug fix: Now supporting transactions with customer_data.personal_identifications set.

  • PayPal: Bug fix: When a customer tries to pay after the session has timed out (after 120 minutes), a proper error message is displayed.

  • SDD: Added an IBAN for testing the checklist.

  • Widget Solution: Various bug fixes.

2.1.60.0 2024-05-24

  • iDEAL:

    • Added section on most common response codes.

    • Clarified that the option FAST_CHECKOUT, while already prepared at DB Merchant Solutions REST API, is not yet in production at iDEAL. Using this feature currently will in an error message. The feature is expected to be available in 2024 Q3.

  • Google Pay: Clarified that for a Google Pay transaction in the Form service checkout page, google_pay_credit_card_data and its subfields googlepay_country_code, googlepay_domain_name, and googlepay_merchant_id are required.

  • Widget Solution:

    • Clarified: For PayPal transactions, item discounts will not be shown separately on the PayPal page but will be added to the basket discount.

    • Various bug fixes.

2.1.59.0 2024-05-10

  • SDD: New attribute managed_mandate for easier handling of managed mandates.

  • Credit card test data: Clarified how to create rejected transactions in the test system.

  • Widget Solution: Various bug fixes.

  • MerchantInformation: Clarified that the subfields merchant_data_1, merchant_data_2, and merchant_data_3 all have a maximum length of 255.

2.1.58.0 2024-04-26

  • Widget Solution:

    • Various bug fixes.

    • Added information on Content Security Police (CSP).

2.1.57.0 2024-04-12

  • Integration types: Added Widget Solution as integration type.

  • Widget Solution: Added examples for Google Pay and PayPal integration.

  • Alias:

    • Clarified that aliases are available also for Apple Pay, Google Pay, and Klarna.

    • Clarified that a customer has to agree to an alias being used.

  • Payment Link: Clarified that using a payment link with only Apple Pay as payment method will lead to an error on devices which do not support Apple Pay.

2.1.56.0 2024-03-28

  • New integration type Widget Solution.

  • Form service:

    • Brand name now rendered as "Request to Pay" instead of "Direct bank transfer" (English) or "Direktüberweisung" (German).

    • Various layout fixes.

  • Request to Pay: After a customer has been inactive for 30 minutes, the merchant now receives a notification about a time-out.

2.1.55.0 2024-03-15

  • SDD: new endpoint for creating SDD managed mandates via account information service (AIS).

  • iFrame Service: Clarified the use of cookies.

  • Form service: Clarified the required fields when creating a checkout page or a payment link.

2.1.54.0 2024-03-01

  • Credit card: Clarified that the URL used in step 18 can be set in the parameter cres_notification_url.

  • Google Pay and Apple Pay: Clarified that amount_total has to be consistent with the other amounts given.

  • Klarna: If shipping_address.email is not set, DB Merchant Solutions REST API will not decline the transaction but send it to Klarna suppressing shipping_address so that the customer may enter it.

  • PayPal: Clarified details on refunds and reversals.

2.1.53.0 2024-02-16

  • Request to Pay: Corrected the countries in which Request to Pay is available.

  • Giropay: Added information on test data.

2.1.52.0 2024-02-02

  • Creditcard 3DS required fields:

    • Updated that the new required fields for 3DS are applicable from 2024-08-12 (not from 2024-02-12) on.

    • Updated that for Visa either customer_data.cardholder_email is required or one of customer_data.home_phone_number, customer_data.mobile_phone_number, or customer_data.work_phone_number and its subfields country and regional.

  • SDKs: Added information about mobile SDKs.

2.1.51.0 2024-01-19

  • New feature: SEPA mandate management now supports headless functionality.

  • New feature: The Callback API supports sending additional information for RtP transactions under extensions.request_to_pay_data.payment_product.

  • Form service:

  • iFrame Service: Clarified that the new requirements for 3DS required fields are also applicable to iFrame Service transactions.

  • Google Pay: Similarly, clarified that the new requirements for 3DS required fields are also applicable to iFrame Service transactions.

  • Credit card transactions: Clarified the reservation period for credit card pre-authorizations.

2.1.50.0 2024-01-05

  • New feature: Request to Pay supports receiving reports for payments and refunds.

  • New feature: The shop notification for an iDEAL transaction contains additional information for the transaction under extensions.ideal_data.

  • SDD: Clarified the parameter due_date and that for managed mandates the parameter reference is required.

  • Creditcard 3DS required fields: Clarified that the parameter state is required only when country is US.

  • Multi-currency pricing (MCP): Clarified that the format of req_currency_date is date-time as defined by RFC 3339, section 5.6.

  • The payment method paydirekt has been discontinued. The corresponding endpoint has been removed.

2.1.49.0 2024-01-05

  • Bugfix: Payment links now also correctly supporting the browser’s back button.

2.1.48.0 2023-12-05

  • Bugfix: Payment links now also correctly working for Apple Pay.

  • Bugfix: giropay shop-notification edge case fixed.

  • Creditcard 3DS required fields: Added information about new required fields in Mastercard and Visa creditcard transactions starting from 2024-02-12.

  • Creditcard test data: Added new test cards for testing new 3DS required fields.

2.1.47.0 2023-11-24

  • Creditcard test data: Added that the test card with number 4012 0010 3716 7778 has US as issuer country, while all other test cards have DE as issuer country.

  • Apple Pay:

    • Added link to Apple Pay JavaScript library.

    • Clarified that in ApplePayPaymentRequest the field billing_address is optional.

2.1.46.0 2023-11-10

  • Creditcard test data: For testing purposes, the creditcard with number 4111 1111 1111 1111 now triggers a 3D secure flow (without cardholder authorization) instead of a non 3D secure flow as before. For testing a VISA transaction without a 3D secure flow, use the number 4116 1111 1111 1116 instead.

  • Google Pay: Added link to Google Pay JavaScript library.

  • Request to Pay: Documented the different transaction statuses and that a refund is possible only for a transaction with status SETTLED.

  • giropay:

    • Added section on captures.

    • Updated example requests.

2.1.45.0 2023-10-27

  • Payment methods: In all subsections, that is, for all payment methods:

    • Clarified how to set parameter tx_kind for subsequent transactions.

    • Added individual requirements for basket_id.

  • giropay: Documented new transaction types pre-authorization and capture.

2.1.44.0 2023-10-13

  • Authentication: Added section on how to calculate client_secret with JavaScript.

  • Apple Pay: Clarified that in ApplePayPaymentRequest the field billing_address is mandatory.

2.1.43.0 2023-10-13

2.1.42.0 2023-09-29