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:
#!/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.
1.5. Copyright note
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".

The functions of the requests (arrows) in the above figures are:
-
The customer uses the merchant’s website and accesses business entities like offers and baskets.
-
The customer communicates directly with DB Merchant Solutions REST API.
-
The customer communicates directly with some of the backends to authenticate to the payment method among others.
-
The merchant’s backend uses payment related business logic of DB Merchant Solutions, for example: authorize payments.
-
DB Merchant Solutions may call the merchant’s backend to notify about the outcome of a transaction.
-
DB Merchant Solutions calls the payment backends to process payment relevant tasks.
-
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):
-
Alias API for credit card and bank account.
-
Alias endpoints in Form service: bank account, credit card.
-
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. -
Widget Solution for PayPal, Google Pay, and Apple Pay.
-
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
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:
-
Upload the module to the shop server plug-in directory and grant permissions.
-
Activate the plug-in in the backend.
-
Enter
client_key
andclient_secret
as configuration parameters. -
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:
-
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.
-
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.

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 fieldscredit_card_data
,direct_debit_data
, andpaypal_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:
-
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.
-
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 andSHOP_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.

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

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:

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

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}
]
}

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.

-
The customer makes a purchase in the shop and starts the payment or payment-related process.
-
The shop generates a request and sends a request to DB Merchant Solutions, see Initializing the Form service payment for details.
-
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.
-
The shop sends a redirect to the Form service URL to the customer’s browser.
-
The customer’s browser redirects to the Form service URL.
-
DB Merchant Solutions displays a website to provide necessary details about the transaction by the customer. respectively for the customer.
-
The customer provides the necessary information to DB Merchant Solutions.
-
DB Merchant Solutions Processes the transaction.
-
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 theskip
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. -
The shop confirms receipt of the notification.
-
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
ornotificationFailedURL
is used). Alternatively, if specified in the initialization request, DB Merchant Solutions sends a redirect to the shop to the customer’s browser. -
The customer clicks the link “back to the shop”, or the customer’s browser redirects to the shop.
-
The shop displays the transaction result for the customer.
Details on the individual steps:
-
In some situations, DB Merchant Solutions communicates with a backend system, for example to create an order entity.
-
In some situations, the redirect URL points to a payment method’s website and not to DB Merchant Solutions
-
The communication may be more complex than just submitting a form.
-
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
-
When using a specific payment method directly, refer to the corresponding section in the user guide on which fields are required:
-
When using the checkout page to let the customer select the payment method, the following fields are always required:
-
amount_total
and subfields -
form_customer_continuation
and subfields (see Redirect to merchant’s website) -
callback
and subfields (see Callback and diagnosis request) -
checkout_page_configuration
and its subfieldsorting_order
(see Selection of payment methods in the checkout page) -
For Google Pay, for the field
google_pay_credit_card_data
the subfieldsgooglepay_merchant_id
,googlepay_domain_name
, andgooglepay_country_code
are required. -
For any other payment method offered, the fields required for this payment method as when using this payment method directly.
-
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 theaction
CREATE
. Enter the desired alias inalias
. If you leavealias
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. Setadditional_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 orUCOF
when a card number alias is created for future payments with the same credit card. In this case usealias_action
with theaction
CREATE
with the first payment and the card number alias with the following payments. You can specify thetx_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 fieldrecurring_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
intransaction_attributes
: date after which no further authorizations shall be carried out. -
recurring_frequency
intransaction_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:
-
Pass the control back to the merchant’s website ("redirect"),
-
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).
3.2.11. Using a payment link
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.
Creating 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 subfieldsamount
andcurrency
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).
Getting information about a 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.
Extending the validity period of think the link
Use the update payment link endpoint to set a new validity period (parameter expires
).
Deactivating the link
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.

The transaction proceeds as follows:
-
The customer makes a purchase in the shop and starts the payment process.
-
The shop initializes the payment with DB Merchant Solutions.
-
In the response DB Merchant Solutions sends a session ID and configuration data to the shop.
-
The shop displays a page to the customer which contains placeholders for the input fields of the means of payment details and JavaScript code.
-
This page requests a JavaScript file from DB Merchant Solutions.
-
DB Merchant Solutions sends the JavaScript file to the customer’s browser.
-
With the help of this JavaScript file the browser replaces the placeholders with iframes to enter the means of payment details.
-
The customer enters the means of payment details and submits the form.
-
DB Merchant Solutions stores the means of payment details.
-
DB Merchant Solutions sends a token to the customer’s browser.
-
The browser sends the token to the shop.
-
The shop sends all data required for payment, including the token, to DB Merchant Solutions.
-
DB Merchant Solutions processes the payment.
-
DB Merchant Solutions sends the result of the payment to the shop.
-
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.
-
Initialize an iFrame service interaction as for a credit card transaction, in particular regarding 3-D Secure 2.1 or 2.2.
-
In the HTML page (see Necessary HTML), insert a div with ID
iframeCvc
. -
In the JavaScript (see Necessary JavaScript), set
type
toaliasCreditCard
. -
To pay (see Paying with the received token), use the credit card payment endpoint and set the parameters as follows:
-
alias_action.action
=USE
andalias_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.
<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, eithercreditCard
for credit card or Maestro payments,bankAccount
in the case of direct debit transactions oraliasCreditCard
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 fieldswidth
andheight
(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.
-
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.
-
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.
-
code
: card verification code. Three to four digits.
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 fieldscode
(for non-MOTO transactions) andholder
. An input value is required iftrue
. Possible values:true
,false
. Defaults aretrue
forcode
andfalse
forholder
.
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.
The iFrame Service uses the following CSS classes for the input fields:
CSS class | Explanation |
---|---|
|
denotes a field with valid input |
|
denotes a field with invalid input |
|
denotes a field with possibly valid input |
|
denotes a field with input that is not accepted, for example credit card brand |
|
denotes a field which has the focus |
|
denotes a required field |
The iFrame Service supports the following CSS attributes to format the iframes.
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
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.

var options = {
clientSession: clientSession,
clientConfiguration: clientConfiguration,
type: 'bankAccount',
fields: {
holder: {selector: '#iframeAccountHolder', placeholder: 'Max Mustermann'},
iban: {selector: '#iframeIban'},
bic: {selector: '#iframeBic'}
}
};
var options = {
clientSession: clientSession,
clientConfiguration: clientConfiguration,
type: 'aliasCreditCard',
fields: {
code: {selector: '#iframeCvc', placeholder: '246'},
},
acs_window: {
width: 700,
height: 600
}
};
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:
Event | Explanation | Example of use |
---|---|---|
|
the credit card brand changed |
display an image of the card brand |
|
the country of the IBAN changed |
display the flag of the country |
|
the validation status of an input field changed |
change the colour of the input field |
|
the validation status of the entire form changed |
change the colour of the form |
|
the focus of an input field changed |
change the colour of the input field |
|
the state of the form changed from active to inactive or vice versa |
change the colour of the form |
|
the user pressed the enter key in an input field |
handle form submission |
|
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:
-
name of the event
-
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.
Event | Behaviour |
---|---|
|
add or remove a CSS class of the iframe placeholder |
|
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
orbankAccount
-
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.

-
The customer navigates to the merchant’s checkout page.
-
The customer’s browser requests the checkout page from the merchant backend.
-
The merchant backend requests authentication from DB Merchant Solutions REST API. For this step, follow the instructions given in Authentication and Security API.
-
DB Merchant Solutions REST API returns an
access_token
. The merchant backend uses it in subsequent requests as a bearer token for authentication. -
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.
-
DB Merchant Solutions REST API returns a session ID
id
. -
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. -
The browser displays the page to the customer, interpreting in particular the JavaScript included in the page.
-
The customer clicks on the displayed widget.
-
Via the JavaScript in the checkout page, the browser contacts the payment system (Google Pay or PayPal).
-
The payment system responds.
-
The browser displays a modal dialog according to the chosen payment system.
-
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.
-
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.
-
The event handler calls the merchant backend with the updated information.
-
The merchant backend recalculates the price.
-
The merchant backend return the new price to the event handler.
-
The customer eventually confirms the payment.
-
The browser calls the event handler
onAuthorize
configured in step 7 which calls the merchant backend. -
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. -
DB Merchant Solutions REST API returns a success or error message.
-
The merchant backend returns the result to the browser.
-
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
toSET_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 handlersonShippingAddressChanged
andonShippingOptionChanged
must not be implemented.For express checkout, set
paypal_shipping_preference
toGET_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 handlersonShippingAddressChanged
andonShippingOptionChanged
are generally implemented to react on customers' choices. - Google Pay
-
For standard checkout, set
shippingAddressRequired
tofalse
within the initialization of the payment system (see Necessary HTML and JavaScript). No address is displayed in the modal dialog. The event handlersonShippingAddressChanged
andonShippingOptionChanged
must not be implemented.For express checkout, set
shippingAddressRequired
totrue
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 handlersonShippingAddressChanged
andonShippingOptionChanged
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
andshippingType
tostorePickup
andrequiredShippingContactFields
to['email', 'name', 'phone', 'postalAddress']
. The event handlersonShippingAddressChanged
andonShippingOptionChanged
must not be implemented.For express checkout, set
shippingContactEditingMode
toenabled
,shippingType
toshipping
, andrequiredShippingContactFields
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
, setpaypal_shipping_preference
toNO_SHIPPING
. The event handlersonShippingAddressChanged
andonShippingOptionChanged
must not be implemented. ForPHYSICAL
andMIXED
,paypal_shipping_preference
must be set toSET_PROVIDED_ADDRESS
orGET_FROM_FILE
. The event handlersonShippingAddressChanged
andonShippingOptionChanged
must or must not be implemented accordingly. - Google Pay
-
For
DIGITAL
, setshippingAddressRequired
tofalse
within the initialization of the payment system (see Necessary HTML and JavaScript). ForPHYSICAL
andMIXED
, the parameter has to be set according to the checkout scenario. The event handlersonShippingAddressChanged
andonShippingOptionChanged
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
, setshippingContactEditingMode
andshippingType
tostorePickup
andrequiredShippingContactFields
to['email', 'name', 'phone']
. The event handlersonShippingAddressChanged
andonShippingOptionChanged
must not be implemented.For
PHYSICAL
andMIXED
, setshippingContactEditingMode
toenabled
,shippingType
toshipping
, andrequiredShippingContactFields
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:
-
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 andRECURRING
scheduled billing agreements.INSTALMENT
is used for instalment payments. -
sequence_type
hast to be set toFIRST
.
-
-
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.
-
-
An
alias
is returned in thealias_info
field of the response of the finalization of the transaction.For Google Pay and Apple Pay the field
recurring_payment
is returned additionally. -
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 byrecurring_payment
. -
alias
andrecurring 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
andrecurring payment
are specified in the request body,alias
as a subfield ofmeans_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
orpreauthorization
,
-
- Without initial transaction
-
-
tx_action
=verify-mop
, -
amount_total.amount
is set to0
.
-
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 iftx_action
is not set toverify-mop
. Iftx_action
is set toverify-mop
the subfieldamount
has to be set to0
. -
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
andgooglepay_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
andapple_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
, andseries_flag
: to indicate recurring credit card payments -
account_information
,merchant_risk_indicators
,customer_information
, anddevice_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 toCREATE
.If the billing agreement shall be used for one-click payments, the subfield
action
is set toUSE
and the subfieldalias
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 thatamount_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 toUSE
). -
processing_options
: Currently supporting onlyRISKCHECK
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
, andonSuccess
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).
-
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 }); }
-
Use status callbacks:
To simplify integration, the event handlers
onCancel
,onError
, andonSuccess
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:-
production: https://merch.directpos.de.
-
Add a
<div>
where the script shall insert the widget. -
Style the
<div>
with CSS or directly with thestyle
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 thediv
in which the button shall be inserted -
payment_method
: the corresponding payment method, eithergooglepay
orpaypal
. -
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 toframe-src
. -
production: add *.merch.directpos.de to
script-src
and toframe-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
|
The amount in minor units. |
currency |
string
|
The ISO-Alpha-3 currency code of the amount. |
ApplePayButtonStyle
Name | Type | Description |
---|---|---|
type |
string |
|
style |
string |
|
width |
string |
Button width and unit. Example: |
height? |
string |
Button height and unit. Example: |
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: |
requiredShippingContactFields |
string[] | undefined |
|
shippingContactEditingMode |
string | undefined |
|
supportedNetworks |
string[] | undefined |
|
supportedCountries |
string[] | undefined |
|
shippingType |
string | undefined |
|
buttonStyle |
Basket
Name | Type | Description |
---|---|---|
shippingCosts |
|
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. |
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: |
buttonType |
string |
Default: Note: When Note: If a language specified in the viewer’s browser matches an available language, a translated button label appears. Note: The following
|
buttonLocale |
string |
The ISO 639-1 code of the desired button language. Supported locales include Default: Set to the browser or operating system language settings. |
buttonSizeMode |
string |
Default: |
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, |
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
|
The merchant name encoded in UTF-8 to be rendered in the payment sheet. |
emailRequired |
boolean |
Set to Default: |
shippingAddressRequired |
boolean |
Set to Default: |
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 |
|
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:
Default: |
disableMaxWidth |
boolean |
By default |
height |
number |
By default, the button adapts to the size of its container element. |
label |
string |
Label of the button, displayed in the customer’s language. Possible values:
Default: |
layout |
string |
Layout of the button. Possible values:
Default: |
shape |
string |
Shape of the button. Possible values:
Default: |
tagline |
boolean |
Indicates if a tagline shall be displayed. If Default: |
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
|
Possible values:
|
phone_number |
string
|
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
|
City |
state |
string |
State or province |
country |
string
|
The two-letter country code of the country (ISO 3166-1 alpha-2). |
postalCode |
string
|
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
|
ID to identify the shipping option at the merchant. |
label |
string
|
The label to be displayed as the option. |
description |
string |
A descriptive text that is displayed below the option label. |
price |
|
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 |
|
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
|
Set to |
paymentMethod |
string
|
Payment system type of the widget. Possible values:
|
container |
string
|
|
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 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.
Use the general endpoints Get information for an event ID or Get information for a transaction ID.
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:
-
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.
-
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.
-
SAQ D-Merchant: Contains 329 questions. For all e-commerce merchants not included in SAQ A or SAQ A-EP.
For a detailed comparison of the SAQs, see PCI DSS - Understanding the SAQs for PCI DSS version 3 and PCI DSS - SAQ Instructions and Guidelines.
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
-
PCI DSS 4.0 at a glance for a few key facts on PCI DSS Version 4.0,
-
PCI DSS Summary Of Changes from Version 3.2.1 to 4.0 for the differences between the two versions, and
-
PCI DSS v3.2.1 is Retiring on 31 March 2024 – Are You Ready? for details concerning the transition.
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_value |
current timestamp |
HTTP-header |
Fri, 10 Jan 2020 14:41:15 GMT |
a random value |
HTTP-header |
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.
-
In the following, use the same
client_id
andclient_key
as for authorization (see Authorization). -
Concatenate the following three fields:
Value Contained in Example a digest of the request body
HTTP-Header
Digest
or calculatedSHA-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. -
Calculate a HMAC-SHA256 signature for the resulting value using the
client_key
as the secret. -
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:
-
Use the same
event_id
as for the initial transaction. -
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 (nottx_id
from the initial transaction) -
iFrame Service, Payment API:
tx_id
from the response to the initial transaction
-
-
With a subsequent transaction, the following fields can be changed from the initial transaction:
-
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 andcurrency
= EUR), set the fieldchanged_amount
to 2000 to do a partial capture of 20.00 EUR. If the fieldchanged_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 fieldchanged_amount
to the amount of the transaction at hand. -
due_date
: SDD only: different due date. -
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 specifyaction
= 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 |
|
Use external 3DS Server |
|
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.

