Guaranteed Direct Debit by Wirecard

REST API & Wirecard Payment Page v1

Guaranteed Direct Debit is a type of Offline Bank Transfer.

Countries and Currencies

Countries

DE, AT, CH
on Payment Page environment: DE only

Currencies

EUR, CHF

Communication Formats

This table illustrates how Guaranteed Direct Debit notifications are encoded and which formats and methods can be used for requests and responses.

Requests/Responses

Format

XML

Methods

POST

IPN Encodement

NVP (plain text)

Transaction Types

For transaction type details which are not given here, look at Transaction Types.

Transaction Type Description Link to samples

authorization

Performs a creditworthiness check at the moment when consumer makes an order. All order items must be listed for the shopping basket. The authorization amount must match the value of the items in the basket.

Direct Debit samples

capture-authorization

Used to capture the reserved funds at the moment when some or all goods are physically delivered to the consumer. Available only on successful authorization response which wasn’t voided nor fully captured. Partial (and multiple) capture is allowed, until the authorization limit is not exceeded. Basket items only lists the items that were delivered to the consumer in this delivery, not the ones that were delivered before or are waiting to be delivered. The total amount of the capture must be the value of the items in the basket.

Direct Debit samples

void-authorization

Used when the consumer wishes to cancel some or all (not yet shipped) items from the order. Available only for a successful authorization response which was not yet voided or captured. Partial and multiple void are allowed, until all items from the order are canceled or shipped. Basket items only list those items which are being canceled from the order.

Direct Debit samples

refund-capture

Used when the consumer wishes to return some or all delivered goods. Available on a successful capture-authorization. Partial and multiple refunds are allowed, until all delivered items have been returned. Basket items list only those items which are being returned to the merchant.

Direct Debit samples

credit

Used when merchant wishes to grant a discount on an existing order. Items from this order may already be delivered to the consumer. Available on a successful capture-authorization. Multiple credits are allowed, but the overall sum of credits may not exceed the value of the delivered goods to the consumer. The credit transaction must include a basket item representing the discount. The credit transaction must refer to the successful authorization transaction ID.

Direct Debit samples

  1. Basket items must be specified in every request.

  2. The response for each authorization request returns an individual string (an alphanumerical code, starting with DG) in the field descriptor.

  3. The descriptor must be printed on all invoice documents and saved by the shop (used by consumers in bank transfers; German:"Verwendungszweck").­­

  4. capture-authorization transactions have to follow a successful authorization on the same day the goods are dispatched.

  5. The period between authorization and the first capture-authorization must be at least 4 hours.

  6. Merchants can request partial capture-authorizations if the goods are shipped in separate shipments.

Test Credentials

URLs (Endpoints)

For transaction type authorization

https://api-test.wirecard.com/engine/rest/paymentmethods

For transaction types capture-authorization, refund-capture, void-authorization and credit

https://api-test.wirecard.com/engine/rest/payments

Merchant Account ID (MAID)

3cfb0fb7-59e2-4d92-847f-37121d633844

Username

16390-testing

Password

3!3013=D3fD8X7

Secret Key

cf0b29fc-a6ab-474d-b6be-92e9596e9107

Workflow
Standard Process
Guaranteed Direct Debit
Guaranteed Direct Debit Workflow
  1. Consumer adds items to shopping basket.

  2. Consumer selects the payment method Guaranteed Direct Debit.

  3. Merchant sends an authorization request including items to Wirecard.

  4. Merchant receives an authorization response, including the descriptor (an alphanumerical code, starting with DG).

  5. Merchant sends a capture request to Wirecard when the items are ready for delivery.

  6. After a successful capture request, Wirecard or Merchant generates the invoice, including the descriptor (an alphanumerical code, starting with DG).

  7. Wirecard Bank collects the transaction amount from consumer’s bank account.

  8. If any payment changes are necessary, the following transaction types are available: credit, refund-capture or void-authorization.

Fields

The following elements are mandatory M, optional O or conditional C for sending a request for Guaranteed Direct Debit (complete field list available in REST API field list):

Field Cardinality Datatype Size Description
payment
merchant-account-id

M

Alphanumeric

36

Unique identifier for a merchant account

request-id

M

Alphanumeric

150

This is the identification number of the request. It has to be unique for each request.

transaction-type

M

Alphanumeric

30

This is the type for a transaction: authorization, capture, void-authorization, refund-capture and credit are supported for Guaranteed Direct Debit.

requested-amount

M

Numeric

18,3

This is the amount of the transaction. The amount of the decimal place depends on the currency. The amount must be between a defined minimum value and a defined maximum value.

requested-amount@currency

M

This is the currency of the transaction. For Germany and Austria, only EUR is allowed. Switzerland additionally accepts CHF.

order-detail

O

Alphanumeric

65535

Details of the order filled by the merchant.

order-number

M

Alphanumeric

64

The order number from the merchant.

consumer-id

O

Alphanumeric

Merchant’s identifier for the consumer.

invoice-id

O

Alphanumeric

Merchant’s invoice identifier.

creditor-id

M

Alphanumeric

Wirecard Bank creditor identifier, provided by Wirecard Support

locale

O

Alphanumeric

It is used to control the language of the consumer message and the correspondence to the consumer. Allowed values: fr, en, nl, de. If empty or with wrong value, German language is used by default. The same logic applies for Payment Page integration.

payment-methods
payment-methods.payment-method@name

M

Alphanumeric

15

The name of the Payment Method is ratepay-elv.

account-holder
account-holder.first-name

M

Alphanumeric

account-holder.last-name

M

Alphanumeric

account-holder.email

M

Alphanumeric

account-holder.phone

M

Alphanumeric

account-holder.date-of-birth

M

Alphanumeric

account-holder.gender

O

Token

account-holder.address
account-holder.address.street1

M

Alphanumeric

Must include house number.

account-holder.address.street2

O

Alphanumeric

account-holder.address.city

M

Alphanumeric

account-holder.address.state

O

Alphanumeric

account-holder.address.country

M

Token

account-holder.address.postal-code

M

Alphanumeric

bank-account