-
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.
-
The shop sends the payment data to DB Merchant Solutions REST API. See Initializing the payment (steps 1-4) for details.
-
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.
-
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.
-
-
The shop signals the browser that the "3DS Method" is to be carried out (
outcome
= METHOD_REQUIRED). -
The browser creates a hidden iframe (see section Adaptations in the browser).
-
From the hidden iframe a form is automatically sent to the ACS.
-
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
. -
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. -
The shop sends a response which causes the hidden iframe to be closed.
-
The main window of the browser automatically sends a message to the shop.
-
The shop sends the request
method_completed
to DB Merchant Solutions REST API. See section Completion of "3DS Method“ (step 12-14). -
DB Merchant Solutions REST API determines how the payment has to be continued.
-
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.
-
-
The shop sends the redirect to the ACS to the customer’s browser. See section Redirect to the ACS (steps 15+16) for details.
-
The browser redirects to the ACS.
-
The customer authenticates themselves at the ACS.
-
The ACS sends a redirect to the shop to the browser, using the URL provided in
cres_notification_url
. -
The browser redirects to the shop.
-
The shop informs DB Merchant Solutions REST API that the payer authentication was made (see section Concluding the payment (step 20-22)).
-
DB Merchant Solutions REST API finds out the credit card payment outcome.
-
DB Merchant Solutions REST API informs the shop about the payment outcome.
-
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).
-
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
, andcountry
. Ifcountry
isUS
,state
is also required. -
customer_data.shipping_address
:street
,postal_code
,city
, andcountry
. Ifcountry
isUS
,state
is also required. -
customer_data.cardholder_email
-
One of
home_phone_number
,mobile_phone_number
, orwork_phone_number
and its subfieldscountry
andregional
.
Visa: Starting from 2024-08-12, for transactions with Visa credit cards, the parameter
credit_card.cardholder
and the following parameters undercredit_card_data.tds_20_data
are required (if not set, Visa will decline the transaction):-
device_information
:ip_address
,http_browser_screen_height
, andhttp_browser_screen_width
-
customer_data.billing_address
:street
,postal_code
,city
, andcountry
. Ifcountry
isUS
,state
is also required. -
Either
customer_data.cardholder_email
or one ofcustomer_data.home_phone_number
,customer_data.mobile_phone_number
, orcustomer_data.work_phone_number
and its subfieldscountry
andregional
.
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 elementbilling_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 incustomer_data
) and the shipping address (parameters incustomer_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 formNO_PREFERENCE
,CHALLENGE_REQUESTED
andNO_CHALLENGE_REQUESTED
as prefix and the reason for this preference as suffix, for exampleNO_CHALLENGE_REQUESTED_DATA_SHARE_ONLY
. -
processing_options
optionFALL_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 attributemethod_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 attributechallenge_required
for required data (acs_url
and eitherpareq
(3-D Secure 1.0) orcreq
(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 attributeprocessed
for details of the processed transaction. In particular, the response codeprocessed.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)
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).
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>
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. |
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:
Parameter |
Explanation |
PaRes |
Required, Base64 encoded character string. |
MD |
Required, contains the value you submitted to the ACS earlier. |
3DS Version 2
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.
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>
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:
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:

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

-
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.
-
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
orUCOF
-
sequence_type
:FIRST
-
alias
: as obtained in step 1.
-
Save the response parameter recurring_payment
to use in further transactions.
-
For further transactions, use the same request as in step 2 and set the parameters
-
series_flag
:RECURRING
orUCOF
-
sequence_type
:RECURRING
-
recurring_payment
: as obtained in step 2 -
alias
: as obtained in step 1.
-
-
For the last transaction, use the same request as in step 2 and set the parameters
-
series_flag
:RECURRING
orUCOF
-
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:
-
for payments via a web page: Google Pay Web integration checklist
-
for payments via an Android app: Google Pay Android integration checklist.
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 subfieldsgooglepay_country_code
,googlepay_domain_name
, andgooglepay_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.
-
Direct integration: Use the Google Pay endpoint to initialize the transaction. Use the endpoints Headless 3D secure Method Completed and Headless 3D secure Final to complete the transaction just as with conventional 3D-secure credit card transactions.
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:

-
The customer enters the shop’s pay page.
-
The shop displays the Google Pay button or mark.
-
The customer selects Google Pay by tapping the Google Pay button.
-
The shop displays the Google Pay interaction as a modal window.
-
The customer selects the payment method, that is, the credit card to be used.
-
Google sends the credit card token to the shop.
-
The shop sends the token together with additional fields to DB Merchant Solutions REST API.
-
DB Merchant Solutions REST API processes the token.
-
DB Merchant Solutions REST API sends the response to the shop.
-
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)).
-
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
-
for payments via a web page: Google Pay web brand guidelines
-
for payments via an Android app: Google Pay Android brand guidelines.
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 inPaymentMethodTokenizationSpecification
) to 'processingpagateq', DB Merchant Solutions REST API’s identifier as issued by Google Pay. -
Set
gatewayMerchantId
(used inPaymentMethodTokenizationSpecification
) to the value obtained during onboarding with DB Merchant Solutions REST API. -
Set
merchantId
(used inmerchantInfo
) 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.
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. |
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.
-
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:
-
Domain verification file test for the sandbox domains,
-
Domain verification file production for the productive domains.
-
-
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.
-
-
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.
-
It is important that the domain verification files are publicly accessible and not protected by authentication or firewalls.
-
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.
-
The location for the top-level domain (for example
example.com
) may be redirected to a subdomain (for examplewww.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.
-
Identify the domain list (see Identify the domain list).
-
Prepare the domain verification (see Prepare the domain verification).
-
Contact Deutsche Bank customer support, provide the following information:
-
The environment to be used (test or production),
-
the domain list.
-
-
Receive the Apple Pay merchant identifier from Deutsche Bank customer support (see Using the Apple merchant identifier).
-
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.
-
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.
-
Provide an email address to Deutsche Bank customer support which is not yet linked to an Apple account.
-
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:
-
If you haven’t already access to Apple Developer, create an Apple Developer account.
-
Register different Apple merchant identifiers for test and production.
-
For each Apple merchant identifier, two certificates have to be created: The Apple Pay Payment Processing Certificate and the Apple Pay Merchant Identity Certificate.
-
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.
-
-
The signing request for the Apple Pay Merchant Identity Certificate is not received from Deutsche Bank customer support but created by the merchants themselves.
-
Identify the domain list as described in Identify the domain list.
-
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. -
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:
-
Form service checkout page: Use the standard checkout endpoint and supply the corresponding Apple Pay data. The process itself will be identical to other payment processes via this endpoint, see checkout page transaction flow.
-
Direct integration: The transaction processing flow depends on the kind of integration, the merchant chose for Apple Pay, see section Transaction processing for Apple Managed Integration for Apple Managed Integration and Transaction processing for Apple Individual Integration for Apple Individual Integration.
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

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

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
andamount_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:
-
Payment: Use the endpoint
/payment/event/{event_id}/directdebit/{tx_action}
. -
iFrame Service: Use the standard endpoint
/iframe/initialize
to initialize the action and then use the payment endpoint. -
Form service with payment method selection: Use the standard endpoint
/form/event/{event_id}/checkout/{tx_action}
and supply the data undercheckout_page_configuration.direct_debit_data
. -
Form service with payment method already set to SDD: Use the endpoint
/form/event/{event_id}/directdebit/{tx_action}
.
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
andbank_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
toB2B
. -
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 |
---|---|---|
|
RmtInf/Ustrd |
SVWZ+ |
|
PmtId/EndToEndId |
EREF+ |
|
DrctDbtTx/MndtRltdInf/MndtId |
MREF+ |
|
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.


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.
-
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.
-
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. -
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
.
-
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’sEndToEndId
of some transaction. -
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:
-
Implement the SDD return callback API as server. This means to implement the endpoint
/sddreturncallback
. -
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
, andadditional_reason_information
) -
all relevant amounts (
original_amount
,fee_customerbank
, andfee_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:
-
Widget Solution is only supported for version v2.
-
Form service behaves differently (see Handling of the shipping address).
-
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,
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.

-
The customer makes a purchase in the shop and starts the payment process.
-
The shop generates an HTTP request and sends it to DB Merchant Solutions REST API.
-
DB Merchant Solutions REST API creates an order on the merchant’s behalf at PayPal.
-
PayPal responds to the creation of the order.
-
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.
-
As response step 1 the shop sends a redirect to the redirect URL received in step 5 to the customer.
-
The customer’s browser redirects to PayPal.
-
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.
-
PayPal sends a redirect to DB Merchant Solutions REST API the customer.
-
The customer’s browser redirects to DB Merchant Solutions REST API.
-
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 theskip
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. -
The shop confirms receipt of the notification.
-
DB Merchant Solutions REST API sends the customer a redirect to the URL submitted in step 1.
-
The customer’s browser redirects to this URL.
-
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:
-
If
rc
= 0 andmessage
= "Transaction successful", the transaction was successful. -
If
rc
=1345
or1548
andmessage
= "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. -
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:
-
If the
basket_type
isDIGITAL
, no shipping address is shown in the PayPal window (likeNO_SHIPPING
in Widget Solution). In the case, theshipping_address
can be omitted in the initialization request (for PayPal or checkout). -
If the
basket_type
isPHYSICAL
orMIXED
and theshipping_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). -
If the
basket_type
isPHYSICAL
orMIXED
and theshipping_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:
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
.
{
"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."
}
{
"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:

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.

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

-
The customer makes a purchase in the shop and starts the payment process.
-
The shop generates an HTTP request and sends it to DB Merchant Solutions REST API. See Initializing the payment: Klarna for details.
-
DB Merchant Solutions REST API checks the submitted data. In case of an error DB Merchant Solutions REST API continues with step 6.
-
DB Merchant Solutions REST API sends a payment request to Klarna.
-
Klarna sends the response to DB Merchant Solutions REST API .
-
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.
-
As response to step 1 the shop sends a redirect to the redirect URL received in step 6 to the customer.
-
The customer’s browser redirects to Klarna.
-
The customer carries out the necessary steps for the payment on the Klarna website.
-
Klarna sends the customer a redirect to DB Merchant Solutions REST API.
-
Klarna sends the current status and details of the payment to DB Merchant Solutions REST API.
-
DB Merchant Solutions REST API updates the status of the payment internally.
-
DB Merchant Solutions REST API notifies the shop about the payment result.
-
The shop confirms receipt of the notification.
-
The customer’s browser redirects to DB Merchant Solutions REST API.
-
DB Merchant Solutions REST API sends the customer a redirect to the URL submitted in step 1.
-
The customer’s browser redirects to this URL.
-
The shop displays the payment result for the customer.
Initializing the authorization or pre-authorization (step 2)
Submit the payment data via the Klarna form service endpoint or the standard checkout endpoint.
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
, andunit_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
andshipping_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 subfieldemail
is required. Ifemail
is not set, DB Merchant Solutions REST API will submit the transaction to Klarna but suppressshipping_address
so that the customer will be able to enter it. -
Note that the Klarna fields
national_identification_number
,gender
, anddate_of_birth
can be found in DB Merchant Solutions REST API undercustomer
. -
The Klarna fields
given_name
,family_name
andstreet_address
are set by DB Merchant Solutions REST API’s fieldsfirst_name
,last_name
andaddress_line_1
. DB Merchant Solutions REST API does not support the Klarna fieldcare_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 |
---|---|---|---|
|
|
- |
Order metadata |
|
|
|
Order metadata, |
|
|
|
Order metadata, |
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
.
-
For option 1, use the transaction kind (
tx_action
)authorization
orpreauthorization
-
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:
-
If the payment method is direct debit, Klarna will fall back to invoice and reply as if it is a successful capture.
-
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.

-
The customer makes a purchase in the shop and starts the payment process.
-
The shop generates an HTTP request and sends it to DB Merchant Solutions REST API. See Initializing the payment: P24 for details.
-
DB Merchant Solutions REST API checks the submitted data. In case of an error DB Merchant Solutions REST API continues with step 6.
-
DB Merchant Solutions REST API sends a payment request to P24.
-
P24 sends the response to DB Merchant Solutions REST API .
-
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.
-
As response to step 1 the shop sends a redirect to the redirect URL received in step 6 to the customer.
-
The customer’s browser redirects to P24.
-
The customer chooses their bank on the P24 website.
-
P24 redirects the customer to their bank website.
-
The customer logs into their online banking
-
The customer confirms the transaction
-
The bank notifies the customer about the payment result.
-
The bank notifies P24 about the payment result.
-
P24 notifies DB Merchant Solutions REST API about the outcome of the payment.
-
DB Merchant Solutions REST API updates the status of the payment internally.
-
DB Merchant Solutions REST API notifies the shop about the payment result.
-
The shop confirms receipt of the notification.
-
The customer’s browser redirects to DB Merchant Solutions REST API.
-
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, ornotification_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.
-
The customer’s browser redirects to this URL.
-
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
, andcountry
-
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.

-
The customer makes a purchase in the shop and starts the payment process.
-
The shop generates an HTTP request and sends it to DB Merchant Solutions REST API. See Initializing the payment for details.
-
DB Merchant Solutions REST API checks the submitted data. In case of an error DB Merchant Solutions REST API continues with step 6.
-
DB Merchant Solutions REST API sends a payment request to WeChat Pay.
-
WeChat Pay sends the response to DB Merchant Solutions REST API .
-
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.
-
As response to step 1 the shop sends a redirect to the redirect URL received in step 6 to the customer.
-
The customer’s browser redirects to WeChat Pay.
-
The customer reviews the transaction details and scans the displayed QR code with their WeChat Pay app on their mobile phone.
-
The customer confirms the transaction in the WeChat Pay app.
-
The customer’s app sends the confirmation to WeChat Pay.
-
WeChat Pay notifies DB Merchant Solutions REST API about the outcome of the payment.
-
DB Merchant Solutions REST API updates the status of the payment internally.
-
DB Merchant Solutions REST API notifies the shop about the payment result.
-
The shop confirms receipt of the notification.
-
The customer’s browser redirects to DB Merchant Solutions REST API.
-
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, ornotification_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.
-
The customer’s browser redirects to this URL.
-
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
, andcountry
-
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.

-
The customer makes a purchase in the shop and starts the payment process.
-
The shop generates an HTTP request and sends it to DB Merchant Solutions REST API. See Initializing the authorization for details.
-
DB Merchant Solutions REST API checks the submitted data. In case of an error, DB Merchant Solutions REST API continues with step 6.
-
DB Merchant Solutions REST API sends a payment request to iDEAL.
-
iDEAL sends the response to DB Merchant Solutions REST API .
-
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.
-
As response to step 1 the shop sends a redirect to the redirect URL received in step 6 to the customer.
-
The customer’s browser redirects to iDEAL.
-
The customer chooses their bank on the iDEAL website.
-
iDEAL redirects the customer to their bank website.
-
The customer logs into their online banking.
-
The customer confirms the transaction.
-
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.
-
DB Merchant Solutions REST API waits for a time limit (20 s) for the notification on the transaction status.
-
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, ornotification_failed_url
if the notification to the shop failed). -
Redirect to the chosen URL.
-
Exceptional case: If the notification is not received within the time limit, DB Merchant Solutions REST API redirects to the
success_url
. -
As a reaction to the confirmation of the transaction (step 12), the transaction is processed by the customer’s bank.
-
The bank notifies iDEAL about the transaction result.
-
iDEAL notifies DB Merchant Solutions REST API about the transaction result.
-
DB Merchant Solutions REST API updates the transaction status.
-
DB Merchant Solutions REST API notifies the shop about the payment result (if this had been configured in the initialization in step 2).
-
The shop confirms receipt of the notification.
-
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
andamount_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 inissuer_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 fieldexpected_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 fieldexpected_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.

-
The customer makes a purchase in the shop and starts the payment process.
-
The shop generates an HTTP request and sends it to DB Merchant Solutions REST API. See Initializing the payment for details.
-
DB Merchant Solutions REST API checks the submitted data. In case of an error DB Merchant Solutions REST API continues with step 6.
-
DB Merchant Solutions REST API sends a payment request to TWINT.
-
TWINT sends the response to DB Merchant Solutions REST API .
-
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.
-
As response to step 1 the shop sends a redirect to the redirect URL received in step 6 to the customer.
-
The customer’s browser redirects to TWINT.
-
The customer scans the displayed QR code with their TWINT app on their mobile phone.
-
The customer confirms the transaction in the TWINT app.
-
The customer’s app sends the confirmation to TWINT.
-
TWINT notifies DB Merchant Solutions REST API about the outcome of the payment.
-
DB Merchant Solutions REST API updates the status of the payment internally.
-
DB Merchant Solutions REST API notifies the shop about the payment result.
-
The shop confirms receipt of the notification.
-
The customer’s browser redirects to DB Merchant Solutions REST API.
-
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, ornotification_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.
-
The customer’s browser redirects to this URL.
-
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
, andcountry
-
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:
-
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.
-
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.
-
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.