Consumer’s bank account details.

bank-account.bank-name

M

Alphanumeric

bank-account.iban

C

Alphanumeric

Mandatory if account-number is not used

bank-account.bic

C

Alphanumeric

Mandatory if iban is used

bank-account.account-number

C

Alphanumeric

Mandatory if iban is not used

bank-account.bank-code

C

Alphanumeric

Mandatory if account-number is used

order-items
order-items.order-item.name

M

Alphanumeric

Name of the item in the basket.

order-items.order-item.article-number

M

Alphanumeric

EAN or other article identifier for merchant.

order-items.order-item.amount

M

Number

Item’s price per unit.

order-items.order-item.tax-rate

M

Number

Item’s tax rate per unit.

order-items.order-item.quantity

M

Number

Total count of items in the order.

shipping

Shipping fields have to match the billing address (specified as account-holder).

shipping/first-name

O

Alphanumeric

shipping/last-name

O

Alphanumeric

shipping/phone

O

Alphanumeric

shipping/address

Shipping/address fields have to match the billing address (specified as account-holder.address).

shipping/address/street1

O

Alphanumeric

shipping/address/street2

O

Alphanumeric

shipping/address/city

O

Alphanumeric

shipping/address/state

O

Alphanumeric

shipping/address/country

O

Alphanumeric

shipping/address/postal-code

O

Alphanumeric

device
device/fingerprint

C

Alphanumeric

Device fingerprinting token that was used in merchant’s online shop to track this transaction. It is mandatory for authorization.

mandate
mandate.mandate-id

M

Alphanumeric

Mandate ID will be generated by Wirecard. Please use the following statement as placeholder: "Wird nach Kaufabschluss übermittelt"

Features
Bank Account Details

consist either of

  • account-owner, bank-name, account-number and bank-code
    or

  • account-owner, bank-name, iban and bic for SEPA standard.

Account holder details must cover first-name, last-name, email, phone, date-of-birth, address and gender. An address within the account holder details must include street1 (including house number), city, country and postal-code.
Shipping address has to match the billing address.
Basket Items Details