-
The customer makes a purchase in the shop and starts the payment process.
-
The shop generates an HTTP request and sends it to DB Merchant Solutions REST API. See Initializing the authorization for details.
-
DB Merchant Solutions REST API checks the submitted data. In case of an error, DB Merchant Solutions REST API continues with step 6.
-
DB Merchant Solutions REST API sends a consent request to EPI.
-
EPI sends the response to DB Merchant Solutions REST API.
-
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.
-
As response to step 1 the shop sends a redirect to the redirect URL received in step 6 to the customer.
-
The customer’s browser requests the Wero QR code.
-
EPI returns the QR code.
-
The customer’s browser displays the QR code to the customer.
-
The customer uses their Wero app to scan the QR code.
-
The customer’s app requests consent data from EPI.
-
EPI sends the consent data to the app.
-
The app shows the consent data to the customer.
-
The customer gives consent to the payment in the app.
-
The app sends the signed consent token to EPI.
-
EPI redirects the customer’s browser to the return URL.
-
The customer’s browser requests the return URL from the merchant.
-
EPI sends a notification about the given consent to DB Merchant Solutions REST API.
-
DB Merchant Solutions REST API notifies the shop about the given consent.
-
The shop delivers the return URL tot the customer’s browser.
-
The consent is authorized by the customer’s bank.
-
EPI returns as response a payment guarantee.
-
DB Merchant Solutions REST API notifies the shop about the payment guarantee or rejection.
-
The shop informs the customer about the authorization result ("order has been confirmed [or declined] by your bank").
-
DB Merchant Solutions REST API sends a capture request to EPI.
-
EPI returns a capture notification to DB Merchant Solutions REST API.
-
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 subfieldsamount
andcurrency
, -
form_customer_continuation
(see Redirect to merchant’s website), -
callback
(see Callback and diagnosis request), -
wero_data
and its subfieldauthorization_reference
. -
For a pre-authorization the field
wero_data.payment_plan
and its subfieldsamount_payment_type
andcapture_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 totrue
.
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:
-
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).
-
Follow the redirect link to see a QR code.
-
Click on the QR code to see a numeric code. Copy this numeric code.
-
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.
-
-
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:
-
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.
-
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 andchannel
=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.
-
Optionally calculate the price in customer’s currency using the obtained exchange rate.
-
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:
-
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.
-
General rules pertaining to transaction data elements or derived from these elements.
-
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:
-
Calculating a risk score prior to a credit card payment: credit card checkout page, credit card Form service, credit card headless 3-D Secure and credit card payments API.
-
Calculating a risk score prior to an SDD payment: SDD checkout page, SDD Form service, and SDD payments API.
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.

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:
-
Contact Deutsche Bank customer support about which data you would like to send and agree upon the keys to be used.
-
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.

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 isACCEPTED
orREJECTED
. Note thatscore
is only one element in deciding thetx_risk_status
, that is, when specific rules take effect (say, the positive list), transactions with a highscore
may still havetx_risk_status
=ACCEPTED
. Similarly, transactions with a lowscore
may havetx_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
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. |
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. |
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 |
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. |
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. |
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. |
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. |
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
orPOSITIVE
according to which list to modify -
action
: eitherADD
orDELETE
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 |
---|---|---|---|
|
G |
KI |
There are no negative features. |
|
G |
Feature cleared |
A soft feature, cleared. |
|
Y |
Feature cleared |
Medium feature(s), cleared or more than one soft feature cleared |
|
Y |
Mwr |
A message with reservations, soft |
|
Y |
Feature |
A soft feature |
|
Y |
Mwr |
Message with reservations marked a) hard/medium or b) more than one data record exist |
|
R |
+ |
Person registered as deceased |
|
R |
TKZ 5 |
Requested address is registered as risk address |
|
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 |
---|---|---|---|---|
|
G |
KI |
PPB |
no negative features, score >=500 |
|
G |
KI |
PHB |
no negative features, score >=500 |
|
G |
KI |
PPB |
no negative features, score >450 <500 |
|
G |
KI |
PHB |
no negative features, score >450 <500 |
|
G |
KI |
PAB |
no negative features, score >=500 |
|
G |
KI |
PAB |
no negative features, score >450 <500 |
|
G |
KI |
PKI |
no negative features, score >=500 |
|
G |
KI |
PKI |
no negative features, score >450 <500 |
|
G |
Feature cleared |
Any |
a soft feature, cleared |
|
G |
KI |
Any |
no negative features, score not possible |
|
G |
KI |
PPF |
no negative features, score >=500 |
|
G |
KI |
PPF |
no negative features, score >450 <500 |
|
Y |
KI |
PNZ |
no negative features, score >=500 |
|
Y |
KI |
PNZ |
no negative features, score >450 <500 |
|
Y |
KI |
Any |
no negative features, score ⇐450 |
|
Y |
Feature cleared |
Any |
medium feature(s), cleared or more than one soft feature, cleared |
|
Y |
Mwr |
Any |
A message with reservations, soft |
|
Y |
Feature |
Any |
A soft feature |
|
Y |
Mwr |
Any |
Message with reservations marked a) hard/medium or b) more than one data record exist |
|
R |
+ |
Any |
Person registered as deceased |
|
R |
TKZ 5 |
Any |
Requested address is registered as risk address |
|
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.
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.
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.
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.
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.
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 |
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 |
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
IBAN | BIC |
---|---|
DE25662500300000010868 |
SOLADES1BAD |
IBAN | BIC |
---|---|
DE62100208900001317270 |
HYVEDEMM488 |
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:
-
GET /info/banks/psd2: Retrieves how banks matching the given search criteria support PSD2 account information services.
-
POST /form/event/{event_id}/psd2/account_info: Creates a PSD2 account information transaction via form service.
-
GET /info/event/{event_id}/psd2/account_info: Retrieves bank account details which were stored in a previous PSD2 account information transaction.
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):


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
|
A random value; part of the signature input. Example: |
X-RequestDate |
string
|
Current timestamp formatted according to RFC 7231, section 7.1.1.2; part of the signature input. Example: |
Request Body (required)
Type | Content-Type |
---|---|
|
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
Authorization successful. |
|
401 |
|
Not authorized, check credentials, scope and implementation. |
|
default |
|
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
|
|
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
|
The client-id; part of the signature input. Example: |
client_secret |
string
|
The calculated client secret. Consult the documentation for implementation details. Example: |
grant_type |
string
|
The grant type of the request. Use fixed value |
scope |
string
|
The application scope of the request. |
AccessTokenResponse
The response object that is received after a successful authorization.
Property | Type | Description |
---|---|---|
access_token |
string
|
The access token is used as credential for service requests. Example: |
expires_in |
integer
|
The duration in seconds the token is valid. Example: |
expires_on |
integer
|
The time the token expires. Format is Unix time. Example: |
scope |
string
|
The application scope of the request. Corresponds to scope in the request. |
token_type |
string
|
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
|
Name of the alias. Example: |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
Name of the alias. Example: |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
A return code and a message, indicating whether or not the operation was successful. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
Name of the alias. Example: |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
Request type: CommonAddress
{
"address_line_1" : "Rohrteichstr 18",
"postalCode" : "98765",
"city" : "newCity",
"country" : "DE"
}
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
Request type: AliasBankAccountRequest
{
"alias" : "example-dd-alias",
"bank_account" : {
"iban" : "DE39123456790009290701",
"account_holder" : "Rene Holder"
}
}
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
Request type: BankAccount
{
"iban" : "DE39123456790009290701",
"account_holder" : "Rene Holder"
}
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
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 |
|
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
Name of the alias. Example: |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
Name of the alias. Example: |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
A return code and a message, indicating whether or not the operation was successful. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
Request type: CreditCard
{
"number" : "4111111111111111",
"code" : "123",
"cardholder" : "Card T. Holder",
"expiry_date" : {
"year" : 2029,
"month" : 11
}
}
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
Name of the alias. Example: |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
Name of the alias. Example: |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
A return code and a message, indicating whether or not the operation was successful. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
Request type: ApplePayPaymentSessionRequest
{
"merchant_id" : "merchant.processingpagateq.merchantsolution",
"initiative_context" : "testmerch.directpos.de"
}
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
Information about the outcome of the transaction. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
Access to this resource is forbidden with these credentials. |
Status code: |
200 |
Return type: |
{
"applepay_payment_session_token" : "eyJlcG9jaFRpbWVzdGFtcCI6MTY1OTUyODYxMzQ5MywiZXhwaXJlc0F0IjoxNjU5NTMyMjEzNDkzLCJtZXJjaGFudFNlc3Npb25JZGVudGlmaWVyIjoiU1NIRjUyNTM0MUM1OTY1NDE4ODkwMkZBRDM0RDA2NEQ0OTZfNTE2OTYyRkI1NUYyNEQ2NTU5RTg2MkU5Nzk5OTJCRDI5RENGQTVEMkJBOEFEOEQ0RDg5M0Y4Mzc1OTYwODNDQSIsIm5vbmNlIjoiNGEyMWYzZjAiLCJtZXJjaGFudElkZW50aWZpZXIiOiIyODczMkE0RjA1QUUwNTU1MDA3NzY0MkNDNkJBQkE4QzU5MjNFMzQ3QTA4MzgwM0MwQjdBODA4ODcxMEMzMUU0IiwiZG9tYWluTmFtZSI6InRlc3RtZXJjaC5kaXJlY3Rwb3MuZGUiLCJkaXNwbGF5TmFtZSI6IkRCLk1lcmNoYW50U29sdXRpb24uVGVzdE1lcmNoYW50Iiwic2lnbmF0dXJlIjoiMzA4MDA2MDkyYTg2NDg4NmY3MGQwMTA3MDJhMDgwMzA4MDAyMDEwMTMxMGYzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDAzMDgwMDYwOTJhODY0ODg2ZjcwZDAxMDcwMTAwMDBhMDgwMzA4MjAzZTMzMDgyMDM4OGEwMDMwMjAxMDIwMjA4NGMzMDQxNDk1MTlkNTQzNjMwMGEwNjA4MmE4NjQ4Y2UzZDA0MDMwMjMwN2EzMTJlMzAyYzA2MDM1NTA0MDMwYzI1NDE3MDcwNmM2NTIwNDE3MDcwNmM2OTYzNjE3NDY5NmY2ZTIwNDk2ZTc0NjU2NzcyNjE3NDY5NmY2ZTIwNDM0MTIwMmQyMDQ3MzMzMTI2MzAyNDA2MDM1NTA0MGIwYzFkNDE3MDcwNmM2NTIwNDM2NTcyNzQ2OTY2Njk2MzYxNzQ2OTZmNmUyMDQxNzU3NDY4NmY3MjY5NzQ3OTMxMTMzMDExMDYwMzU1MDQwYTBjMGE0MTcwNzA2YzY1MjA0OTZlNjMyZTMxMGIzMDA5MDYwMzU1MDQwNjEzMDI1NTUzMzAxZTE3MGQzMTM5MzAzNTMxMzgzMDMxMzMzMjM1Mzc1YTE3MGQzMjM0MzAzNTMxMzYzMDMxMzMzMjM1Mzc1YTMwNWYzMTI1MzAyMzA2MDM1NTA0MDMwYzFjNjU2MzYzMmQ3MzZkNzAyZDYyNzI2ZjZiNjU3MjJkNzM2OTY3NmU1ZjU1NDMzNDJkNTA1MjRmNDQzMTE0MzAxMjA2MDM1NTA0MGIwYzBiNjk0ZjUzMjA1Mzc5NzM3NDY1NmQ3MzMxMTMzMDExMDYwMzU1MDQwYTBjMGE0MTcwNzA2YzY1MjA0OTZlNjMyZTMxMGIzMDA5MDYwMzU1MDQwNjEzMDI1NTUzMzA1OTMwMTMwNjA3MmE4NjQ4Y2UzZDAyMDEwNjA4MmE4NjQ4Y2UzZDAzMDEwNzAzNDIwMDA0YzIxNTc3ZWRlYmQ2YzdiMjIxOGY2OGRkNzA5MGExMjE4ZGM3YjBiZDZmMmMyODNkODQ2MDk1ZDk0YWY0YTU0MTFiODM0MjBlZDgxMWYzNDA3ZTgzMzMxZjFjNTRjM2Y3ZWIzMjIwZDZiYWQ1ZDRlZmY0OTI4OTg5M2U3YzBmMTNhMzgyMDIxMTMwODIwMjBkMzAwYzA2MDM1NTFkMTMwMTAxZmYwNDAyMzAwMDMwMWYwNjAzNTUxZDIzMDQxODMwMTY4MDE0MjNmMjQ5YzQ0ZjkzZTRlZjI3ZTZjNGY2Mjg2YzNmYTJiYmZkMmU0YjMwNDUwNjA4MmIwNjAxMDUwNTA3MDEwMTA0MzkzMDM3MzAzNTA2MDgyYjA2MDEwNTA1MDczMDAxODYyOTY4NzQ3NDcwM2EyZjJmNmY2MzczNzAyZTYxNzA3MDZjNjUyZTYzNmY2ZDJmNmY2MzczNzAzMDM0MmQ2MTcwNzA2YzY1NjE2OTYzNjEzMzMwMzIzMDgyMDExZDA2MDM1NTFkMjAwNDgyMDExNDMwODIwMTEwMzA4MjAxMGMwNjA5MmE4NjQ4ODZmNzYzNjQwNTAxMzA4MWZlMzA4MWMzMDYwODJiMDYwMTA1MDUwNzAyMDIzMDgxYjYwYzgxYjM1MjY1NmM2OTYxNmU2MzY1MjA2ZjZlMjA3NDY4Njk3MzIwNjM2NTcyNzQ2OTY2Njk2MzYxNzQ2NTIwNjI3OTIwNjE2ZTc5MjA3MDYxNzI3NDc5MjA2MTczNzM3NTZkNjU3MzIwNjE2MzYzNjU3MDc0NjE2ZTYzNjUyMDZmNjYyMDc0Njg2NTIwNzQ2ODY1NmUyMDYxNzA3MDZjNjk2MzYxNjI2YzY1MjA3Mzc0NjE2ZTY0NjE3MjY0MjA3NDY1NzI2ZDczMjA2MTZlNjQyMDYzNmY2ZTY0Njk3NDY5NmY2ZTczMjA2ZjY2MjA3NTczNjUyYzIwNjM2NTcyNzQ2OTY2Njk2MzYxNzQ2NTIwNzA2ZjZjNjk2Mzc5MjA2MTZlNjQyMDYzNjU3Mjc0Njk2NjY5NjM2MTc0Njk2ZjZlMjA3MDcyNjE2Mzc0Njk2MzY1MjA3Mzc0NjE3NDY1NmQ2NTZlNzQ3MzJlMzAzNjA2MDgyYjA2MDEwNTA1MDcwMjAxMTYyYTY4NzQ3NDcwM2EyZjJmNzc3Nzc3MmU2MTcwNzA2YzY1MmU2MzZmNmQyZjYzNjU3Mjc0Njk2NjY5NjM2MTc0NjU2MTc1NzQ2ODZmNzI2OTc0NzkyZjMwMzQwNjAzNTUxZDFmMDQyZDMwMmIzMDI5YTAyN2EwMjU4NjIzNjg3NDc0NzAzYTJmMmY2MzcyNmMyZTYxNzA3MDZjNjUyZTYzNmY2ZDJmNjE3MDcwNmM2NTYxNjk2MzYxMzMyZTYzNzI2YzMwMWQwNjAzNTUxZDBlMDQxNjA0MTQ5NDU3ZGI2ZmQ1NzQ4MTg2ODk4OTc2MmY3ZTU3ODUwN2U3OWI1ODI0MzAwZTA2MDM1NTFkMGYwMTAxZmYwNDA0MDMwMjA3ODAzMDBmMDYwOTJhODY0ODg2Zjc2MzY0MDYxZDA0MDIwNTAwMzAwYTA2MDgyYTg2NDhjZTNkMDQwMzAyMDM0OTAwMzA0NjAyMjEwMGJlMDk1NzFmZTcxZTFlNzM1YjU1ZTVhZmFjYjRjNzJmZWI0NDVmMzAxODUyMjJjNzI1MTAwMmI2MWViZDZmNTUwMjIxMDBkMThiMzUwYTVkZDZkZDZlYjE3NDYwMzViMTFlYjJjZTg3Y2ZhM2U2YWY2Y2JkODM4MDg5MGRjODJjZGRhYTYzMzA4MjAyZWUzMDgyMDI3NWEwMDMwMjAxMDIwMjA4NDk2ZDJmYmYzYTk4ZGE5NzMwMGEwNjA4MmE4NjQ4Y2UzZDA0MDMwMjMwNjczMTFiMzAxOTA2MDM1NTA0MDMwYzEyNDE3MDcwNmM2NTIwNTI2ZjZmNzQyMDQzNDEyMDJkMjA0NzMzMzEyNjMwMjQwNjAzNTUwNDBiMGMxZDQxNzA3MDZjNjUyMDQzNjU3Mjc0Njk2NjY5NjM2MTc0Njk2ZjZlMjA0MTc1NzQ2ODZmNzI2OTc0NzkzMTEzMzAxMTA2MDM1NTA0MGEwYzBhNDE3MDcwNmM2NTIwNDk2ZTYzMmUzMTBiMzAwOTA2MDM1NTA0MDYxMzAyNTU1MzMwMWUxNzBkMzEzNDMwMzUzMDM2MzIzMzM0MzYzMzMwNWExNzBkMzIzOTMwMzUzMDM2MzIzMzM0MzYzMzMwNWEzMDdhMzEyZTMwMmMwNjAzNTUwNDAzMGMyNTQxNzA3MDZjNjUyMDQxNzA3MDZjNjk2MzYxNzQ2OTZmNmUyMDQ5NmU3NDY1Njc3MjYxNzQ2OTZmNmUyMDQzNDEyMDJkMjA0NzMzMzEyNjMwMjQwNjAzNTUwNDBiMGMxZDQxNzA3MDZjNjUyMDQzNjU3Mjc0Njk2NjY5NjM2MTc0Njk2ZjZlMjA0MTc1NzQ2ODZmNzI2OTc0NzkzMTEzMzAxMTA2MDM1NTA0MGEwYzBhNDE3MDcwNmM2NTIwNDk2ZTYzMmUzMTBiMzAwOTA2MDM1NTA0MDYxMzAyNTU1MzMwNTkzMDEzMDYwNzJhODY0OGNlM2QwMjAxMDYwODJhODY0OGNlM2QwMzAxMDcwMzQyMDAwNGYwMTcxMTg0MTlkNzY0ODVkNTFhNWUyNTgxMDc3NmU4ODBhMmVmZGU3YmFlNGRlMDhkZmM0YjkzZTEzMzU2ZDU2NjViMzVhZTIyZDA5Nzc2MGQyMjRlN2JiYTA4ZmQ3NjE3Y2U4OGNiNzZiYjY2NzBiZWM4ZTgyOTg0ZmY1NDQ1YTM4MWY3MzA4MWY0MzA0NjA2MDgyYjA2MDEwNTA1MDcwMTAxMDQzYTMwMzgzMDM2MDYwODJiMDYwMTA1MDUwNzMwMDE4NjJhNjg3NDc0NzAzYTJmMmY2ZjYzNzM3MDJlNjE3MDcwNmM2NTJlNjM2ZjZkMmY2ZjYzNzM3MDMwMzQyZDYxNzA3MDZjNjU3MjZmNmY3NDYzNjE2NzMzMzAxZDA2MDM1NTFkMGUwNDE2MDQxNDIzZjI0OWM0NGY5M2U0ZWYyN2U2YzRmNjI4NmMzZmEyYmJmZDJlNGIzMDBmMDYwMzU1MWQxMzAxMDFmZjA0MDUzMDAzMDEwMWZmMzAxZjA2MDM1NTFkMjMwNDE4MzAxNjgwMTRiYmIwZGVhMTU4MzM4ODlhYTQ4YTk5ZGViZWJkZWJhZmRhY2IyNGFiMzAzNzA2MDM1NTFkMWYwNDMwMzAyZTMwMmNhMDJhYTAyODg2MjY2ODc0NzQ3MDNhMmYyZjYzNzI2YzJlNjE3MDcwNmM2NTJlNjM2ZjZkMmY2MTcwNzA2YzY1NzI2ZjZmNzQ2MzYxNjczMzJlNjM3MjZjMzAwZTA2MDM1NTFkMGYwMTAxZmYwNDA0MDMwMjAxMDYzMDEwMDYwYTJhODY0ODg2Zjc2MzY0MDYwMjBlMDQwMjA1MDAzMDBhMDYwODJhODY0OGNlM2QwNDAzMDIwMzY3MDAzMDY0MDIzMDNhY2Y3MjgzNTExNjk5YjE4NmZiMzVjMzU2Y2E2MmJmZjQxN2VkZDkwZjc1NGRhMjhlYmVmMTljODE1ZTQyYjc4OWY4OThmNzliNTk5Zjk4ZDU0MTBkOGY5ZGU5YzJmZTAyMzAzMjJkZDU0NDIxYjBhMzA1Nzc2YzVkZjMzODNiOTA2N2ZkMTc3YzJjMjE2ZDk2NGZjNjcyNjk4MjEyNmY1NGY4N2E3ZDFiOTljYjliMDk4OTIxNjEwNjk5MGYwOTkyMWQwMDAwMzE4MjAxOGMzMDgyMDE4ODAyMDEwMTMwODE4NjMwN2EzMTJlMzAyYzA2MDM1NTA0MDMwYzI1NDE3MDcwNmM2NTIwNDE3MDcwNmM2OTYzNjE3NDY5NmY2ZTIwNDk2ZTc0NjU2NzcyNjE3NDY5NmY2ZTIwNDM0MTIwMmQyMDQ3MzMzMTI2MzAyNDA2MDM1NTA0MGIwYzFkNDE3MDcwNmM2NTIwNDM2NTcyNzQ2OTY2Njk2MzYxNzQ2OTZmNmUyMDQxNzU3NDY4NmY3MjY5NzQ3OTMxMTMzMDExMDYwMzU1MDQwYTBjMGE0MTcwNzA2YzY1MjA0OTZlNjMyZTMxMGIzMDA5MDYwMzU1MDQwNjEzMDI1NTUzMDIwODRjMzA0MTQ5NTE5ZDU0MzYzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDBhMDgxOTUzMDE4MDYwOTJhODY0ODg2ZjcwZDAxMDkwMzMxMGIwNjA5MmE4NjQ4ODZmNzBkMDEwNzAxMzAxYzA2MDkyYTg2NDg4NmY3MGQwMTA5MDUzMTBmMTcwZDMyMzIzMDM4MzAzMzMxMzIzMTMwMzEzMzVhMzAyYTA2MDkyYTg2NDg4NmY3MGQwMTA5MzQzMTFkMzAxYjMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMGExMGEwNjA4MmE4NjQ4Y2UzZDA0MDMwMjMwMmYwNjA5MmE4NjQ4ODZmNzBkMDEwOTA0MzEyMjA0MjBjYWRlZWE1ODc3MTE1OTVlMTg5ZDNhOTUyMDBmMDdhZTQwNTE2M2JmNzA1MTk2MWRlMDk1NzY0ZGYyOTcxOTQzMzAwYTA2MDgyYTg2NDhjZTNkMDQwMzAyMDQ0NzMwNDUwMjIxMDA5MDUyMWYzNjJmYzk1ZGNiMDhhZjQxOTMyYTNkM2Y2YTNhYzVkNWFiZTIyMmYxY2YxZDAxMDNiMjM5MWI3MzEwMDIyMDYxMzZlYzJkNGQ2N2MwODZiZDRiYTA5YTJjZjMwODY1ZjJhYTM5NWMwODlmZTFkM2UwYWM4YTgzM2YwNjIwZDUwMDAwMDAwMDAwMDAiLCJvcGVyYXRpb25hbEFuYWx5dGljc0lkZW50aWZpZXIiOiJEQi5NZXJjaGFudFNvbHV0aW9uLlRlc3RNZXJjaGFudDoyODczMkE0RjA1QUUwNTU1MDA3NzY0MkNDNkJBQkE4QzU5MjNFMzQ3QTA4MzgwM0MwQjdBODA4ODcxMEMzMUU0IiwicmV0cmllcyI6MCwicHNwSWQiOiIyODczMkE0RjA1QUUwNTU1MDA3NzY0MkNDNkJBQkE4QzU5MjNFMzQ3QTA4MzgwM0MwQjdBODA4ODcxMEMzMUU0In0=",
"rc" : "0",
"message" : "success"
}
Status code: |
200 |
Return type: |
{
"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
|
A unique ID for the event. |
tx_action |
string
|
The action of an initial transaction. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
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 |
|
Information about the outcome of the transaction. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
Access to this resource is forbidden with these credentials. |
Status code: |
200 |
Return type: |
{
"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."
}
Status code: |
200 |
Return type: |
{
"outcome" : "METHOD_REQUIRED",
"method_required" : {
"method_request" : "ew0KICAiY29udGVudCIgOiAiZHVtbXkiDQp9",
},
"rc" : "1548",
"message" : "Transaction is pending."
}
Status code: |
200 |
Return type: |
{
"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:
-
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.
-
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
|
A unique ID for the event. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
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 |
|
If the query could be carried out you receive the return value |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
Access to this resource is forbidden with these credentials. |
Status code: |
200 |
Return type: |
{
"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
|
A unique ID for the event. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
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 |
|
Depending on the negative features found you will receive in the field The allocation of the negative features to the traffic light values is as follows:
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
Access to this resource is forbidden with these credentials. |
Status code: |
200 |
Return type: |
{
"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
|
A unique ID for the event. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
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 |
|
In addition to information on return debit notes the following data are available:
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
Access to this resource is forbidden with these credentials. |
Status code: |
200 |
Return type: |
{
"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
|
A unique ID for the event. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
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 |
|
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 |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
Access to this resource is forbidden with these credentials. |
Status code: |
200 |
Return type: |
{
"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
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
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 |
|
Values required to initialize a form interaction. No transaction is created. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
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 |
|
Values required to initialize a form interaction. No transaction is created. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
tx_action |
string
|
The action of an initial transaction. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
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"
}
}
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"
}
}
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"
}
}
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 |
|
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
tx_action |
string
|
The action of an initial transaction. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
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 |
|
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
tx_action |
string
|
The action of an initial transaction. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
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 |
|
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
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 |
|
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
tx_action |
string
|
The action of an initial transaction. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
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
}
} ]
}
}
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 |
|
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
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 |
|
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
Request type: FormPSD2AuthorizationRequest
{
"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 |
|
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
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 |
|
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
Access to this resource is forbidden with these credentials. |
Status code: |
200 |
Return type: |
{
"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."
}
Status code: |
200 |
Return type: |
{
"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
|
A unique ID for the event. |
tx_action |
string
|
The action of an initial transaction. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
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 |
|
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
Request type: FormPSD2AccountInfoRequest
{
"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 |
|
Values required to initialise a form interaction. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
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 |
|
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
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 |
|
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
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 |
|
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
tx_action |
string
|
The action of an initial transaction. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
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"
}
}
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 |
|
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
tx_action |
string
|
The action of an initial transaction. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
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 |
|
Information about the outcome of the transaction. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
Access to this resource is forbidden with these credentials. |
Status code: |
200 |
Return type: |
{
"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."
}
Status code: |
200 |
Return type: |
{
"outcome" : "METHOD_REQUIRED",
"method_required" : {
"method_request" : "ew0KICAiY29udGVudCIgOiAiZHVtbXkiDQp9",
},
"rc" : "1548",
"message" : "Transaction is pending."
}
Status code: |
200 |
Return type: |
{
"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
|
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
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
Request type: Headless3DSecureFinalRequest
{
"cres" : "ew0KICAiZXhhbXBsZSIgOiAicmVxdWVzdCINCn0="
}
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
Information about the outcome of the transaction. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
Access to this resource is forbidden with these credentials. |
Status code: |
200 |
Return type: |
{
"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
|
A unique ID for the event. |
tx_action |
string
|
The action of an initial transaction. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
Request type: Headless3DSecureInitializeRequest
{
"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"
}
}
Request type: Headless3DSecureInitializeRequest
{
"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"
}
}
Request type: Headless3DSecureInitializeRequest
{
"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 |
|
Information about the outcome of the transaction. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
Access to this resource is forbidden with these credentials. |
Status code: |
200 |
Return type: |
{
"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."
}
Status code: |
200 |
Return type: |
{
"outcome" : "METHOD_REQUIRED",
"method_required" : {
"method_request" : "ew0KICAiY29udGVudCIgOiAiZHVtbXkiDQp9",
},
"rc" : "1548",
"message" : "Transaction is pending."
}
Status code: |
200 |
Return type: |
{
"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
|
Indicates if the shop has received a request from the ACS to the methodNotificationURL within 10 seconds (true) or not (false). |
event_id |
string
|
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
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
Information about the outcome of the transaction. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
Access to this resource is forbidden with these credentials. |
Status code: |
200 |
Return type: |
{
"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."
}
Status code: |
200 |
Return type: |
{
"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
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
Request type: IFrameInitializeRequest
{
"amount_total" : {
"amount" : 100,
"currency" : "EUR"
}
}
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
Values required to initialize an iFrame interaction. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
Maximum number of result items to be returned. |
name |
string |
Fragment of bank name. Example: |
offset |
integer
|
Number of rows to skip at the beginning of the total result set. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
Paged response with matching banks. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
Access to this resource is forbidden with these credentials. |
Status code: |
200 |
Return type: |
{
"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
|
A unique ID for the event. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
Bank account details which were stored in a previous step. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
Access to this resource is forbidden with these credentials. |
|
404 |
|
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
|
Date from which resource details should be returned. If not specified current details are returned. Example: |
limit |
integer
|
Maximum number of result items to be returned. |
offset |
integer
|
Number of rows to skip at the beginning of the total result set. |
statuses |
array |
Statuses of which resource details should be returned. Example: |
to |
string
|
Date until which resource details should be returned. If not specified current details are returned. Example: |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
Request to Pay payments report. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
Date from which resource details should be returned. If not specified current details are returned. Example: |
limit |
integer
|
Maximum number of result items to be returned. |
offset |
integer
|
Number of rows to skip at the beginning of the total result set. |
statuses |
array |
Statuses of which resource details should be returned. Example: |
to |
string
|
Date until which resource details should be returned. If not specified current details are returned. Example: |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
Request to Pay refunds report. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
Channel of the request. Example: |
merchant_id_mcp |
string |
Requesting merchant’s merchantId for Multi Currency Pricing at Deutsche Bank (GlueX) registered with funding currency. Example: |
req_currency_date |
string
|
Requesting currency date and time. Date-time notation as defined by RFC 3339, section 5.6. Example: |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
Information about the outcome of the transaction. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
Access to this resource is forbidden with these credentials. |
Status code: |
200 |
Return type: |
{
"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."
}
Status code: |
200 |
Return type: |
{
"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
|
A unique ID for the event. |
tx_action |
string
|
The action of an initial transaction. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
Request type: PaymentCreditCardRequestInitial
{
"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 |
|
Information about the payment |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
tx_action |
string
|
The action of an initial transaction. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
Request type: PaymentDirectDebitRequestInitial
{
"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"
}
}
Request type: PaymentDirectDebitRequestInitial
{
"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 |
|
The request has been processed. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
The request has been processed. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
tx_action |
string
|
The action of an initial transaction. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
Request type: PaymentKlarnaRequestInitial
{
"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 |
|
The request has been processed. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
tx_action |
string
|
The action of an initial transaction. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
Request type: PaymentPayPalRequestInitial
{
"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 |
|
The request has been processed. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. Use the same value as in the predecessor transaction the current transaction relates to. |
tx_action |
string
|
The action of a subsequent transaction. |
tx_id |
string
|
A reference to a transaction retrieved in a response (tx_reference_id). Example: |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
Request type: PaymentRequestSubsequent
{
"kind" : "CREDITCARD",
"basket" : {
"basket_id" : "basket123456"
}
}
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
The request has been processed. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A reference to a transaction retrieved in a response (tx_reference_id). Example: |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
The request has been processed. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
Widget Solution session ID of the transaction. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
Request type: WidgetSolutionFinalRequest
{
"amount_total" : {
"amount" : 100,
"currency" : "EUR"
}
}
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
The request has been processed. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
Access to this resource is forbidden with these credentials. |
7.2.10. Payment Link
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
|
A unique ID for the event. |
tx_action |
string
|
The action of an initial transaction. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
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"
}
}
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"
}
}
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 |
|
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 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
The request has been processed. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
Response of the deactivation request of the payment link. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
Request type: PaymentLinkManagementUpdateRequest
{
"expires" : "2022-11-29T19:41:30.681"
}
Responses
Code | Type | Content-Type | Description |
---|---|---|---|
200 |
|
Response of the update request of the payment link. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
Request type: RiskmanagementEntryRequest
{
"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 |
|
Indicates the list interaction to add/remove an entry was performed. Result can be success or information regarding the problems occured. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
Request type: RiskmanagementScoringRequest
{
"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 |
|
Calculates the score of the given data and gives back more detailed information regarding the result calculation. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
A unique ID for the event. |
tx_action |
string
|
The action of an initial transaction. |
Header Parameters
Name | Type | Description |
---|---|---|
Merchant-ID |
string
|
Unique identification of the merchant for which the transaction is carried out. This parameter is required if the |
Request Body (required)
Type | Content-Type |
---|---|
|
Request type: WidgetSolutionCreateSessionRequest
{
"amount_total" : {
"amount" : 100,
"currency" : "EUR"
},
"merchant_country" : "DE",
"transaction_data" : {
"googlepay_merchant_id" : "BCR2DN4T7D65Z6BX",
"googlepay_domain_name" : "testshop.de"
}
}
Request type: WidgetSolutionCreateSessionRequest
{
"amount_total" : {
"amount" : 100,
"currency" : "EUR"
},
"merchant_country" : "DE"
}
Request type: WidgetSolutionCreateSessionRequest
{
"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 |
|
Values required to initialize session for a Widget Solution interaction. |
|
400 |
|
Response in case of an error. Includes a response code and an error message. |
|
401 |
|
Unauthorized request. Response body may be empty. |
|
403 |
|
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
|
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: |
account_creation_indicator |
string
|
What kind of account is it?
Example: |
account_id |
string |
The account ID. Example: |
account_opened_date |
string
|
Date the client opened the account. This usually only applies if this is an EXISTING_ACCOUNT. Example: |
add_card_attempts |
integer
|
Number of add card attempts during the last 24 hours. Example: |
modification_indicator |
string
|
This field is applicable only if this is an EXISTING_ACCOUNT.
Example: |
password_change_date |
string
|
Date the client last changed the account’s password. May be empty if the password has not been changed yet. Example: |
password_change_indicator |
string
|
This field is applicable only if this is an EXISTING_ACCOUNT.
Example: |
payment_account_date |
string
|
Only applicable if PAYMENT_ACCOUNT_EXISTS. Example: |
payment_account_history |
string
|
This field is applicable only if this is a NEW_ACCOUNT or EXISTING_ACCOUNT.
Example: |
provisioning_day_count |
integer
|
The provisioning day counter. Example: |
purchases_six_month_count |
integer
|
Number of purchases with this account during the previous six months. Example: |
shipping_address_first_use |
boolean |
Applicable if this is not a guest account. Example: |
shipping_address_first_use_date |
string
|
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: |
shipping_name_indicator |
string |
The shipping name indicator. Indicates if the account’s cardholder name equals the shipping name used for this transaction. Example: |
suspicious_account_activity |
boolean |
Indicates whether the merchant experienced suspicious activity (including previous fraud) on the account. Example: |
transactions_day_count |
integer
|
Number of transactions (successful or abandoned) of this account during the last 24 hours. Example: |
transactions_year_count |
integer
|
Number of transactions (successful or abandoned) of this account during the last 365 days. Example: |
AddressRequestData
Property | Type | Description |
---|---|---|
addition |
boolean |
Request to provide the addition of the address Example: |
city |
boolean |
Request to provide the city of the address Example: |
company_name |
boolean |
Request to provide the company name of the debtor Example: |
country_name |
boolean |
Request to provide name of the country Example: |
first_name |
boolean |
Request to provide the first name of the debtor Example: |
house_number |
boolean |
Request to provide the house number of the address Example: |
last_name |
boolean |
Request to provide the last name of the debtor Example: |
postal_code |
boolean |
Request to provide the postal code of the address without spaces Example: |
street |
boolean |
Request to provide the street of the address Example: |
AliasAction
Specifies an alias and an operation to perform on it.
Property | Type | Description |
---|---|---|
action |
string
|
The action to perform.
|
alias |
string |
The alias value. If no value is set an alias is created by the system. Example: |
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
|
The alias value. If no value is set an alias is created by the system. Example: |
bank_account |
Information about a bank account. |
|
token |
string
|
The token value. Example: |
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
|
The alias value. If no value is set an alias is created by the system. Example: |
credit_card |
Information about a credit card. |
|
token |
string
|
The token value. Example: |
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: |
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
|
Success or error message, text for the response code. Example: |
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
AlternativeAddressData
Alternative address fields.
Property | Type | Description |
---|---|---|
street |
string
|
The street. Example: |
street_number |
string
|
The street number. Example: |
AmountCurrency
An amount and a currency.
Property | Type | Description |
---|---|---|
amount |
integer
|
Minor currency value of an amount of money. Example: |
currency |
string
|
ISO 4217 currency code, three uppercase letters. Example: |
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 |
|
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]
|
Additional processing option for headless 3-D Secure transactions.
Example: |
recurring_payment |
string
|
Identifier of a recurring credit card payment. Example: |
risk_check_additional_information |
Additional information for calculation of the risk of a transaction. |
|
sequence_type |
string
|
If this payment is part of a sequence of payments
|
series_flag |
string
|
Designates a payment as part of a series of payments.
|
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
|
Domain where the payment is initiated and which is registered and validated at Apple Pay. Example: |
merchant_id |
string
|
Merchant Identifier registered for payments at Apple Pay. Example: |
ApplePayPaymentSessionResponse
Property | Type | Description |
---|---|---|
applepay_payment_session_token |
string
|
The Base64 encoded payment session response from Apple Pay. Example: |
message |
string
|
Success or error message, text for the response code. Example: |
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
BankAccount
Information about a bank account.
Property | Type | Description |
---|---|---|
account_holder |
string
|
The account holder of the bank account. Example: |
bank_name |
string |
Name of the bank. Example: |
bic |
string
|
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: |
iban |
string
|
The international bank account number of the bank account. Example: |
BaseResponse
Property | Type | Description |
---|---|---|
message |
string
|
Success or error message, text for the response code. Example: |
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
Basket
A generalized shopping basket.
Property | Type | Description |
---|---|---|
basket_discount |
An amount and a currency. |
|
basket_id |
string
|
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: |
basket_items |
Array[BasketItem] |
An array of items that the customer purchases from the merchant. |
basket_type |
string
|
Type of a shopping basket.
Example: |
extensions |
Service specific basket fields. |
|
invoice_id |
string
|
The API caller-provided external invoice number for this order. Example: |
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: |
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
|
Used for storing merchant’s internal order number or other reference. Example: |
extensions |
Service specific basket item fields. |
|
item_discount |
Net and gross money amount accompanied by a tax percentage and currency. |
|
name |
string
|
Descriptive name of the order item. Example: |
quantity |
A quantity. |
|
reference |
string
|
Article number, SKU or similar. Example: |
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
|
Product image URL in the merchant’s webshop. May be used to embed the image into communication between Klarna and the customer. |
product_identifiers |
Array[KlarnaProductIdentifier] |
Additional information identifying the basket item. |
product_url |
string
|
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
|
PayPal specific type of an order item.
Example: |
BasketItemRiskCheckData
Service specific basket item fields for riskcheck related use cases.
Property | Type | Description |
---|---|---|
distributor_product_sku |
string
|
Product’s identifier code. Example: |
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: |
is_gift |
boolean |
If billing and shipping addresses are different: true: Order risk increases slightly. false: Order risk increases significantly. Example: |
product_risk |
string
|
Indicates the product’s risk level. This field may contain one of the following values:
Example: |
risk_check_passenger |
A (plane) passenger as modelled from the point of view of a risk check service. |
|
riskcheck_type |
string
|
Riskcheck specific type of an order item.
Example: |
shipping_destination_types |
string
|
Destination to where the item will be shipped.
Example: |
BasketPayPalData
Service specific basket fields for PayPal.
Property | Type | Description |
---|---|---|
custom_id |
string
|
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: |
Callback
Data for the shop notification.
Property | Type | Description |
---|---|---|
additional_data |
string
|
Freely allocatable field. Will be returned in the shop notification. Example: |
notify_url |
string
|
URL for the shop notification. |
skip |
boolean
|
If true the shop notification is skipped. |
CommonAddress
Address data as applicable to most use cases.
Property | Type | Description |
---|---|---|
address_line_1 |
string
|
An address line. Example: |
address_line_2 |
string
|
An address line. For 3DS this maps to additional1. Example: |
address_line_3 |
string
|
An address line. For 3DS this maps to additional2. Example: |
city |
string
|
City of the address. Example: |
company_name |
string
|
Name of the company. Example: |
country |
string
|
The ISO 3166 Alpha-2 country code (upper case) of the individual’s homeland. Example: |
string
|
Email address of the individual. Example: |
|
extensions |
Service specific address fields. |
|
first_name |
string
|
First name of the individual. Example: |
last_name |
string
|
Last name of the individual. Example: |
phone_contact |
A means of contacting a customer by phone. |
|
postal_code |
string
|
Postal code of the address. Example: |
state |
string
|
State or province of the address. Example: |
title |
string
|
Customer’s title. Example: |
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
|
The holder of a credit card. Required for 3-D Secure 2.0 payments. Example: |
code |
string
|
Card verification number of the credit card (also CVV or CVC). Example: |
expiry_date |
|
The credit card expiry date. |
number |
string
|
The credit card number (Primary Account Number). It is sometimes masked in response messages, for example 411111**1111. Example: |
CreditCardInfo
Information about a credit card.
Property | Type | Description |
---|---|---|
brand |
string
|
The credit card brand. The use of this field requires an explicit activation. Please contact customer support. Possible values:
Example: |
cardholder |
string
|
The holder of a credit card. Example: |
expiry_date |
|
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
|
The credit card number (Primary Account Number). It is sometimes masked in response messages, for example 411111**1111. Example: |
CustomerExtensionPayPalData
PayPal specific customer information fields.
Property | Type | Description |
---|---|---|
payer_id |
string
|
Example: |
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
|
Technical identification number of a customer. Example: |
date_of_birth |
string
|
Customer’s date of birth. Example: |
extensions |
Service specific customer information fields. |
|
gender |
string
|
Customer’s gender.
Example: |
personal_identifications |
Array[PersonalIdentification] |
Customer’s available identifications. |
title |
string
|
Customer’s title. Example: |
CustomerInformationExtensions
Service specific customer information fields.
Property | Type | Description |
---|---|---|
paypal_data |
PayPal specific customer information fields. |
DebtorContactDetailsRequestData
Property | Type | Description |
---|---|---|
boolean |
Request to provide the e-mail address of the debtor Example: |
|
phone_number |
boolean |
Request to provide the phone number of the debtor in E.164 format Example: |
DeviceInformation
Technical details of a client.
Property | Type | Description |
---|---|---|
color_depth |
string
|
The bit depth of the color palette for displaying images, in bits per pixel. See https://en.wikipedia.org/wiki/Color_depth. Possible values:
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 Example: |
cookies_accepted |
boolean |
Whether or not the browser accepts cookies. Example: |
http_accept_browser_value |
string
|
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: |
http_accept_content |
string
|
The exact content of the HTTP accept header. Example: |
http_browser_email |
string
|
Email address set in the customer’s browser. May differ from customer’s actual email. Example: |
http_browser_java_enabled |
boolean |
Is the browser able to execute Java. Value is taken from the navigator.javaEnabled property. Example: |
http_browser_java_script_enabled |
boolean |
Is the browser able to execute JavaScript. Background: Merchants may want to fingerprint a cardholder’s browser. Example: |
http_browser_language |
string
|
Browser language as defined in IETF BCP47. See https://en.wikipedia.org/wiki/IETF_language_tag. Example: |
http_browser_screen_height |
integer
|
Total height of the client’s screen in pixels. Example: |
http_browser_screen_width |
integer
|
Total width of the client’s screen in pixels. Example: |
http_browser_time_difference |
integer
|
Time difference between UTC time and the client’s browser’s local time in minutes. Example: |
ip_address |
string
|
IP address of the client. Both IPv4 and IPv6 are supported. Example: |
user_agent |
string
|
Client’s browser as identified by the HTTP header data. Example: |
user_agent_browser_value |
string
|
Value of the User-Agent header sent by the client’s browser. Example: |
EScoreAddresscheckResponse
Property | Type | Description |
---|---|---|
address |
Address data as applicable to most use cases. |
|
address_note |
string
|
Possible features for the result of address verification. The following values are valid:
Example: |
customer_information |
Details of a customer. |
|
event_id |
string
|
A unique ID for the event. Example: |
freight_routing_code |
string
|
Freight routing code of the Deutsche Post AG (German mail). Example: |
message |
string
|
Success or error message, text for the response code. Example: |
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
reason |
string
|
Codes for the classification of the credit assessments. The following values are valid:
Example: |
scoring_rc |
string
|
Traffic light value that allows you a basic estimate of a customer’s credit-worthiness. The following values are valid:
Example: |
tx_id |
string |
Unique transaction identifier. Can be used to reference this transaction. Example: |
EScoreCreditassessmentResponse
Property | Type | Description |
---|---|---|
address |
Address data as applicable to most use cases. |
|
customer_information |
Details of a customer. |
|
event_id |
string
|
A unique ID for the event. Example: |
message |
string
|
Success or error message, text for the response code. Example: |
negative_criteria |
Array[NegativeCriterionResponse] |
If |
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
reason |
string
|
Codes for the classification of the credit assessments. The following values are valid:
Example: |
score |
string |
Subtly graduated result of the credit assessment. The following values are valid: Credit Assessment (ES0012):
Integrated Address Verification, Credit Assessment, and Scoring (ES0015):
Example: |
scoring_rc |
string
|
Traffic light value that allows you a basic estimate of a customer’s credit-worthiness. The following values are valid:
Example: |
tx_id |
string |
Unique transaction identifier. Can be used to reference this transaction. Example: |
EScoreRPPRequest
Property | Type | Description |
---|---|---|
bank_account |
|
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 |
|
Information about a bank account. |
bank_account_validation_message |
string
|
Description of the validation result. |
bank_account_validation_result |
string
|
Result of the validation. The following values are valid:
Example: |
error_code_name |
string
|
Error code of the RPP check. Example: |
error_description |
string
|
Error description of the RPP check. |
event_id |
string
|
A unique ID for the event. Example: |
message |
string
|
Success or error message, text for the response code. Example: |
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
rpp_match |
string
|
Hit in RPP. The following values are valid:
Example: |
rpp_result |
Array[RppResultResponse] |
Result of an RPP check. |
scoring_rc |
string
|
Traffic light value that allows you a basic estimate of a customer’s credit-worthiness. The following values are valid:
Example: |
tx_id |
string |
Unique transaction identifier. Can be used to reference this transaction. Example: |
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
|
Codes for the classification of the credit assessments. The following values are valid:
Example: |
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
|
Possible features for the result of address verification. The following values are valid:
Example: |
customer_information |
Details of a customer. |
|
event_id |
string
|
A unique ID for the event. Example: |
freight_routing_code |
string
|
Freight routing code of the Deutsche Post AG (German mail). Example: |
informa_score_value |
string
|
Generated scoring value of the InFoScore Consumer Data GmbH. Example: |
message |
string
|
Success or error message, text for the response code. Example: |
negative_criteria |
Array[NegativeCriterionResponse] |
If |
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
reason |
string
|
Codes for the classification of the credit assessments. The following values are valid:
Example: |
score |
string |
Subtly graduated result of the credit assessment. The following values are valid: Credit Assessment (ES0012):
Integrated Address Verification, Credit Assessment, and Scoring (ES0015):
Example: |
scoring_rc |
string
|
Traffic light value that allows you a basic estimate of a customer’s credit-worthiness. The following values are valid:
Example: |
tx_id |
string |
Unique transaction identifier. Can be used to reference this transaction. Example: |
ErrorModel
Includes data returned in case of an error.
Property | Type | Description |
---|---|---|
message |
string
|
Describes the error. Example: |
rc |
string
|
Four digit response code. Example: |
ExpiryDate
The credit card expiry date.
Property | Type | Description |
---|---|---|
month |
integer
|
The credit card expiry month. Example: |
year |
integer
|
The credit card expiry year. Example: |
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]
|
The order in which the payment methods of the checkout_page_configuration are displayed. Possible values:
|
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]
|
Additional processing option for a credit card transaction.
Example: |
recurring_payment |
string
|
Identifier of a recurring credit card payment. Example: |
sequence_type |
string
|
If this payment is part of a sequence of payments
|
series_flag |
string
|
Designates a payment as part of a series of payments.
|
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
|
The country code of the acquiring bank. Example: |
googlepay_domain_name |
string
|
The URL of the redirecting shop. Example: |
googlepay_merchant_id |
string
|
The merchant ID given by Google Pay. Example: |
processing_options |
Array[string]
|
Additional processing option for a credit card transaction.
Example: |
recurring_payment |
string
|
Identifier of a recurring credit card payment. Example: |
sequence_type |
string
|
If this payment is part of a sequence of payments
|
series_flag |
string
|
Designates a payment as part of a series of payments.
|
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]
|
Specific options for checkout page processing. Valid values are:
|
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]
|
Additional processing option for a credit card transaction.
Example: |
recurring_payment |
string
|
Identifier of a recurring credit card payment. Example: |
sequence_type |
string
|
If this payment is part of a sequence of payments
|
series_flag |
string
|
Designates a payment as part of a series of payments.
|
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
|
URL the customer should be redirected to after a failed form service payment. Example: |
notification_failed_url |
string
|
URL the customer should be redirected to after a successful form service transaction for which the notification of your application failed. |
redirect |
boolean |
If Example: |
success_url |
string
|
URL the customer should be redirected to after a successful form service payment. Example: |
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:
Example: |
retries |
integer
|
Specifies how often the customer may retry the payment if the payment fails. Default: 0. |
theme_properties |
Array[FormThemeProperty] |
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
|
Direct debit method. If not specified, an SDD will be carried out.
Example: |
due_date |
string
|
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 |
|
|
processing_options |
Array[string]
|
Additional processing option for direct debit.
Example: |
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
|
Reason for the transaction as will be shown to the customer during the transaction and on their bank statement. Example: |
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
|
Time in seconds after which the transaction will expire. Default will be 1200. Example: |
issuer_id |
string
|
The business identifier code (BIC) of the issuer. |
transaction_flow |
string
|
Transaction flow which the shop desires to initiate (STANDARD or FAST_CHECKOUT). Currently, only STANDARD is supported. Default will be STANDARD. Example: |
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 |
|
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
|
The form label ID to be modified. |
value |
string
|
The new form label value. |
FormNoTxResponse
Values required to initialize a form interaction.
Property | Type | Description |
---|---|---|
message |
string
|
Success or error message, text for the response code. Example: |
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
redirect_url |
string
|
URL to redirect the customer to. |
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: |
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
|
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: |
bank_id |
string
|
The ID of a bank as returned in the response of a previous bank search. Example: |
bic |
string
|
The business identifier code (BIC) of the bank. Identifies the bank if Example: |
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]
|
Specifies which additional bank account details are requested.
Example: |
transaction_filter |
Contains properties to filter the transactions if |
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
|
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
|
The international bank account number of a German bank account. Example: |
processing_options |
Array[string]
|
Defines an additional processing option for credit transfers. One of
|
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
|
Success or error message, text for the response code. Example: |
outcome |
string
|
Indicates the outcome of the PSD2 reversal transaction.
|
processed |
||
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
redirect_url |
string
|
URL to redirect the customer to. |
tx_id |
string |
Unique transaction identifier. Can be used to reference this transaction. Example: |
FormPayPalData
Data to initialize a PayPal form service interaction.
Property | Type | Description |
---|---|---|
merchant_id |
string |
Business identifier of a merchant. Example: |
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
|
The alias value. If no value is set an alias is created by the system. Example: |
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
|
Technical identification number of a customer. Example: |
iban |
string
|
The international bank account number of the bank account. Example: |
processing_options |
Array[string]
|
Defines an additional processing option for credit transfers. One of
|
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
|
Success or error message, text for the response code. Example: |
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
redirect_url |
string
|
URL to redirect the customer to. |
tx_id |
string |
Unique transaction identifier. Can be used to reference this transaction. Example: |
FormThemeProperty
Custom theme property to be displayed in the form instead of the standard presentation.
Property | Type | Description |
---|---|---|
selector |
string
|
For a number of elements custom CSS attributes can be applied. Properties ending with
Name of the theme properties:
|
value |
string
|
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: |
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
|
A unique reference for the (pre-)authorization. This field will be included in the customer remittance information of the transaction. |
description |
string
|
A description of the transaction, for example, "Your purchase at The Cool Shop". |
gift |
boolean
|
Indicates whether the purchased goods are a gift for someone else. Example: |
order_page_url |
string
|
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. Example: |
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 |
|
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 |
|
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]
|
Additional processing option for headless 3-D Secure transactions.
Example: |
recurring_payment |
string
|
Identifier of a recurring credit card payment. Example: |
risk_check_additional_information |
Additional information for calculation of the risk of a transaction. |
|
sequence_type |
string
|
If this payment is part of a sequence of payments
|
series_flag |
string
|
Designates a payment as part of a series of payments.
|
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 |
|
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]
|
Additional processing option for headless 3-D Secure transactions.
Example: |
recurring_payment |
string
|
Identifier of a recurring credit card payment. Example: |
risk_check_additional_information |
Additional information for calculation of the risk of a transaction. |
|
sequence_type |
string
|
If this payment is part of a sequence of payments
|
series_flag |
string
|
Designates a payment as part of a series of payments.
|
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. |
Headless3DSecureResponse
Property | Type | Description |
---|---|---|
challenge_required |
||
message |
string
|
Success or error message, text for the response code. Example: |
method_required |
||
outcome |
string
|
Indicates the outcome of the current headless 3-D Secure transaction.
Example: |
processed |
||
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
IFrameInitializeRequest
Request data to initialize an iFrame interaction.
Property | Type | Description |
---|---|---|
amount_total |
|
An amount and a currency. |
processing_options |
Array[string]
|
Additional processing option for an iFrame interaction.
Example: |
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
|
The iFrame client configuration. Example: |
client_session |
string
|
The iFrame client session ID. Example: |
message |
string
|
Success or error message, text for the response code. Example: |
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
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: |
category_path |
string
|
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: |
gtin |
string
|
The product’s Global Trade Item Number (GTIN). Common types of GTIN are EAN, ISBN or UPC. Dashes and spaces must be omitted. Example: |
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: |
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: |
currency_pair |
string |
Pair of funding currency of merchant and other currency. Example: |
offerable_from |
string |
The time of the beginning of the validity of the guaranteed consumer rate. Example: |
offerable_to |
string |
The time of the end of the validity of the guaranteed consumer rate. Example: |
McpConsumerRatesResponse
Property | Type | Description |
---|---|---|
consumer_rates |
Array[McpConsumerRate] |
List of the evaluated rates of all supported currencies. |
funding_currency |
string |
The funding currency of the merchant. Example: |
merchant_id_mcp |
string
|
Business identifier of a merchant registered for multi currency pricing. Example: |
message |
string
|
Success or error message, text for the response code. Example: |
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
response_timestamp |
string |
The time of the consumerrates transaction. Example: |
MeansOfPaymentApplePay
The means of payment that will be used. Exactly one of the given means is valid.
Property | Type | Description |
---|---|---|
applepay_token |
string
|
The complete token generated by Apple Pay as contained in session.onpaymentauthorized in event.payment.token as Base64 encoded value. Example: |
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: |
credit_card |
Information about a credit card. |
|
token |
string
|
The token value. Example: |
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: |
bank_account |
Information about a bank account. |
|
token |
string
|
The token value. Example: |
MeansOfPaymentGooglePay
The means of payment that will be used. Only a Google Pay token is valid.
Property | Type | Description |
---|---|---|
cardholder |
string
|
The holder of a credit card. Example: |
googlepay_token |
string
|
The complete token generated by Google Pay as contained in paymentData.paymentMethodData.tokenizationData.token. Note: use for example JSON.stringify before sending. Example: |
MeansOfPaymentPost
The means of payment that will be used. Only an alias is valid.
Property | Type | Description |
---|---|---|
alias |
string
|
A previously registered alias. Example: |
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: |
merchant_data_1 |
string
|
The first merchant data field. Refer to the user guide of the payment system for its meaning for the payment system. Example: |
merchant_data_2 |
string
|
The second merchant data field. Refer to the user guide of the payment system for its meaning for the payment system. Example: |
merchant_data_3 |
string
|
The third merchant data field. Refer to the user guide of the payment system for its meaning for the payment system. Example: |
MerchantInformationDPGData
DPG specific MerchantInformation fields.
Property | Type | Description |
---|---|---|
tx_report_ext_id |
string
|
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: |
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
|
The delivery email address. |
delivery_timeframe |
string
|
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
|
The preorder date. Full-date notation as defined by RFC 3339 section 5.6. |
pre_order_purchase_indicator |
string
|
The preorder purchase indicator. |
reordered_items_indicator |
string
|
The reordered items indicator. |
shipping_indicator |
string
|
The shipping indicator. |
NegativeCriterionResponse
If scoring_rc
=Y
or scoring_rc
=R
, several possible.
Property | Type | Description |
---|---|---|
completion_date |
string
|
Clearing date of a feature. Example: |
completion_flag |
boolean |
Clearing sign of the feature. |
date |
string
|
Example: |
doc_reference |
string
|
File reference of the feature. Example: |
kind |
string
|
The codes of the negative features supplied in the response. The following values are valid: Soft Negative Features:
Medium Negative Features:
Hard Negative Features:
Other Negative Features:
Example: |
PSD2Account
Property | Type | Description |
---|---|---|
bban |
string |
Used for payment accounts which have no IBAN. |
currency |
string
|
ISO 4217 currency code, three uppercase letters. Example: |
iban |
string
|
The international bank account number of the bank account. Example: |
masked_pan |
string
|
Primary Account Number (PAN) of a card in a masked form. |
msisdn |
string
|
An alias to access a payment account via a registered mobile phone number. |
pan |
string
|
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
|
ISO 4217 currency code, three uppercase letters. Example: |
details |
string
|
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: |
name |
string
|
Name of the account given by the bank or the PSU in online-banking. |
owner_name |
string
|
Name(s) of the account owner(s). |
product |
string
|
Product name of the bank for this account, proprietary definition. |
status |
string
|
Status of the account
|
transactions |
Array[PSD2Transaction] |
|
usage |
string
|
Specifies the usage of the account
|
PSD2AccountInfoResponse
Property | Type | Description |
---|---|---|
accounts |
Array[PSD2AccountDetails] |
Bank account details which were stored in a previous step. |
accounts_as_of |
string
|
Date and time of the account information request. Date-time notation as defined by RFC 3339, section 5.6. Example: |
message |
string
|
Success or error message, text for the response code. Example: |
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
transaction_filter |
Contains properties to filter the transactions if |
PSD2Balance
Property | Type | Description |
---|---|---|
amount |
|
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
|
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: |
reference_date |
string
|
Indicates the date of the balance. Full-date notation as defined by RFC 3339, section 5.6. Example: |
type |
string
|
The following balance types are excluding credit limits unless the
Example: |
PSD2Bank
Contains bank details.
Property | Type | Description |
---|---|---|
bank_code |
string |
German bank code (Bankleitzahl, BLZ). |
bic |
string
|
BIC (business identifier code). |
capabilities |
Array[PSD2CapabilityEnum] |
|
id |
string |
Temporary system identifier for this bank - if PSD2 is supported. |
name |
string
|
Name of the bank. |
psd2_supported |
boolean
|
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
|
Success or error message, text for the response code. Example: |
metadata |
Metadata for a paged data result. |
|
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
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
|
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: |
target_currency |
string
|
Currency into which an amount is to be converted in a currency conversion. Example: |
unit_currency |
string
|
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: |
PSD2Remittance
Property | Type | Description |
---|---|---|
reference |
string
|
|
reference_issuer |
string
|
|
reference_type |
string
|
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 |
|
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
|
The date when an entry is posted to an account on the ASPSPs books. |
booking_status |
string
|
Booking status of a transaction
Example: |
check_id |
string
|
Identification of a check. |
creditor_account |
||
creditor_agent |
string
|
A BIC. Example: |
creditor_id |
string
|
Identification of creditors, for example, a SEPA Creditor ID. Example: |
creditor_name |
string
|
Name of the creditor of a "debited" transaction. |
currency_exchange |
Array[PSD2CurrencyExchange] |
|
debtor_account |
||
debtor_agent |
string
|
A BIC. Example: |
debtor_name |
string
|
Name of the debtor of a "credited" transaction. |
end_to_end_id |
string
|
Unique end to end identifier. |
entry_reference |
string |
Entry reference, for example from camt.052 message. |
mandate_id |
string
|
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 |
Array[PSD2Remittance] |
|
remittance_information_unstructured |
Array[string] |
Unstructured remittance information. |
ultimate_creditor |
string
|
Name of the ultimate creditor of a "debited" transaction. |
ultimate_debtor |
string
|
Name of the ultimate debtor of a "credited" transaction. |
value_date |
string
|
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]
|
Booking status of a transaction
Example: |
date_from |
string
|
Starting date of the transaction list. Full-date notation as defined by RFC 3339, section 5.6. Example: |
date_to |
string
|
End date of the transaction list. Full-date notation as defined by RFC 3339, section 5.6. Example: |
PagedMetadata
Metadata for a paged data result.
Property | Type | Description |
---|---|---|
limit |
integer
|
Maximum number of result items to be returned. Example: |
offset |
integer
|
Number of rows to skip at the beginning of the total result set. Example: |
total |
integer
|
The result count total for the current query. Example: |
PaymentCreditCardRequestInitial
Property | Type | Description |
---|---|---|
account_information |
Information on a user’s account usage, payment history, transaction statistics. |
|
aid |
string
|
Approval number of authorizing party. Example: |
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. |
|
customer_information |
Details of a customer. |
|
device_information |
Technical details of a client. |
|
entry_channel |
string
|
Indicates the channel where the credit card data is recorded. The transaction is processed as an eCommerce transaction if no value is set.
|
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]
|
Additional processing option for a credit card transaction.
Example: |
recurring_payment |
string
|
Identifier of a recurring credit card payment. Example: |
risk_check_additional_information |
Additional information for calculation of the risk of a transaction. |
|
sequence_type |
string
|
If this payment is part of a sequence of payments
|
series_flag |
string
|
Designates a payment as part of a series of payments.
|
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
|
Success or error message, text for the response code. Example: |
payment_link_info |
Contains information about the created or updated payment link. |
|
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
transactions |
Array[PaymentDiagnosisResponse] |
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
|
Transaction reference number of the backend system. Example: |
back_rc |
string
|
Response code of a backend system, for example the GICC response code. Example: |
children |
Array[PaymentDiagnosisResponse] |
A list of all transactions that were sent as follow-up transactions. |
event_id |
string
|
A unique ID for the event. Example: |
kind |
string
|
The type of transaction. |
message |
string
|
Success or error message, text for the response code. Example: |
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
riskmanagement_info |
||
timestamp |
string
|
Timestamp of the transaction. |
transaction_info |
||
tx_action |
string
|
The action of a transaction. |
tx_id |
string |
Unique transaction identifier. Can be used to reference this transaction. Example: |
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 |
|
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
|
Direct debit method. If not specified, an SDD will be carried out.
Example: |
device_information |
Technical details of a client. |
|
due_date |
string
|
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 |
|
|
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]
|
Additional processing option for direct debit.
Example: |
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 |
|
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
|
Success or error message, text for the response code. Example: |
payment_link_info |
Contains information about the created or updated payment link. |
|
payment_link_url |
string |
|
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
PaymentLinkInfo
Contains information about the created or updated payment link.
Property | Type | Description |
---|---|---|
expires |
string
|
Specifies until when the payment link is usable (in local German time). |
status |
string
|
The payment link status
Example: |
PaymentLinkManagementUpdateRequest
The request to be executed on the Payment Link management API .
Property | Type | Description |
---|---|---|
expires |
string
|
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
|
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]
|
Specific options for checkout page processing. Valid values are:
|
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
|
Success or error message, text for the response code. Example: |
payment_link |
string
|
The payment link url, which is used by the customer to pay. |
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
PaymentPayPalRequestInitial
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. |
|
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
|
The Wero amount payment type.
* |
capture_event |
string
|
The Wero capture trigger.
* |
max_auth_to_capture_time |
integer
|
The maximum time, in seconds, between pre-authorization and capture. The default value is 604800 , which translates to one week. Example: |
PaymentRequestSubsequent
Property | Type | Description |
---|---|---|
basket |
A generalized shopping basket. |
|
changed_amount |
integer
|
The transaction amount of the subsequent transaction to indicate a partial capture, refund, or reversal. If Example: |
description |
string |
The description of the transaction. Example: |
due_date |
string
|
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
|
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
|
Transaction reference number of the backend system. Example: |
back_rc |
string
|
Response code of a backend system, for example the GICC response code. Example: |
event_id |
string
|
A unique ID for the event. Example: |
kind |
string
|
The type of transaction. |
message |
string
|
Success or error message, text for the response code. Example: |
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
riskmanagement_info |
||
timestamp |
string
|
Timestamp of the transaction. |
transaction_info |
||
tx_action |
string
|
The action of a transaction. |
tx_id |
string |
Unique transaction identifier. Can be used to reference this transaction. Example: |
PersonalIdentification
Customer’s legal ID data.
Property | Type | Description |
---|---|---|
id |
string
|
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: |
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: |
type |
string
|
Type of identification.
Example: |
PhoneContact
A means of contacting a customer by phone.
Property | Type | Description |
---|---|---|
phone_number |
string
|
A phone number in its canonical international E.164 numbering plan format. Example: |
phone_type |
string
|
The phone type.
Example: |
Example:
{"phone_type":"FAX","phone_number":"+442071838750"}
ProvidedMandate
Property | Type | Description |
---|---|---|
mandate_name |
string
|
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: |
mandate_sequence_type |
string
|
Sequence type of a payment. If not submitted a single payment is assumed.
Example: |
previous_bic |
string
|
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: |
previous_creditor_id |
string
|
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: |
previous_iban |
string
|
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: |
previous_reference |
string
|
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: |
reference |
string
|
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: |
signed_on |
string
|
Date when the SEPA mandate was issued. Full-date notation as defined by RFC 3339, section 5.6 Example: |
Quantity
A quantity.
Property | Type | Description |
---|---|---|
quantity_amount |
integer
|
Amount of units. Example: |
quantity_unit |
string
|
Unit used to describe the quantity. Example: |
RequestToPayAccountReference
Information about a bank account.
Property | Type | Description |
---|---|---|
account_holder |
string |
The account holder of the bank account. Example: |
currency |
string |
ISO 4217 currency code, three uppercase letters. Example: |
iban |
string |
The international bank account number of the bank account. Example: |
RequestToPayPaymentStatus
Status of the payment.
Property | Type | Description |
---|---|---|
code |
string
|
Request to Pay or iDEAL payment status code. Possible values:
|
date_time |
string
|
Date and time when the payment status was set. Example: |
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: |
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: |
payment_id |
string |
Payment identifier submitted in the payment initiation request. Example: |
payment_products |
Array[string] |
|
payment_reference |
string |
Value submitted as payment reference in the payment initiation request. Example: |
scheme |
string
|
Scheme of the payment:
|
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
|
Request to Pay refund status code. Possible values:
|
date_time |
string
|
Date and time when the refund status was set. Example: |
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: |
refund_alternative_id |
string |
Optional attribute not processed by the API. It will be sent back with a refund details. Example: |
refund_id |
string |
Refund identifier unique per the payment. Example: |
refund_reference |
string |
Business reference field that will be passed as a part of E2E reference. Example: |
status |
Status of the refund. |
RiskCheckAdditionalInformation
Additional information for calculation of the risk of a transaction.
Property | Type | Description |
---|---|---|
fingerprint_session_id |
string
|
Fingerprint session ID of the device and request of the customer. Example: |
RiskCheckMerchantDefinedInformation
Merchant defined information of the order. This must not be used to capture personally identifying information.
Property | Type | Description |
---|---|---|
key |
string
|
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: |
value |
string
|
String value for the key. Example: |
RiskCheckPassenger
A (plane) passenger as modelled from the point of view of a risk check service.
Property | Type | Description |
---|---|---|
country |
string
|
The ISO 3166 Alpha-2 country code (upper case) of the individual’s homeland. Example: |
string
|
Email address of the individual. Example: |
|
first_name |
string
|
First name of the individual. Example: |
id |
string
|
ID of the passenger to whom a ticket was issued. For example, this field may contain the frequent flyer number. Example: |
last_name |
string
|
Last name of the individual. Example: |
phone |
A means of contacting a customer by phone. |
|
status |
string
|
Merchant specific passenger classification, such as standard, gold, or platinum. Example: |
type |
string
|
Passenger classification as indicated by the price discount class of the ticket. The following values are valid:
Example: |
RiskCheckTravelInformation
Travel information of the order.
Property | Type | Description |
---|---|---|
actual_final_destination |
string
|
IATA Code for the actual final destination that the customer intends to travel to. It should be a destination on the complete_route. Example: |
complete_route |
string
|
Concatenation of individual travel legs in the format ORIG1-DEST1[:ORIG2-DEST2…:ORIGn-DESTn] Example: |
departure_time |
string
|
Departure date and time of the first leg of the trip. |
journey_type |
string
|
Type of travel, for example one way or round trip.
Example: |
legs |
Single legs of the complete journey. |
|
number_of_passengers |
string |
Number of passengers for whom the ticket was issued. Example: |
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: |
reason |
string |
The reason why the request was rejected. Example: |
RiskmanErrorInformation
Detailed error information including fields which had been the reasons for unsuccessful processing.
Property | Type | Description |
---|---|---|
error_field_information |
Array[RiskmanErrorFieldInformation] |
Detailed field level information regarding the reason why the request was rejected. |
error_message |
string |
The reason why the request was rejected. Example: |
error_reason |
string |
The reason why the request was rejected from the backend system. Example: |
error_status |
string |
The status why the request was rejected from the backend system. Example: |
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
|
The action to perform with the list. Example: |
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
|
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
|
The list name where to perform the action. Example: |
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
|
The reason why to add an entry to the list or remove an entry from the list. Example: |
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
|
Success or error message, text for the response code. Example: |
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
status |
string |
The status of the external processed risk check transaction. Example: |
tx_id |
string |
Unique transaction identifier. Can be used to reference this transaction. Example: |
utc_time |
string |
The UTC time of the risk check. Example: |
RiskmanagementInfoResponse
Property | Type | Description |
---|---|---|
case_priority |
string |
Riskcheck information regarding the case priority. Example: |
error_information |
Detailed error information including fields which had been the reasons for unsuccessful processing. |
|
event_id |
string
|
A unique ID for the event. Example: |
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: |
profile_destination_queue |
string |
Riskcheck information regarding the profile destination queue of the risk check. Example: |
profile_name |
string |
Riskcheck information regarding the profile of the risk check. Example: |
profile_selectorrule |
string |
Riskcheck information regarding the profile selector rule risk check. Example: |
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: |
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: |
travel_actual_final_dst_country |
string |
Actual country of final destination of the travel. Example: |
travel_actual_final_dst_locality |
string |
Actual city of final destination of the travel. Example: |
travel_first_departure_country |
string |
First departure country of the travel. Example: |
travel_first_departure_locality |
string |
First departure city of the travel. Example: |
tx_risk_status |
string |
Status result of an external risk management transaction. See user guide for all possible values. Example: |
tx_scoring_id |
string |
Unique scoring transaction identifier. Can be used to reference the depending scoring transaction. Example: |
utc_time |
string |
Riskcheck information regarding the UTC time of the risk check, used in error cases. Example: |
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 |
|
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
|
A unique ID for the event. Example: |
message |
string
|
Success or error message, text for the response code. Example: |
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
riskmanagement_info |
||
tx_id |
string |
Unique transaction identifier. Can be used to reference this transaction. Example: |
RiskmanagementTravelInformationLeg
Information about a leg of the complete journey.
Property | Type | Description |
---|---|---|
carrier_code |
string
|
International Air Transport Association (IATA) code for the carrier for this leg of the trip. Required for each leg. Example: |
departure_date |
string
|
Departure date for the first leg of the trip. Example: |
destination |
string
|
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: |
origination |
string
|
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: |
RiskmanagementTravelInformationPassenger
Information about a passenger.
Property | Type | Description |
---|---|---|
first_name |
string
|
First name of the individual. Example: |
last_name |
string
|
Last name of the individual. Example: |
RppResultResponse
Result of an RPP check.
Property | Type | Description |
---|---|---|
content_code |
string
|
Reason of the notice. The following values are valid: If eScoreContentType=0 (open/settled/historical return debit note):
If eScoreContentType=3 (institution/public bank details):
If eScoreContentType=7 (cards locked):
If eScoreContentType=14 (PAP):
Example: |
content_description |
string
|
Content description, for example RLS for a return debit note or NCA for publicly known bank details ("non consumer account"). Example: |
content_type |
string
|
Type of the notice. Is returned if
|
first_notice_date |
string
|
Date of the first notice. Example: |
last_notice_date |
string
|
Date of the last notice. Example: |
no_of_matches |
string
|
Number of matches. Example: |
SettledDebtorAccount
Property | Type | Description |
---|---|---|
account_holder |
string |
The name of the account holder. Example: |
iban |
string
|
The international bank account number of the bank account. Example: |
ShippingInfo
Property | Type | Description |
---|---|---|
return_shipping_company |
string |
Name of the shipping company for the return shipment (as specific as possible). Example: |
return_tracking_number |
string |
Tracking number for the return shipment. Example: |
shipping_company |
string |
Name of the shipping company (as specific as possible). Example: |
shipping_delay |
integer
|
Delay (in days) before the order will be shipped. Example: |
shipping_method |
string
|
Shipping method. Example: |
tracking_number |
string |
Tracking number for the shipment. Example: |
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
|
3-D Secure field. Determined by ACS. Contains a 20 byte value that has beenBase64 encoded, giving a 28 character result. Example: |
ucaf |
string
|
3-D Secure field. Base64 encoded binary data. Example: |
xid |
string
|
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: |
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
|
City of the address. Example: |
country |
string
|
The ISO 3166 Alpha-2 country code (upper case) of the individual’s homeland. Example: |
postal_code |
string
|
Postal code of the address. Example: |
state |
string
|
State or province of the address. Example: |
street |
string
|
The street. |
street_number |
string |
The street number. |
TDS20CardHolderAccountInfo
Property | Type | Description |
---|---|---|
account_age_indicator |
string
|
The account age indicator. |
account_change |
string
|
The account change. |
account_change_date |
string
|
The account change date. |
account_id |
string |
The account ID. |
account_opened_date |
string
|
The account opened date. |
password_change_date |
string
|
The password change date. |
password_change_indicator |
string
|
The account password change indicator. |
payment_account_age |
string
|
The payment account age. |
payment_account_age_indicator |
string
|
The payment account age indicator. |
provisioning_day_count |
integer
|
The provisioning day counter |
purchases_six_month_count |
integer
|
The 6 month purchases counter |
shipping_address_age |
string
|
The shipping address age. |
shipping_address_age_indicator |
string
|
The shipping address age indicator. |
shipping_name_indicator |
string
|
The shipping name indicator. |
suspicious_account_activity |
string
|
The suspicious account activity. |
transactions_day_count |
integer
|
The transaction day counter |
transactions_year_count |
integer
|
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
|
|
billing_address |
Address data for 3DS 2.1 or 2.2 transactions. |
|
cardholder_account_info |
||
cardholder_email |
string
|
|
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
|
|
transaction_attributes |
TDS20ExternalData
3-D Secure data provided by a 3DS Server for 3DS version 2.
Property | Type | Description |
---|---|---|
tds_authentication_value |
string
|
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: |
tds_ds_trans_id |
string
|
Unique transaction identifier assigned by the 3-D Secure Directory Server. Example: |
tds_eci |
string
|
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
|
Maximum number of authorizations permitted for instalment payments, must be > 1. |
recurring_expiry |
string
|
Date after which no further authorizations shall be carried out. |
recurring_frequency |
integer
|
Minimum number of days between authorizations. |
transaction_type |
string
|
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
|
The 3D-Secure transaction status.
Example: |
tds_version |
string
|
The 3D-Secure version.
Example: |
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
|
3-D Secure 2: ARes card holder information. |
tds_ares_error_code |
string
|
3-D Secure 2: ARes error code. |
tds_ares_error_component |
string
|
3-D Secure 2: ARes error component. |
tds_ares_error_description |
string
|
3-D Secure 2: ARes error description. |
tds_ares_error_detail |
string
|
3-D Secure 2: ARes error detail. |
tds_ares_trans_status |
string
|
3-D Secure 2: ARes transaction status. Example: |
tds_ares_trans_status_reason |
string
|
3-D Secure 2: reason for the ARes transaction status. Example: |
tds_auth_level |
string
|
The 3D-Secure transaction status.
Example: |
tds_rreq_challenge_cancel_indicator |
string
|
Optional 3-D Secure 2 response parameter. Example: |
tds_rreq_error_code |
string
|
3-D Secure 2: RReq error code. |
tds_rreq_error_component |
string
|
3-D Secure 2: RReq error component. |
tds_rreq_error_description |
string
|
3-D Secure 2: RReq error description. |
tds_rreq_error_detail |
string
|
3-D Secure 2: RReq error detail. |
tds_rreq_trans_status |
string
|
3-D Secure 2: RReq transaction status. |
tds_rreq_trans_status_reason |
string
|
3-D Secure 2: reason for the RReq transaction status. Example: |
tds_version |
string
|
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
|
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
|
The customer’s tax ID value. Example: |
tax_id_type |
string
|
Type of tax ID. May be country specific. Different types may adhere to different patterns.
Example: |
TaxedAmountCurrency
Net and gross money amount accompanied by a tax percentage and currency.
Property | Type | Description |
---|---|---|
currency |
string
|
ISO 4217 currency code, three uppercase letters. Example: |
gross |
integer
|
Amount of money incl. tax in the minor currency unit. Example: |
net |
integer
|
Amount of money excl. tax in the minor currency unit. Example: |
tax |
integer
|
Tax percentage. Non-negative value. The percentage value is represented with two implicit decimals. Example: |
TransactionBankAccountInfo
Property | Type | Description |
---|---|---|
bank_account |
Information about a bank account. |
|
settled_debtor_account |
TransactionCreditCardInfo
Property | Type | Description |
---|---|---|
avs_result |
string
|
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:
Example: |
credit_card |
Information about a credit card. |
|
cvc_result |
string
|
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:
Example: |
recurring_payment |
string
|
Identifier of a recurring credit card payment. Example: |
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
|
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:
Example: |
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
|
WeChatPayResponse
Property | Type | Description |
---|---|---|
cny_amount |
string |
The amount deducted from the consumer’s wallet. In CNY major units. Example: |
expiry_timestamp |
string |
The expiry time of the transaction. Example: |
fix_rate |
string |
This exchange rate is guaranteed for potential refunds. Example: |
message |
string
|
Success or error message, text for the response code. Example: |
payment_purpose |
string |
Reflects what the consumer will see on the proof of payment. Example: |
qr_code_url |
string |
The string used for generating the payment QR code image. |
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
redirect_url |
string
|
URL to redirect the customer to. |
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: |
settlement_currency |
string |
The settlement currency of the transaction. Example: |
src_amount |
string |
The total amount debited from the consumer’s WeChat Wallet. Example: |
src_currency |
string |
The currency of the consumer’s WeChat wallet. Example: |
tx_id |
string |
Unique transaction identifier. Can be used to reference this transaction. Example: |
WidgetSolutionCreateSessionRequest
Property | Type | Description |
---|---|---|
amount_total |
|
An amount and a currency. |
merchant_country |
string
|
Country of the merchant where the transaction is processed. Example: |
transaction_data |
The Widget Solution transaction data. |
WidgetSolutionCreateSessionResponse
Property | Type | Description |
---|---|---|
id |
string
|
Widget Solution session ID of the transaction. Example: |
message |
string
|
Success or error message, text for the response code. Example: |
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
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: |
apple_pay_merchant_id |
string |
Merchant Identifier registered for payments at Apple Pay. Example: |
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: |
googlepay_merchant_id |
string |
The merchant ID given by Google Pay. Example: |
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
|
Controls the handling of the shipping address on the PayPal site.
Example: |
paypal_shop_name |
string |
The PayPal shop name. |
processing_options |
Array[string]
|
Additional processing option for a credit card transaction.
Example: |
recurring_payment |
string
|
Identifier of a recurring credit card payment. Example: |
risk_check_additional_information |
Additional information for calculation of the risk of a transaction. |
|
sequence_type |
string
|
If this payment is part of a sequence of payments
|
series_flag |
string
|
Designates a payment as part of a series of payments.
|
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 |
|
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
|
Transaction reference number of the backend system. Example: |
back_rc |
string
|
Response code of a backend system, for example the GICC response code. Example: |
billing_address |
Address data as applicable to most use cases. |
|
customer_email |
string |
|
customer_name |
string |
|
event_id |
string
|
A unique ID for the event. Example: |
kind |
string
|
The type of transaction. |
message |
string
|
Success or error message, text for the response code. Example: |
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
riskmanagement_info |
||
shipping_address |
Address data as applicable to most use cases. |
|
timestamp |
string
|
Timestamp of the transaction. |
transaction_info |
||
tx_action |
string
|
The action of a transaction. |
tx_id |
string |
Unique transaction identifier. Can be used to reference this transaction. Example: |
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:
-
(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. -
(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
totrue
, 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
|
SHA-256 hash of the message body. Example: |
Signature |
string
|
HMAC-256 signature. The values of the "Digest", "X-RequestDate" and "X-RandomValue" headers
are concatenated. The signature is calculated using the Example: |
X-RandomValue |
string
|
A random value; part of the signature input. Example: |
X-RequestDate |
string
|
Current timestamp formatted according to RFC 7231, section 7.1.1.2; part of the signature input. Example: |
Request Body (required)
Type | Content-Type |
---|---|
|
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"
}
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"
}
}
}
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 |
|
Acknowledges the receipt of the callback. |
|
400 |
|
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: |
bank_account |
Information about a bank account. |
|
credit_card |
Information about a credit card. |
AlternativeAddressData
Alternative address fields.
Property | Type | Description |
---|---|---|
street |
string
|
The street. Example: |
street_number |
string
|
The street number. Example: |
AmountCurrency
An amount and a currency.
Property | Type | Description |
---|---|---|
amount |
integer
|
Minor currency value of an amount of money. Example: |
currency |
string
|
ISO 4217 currency code, three uppercase letters. Example: |
BankAccount
Information about a bank account.
Property | Type | Description |
---|---|---|
account_holder |
string
|
The account holder of the bank account. Example: |
bank_name |
string |
Name of the bank. Example: |
bic |
string
|
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: |
iban |
string
|
The international bank account number of the bank account. Example: |
CallbackExtensions
Property | Type | Description |
---|---|---|
accounts |
Array[PSD2AccountDetails] |
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: |
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
|
Transaction reference number of the backend system. Example: |
back_rc |
string
|
Response code of a backend system, for example the GICC response code. Example: |
basket_id |
string |
The shopping basket number as submitted in the initial request. Example: |
client_id |
string
|
The client ID used to calculate the signature. Example: |
event_id |
string
|
A unique ID for the event. Example: |
extensions |
||
kind |
string
|
The type of transaction. |
message |
string
|
Success or error message, text for the response code. Example: |
rc |
string
|
Response code of the transaction. "0" in the case of a successful transaction. Other values signify errors. Example: |
riskmanagement_info |
||
timestamp |
string
|
Timestamp of the transaction. |
transaction_info |
||
tx_action |
string
|
The action of a transaction. |
tx_id |
string |
Unique transaction identifier. Can be used to reference this transaction. Example: |
CommonAddress
Address data as applicable to most use cases.
Property | Type | Description |
---|---|---|
address_line_1 |
string
|
An address line. Example: |
address_line_2 |
string
|
An address line. For 3DS this maps to additional1. Example: |
address_line_3 |
string
|
An address line. For 3DS this maps to additional2. Example: |
city |
string
|
City of the address. Example: |
company_name |
string
|
Name of the company. Example: |
country |
string
|
The ISO 3166 Alpha-2 country code (upper case) of the individual’s homeland. Example: |
string
|
Email address of the individual. Example: |
|
extensions |
Service specific address fields. |
|
first_name |
string
|
First name of the individual. Example: |
last_name |
string
|
Last name of the individual. Example: |
phone_contact |
A means of contacting a customer by phone. |
|
postal_code |
string
|
Postal code of the address. Example: |
state |
string
|
State or province of the address. Example: |
street |
string |
The street. Example: |
street_number |
string |
The street number. Example: |
title |
string
|
Customer’s title. Example: |
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
|
The credit card brand. The use of this field requires an explicit activation. Please contact customer support. Possible values:
Example: |
cardholder |
string
|
The holder of a credit card. Example: |
expiry_date |
|
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
|
The credit card number (Primary Account Number). It is sometimes masked in response messages, for example 411111**1111. Example: |
ExpiryDate
The credit card expiry date.
Property | Type | Description |
---|---|---|
month |
integer
|
The credit card expiry month. Example: |
year |
integer
|
The credit card expiry year. Example: |
PSD2Account
Property | Type | Description |
---|---|---|
bban |
string |
Used for payment accounts which have no IBAN. |
currency |
string
|
ISO 4217 currency code, three uppercase letters. Example: |
iban |
string
|
The international bank account number of the bank account. Example: |
masked_pan |
string
|
Primary Account Number (PAN) of a card in a masked form. |
msisdn |
string
|
An alias to access a payment account via a registered mobile phone number. |
pan |
string
|
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
|
ISO 4217 currency code, three uppercase letters. Example: |
details |
string
|
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: |
name |
string
|
Name of the account given by the bank or the PSU in online-banking. |
owner_name |
string
|
Name(s) of the account owner(s). |
product |
string
|
Product name of the bank for this account, proprietary definition. |
status |
string
|
Status of the account
|
transactions |
Array[PSD2Transaction] |
|
usage |
string
|
Specifies the usage of the account
|
PSD2Balance
Property | Type | Description |
---|---|---|
amount |
|
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
|
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: |
reference_date |
string
|
Indicates the date of the balance. Full-date notation as defined by RFC 3339, section 5.6. Example: |
type |
string
|
The following balance types are excluding credit limits unless the
Example: |
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
|
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: |
target_currency |
string
|
Currency into which an amount is to be converted in a currency conversion. Example: |
unit_currency |
string
|
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: |
PSD2Remittance
Property | Type | Description |
---|---|---|
reference |
string
|
|
reference_issuer |
string
|
|
reference_type |
string
|
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 |
|
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
|
The date when an entry is posted to an account on the ASPSPs books. |
booking_status |
string
|
Booking status of a transaction
Example: |
check_id |
string
|
Identification of a check. |
creditor_account |
||
creditor_agent |
string
|
A BIC. Example: |
creditor_id |
string
|
Identification of creditors, for example, a SEPA Creditor ID. Example: |
creditor_name |
string
|
Name of the creditor of a "debited" transaction. |
currency_exchange |
Array[PSD2CurrencyExchange] |
|
debtor_account |
||
debtor_agent |
string
|
A BIC. Example: |
debtor_name |
string
|
Name of the debtor of a "credited" transaction. |
end_to_end_id |
string
|
Unique end to end identifier. |
entry_reference |
string |
Entry reference, for example from camt.052 message. |
mandate_id |
string
|
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 |
Array[PSD2Remittance] |
|
remittance_information_unstructured |
Array[string] |
Unstructured remittance information. |
ultimate_creditor |
string
|
Name of the ultimate creditor of a "debited" transaction. |
ultimate_debtor |
string
|
Name of the ultimate debtor of a "credited" transaction. |
value_date |
string
|
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
|
A phone number in its canonical international E.164 numbering plan format. Example: |
phone_type |
string
|
The phone type.
Example: |
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: |
reason |
string |
The reason why the request was rejected. Example: |
RiskmanErrorInformation
Detailed error information including fields which had been the reasons for unsuccessful processing.
Property | Type | Description |
---|---|---|
error_field_information |
Array[RiskmanErrorFieldInformation] |
Detailed field level information regarding the reason why the request was rejected. |
error_message |
string |
The reason why the request was rejected. Example: |
error_reason |
string |
The reason why the request was rejected from the backend system. Example: |
error_status |
string |
The status why the request was rejected from the backend system. Example: |
RiskmanagementInfoResponse
Property | Type | Description |
---|---|---|
case_priority |
string |
Riskcheck information regarding the case priority. Example: |
error_information |
Detailed error information including fields which had been the reasons for unsuccessful processing. |
|
event_id |
string
|
A unique ID for the event. Example: |
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: |
profile_destination_queue |
string |
Riskcheck information regarding the profile destination queue of the risk check. Example: |
profile_name |
string |
Riskcheck information regarding the profile of the risk check. Example: |
profile_selectorrule |
string |
Riskcheck information regarding the profile selector rule risk check. Example: |
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: |
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: |
travel_actual_final_dst_country |
string |
Actual country of final destination of the travel. Example: |
travel_actual_final_dst_locality |
string |
Actual city of final destination of the travel. Example: |
travel_first_departure_country |
string |
First departure country of the travel. Example: |
travel_first_departure_locality |
string |
First departure city of the travel. Example: |
tx_risk_status |
string |
Status result of an external risk management transaction. See user guide for all possible values. Example: |
tx_scoring_id |
string |
Unique scoring transaction identifier. Can be used to reference the depending scoring transaction. Example: |
utc_time |
string |
Riskcheck information regarding the UTC time of the risk check, used in error cases. Example: |
RtPCallbackData
Request to Pay related data.
Property | Type | Description |
---|---|---|
payment_product |
string
|
Request to Pay payment product.
Example: |
SettledDebtorAccount
Property | Type | Description |
---|---|---|
account_holder |
string |
The name of the account holder. Example: |
iban |
string
|
The international bank account number of the bank account. Example: |
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
|
3-D Secure 2: ARes card holder information. |
tds_ares_error_code |
string
|
3-D Secure 2: ARes error code. |
tds_ares_error_component |
string
|
3-D Secure 2: ARes error component. |
tds_ares_error_description |
string
|
3-D Secure 2: ARes error description. |
tds_ares_error_detail |
string
|
3-D Secure 2: ARes error detail. |
tds_ares_trans_status |
string
|
3-D Secure 2: ARes transaction status. Example: |
tds_ares_trans_status_reason |
string
|
3-D Secure 2: reason for the ARes transaction status. Example: |
tds_auth_level |
string
|
The 3D-Secure transaction status.
Example: |
tds_rreq_challenge_cancel_indicator |
string
|
Optional 3-D Secure 2 response parameter. Example: |
tds_rreq_error_code |
string
|
3-D Secure 2: RReq error code. |
tds_rreq_error_component |
string
|
3-D Secure 2: RReq error component. |
tds_rreq_error_description |
string
|
3-D Secure 2: RReq error description. |
tds_rreq_error_detail |
string
|
3-D Secure 2: RReq error detail. |
tds_rreq_trans_status |
string
|
3-D Secure 2: RReq transaction status. |
tds_rreq_trans_status_reason |
string
|
3-D Secure 2: reason for the RReq transaction status. Example: |
tds_version |
string
|
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
|
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:
Example: |
credit_card |
Information about a credit card. |
|
cvc_result |
string
|
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:
Example: |
recurring_payment |
string
|
Identifier of a recurring credit card payment. Example: |
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
|
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:
Example: |
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
|
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
|
SHA-256 hash of the message body. Example: |
Signature |
string
|
HMAC-256 signature. The values of the "Digest", "X-RequestDate" and "X-RandomValue" headers
are concatenated. The signature is calculated using the Example: |
X-RandomValue |
string
|
A random value; part of the signature input. Example: |
X-RequestDate |
string
|
Current timestamp formatted according to RFC 7231, section 7.1.1.2; part of the signature input. Example: |
Request Body (required)
Type | Content-Type |
---|---|
|
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 |
|
Acknowledges the receipt of the callback. |
|
400 |
|
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: |
booking_amount |
integer
|
The booking amount of the SDD return in eurocents. Includes fees if they are not booked separately. Example: |
booking_date |
string
|
Booking date of the SDD return. |
end_to_end_id |
string |
The end to end ID of the original transaction. Example: |
event_id |
string |
A unique ID for the event. Use the same value as in the predecessor transaction the current transaction relates to. Example: |
fee_customerbank |
integer
|
The fee by the customer’s bank for the SDD return in eurocents. Only set if the fee is not booked separately. Example: |
fee_merchantbank |
integer
|
The fee by the merchant’s bank for the SDD return in eurocents. Only set if the fee is not booked separately. Example: |
iban_customer |
string |
IBAN of the customer account. Example: |
iban_merchant |
string |
IBAN of the merchant account. Example: |
original_amount |
integer
|
Amount of original transaction in eurocents. Example: |
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: |
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: |
tx_id |
string |
A reference to the original transaction. Example: |
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 |
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
-
Wero: Editorial improvements, corrections, and clarification.
-
Widget Solution: New events
onCancel
,onError
, andonSuccess
are offered which may simplify integration. These are described in Necessary HTML and JavaScript.
2.1.91.0 2025-08-15
-
Wero: DB Merchant Solutions REST API supports the payment method Wero.
-
SEPA Direct Debit (SDD): Clarification on the parameter
mandate_sequence_type
, see SEPA mandate management.
-
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".
-
Bugfix in Form service: When using the checkout request for TWINT, Przelewy24 (P24), WeChat Pay, or iDEAL with a transaction kind other than
authorization
, the correct response code 1323 is now returned.
-
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 kindtx_action
set toverify-mop
. This endpoint creates a billing agreement without an initial transaction. Now, the corresponding transaction is identified by anevent_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 fieldmerchant_information.extensions
(where available). This may contain a merchant specific information for the corresponding transaction.
2.1.87.0 2025-06-20
-
Improvement in Form service: A button has been added to the hosted pages of Form service to increase contrast and comply with WCAG 2.1 accessibility rules.
-
Form service: Corrections and clarification concerning Redirect after the transaction, esp. for Creating a payment link.
-
Bugfix in Alias: A bank account alias can’t anymore be deleted using the delete credit card alias endpoint and vice versa.
-
Bugfix in Form service: A missing field "shipping_costs" in a basket of type
PHYSICAL
now results in the correct response code 1323.
2.1.86.0 2025-06-06
-
Apple Pay: Changed some URLs containing Apple Pay on the Web where the location changed permanently.
2.1.85.0 2025-05-23
-
TWINT is supported by the checkout page of Form service.
-
Anti Financial Crime check: Correction of response codes in some cases where the transaction has been blocked due to restrictions on the delivery country.
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
-
PayPal now supports recurring payments within Form service (see Recurring payments).
-
Google Pay: Clarification on test data (see Google Pay test data).
-
Forms: Removed endpoints and configuration concerning the disabled payment methods giropay and Sofortüberweisung.
-
PayPal: Bugfix to provide the correct response code for cancelled transaction for version v2.
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
andmerchant_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
isPHYSICAL
orMIXED
.
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 thebasket_type
isDIGITAL
.
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
-
Important: The payment method giropay has been discontinued. It should not be offered to customers anymore.
-
Important: The payment method Sofortüberweisung has been disabled. It should not be offered to customers anymore.
-
Improvement in iDEAL: The response of the diagnosis request now contains the
back_rc
(see Checking the transaction status). -
Diagnosis request: Clarification on interpreting the diagnosis request, especially the diagnosis request for PayPal.
-
Apple Pay onboarding: The process of domain verification has been clarified.
-
Editorial changes in Form service: Moved payment method specific courses of transaction to corresponding payment methods in Payment methods (PayPal and Sofortüberweisung). Also clarified on Diagnosis request. Provided clarification on several details.
-
User guide: Clarification in Transactions kind details, especially in Diagnosis request.
-
Several sequence diagrams: Provided labels where missing (for example Course of transaction in Form service).
2.1.75.0 2025-01-03
-
Request to Pay (RtP): More specific return codes are used for "Service blocked for bank account." and "Incorrect state of referenced transaction." (see RtP response codes).
-
iDEAL: Clarification on Course of transaction.
-
iDEAL: For some technical errors or communication failures with the iDEAL backend, the more specific response code 1105 is returned (instead of 1547). For authorization problems the specific response code 1545 is returned (see Response codes).
-
PayPal: Clarification on response codes in the callback request (see Callback and transaction result).
-
Widget Solution: Widget Solution supports recurring payments without initial transaction.
2.1.74.0 2024-12-06
-
Important: The payment method giropay is discontinued at 2024-12-31. Within DB Merchant Solutions REST API, the respective endpoints are available until further notice, but payments are no longer possible from then on.
-
Bug fix in Form service:
notify_url
in the fieldcallback
can be omitted if"skip": true
is set, for all payment methods. -
Widget Solution: Widget Solution supports recurring payments with initial transaction.
-
Widget Solution: Further editorial improvements.
-
Credit card transactions, PayPal: Editorial changes to clarify the relation between the Flow of a 3DS transaction and the course of a Google Pay transaction.
2.1.73.0 2024-11-22
-
Required and optional fields for SDD: Clarification on debtor’s BIC for non-EU countries.
-
Request to Pay (RtP): Correction concerning the availability of callback mechanism.
-
Checking the transaction status: Clarification on using the diagnosis request.
-
Widget Solution: Widget Solution supports payment method Apple Pay.
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
-
Introduction: Added an architectural overview.
-
Multi-currency pricing (MCP): Clarification on multi currency pricing.
-
Widget Solution: Clarification on integration scenarios.
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
-
Aliases: Aliases of Mastercard credit cards are deleted when the merchant server is notified that the respective credit card account is closed.
-
Verifying callback requests: Clarified which client key is used for callbacks.
-
Callback and diagnosis request: Clarification on failure of callback request and use of diagnosis request.
-
Widget Solution: Updated JavaScript reference.
2.1.67.0 2024-08-30
-
Form service creditcard: New label
LABEL_NAME_ON_CARD
to customize the default textCardholder
. -
Choosing an integration type: Added an example showing the functionality provided by the SDKs.
-
Callback API: Added examples for callback requests for Request to Pay and iDEAL.
-
Getting started: Clarified the use of complex types.
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
-
Credit card transactions: Starting from 2024-08-12 the stricter rules for credit card transactions (using the 3-D Secure protocol) are applied, see 3DS required fields. From this time, the test system will apply the stricter rules for the cards given in Test data. The customer-side validation already is in place.
-
Widget Solutions: Clarified
paypal_shipping_preference
in Create session. -
PCI DSS compliance: Clarified transition to version 4.0.
-
PayPal prerequisites: Clarified need of PayPal merchant ID.
2.1.64.0 2024-07-19
-
Shop plug-ins: A new version of the shop plug-ins is available. The new version also supports the payment methods Apple Pay, Google Pay, and iDEAL.
-
Widget Solutions: Bug fix concerning the behaviour of
onShippingAddressChanged
,onShippingOptionChanged
. -
Widget Solutions: Clarified events
onShippingAddressChanged
andonShippingOptionChanged
.
2.1.63.0 2024-07-05
-
Bug fix: The PayPal diagnosis request (see Diagnosis request) has been fixed.
-
Form service: The sorting order and layout concerning Google Pay has been changed.
-
PayPal: Clarified transaction kinds.
-
API version, test and production, and base URLs: Clarified test and production environments.
2.1.62.0 2024-06-21
-
Response codes: Clarified groups of response codes.
-
Apple Managed Integration: Updated domain verification files, clarified accessibility, clarified onboarding process.
2.1.61.0 2024-06-07
-
-
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 to0000000000
-
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
-
-
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 subfieldsgooglepay_country_code
,googlepay_domain_name
, andgooglepay_merchant_id
are required. -
-
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
, andmerchant_data_3
all have a maximum length of 255.
2.1.58.0 2024-04-26
-
-
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.
-
-
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.
-
-
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 suppressingshipping_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 ofcustomer_data.home_phone_number
,customer_data.mobile_phone_number
, orcustomer_data.work_phone_number
and its subfieldscountry
andregional
.
-
-
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
. -
-
Added information on the use of cookies.
-
Added information for credit card transactions about 3DS required fields and the uplift feature.
-
-
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 parameterreference
is required. -
Creditcard 3DS required fields: Clarified that the parameter
state
is required only whencountry
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.
-
-
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
. -
-
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
-
Using a payment link: Clarified that
checkout_page_configuration
is required. -
Multi-currency pricing (MCP): Clarified example.
2.1.42.0 2023-09-29
-
New feature Multi-currency pricing (MCP)
-
-
Added basket ID requirement, clarified mandatory and optional fields.
-
Added diagnosis via
event_id
.
-