Basket items details must be sent along with every request. Content of the shopping basket depends on the location of the items. There can be 3 different locations:

  • the (distribution) storage of the merchant,

  • the delivery (items are „on the road"); and

  • home of the consumer.

The shopping basket always contains the items that are being authorized (ordered), captured (delivered), voided (canceled), refunded (returned) or credited depending to the transaction type.

The detailed items of the shopping basket will be stored as a part of payment details on provider and they can be obtained from Wirecard Payment Gateway later as part of transaction details.

Field Cardinality Req/Resp Datatype Description
order-items.order-item.name

M

Alphanumeric

Name of the item in the basket.

order-items.order-item.article-number

M

Alphanumeric

EAN or other article identifier for merchant.

order-items.order-item.amount

M

Number

Item’s price per unit.

order-items.order-item.tax-rate

M

Number

Item’s tax rate per unit.

order-items.order-item.quantity

M

Number

Total count of items in the order.

Regular Consumers

Regular consumers who pay their bills on time are important capital for each merchant. With Wirecard, merchants can use this capital as a payment method.

To accomplish that, merchants submit a list with the order and payment history of their consumers to Wirecard.

Here you can find which format (and content) you need for the list and how to upload it.

Consent to General Terms and Conditions

During checkout, the consumer has to agree to Wirecard’s general terms and conditions. They have to give their consent by ticking an appropriate checkbox.

Language Check-box text Correct links

English

I herewith confirm that I have read the privacy notice and additional terms and conditions for Wirecard payment types and that I accept their validity.

Deutsch

Hiermit bestätige ich, dass ich die Datenschutzhinweise und zusätzlichen Geschäftsbedingungen für Wirecard-Zahlarten zur Kenntnis genommen habe und mit deren Geltung einverstanden bin.

Make sure that the privacy notice and the additional terms and conditions are linked properly.

Additional business conditions

When the consumers use Guaranteed Direct Debit, payments with debt discharging effect can be made solely to Wirecard.

Samples

Click here for corresponding notification samples.

Guaranteed Direct Debit
authorization
XML authorization Request (Successful)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
  <merchant-account-id>3cfb0fb7-59e2-4d92-847f-37121d633844</merchant-account-id>
  <request-id>{{$guid}}</request-id>
  <transaction-type>authorization</transaction-type>
  <payment-methods>
    <payment-method name="ratepay-elv" />
  </payment-methods>
  <requested-amount currency="EUR">400</requested-amount>
  <order-number>180801111842579</order-number>
  <mandate>
    <mandate-id>Wird nach dem Kauf uebermittelt</mandate-id>
    <signed-date>08-02-2017</signed-date>
  </mandate>
  <creditor-id>DE98ZZZ09999999999</creditor-id>
  <account-holder>
    <first-name>John</first-name>
    <last-name>Doe</last-name>
    <email>John@doe.de</email>
    <phone>03018425165</phone>
    <date-of-birth>27-12-1973</date-of-birth>
    <address>
      <street1>Nicht versenden Weg 12</street1>
      <city>Berlin</city>
      <state>Berlin</state>
      <country>DE</country>
      <postal-code>13353</postal-code>
    </address>
  </account-holder>
  <bank-account>
    <bank-name>Danske Bank Hamburg</bank-name>
    <iban>DE99203205004989123456</iban>
    <bic>DABADEHHXXX</bic>
  </bank-account>
  <order-items>
    <order-item>
      <name>Denim 753 Blue 27/32</name>
      <article-number>1</article-number>
      <amount currency="EUR">150</amount>
      <tax-rate>19</tax-rate>
      <quantity>1</quantity>
    </order-item>
    <order-item>
      <name>Women V-Neck S</name>
      <article-number>12</article-number>
      <amount currency="EUR">50</amount>
      <tax-rate>19</tax-rate>
      <quantity>1</quantity>
    </order-item>
    <order-item>
      <name>Sneakers Size 44</name>
      <article-number>123</article-number>
      <amount currency="EUR">200</amount>
      <tax-rate>19</tax-rate>
      <quantity>1</quantity>
    </order-item>
  </order-items>
  <locale>de</locale>
</payment>
XML authorization Response (Successful)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment" xmlns:ns2="http://www.elastic-payments.com/schema/epa/transaction">
  <merchant-account-id>3cfb0fb7-59e2-4d92-847f-37121d633844</merchant-account-id>
  <transaction-id>f1ed56d2-08f5-40d8-8b82-82b405cfc3c6</transaction-id>
  <request-id>c765ff24-cbe7-45a3-98a1-e5bfd149b7cd</request-id>
  <transaction-type>authorization</transaction-type>
  <transaction-state>success</transaction-state>
  <completion-time-stamp>2018-08-01T09:18:43.000Z</completion-time-stamp>
  <statuses>
    <status code="201.0000" description="The resource was successfully created." severity="information" />
  </statuses>
  <requested-amount currency="EUR">400</requested-amount>
  <account-holder>
    <first-name>John</first-name>
    <last-name>Doe</last-name>
    <email>John@doe.de</email>
    <phone>03018425165</phone>
    <address>
      <street1>Nicht versenden Weg 12</street1>
      <city>Berlin</city>
      <state>Berlin</state>
      <country>DE</country>
      <postal-code>13353</postal-code>
    </address>
  </account-holder>
  <order-number>180801111842579</order-number>
  <order-items>
    <order-item>
      <name>Denim 753 Blue 27/32</name>
      <article-number>1</article-number>
      <amount currency="EUR">150</amount>
      <tax-rate>19</tax-rate>
      <quantity>1</quantity>
    </order-item>
    <order-item>
      <name>Women V-Neck S</name>
      <article-number>12</article-number>
      <amount currency="EUR">50</amount>
      <tax-rate>19</tax-rate>
      <quantity>1</quantity>
    </order-item>
    <order-item>
      <name>Sneakers Size 44</name>
      <article-number>123</article-number>
      <amount currency="EUR">200</amount>
      <tax-rate>19</tax-rate>
      <quantity>1</quantity>
    </order-item>
  </order-items>
  <descriptor>DK0073651G0</descriptor>
  <payment-methods>
    <payment-method name="ratepay-elv" />
  </payment-methods>
  <bank-account>
    <bank-name>Danske Bank Hamburg</bank-name>
    <iban>DE99203205004989123456</iban>
    <bic>DABADEHHXXX</bic>
  </bank-account>
  <mandate>
    <mandate-id>Wird nach dem Kauf uebermittelt</mandate-id>
    <signed-date>08-02-2017</signed-date>
  </mandate>
  <creditor-id>DE98ZZZ09999999999</creditor-id>
  <locale>de</locale>
</payment>
capture-authorization
XML capture-authorization Request (Successful)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
  <merchant-account-id>3cfb0fb7-59e2-4d92-847f-37121d633844</merchant-account-id>
  <request-id>{{$guid}}</request-id>
  <transaction-type>capture-authorization</transaction-type>
  <payment-methods>
    <payment-method name="ratepay-elv" />
  </payment-methods>
  <requested-amount currency="EUR">200</requested-amount>
  <parent-transaction-id>f1ed56d2-08f5-40d8-8b82-82b405cfc3c6</parent-transaction-id>
  <order-items>
    <order-item>
      <name>Denim 753 Blue 27/32</name>
      <article-number>1</article-number>
      <amount currency="EUR">150</amount>
      <tax-rate>19</tax-rate>
      <quantity>1</quantity>
    </order-item>
    <order-item>
      <name>Women V-Neck S</name>
      <article-number>12</article-number>
      <amount currency="EUR">50</amount>
      <tax-rate>19</tax-rate>
      <quantity>1</quantity>
    </order-item>
  </order-items>
</payment>
XML capture-authorization Response (Successful)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment" xmlns:ns2="http://www.elastic-payments.com/schema/epa/transaction" self="https://api-test.wirecard.com:443/engine/rest/merchants/3cfb0fb7-59e2-4d92-847f-37121d633844/payments/674f05af-b289-4e7a-99e3-1ee799c53151">
  <merchant-account-id ref="https://api-test.wirecard.com:443/engine/rest/config/merchants/3cfb0fb7-59e2-4d92-847f-37121d633844">3cfb0fb7-59e2-4d92-847f-37121d633844</merchant-account-id>
  <transaction-id>674f05af-b289-4e7a-99e3-1ee799c53151</transaction-id>
  <request-id>0d32afa6-492a-4228-9edf-169df8ab15db</request-id>
  <transaction-type>capture-authorization</transaction-type>
  <transaction-state>success</transaction-state>
  <completion-time-stamp>2018-08-01T09:20:30.000Z</completion-time-stamp>
  <statuses>
    <status code="201.0000" description="ratepay:The resource was successfully created." severity="information" />
  </statuses>
  <requested-amount currency="EUR">200</requested-amount>
  <parent-transaction-id>f1ed56d2-08f5-40d8-8b82-82b405cfc3c6</parent-transaction-id>
  <account-holder>
    <first-name>John</first-name>
    <last-name>Doe</last-name>
    <email>John@doe.de</email>
    <phone>03018425165</phone>
    <address>
      <street1>Nicht versenden Weg 12</street1>
      <city>Berlin</city>
      <state>Berlin</state>
      <country>DE</country>
      <postal-code>13353</postal-code>
    </address>
  </account-holder>
  <order-number>180801111842579</order-number>
  <order-items>
    <order-item>
      <name>Denim 753 Blue 27/32</name>
      <article-number>1</article-number>
      <amount currency="EUR">150</amount>
      <tax-rate>19</tax-rate>
      <quantity>1</quantity>
    </order-item>
    <order-item>
      <name>Women V-Neck S</name>
      <article-number>12</article-number>
      <amount currency="EUR">50</amount>
      <tax-rate>19</tax-rate>
      <quantity>1</quantity>
    </order-item>
  </order-items>
  <descriptor>DK0073651G0</descriptor>
  <payment-methods>
    <payment-method name="ratepay-elv" />
  </payment-methods>
  <parent-transaction-amount currency="EUR">400.000000</parent-transaction-amount>
  <mandate>
    <mandate-id>Wird nach dem Kauf uebermittelt</mandate-id>
    <signed-date>08-02-2017</signed-date>
  </mandate>
  <creditor-id>DE98ZZZ09999999999</creditor-id>
  <api-id>elastic-api</api-id>
  <locale>de</locale>
  <provider-account-id>000000317406A011</provider-account-id>
</payment>
refund-capture
XML refund-capture Request (Successful)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
    <merchant-account-id>3cfb0fb7-59e2-4d92-847f-37121d633844</merchant-account-id>
    <request-id>{{$guid}}</request-id>
    <transaction-type>refund-capture</transaction-type>
    <payment-methods>
        <payment-method name="ratepay-elv" />
    </payment-methods>
    <requested-amount currency="EUR">50</requested-amount>
    <parent-transaction-id>674f05af-b289-4e7a-99e3-1ee799c53151</parent-transaction-id>
    <order-items>
    <order-item>
      <name>Women V-Neck S</name>
      <article-number>12</article-number>
      <amount currency="EUR">50</amount>
      <tax-rate>19</tax-rate>
      <quantity>1</quantity>
    </order-item>
    </order-items></payment>
XML refund-capture Response (Successful)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment" xmlns:ns2="http://www.elastic-payments.com/schema/epa/transaction" self="https://api-test.wirecard.com:443/engine/rest/merchants/3cfb0fb7-59e2-4d92-847f-37121d633844/payments/037d379c-d168-4088-9af5-c231f03290c6">
  <merchant-account-id ref="https://api-test.wirecard.com:443/engine/rest/config/merchants/3cfb0fb7-59e2-4d92-847f-37121d633844">3cfb0fb7-59e2-4d92-847f-37121d633844</merchant-account-id>
  <transaction-id>037d379c-d168-4088-9af5-c231f03290c6</transaction-id>
  <request-id>97cddb7d-7d92-44c3-9032-836574b84eb1</request-id>
  <transaction-type>refund-capture</transaction-type>
  <transaction-state>success</transaction-state>
  <completion-time-stamp>2018-08-01T09:23:08.000Z</completion-time-stamp>
  <statuses>
    <status code="201.0000" description="ratepay:The resource was successfully created." severity="information" />
  </statuses>
  <requested-amount currency="EUR">50</requested-amount>
  <parent-transaction-id>674f05af-b289-4e7a-99e3-1ee799c53151</parent-transaction-id>
  <account-holder>
    <first-name>John</first-name>
    <last-name>Doe</last-name>
    <email>John@doe.de</email>
    <phone>03018425165</phone>
    <address>
      <street1>Nicht versenden Weg 12</street1>
      <city>Berlin</city>
      <state>Berlin</state>
      <country>DE</country>
      <postal-code>13353</postal-code>
    </address>
  </account-holder>
  <order-number>180801111842579</order-number>
  <order-items>
    <order-item>
      <name>Women V-Neck S</name>
      <article-number>12</article-number>
      <amount currency="EUR">50</amount>
      <tax-rate>19</tax-rate>
      <quantity>1</quantity>
    </order-item>
  </order-items>
  <descriptor>DK0073651G0</descriptor>
  <payment-methods>
    <payment-method name="ratepay-elv" />
  </payment-methods>
  <parent-transaction-amount currency="EUR">200.000000</parent-transaction-amount>
  <api-id>elastic-api</api-id>
  <locale>de</locale>
  <provider-account-id>000000317406A011</provider-account-id>
</payment>
credit
XML credit Request (Successful)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
  <merchant-account-id>3cfb0fb7-59e2-4d92-847f-37121d633844</merchant-account-id>
  <request-id>{{$guid}}</request-id>
  <transaction-type>credit</transaction-type>
  <payment-methods>
    <payment-method name="ratepay-elv" />
  </payment-methods>
  <parent-transaction-id>f1ed56d2-08f5-40d8-8b82-82b405cfc3c6</parent-transaction-id>
  <requested-amount currency="EUR">10</requested-amount>
  <order-items>
    <order-item>
      <name>Nachlass über € 10,00</name>
      <article-number>1</article-number>
      <amount currency="EUR">10</amount>
      <tax-rate>19</tax-rate>
      <quantity>1</quantity>
    </order-item>
  </order-items></payment>
XML credit Response (Successful)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment" xmlns:ns2="http://www.elastic-payments.com/schema/epa/transaction" self="https://api-test.wirecard.com:443/engine/rest/merchants/3cfb0fb7-59e2-4d92-847f-37121d633844/payments/4c2c8bd2-8678-44f5-bcf4-b178c11af8d4">
  <merchant-account-id ref="https://api-test.wirecard.com:443/engine/rest/config/merchants/3cfb0fb7-59e2-4d92-847f-37121d633844">3cfb0fb7-59e2-4d92-847f-37121d633844</merchant-account-id>
  <transaction-id>4c2c8bd2-8678-44f5-bcf4-b178c11af8d4</transaction-id>
  <request-id>ea4fd763-ec62-450c-b797-6ca013e87dbb</request-id>
  <transaction-type>credit</transaction-type>
  <transaction-state>success</transaction-state>
  <completion-time-stamp>2018-08-01T09:22:15.000Z</completion-time-stamp>
  <statuses>
    <status code="201.0000" description="ratepay:The resource was successfully created." severity="information" />
  </statuses>
  <requested-amount currency="EUR">10</requested-amount>
  <parent-transaction-id>f1ed56d2-08f5-40d8-8b82-82b405cfc3c6</parent-transaction-id>
  <account-holder>
    <first-name>John</first-name>
    <last-name>Doe</last-name>
    <email>John@doe.de</email>
    <phone>03018425165</phone>
    <address>
      <street1>Nicht versenden Weg 12</street1>
      <city>Berlin</city>
      <state>Berlin</state>
      <country>DE</country>
      <postal-code>13353</postal-code>
    </address>
  </account-holder>
  <order-number>180801111842579</order-number>
  <order-items>
    <order-item>
      <name>Nachlass ?ber ? 10,00</name>
      <article-number>1</article-number>
      <amount currency="EUR">10</amount>
      <tax-rate>19</tax-rate>
      <quantity>1</quantity>
    </order-item>
  </order-items>
  <descriptor>DK0073651G0</descriptor>
  <payment-methods>
    <payment-method name="ratepay-elv" />
  </payment-methods>
  <parent-transaction-amount currency="EUR">400.000000</parent-transaction-amount>
  <mandate>
    <mandate-id>Wird nach dem Kauf uebermittelt</mandate-id>
    <signed-date>08-02-2017</signed-date>
  </mandate>
  <creditor-id>DE98ZZZ09999999999</creditor-id>
  <api-id>elastic-api</api-id>
  <locale>de</locale>
  <provider-account-id>000000317406A011</provider-account-id>
</payment>
void-authorization
XML void-authorization Request (Successful)
<?xml version="1.0" encoding="utf-8"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
  <merchant-account-id>3cfb0fb7-59e2-4d92-847f-37121d633844</merchant-account-id>
  <request-id>{{$guid}}</request-id>
  <transaction-type>void-authorization</transaction-type>
  <payment-methods>
    <payment-method name="ratepay-elv" />
  </payment-methods>
  <parent-transaction-id>f1ed56d2-08f5-40d8-8b82-82b405cfc3c6</parent-transaction-id>
  <requested-amount currency="EUR">200</requested-amount>
  <account-holder>
    <first-name>John</first-name>
    <last-name>Doe</last-name>
    <email>John@doe.de</email>
    <phone>03018425165</phone>
    <date-of-birth>27-12-1973</date-of-birth>
    <address>
      <street1>Nicht versenden Weg 12</street1>
      <city>Berlin</city>
      <state>Berlin</state>
      <country>DE</country>
      <postal-code>13353</postal-code>
    </address>
  </account-holder>
  <order-items>
    <order-item>
      <name>Sneakers Size 44</name>
      <article-number>123</article-number>
      <amount currency="EUR">200</amount>
      <tax-rate>19</tax-rate>
      <quantity>1</quantity>
    </order-item>
  </order-items>
</payment>
XML void-authorization Response (Successful)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment" xmlns:ns2="http://www.elastic-payments.com/schema/epa/transaction" self="https://api-test.wirecard.com:443/engine/rest/merchants/3cfb0fb7-59e2-4d92-847f-37121d633844/payments/2881a638-1db5-470f-8f94-7a517cc03d55">
  <merchant-account-id ref="https://api-test.wirecard.com:443/engine/rest/config/merchants/3cfb0fb7-59e2-4d92-847f-37121d633844">3cfb0fb7-59e2-4d92-847f-37121d633844</merchant-account-id>
  <transaction-id>2881a638-1db5-470f-8f94-7a517cc03d55</transaction-id>
  <request-id>ac840474-67f2-4873-b3b2-8993e06e4fa3</request-id>
  <transaction-type>void-authorization</transaction-type>
  <transaction-state>success</transaction-state>
  <completion-time-stamp>2018-08-01T09:26:45.000Z</completion-time-stamp>
  <statuses>
    <status code="201.0000" description="ratepay:The resource was successfully created." severity="information" />
  </statuses>
  <requested-amount currency="EUR">200</requested-amount>
  <parent-transaction-id>f1ed56d2-08f5-40d8-8b82-82b405cfc3c6</parent-transaction-id>
  <account-holder>
    <first-name>John</first-name>
    <last-name>Doe</last-name>
    <email>John@doe.de</email>
    <phone>03018425165</phone>
    <address>
      <street1>Nicht versenden Weg 12</street1>
      <city>Berlin</city>
      <state>Berlin</state>
      <country>DE</country>
      <postal-code>13353</postal-code>
    </address>
  </account-holder>
  <order-number>180801111842579</order-number>
  <order-items>
    <order-item>
      <name>Sneakers Size 44</name>
      <article-number>123</article-number>
      <amount currency="EUR">200</amount>
      <tax-rate>19</tax-rate>
      <quantity>1</quantity>
    </order-item>
  </order-items>
  <descriptor>DK0073651G0</descriptor>
  <payment-methods>
    <payment-method name="ratepay-elv" />
  </payment-methods>
  <parent-transaction-amount currency="EUR">400.000000</parent-transaction-amount>
  <mandate>
    <mandate-id>Wird nach dem Kauf uebermittelt</mandate-id>
    <signed-date>08-02-2017</signed-date>
  </mandate>
  <creditor-id>DE98ZZZ09999999999</creditor-id>
  <api-id>elastic-api</api-id>
  <locale>de</locale>
  <provider-account-id>000000317406A011</provider-account-id>
</payment>
authorization Request to Wirecard
deviceIdentToken Transfer
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
  <merchant-account-id>3cfb0fb7-59e2-4d92-847f-37121d633844</merchant-account-id>
  <request-id>{{$guid}}</request-id>
  <transaction-type>authorization</transaction-type>
  <payment-methods>
    <payment-method name="ratepay-elv" />
  </payment-methods>
  <requested-amount currency="EUR">400</requested-amount>
  <order-number>180801122503017</order-number>
  <mandate>
    <mandate-id>Wird nach dem Kauf uebermittelt</mandate-id>
    <signed-date>08-02-2017</signed-date>
  </mandate>
  <creditor-id>DE98ZZZ09999999999</creditor-id>
  <account-holder>
    <first-name>John</first-name>
    <last-name>Doe</last-name>
    <email>John@doe.de</email>
    <phone>03018425165</phone>
    <date-of-birth>27-12-1973</date-of-birth>
    <address>
      <street1>Nicht versenden Weg 12</street1>
      <city>Berlin</city>
      <state>Berlin</state>
      <country>DE</country>
      <postal-code>13353</postal-code>
    </address>
  </account-holder>
  <bank-account>
    <bank-name>Danske Bank Hamburg</bank-name>
    <iban>DE99203205004989123456</iban>
    <bic>DABADEHHXXX</bic>
  </bank-account>
  <order-items>
    <order-item>
      <name>Denim 753 Blue 27/32</name>
      <article-number>1</article-number>
      <amount currency="EUR">150</amount>
      <tax-rate>19</tax-rate>
      <quantity>1</quantity>
    </order-item>
    <order-item>
      <name>Women V-Neck S</name>
      <article-number>12</article-number>
      <amount currency="EUR">50</amount>
      <tax-rate>19</tax-rate>
      <quantity>1</quantity>
    </order-item>
    <order-item>
      <name>Sneakers Size 44</name>
      <article-number>123</article-number>
      <amount currency="EUR">200</amount>
      <tax-rate>19</tax-rate>
      <quantity>1</quantity>
    </order-item>
  </order-items>
  <locale>de</locale>
  <device>
    <fingerprint>DeviceIdentToken</fingerprint>
  </device>
</payment>

Wirecard Payment Page v2

Guaranteed Direct Debit allows the consumer to pay directly from their bank account. The invoicing, direct debit and collection process (dunning) is handled by Wirecard. Guaranteed Direct Debit ensures that merchants receive the payment amount from Wirecard prior to settlement with consumers.

Guaranteed Direct Debit by Wirecard is a type of Offline Bank Transfer.

General Information

Here you find all the information for integrating Guaranteed Direct Debit by Wirecard into your Hosted and Embedded Payment Page.

Want to know more about Wirecard Payment Page v2 (WPP v2)?
Visit one of our integration guides (Hosted Payment Page, Embedded Payment Page) for a quick explanation and a step-by-step guide.

All WPP v2 integrations share a common process flow for creating payments.

Below, we provide sample requests for the transaction type authorization, including a field list with short descriptions.

The samples provided below are designed for the testing environment and do not use real information. Please contact Merchant Support for production credentials.

For more details on the redirect-url, see the Configuring Redirects and IPNs for WPP v2 section.

For response verification examples, see the WPP v2 Security section.

Test Credentials

URI (Endpoint)

https://wpp-test.wirecard.com/api/payment/register

Merchant Account ID (MAID)

3cfb0fb7-59e2-4d92-847f-37121d633844

Username

16390-testing

Password

3!3013=D3fD8X7

Secret Key (used for response verification)

cf0b29fc-a6ab-474d-b6be-92e9596e9107

Test Credentials for the Guaranteed Direct Debit Environment

IBAN

DE42512308000000060004

BIC

WIREDEMMXXX

Bank

Test Bank

Countries and Currencies

Countries

Germany

Currencies

EUR

Transaction Type authorization

An authorization reserves the specified amount from the account holder’s bank account for a later transfer.

For a successful transaction:

  1. Create a payment session (initial request).

  2. Redirect the consumer to the payment page (initial response URL).

  3. Highly recommended: Parse and process the payment response.

Sample Workflow

We provide JSON examples for each step of this process. You can find them below.

Request Headers

Authorization

"Authorization"="Basic" + base64 (“username:password”). Use username and password as given in your Wirecard contract to base64-encode the authorization.

Content-Type

application/json

1. Create a Payment Session (Initial Request)
{
    "payment": {
        "merchant-account-id": {
            "value": "3cfb0fb7-59e2-4d92-847f-37121d633844"
        },
        "request-id": "{{$guid}}",
        "transaction-type": "authorization",
        "requested-amount": {
            "currency": "EUR",
            "value": "2.00"
        },
        "payment-methods": {
            "payment-method": [
                {
                    "name": "ratepay-elv"
                }
            ]
        },
        "account-holder": {
            "address": {
                "street1": "Mullerstrasse 137",
                "state": "Berlin",
                "country": "DE",
                "city": "Berlin",
                "postal-code": "13353"
            },
            "first-name": "John",
            "last-name": "Doe",
            "email": "john@doe.com",
            "phone": "+421123456789",
            "date-of-birth": "01-01-1980"
        },
        "ip-address": "127.0.0.1",
        "order-number": "12345",
        "order-items": {
            "order-item": [
                {
                    "name": "Notebook",
                    "description": "Simple Notebook",
                    "article-number": "123",
                    "amount": {
                        "value": 1,
                        "currency": "EUR"
                    },
                    "tax-rate": 19,
                    "quantity": 2
                }
            ]
        },
        "locale": "de",
        "creditor-id": "DE98ZZZ09999999999",
        "mandate": {
            "mandate-id": "Wird nach dem Kauf uebermittelt",
            "signed-date": "2019-06-01"
        },
        "success-redirect-url": "https://demoshop-test.wirecard.com/demoshop/#/success",
        "cancel-redirect-url": "https://demoshop-test.wirecard.com/demoshop/#/cancel",
        "fail-redirect-url": "https://demoshop-test.wirecard.com/demoshop/#/error"
    }
}
Field (JSON) Data Type Cardinality Size Description

merchant-account-id

value

String

Required

36

A unique identifier assigned to every merchant account (by Wirecard).

request-id

String

Required

64

A unique identifier assigned to every request (by merchant). Used when searching for or referencing it later. {{$guid}} serves as a placeholder for a random request-id.
Allowed characters: [a-z0-9-_ ]

transaction-type

String

Required

36

The requested transaction type. Available transaction types for Guaranteed Direct Debit:

  • authorization

requested-amount

currency

String

Required

3

The currency of the requested/contested transaction amount. For Guaranteed Direct Debit payments, the currency must be set to EUR. Format: 3-character abbreviation according to ISO 4217.

value

Numeric

Required

11

The full amount that is requested/contested in a transaction. 2 decimal places allowed.
Use . (decimal point) as the separator.

payment-methods

payment-method

name

String

Optional

15

The name of the payment method used. Set this value to guaranteeddirectdebit.

account-holder

address

street1

String

Optional

128

The first line of the street address of the consumer.

state

String

Optional

32

The state or province of the address of the consumer.

country

Token

Optional

3

The Country Id of the address of the consumer.

city

String

Optional

32

The city of the address of the consumer.

postal-code

String

Optional

16

The postal code or ZIP of the address of the consumer.

first-name

String

Required

32

The first name of the consumer.

last-name

String

Required

32

The last name of the consumer.

email

String

Required

64

The email address of the consumer.

phone

String

Required

32

The phone number of the consumer.

date-of-birth

String

Required

n/a

The date of birth of the consumer.

ip-address

String

Optional

45

The internet protocol address of the consumer as recorded by the entity receiving the transaction attempt from the consumer.

order-number

String

Required

64

String provided by the merchant, to store the 'Order Number' for the transaction.

order-items

order-item

name

Alphanumeric

Required

Name of the item in the basket.

description

String

Required

Description of the item in the basket.

article-number

String

Required

EAN or other article identifier for merchant.

amount

value

Numeric

Required

The item price per unit.

currency

String

Required

3

The currency of the item price per unit.

tax-rate

Numeric

Required

The item tax rate per unit.

quantity

Numeric

Required

The total count of items in the order.

locale

String

Optional

6

A set of parameters that defines the user’s language, country and any special variant preferences that the user wants to see in their user interface. Typically used in conjunction with Hosted Payment Page.

creditor-id

String

Optional

256

The creditor ID of the merchant, allowing processing of Guaranteed Direct Debit transactions.

mandate

mandate-id

String

Optional

35

The mandate Id for the mandate generated between the consumer and the merchant allowing the merchant to debit the consumer’s bank account.

signed-date

String

Optional

19

The date that the mandate was signed.

success-redirect-url

String

Required

256

The URL to which the consumer is redirected after a successful payment, e.g. https://demoshop-test.wirecard.com/demoshop/#/success.

cancel-redirect-url

String

Required

256

The URL to which the consumer is redirected after having canceled a payment, e.g. https://demoshop-test.wirecard.com/demoshop/#/cancel.

fail-redirect-url

String

Required

256

The URL to which the consumer is redirected after an unsuccessful payment, e.g. https://demoshop-test.wirecard.com/demoshop/#/error.

2. Redirect the Consumer to the Payment Page (Sample Response URL)
{
  "payment-redirect-url": "https://wpp-test.wirecard.com/?wPaymentToken=A_2xknKaa5bl18Rmm1qCVFLBuGhl2eai5stNEtNbTgE"
}

At this point, you need to redirect your consumer to payment-redirect-url (or render it in an iframe depending on your integration method).

Consumers are redirected to the payment form. There they enter their data and submit the form to confirm the payment.
Possible transaction results:

  • Successful (transaction-state: success)

  • Failed (transaction-state: failed)

  • Canceled (transaction-state: failed)

The transaction result is the value of transaction-state in the payment response. More details (including the status code) can also be found in the statuses object of the payment response. Canceled payments are returned as failed, but the status description indicates it was canceled.

In any case (unless the consumer cancels the transaction on a 3rd party provider page), a base64-encoded response containing payment information is sent to the configured redirection URL. See Configuring Redirects and IPNs for WPP v2 for more details on redirection targets after payment and transaction status notifications.

You can find a decoded payment response example below.

3. Parse and Process the authorization Response (Decoded Payment Response)
{
  "payment": {
      "locale": "de",
      "payment-methods": {
          "payment-method": [
              {
                  "payload": {},
                  "name": "ratepay-elv"
              }
          ]
      },
      "cancel-redirect-url": "https://demoshop-test.wirecard.com/demoshop/#/cancel",
      "fail-redirect-url": "https://demoshop-test.wirecard.com/demoshop/#/error",
      "ip-address": "127.0.0.1",
      "custom-fields": {
          "custom-field": [
              {
                  "field-name": "terms-consent-checked",
                  "field-value": "true"
              }
          ]
      },
      "transaction-id": "8e44ebc7-c849-4220-8a0b-e52ef3b84d5e",
      "request-id": "ac66e0e7-d9c6-403f-854c-381670b0163c",
      "transaction-type": "authorization",
      "transaction-state": "success",
      "completion-time-stamp": "2019-07-18T13:42:42",
      "requested-amount": {
          "currency": "EUR",
          "value": 2
      },
      "statuses": {
          "status": [
              {
                  "description": "The resource was successfully created.",
                  "severity": "information",
                  "code": "201.0000"
              }
          ]
      },
      "success-redirect-url": "https://demoshop-test.wirecard.com/demoshop/#/success",
      "account-holder": {
          "first-name": "John",
          "email": "john@doe.com",
          "phone": "+421123456789",
          "last-name": "Doe",
          "account-info": {},
          "address": {
              "country": "DE",
              "street1": "Mullerstrasse 137",
              "city": "Berlin",
              "postal-code": "13353",
              "state": "Berlin"
          }
      },
      "bank-account": {
          "bic": "WIREDEMMXXX",
          "bank-name": "Test Bank",
          "iban": "DE42512308000000060004"
      },
      "order-number": "12345",
      "merchant-account-id": {
          "value": "3cfb0fb7-59e2-4d92-847f-37121d633844"
      },
      "order-items": {
          "order-item": [
              {
                  "description": "Simple Notebook",
                  "article-number": "123",
                  "tax-rate": 19,
                  "quantity": 2,
                  "amount": {
                      "currency": "EUR",
                      "value": 1
                  },
                  "name": "Notebook"
              }
          ]
      },
      "mandate": {
          "signed-date": "2019-06-01",
          "mandate-id": "Wird nach dem Kauf uebermittelt"
      },
      "creditor-id": "DE98ZZZ09999999999",
      "api-id": "wpp",
      "device": {
          "fingerprint": "632eca33-96d2-c544-de43-abd965dd62f4"
      },
      "descriptor": "DK0256750D5"
  }
}
Field (JSON) Data Type Description

payment-methods

payment-method

payload

String

The value of payload depends on the payment method.
Always empty for Guaranteed Direct Debit.

custom-fields

custom-field

field-name

String

The merchant defined name of the custom field.

field-value

String

The merchant defined name of the custom field.

transaction-id

String

A unique identifier assigned to every transaction. This information is returned in the response only.

transaction-state

Token

The current transaction state. Possible values:

  • in-progress

  • success

  • failed

Typically, a transaction starts with an "in-progress" state and finishes with either the "success" or the "failed" state. This information is returned in the response only.

completion-time-stamp

DateTime

The UTC/ISO time-stamp documents the time & date when the transaction was executed.
Format: YYYY-MM-DDThh:mm:ss (ISO).

statuses

status

description

String

Text used to describe the transaction status. This information is returned in the response only.

severity

Token

The severity of the transaction, can be information, warning, or error. This information is returned in the response only.

code

String

The status of a transaction. This is primarily used in conjunction with the transaction state to determine the exact details of the status of the transaction. This information is returned in the response only.

account-holder

account-info

The value of account-info depends on the payment method.
Empty when the account-info field is not used in the request.

api-id

Token

A unique identifier assigned to every API.

device

fingerprint

String

A device fingerprint is information about a remote computing device, collected by the merchant for identification purposes. Fingerprints can be used to fully or partially identify individual users or devices even when cookies are turned off.

descriptor

String

The description of the transaction displayed on the account holder’s statement. In the case of a credit card statement, it can be dynamically set per transaction. It is only supported by some acquirers.

Post-Processing Operations

WPP is best used for one-off payments (e.g. regular, independent debit transactions) or the initial transaction in a chain of them (e.g. a first authorization in a chain of recurring transactions). However, when it comes to referencing a transaction for any kind of post-processing operation - such as a refund of one of your debit transactions - use our REST API directly.

Check the REST API Guaranteed Direct Debit specification for details on Guaranteed Direct Debit-specific post-processing operations.
JSON/NVP Field Reference

Here you can:

  • see the structure of an extended JSON request (XML-JSON mapping reference)

  • find the NVP equivalents for JSON fields (for migrating merchants)

JSON Structure of a Guaranteed Direct Debit by Wirecard Request
{
    "payment": {
        "merchant-account-id": {
            "value": "String"
        },
        "request-id": "String",
        "transaction-type": "String",
        "requested-amount": {
            "value": "Numeric",
            "currency": "String"
        },
        "parent-transaction-id": "String",
        "account-holder": {
            "first-name": "String",
            "last-name": "String",
            "email": "String",
            "phone": "String",
            "address": {
                "city": "String",
                "country": "String",
                "postal-code": "String",
                "state": "String",
                "street1": "String",
                "street2": "String",
                "street3": "String"
            }
        },
        "shipping": {
            "first-name": "String",
            "last-name": "String",
            "phone": "String",
            "address": {
                "city": "String",
                "country": "String",
                "postal-code": "String",
                "state": "String",
                "street1": "String",
                "street2": "String",
                "street3": "String"
            }
        },
        "payment-methods": {
            "payment-method": [
                {
                    "name": "String"
                }
            ]
        },
        "bank-account": {
            "iban": "String"
        },
        "mandate": {
            "mandate-id": "String",
            "signed-date": "String"
        },
        "creditor-id": "String",
        "periodic": {
            "periodic-type": "String",
            "sequence-type": "String"
        },
        "descriptor": "String",
        "order-number": "String",
        "success-redirect-url": "String",
        "fail-redirect-url": "String",
        "cancel-redirect-url": "String"
    }
}
Optional Fields in a Guaranteed Direct Debit by Wirecard Request
Field (NVP) Field (JSON) JSON Parent

bank_account_iban

iban

bank-account ({ })

cancel_redirect_url

cancel-redirect-url

payment ({ })

city

address ({ })/ city

account-holder ({ })

country

address ({ })/ country

account-holder ({ })

creditor_id

creditor-id

payment ({ })

descriptor

descriptor

payment ({ })

email

email

account-holder ({ })

fail_redirect_url

fail-redirect-url

payment ({ })

first_name

first-name

account-holder ({ })

last_name

last-name

account-holder ({ })

mandate_mandate_id

mandate-id

mandate ({ })

mandate_signed_date

signed-date

mandate ({ })

merchant_account_id

value

merchant-account-id ({ })

order_number

order-number

payment ({ })

payment_method

payment-method ([ ])/name

payment-methods ({ })

periodic_type

periodic-type

periodic ({ })

phone

phone

account-holder ({ })

postal_code

address ({ })/ postal-code

account-holder ({ })

request_id

request-id

payment ({ })

requested_amount

value

requested-amount ({ })

requested_amount_currency

currency

requested-amount ({ })

sequence_type

sequence-type

periodic ({ })

shipping_city

address ({ })/ city

shipping ({ })

shipping_country

address ({ })/ country

shipping ({ })

shipping_first_name

first-name

shipping ({ })

shipping_last_name

last-name

shipping ({ })

shipping_phone

phone

shipping ({ })

shipping_postal_code

address ({ })/ postal-code

shipping ({ })

shipping_state

address ({ })/ state

shipping ({ })

shipping_street1

address ({ })/ street1

shipping ({ })

shipping_street2

address ({ })/ street2

shipping ({ })

shipping_street3

address ({ })/ street3

shipping ({ })

state

address ({ })/ state

account-holder ({ })

street1

address ({ })/ street1

account-holder ({ })

street2

address ({ })/ street2

account-holder ({ })

street3

address ({ })/ street3

account-holder ({ })

success_redirect_url

success-redirect-url

payment ({ })

transaction_type

transaction-type

payment ({ })

Response-Only Fields for Guaranteed Direct Debit by Wirecard
Field (NVP) Field (JSON) JSON Parent

api_id

api-id

payment ({ })

completion_time_stamp

completion-time-stamp

payment ({ })

instrument_country

instrument-country

payment ({ })

provider_transaction_id_n

status ([ { } ])/ provider-transaction-id

statuses ({ })

provider_transaction_reference_id

provider-transaction-reference-id

payment ({ })

status_code_n

status ([ { } ])/ code

statuses ({ })

status_description_n

status ([ {} ])/ description

statuses ({ })

status_severity_n

status ([ { } ])/ severity

statuses ({ })

transaction_id

transaction-id

payment ({ })

transaction_state

transaction-state

payment ({ })

Custom URL: