Wirecard Payment on Invoice
REST API
Wirecard Payment on Invoice is a type of Offline Bank Transfer.
Countries and Currencies
Countries |
DE, AT, CH |
---|---|
Currencies |
EUR, CHF |
Communication Formats
This table illustrates how Wirecard Payment on Invoice 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. |
|
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 |
|
void-authorization |
Used when the consumer wishes to cancel some or all
(not yet shipped) items from the order. Available only for a successful
|
|
refund-capture |
Used when the consumer wishes to return some or all
delivered goods. Available on a successful |
|
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 |
|
Test Credentials
URLs (Endpoints) |
For transaction type |
|
---|---|---|
For transaction types |
|
|
Merchant Account ID (MAID) |
7d7edecb-b008-4f05-9103-308c81cf2ea2 |
|
Username |
16390-testing |
|
Password |
3!3013=D3fD8X7 |
|
Secret Key |
555d998b-15db-46a9-8f1f-d9bc3ec66b19 |
Workflow
Standard Process
-
Consumer adds items to shopping basket.
-
Consumer selects the payment method Wirecard Payment on Invoice.
-
Merchant sends an
authorization
request including items to Wirecard. -
Merchant receives an
authorization
response, including the descriptor (an alphanumerical code). -
Merchant sends a
capture
request to Wirecard when the items are ready for delivery. -
After a successful
capture
request, Wirecard or Merchant generates the invoice, including the descriptor (an alphanumerical code). -
Merchant waits for the incoming payment.
-
If any payment changes are necessary, the following transaction types are available:
credit
,refund-capture
orvoid-authorization
.
Process Chain
Every merchant needs to follow the process chains below successfully in a test environment to get an approval to go live. Wirecard checks and approves the frontend/checkout and invoices (if generated and sent out by the merchant).
Please provide us with the order number and descriptor for each transaction. |
-
Order (2 products + shipping costs + voucher)
authorization
-
Partial cancellation of 1 product
void-authorization
-
Partial cancellation of the rest
void-authorization
-
Order (2 products + shipping costs)
authorization
-
Full order cancellation
void-authorization
-
Order (3 products + shipping costs + voucher)
authorization
-
Partial delivery of 1 product + shipping costs + voucher
capture-authorization
-
Partial delivery of the rest
capture-authorization
-
Order (2 products + shipping costs + voucher)
authorization
-
Partial cancellation of 1 product
void-authorization
-
Partial delivery of 1 product + shipping costs + voucher
capture-authorization
-
Invoice generation
-
Order (2 products + shipping costs + voucher)
authorization
-
Complete delivery of the order
capture-authorization
-
Invoice generation
-
Partial return of 1 product
refund-capture
-
Partial return of the rest
refund-capture
-
Order (2 products + shipping costs + voucher)
authorization
-
Complete delivery of the order
capture-authorization
-
Invoice generation
-
Full return of the order
refund-capture
-
Order (2 products + shipping costs + voucher)
authorization
-
Reduction with negative amount
credit
-
Complete delivery of the order
capture-authorization
-
Invoice generation
-
Order (6 products including shipping costs)
authorization
-
Reduction with negative amount
credit
-
Partial delivery of 2 products + reduction
capture-authorization
-
Invoice generation
-
Adjustment charge with positive amount
credit
-
Partial delivery of the rest = 4 products + adjustment charge
capture-authorization
-
Invoice generation
-
Reduction with negative amount
credit
-
Order (6 products including shipping costs)
authorization
-
Partial delivery of 3 products
capture-authorization
-
Invoice generation
-
Partial cancellation of 1 product
void-authorization
-
Partial return of 2 products
refund-capture
-
Partial delivery of 2 products
capture-authorization
-
Invoice generation
-
Partial return of the rest = 3 products
refund-capture
Fields
The following elements are mandatory M, optional O or conditional C for sending a request for the payment method Wirecard Payment on Invoice (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: |
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 |
||
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 |
C |
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: |
|
payment-methods |
||||
payment-methods.payment-method@name |
M |
Alphanumeric |
15 |
The name of the Payment Method is |
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 |
|
bank-account.bic |
C |
Alphanumeric |
Mandatory if |
|
bank-account.account-number |
C |
Alphanumeric |
Mandatory if |
|
bank-account.bank-code |
C |
Alphanumeric |
Mandatory if |
|
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 |
|
mandate |
||||
mandate.mandate-id |
C |
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
andbank-code
or -
account-owner
,bank-name
,iban
andbic
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. |
Device Fingerprint (Wirecard Payment on Invoice)
Device Fingerprint (Wirecard Payment on Invoice) is a method of fraud protection and able to identify technical devices. Fraudsters learn to exploit the weaknesses of traditional fraud prevention tools over time. We protect businesses from fraud and loss of revenue with innovative fraud prevention: by automatically linking transactions, fraud can be detected in real time. With our self-learning and adaptive software you are prepared to face new and upcoming fraud scenarios. This document describes the procedure of a Device Fingerprint call and how to implement its result in the PAYMENT_QUERY operation and PAYMENT_REQUEST operation.
To generate a fingerprint you first need to create a unique token within your online shop. To ensure that the token is really unique, we suggest using a combination of customer id and timestamp which is encrypted, with MD5 for instance.
$deviceIdentSId = 'WDWL';
$timestamp = microtime();
$customerId = $customerObject->getId();
$deviceIdentToken = md5($customerId . "_" . $timestamp);
We recommend outputting the Device Fingerprint JavaScript code as early as possible to get a sufficient latency between script call and end of the order.
For instance when the customer entered the checkout or when the customer is putting a first item into the cart.
Please ensure that this script is executed only one-time per session (per customer + checkout + device).
<script language="JavaScript">
var di = {t:'<?php echo $deviceIdentToken ?>',v:'<?php echo $deviceIdentSId ?>',l:'Checkout'};
</script>
<script type="text/javascript" src="//d.ratepay.com/<?php echo $deviceIdentSId ?>/di.js">
</script>
<noscript><link rel="stylesheet" type="text/css" href="//d.ratepay.com/di.css?t=<?php echo $deviceIdentToken ?>&v=<?php echo $deviceIdentSId ?>&l=Checkout">
</noscript>
<object type="application/x-shockwave-flash" data="//d.ratepay.com/<?php echo $deviceIdentSId?>/c.swf" width="0" height="0">
<param name="movie" value="//d.ratepay.com/<?php echo $deviceIdentSId ?>/c.swf" />
<param name="flashvars" value="t=<?php echo $deviceIdentToken ?>&v=<?php echo $deviceIdentSId?>"/><param name="AllowScriptAccess" value="always"/>
</object>
Please transfer the deviceIdentToken
within the authorization request to
Wirecard. You can find a corresponding XML sample for either Wirecard Payment on Invoice or Wirecard Payment Guaranteed Direct Debit.
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.
When consumers use Wirecard Payment on Invoice, payments with debt discharging effect can be made solely to Wirecard.
Samples
Click here for corresponding notification samples.
Wirecard Payment on Invoice
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
<merchant-account-id>7d7edecb-b008-4f05-9103-308c81cf2ea2</merchant-account-id>
<request-id>{{$guid}}</request-id>
<transaction-type>authorization</transaction-type>
<payment-methods>
<payment-method name="ratepay-invoice" />
</payment-methods>
<requested-amount currency="EUR">400</requested-amount>
<order-number>180801110644949</order-number>
<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>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>nl</locale>
</payment>
<?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>7d7edecb-b008-4f05-9103-308c81cf2ea2</merchant-account-id>
<transaction-id>32783284-5bce-4d5f-aca6-25fa17f6ad53</transaction-id>
<request-id>8b4b145e-fb5a-4c12-ad9a-396a46b83593</request-id>
<transaction-type>authorization</transaction-type>
<transaction-state>success</transaction-state>
<completion-time-stamp>2018-08-01T09:06:46.000Z</completion-time-stamp>
<statuses>
<status code="201.0000" description="The resource was successfully created." severity="information" provider-transaction-id="09-201808019802726" />
</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>180801110644949</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>DK0073634K2</descriptor>
<payment-methods>
<payment-method name="ratepay-invoice" />
</payment-methods>
<locale>nl</locale>
</payment>
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
<merchant-account-id>7d7edecb-b008-4f05-9103-308c81cf2ea2</merchant-account-id>
<request-id>{{$guid}}</request-id>
<transaction-type>capture-authorization</transaction-type>
<payment-methods>
<payment-method name="ratepay-invoice" />
</payment-methods>
<requested-amount currency="EUR">200</requested-amount>
<parent-transaction-id>32783284-5bce-4d5f-aca6-25fa17f6ad53</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 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/7d7edecb-b008-4f05-9103-308c81cf2ea2/payments/789b1a74-2d07-477c-a5eb-d6dd61872d88">
<merchant-account-id ref="https://api-test.wirecard.com:443/engine/rest/config/merchants/7d7edecb-b008-4f05-9103-308c81cf2ea2">7d7edecb-b008-4f05-9103-308c81cf2ea2</merchant-account-id>
<transaction-id>789b1a74-2d07-477c-a5eb-d6dd61872d88</transaction-id>
<request-id>314fa896-16ba-4787-b12d-0a7d1169105b</request-id>
<transaction-type>capture-authorization</transaction-type>
<transaction-state>success</transaction-state>
<completion-time-stamp>2018-08-01T09:07:19.000Z</completion-time-stamp>
<statuses>
<status code="201.0000" description="ratepay:The resource was successfully created." severity="information" provider-transaction-id="09-201808019802726" />
</statuses>
<requested-amount currency="EUR">200</requested-amount>
<parent-transaction-id>32783284-5bce-4d5f-aca6-25fa17f6ad53</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>180801110644949</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>DK0073634K2</descriptor>
<payment-methods>
<payment-method name="ratepay-invoice" />
</payment-methods>
<parent-transaction-amount currency="EUR">400.000000</parent-transaction-amount>
<api-id>elastic-api</api-id>
<locale>nl</locale>
<provider-account-id>0000003174069FC7</provider-account-id>
</payment>
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
<merchant-account-id>7d7edecb-b008-4f05-9103-308c81cf2ea2</merchant-account-id>
<request-id>{{$guid}}</request-id>
<transaction-type>credit</transaction-type>
<payment-methods>
<payment-method name="ratepay-invoice" />
</payment-methods>
<parent-transaction-id>32783284-5bce-4d5f-aca6-25fa17f6ad53</parent-transaction-id>
<requested-amount currency="EUR">10</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>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 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/7d7edecb-b008-4f05-9103-308c81cf2ea2/payments/42a30b0b-9aed-47cb-89e5-dc3649d770b2">
<merchant-account-id ref="https://api-test.wirecard.com:443/engine/rest/config/merchants/7d7edecb-b008-4f05-9103-308c81cf2ea2">7d7edecb-b008-4f05-9103-308c81cf2ea2</merchant-account-id>
<transaction-id>42a30b0b-9aed-47cb-89e5-dc3649d770b2</transaction-id>
<request-id>0891f924-c326-4a39-ab04-2d240743a161</request-id>
<transaction-type>credit</transaction-type>
<transaction-state>success</transaction-state>
<completion-time-stamp>2018-08-01T09:07:54.000Z</completion-time-stamp>
<statuses>
<status code="201.0000" description="ratepay:The resource was successfully created." severity="information" provider-transaction-id="09-201808019802726" />
</statuses>
<requested-amount currency="EUR">10</requested-amount>
<parent-transaction-id>32783284-5bce-4d5f-aca6-25fa17f6ad53</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>180801110644949</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>DK0073634K2</descriptor>
<payment-methods>
<payment-method name="ratepay-invoice" />
</payment-methods>
<parent-transaction-amount currency="EUR">400.000000</parent-transaction-amount>
<api-id>elastic-api</api-id>
<locale>nl</locale>
<provider-account-id>0000003174069FC7</provider-account-id>
</payment>
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
<merchant-account-id>7d7edecb-b008-4f05-9103-308c81cf2ea2</merchant-account-id>
<request-id>{{$guid}}</request-id>
<transaction-type>refund-capture</transaction-type>
<payment-methods>
<payment-method name="ratepay-invoice" />
</payment-methods>
<requested-amount currency="EUR">50</requested-amount>
<parent-transaction-id>789b1a74-2d07-477c-a5eb-d6dd61872d88</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 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/7d7edecb-b008-4f05-9103-308c81cf2ea2/payments/34c6ed51-c417-413e-a1f0-e7074f24b19b">
<merchant-account-id ref="https://api-test.wirecard.com:443/engine/rest/config/merchants/7d7edecb-b008-4f05-9103-308c81cf2ea2">7d7edecb-b008-4f05-9103-308c81cf2ea2</merchant-account-id>
<transaction-id>34c6ed51-c417-413e-a1f0-e7074f24b19b</transaction-id>
<request-id>d7287da8-00a9-48b0-ac3b-8ea14a1f3440</request-id>
<transaction-type>refund-capture</transaction-type>
<transaction-state>success</transaction-state>
<completion-time-stamp>2018-08-01T09:08:33.000Z</completion-time-stamp>
<statuses>
<status code="201.0000" description="ratepay:The resource was successfully created." severity="information" provider-transaction-id="09-201808019802726" />
</statuses>
<requested-amount currency="EUR">50</requested-amount>
<parent-transaction-id>789b1a74-2d07-477c-a5eb-d6dd61872d88</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>180801110644949</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>DK0073634K2</descriptor>
<payment-methods>
<payment-method name="ratepay-invoice" />
</payment-methods>
<parent-transaction-amount currency="EUR">200.000000</parent-transaction-amount>
<api-id>elastic-api</api-id>
<locale>nl</locale>
<provider-account-id>0000003174069FC7</provider-account-id>
</payment>
<?xml version="1.0" encoding="utf-8"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
<merchant-account-id>7d7edecb-b008-4f05-9103-308c81cf2ea2</merchant-account-id>
<request-id>{{$guid}}</request-id>
<transaction-type>void-authorization</transaction-type>
<payment-methods>
<payment-method name="ratepay-invoice" />
</payment-methods>
<parent-transaction-id>32783284-5bce-4d5f-aca6-25fa17f6ad53</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 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/7d7edecb-b008-4f05-9103-308c81cf2ea2/payments/265b5d4f-7a4c-4b93-9189-ab4c0a09e3f2">
<merchant-account-id ref="https://api-test.wirecard.com:443/engine/rest/config/merchants/7d7edecb-b008-4f05-9103-308c81cf2ea2">7d7edecb-b008-4f05-9103-308c81cf2ea2</merchant-account-id>
<transaction-id>265b5d4f-7a4c-4b93-9189-ab4c0a09e3f2</transaction-id>
<request-id>cdcb75f9-5131-4459-a201-c5db7c8172e4</request-id>
<transaction-type>void-authorization</transaction-type>
<transaction-state>success</transaction-state>
<completion-time-stamp>2018-08-01T09:09:37.000Z</completion-time-stamp>
<statuses>
<status code="201.0000" description="ratepay:The resource was successfully created." severity="information" provider-transaction-id="09-201808019802726" />
</statuses>
<requested-amount currency="EUR">200</requested-amount>
<parent-transaction-id>32783284-5bce-4d5f-aca6-25fa17f6ad53</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>180801110644949</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>DK0073634K2</descriptor>
<payment-methods>
<payment-method name="ratepay-invoice" />
</payment-methods>
<parent-transaction-amount currency="EUR">400.000000</parent-transaction-amount>
<api-id>elastic-api</api-id>
<locale>nl</locale>
<provider-account-id>0000003174069FC7</provider-account-id>
</payment>
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
<merchant-account-id>7d7edecb-b008-4f05-9103-308c81cf2ea2</merchant-account-id>
<request-id>{{$guid}}</request-id>
<transaction-type>authorization</transaction-type>
<payment-methods>
<payment-method name="ratepay-invoice" />
</payment-methods>
<requested-amount currency="EUR">400</requested-amount>
<order-number>180801121956992</order-number>
<account-holder>
<first-name>Hans-Jürgen </first-name>
<last-name>Wischnewski</last-name>
<email>hans@qenta.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>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>
<device>
<fingerprint>DeviceIdentToken</fingerprint>
</device>
</payment>
Wirecard Payment Page v2
Wirecard Payment Page v1 is no longer supported. We recommend using Wirecard Payment Page v2 integration instead. If you have questions about your existing Wirecard Payment Page v1 integration, consult our REST API integration guide.
With Wirecard Payment on Invoice, Wirecard guarantees that merchants receive the payment amount, even if the consumer does not pay.
The consumer pays by invoice upon receipt of the goods. Wirecard pays the merchant the order amount prior to settlement with the consumer. The invoicing and collection process (including dunning) is also handled by Wirecard.
This payment method is available for German merchants only.
Wirecard Payment on Invoice is a type of Offline Bank Transfer.
General Information
Here you find all the information for integrating Wirecard Payment on Invoice 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, you find a sample request for the available 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
Test Credentials for Transaction Type authorization.
URI (Endpoint) |
|
---|---|
Merchant Account ID (MAID) |
7d7edecb-b008-4f05-9103-308c81cf2ea2 |
Username |
16390-testing |
Password |
3!3013=D3fD8X7 |
Countries and Currencies
Countries |
Germany |
---|---|
Currencies |
EUR |
To get the approval to go live, every merchant needs to complete a number of process chains in a test environment successfully. Wirecard checks and approves the frontend/checkout and invoices (if generated and sent out by the merchant). |
Transaction Type authorization
An authorization reserves the specified amount from the account holder’s bank account for a later transfer. For Wirecard Payment on Invoice, it also triggers a creditworthiness-check.
For a successful transaction:
-
Create a payment session (initial request).
-
Redirect the consumer to the payment page (initial response URL).
-
Highly recommended: Parse and process the payment response.
Sample Workflow
We provide JSON examples for this process. You can find them below.
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 |
{
"payment": {
"merchant-account-id": {
"value": "7d7edecb-b008-4f05-9103-308c81cf2ea2"
},
"request-id": "{{$guid}}",
"transaction-type": "authorization",
"requested-amount": {
"currency": "EUR",
"value": "19.50"
},
"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"
},
"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
},
{
"name": "Pencils",
"description": "Set of Color Pencils",
"article-number": "456",
"amount": {
"value": 2.5,
"currency": "EUR"
},
"tax-rate": 19,
"quantity": 3
},
{
"name": "SHIPPING & HANDLING (UNITED PARCEL SERVICE - WORLDWIDE EXPRESS)",
"article-number": "shipping",
"amount": {
"value": 10,
"currency": "EUR"
},
"tax-rate": 19,
"quantity": 1
}
]
},
"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",
"payment-methods": {
"payment-method": [
{
"name": "ratepay-invoice"
}
]
}
}
}
All Shopping basket items (order-items) must be specified in every request. The authorized amount must match the total value of the items in the basket. |
Field (JSON) | Data Type | Mandatory/Optional | Size | Description | |||
---|---|---|---|---|---|---|---|
|
|
String |
Mandatory |
36 |
A unique identifier assigned to every merchant account (by Wirecard). |
||
|
String |
Mandatory |
150 |
A unique identifier assigned by the merchant to each request. Used when searching for or referencing it later. You may enter any As the request ID must be unique, Allowed characters: |
|||
|
String |
Mandatory |
n/a |
The requested transaction type. For Wirecard Payment on Invoice, the transaction-type must be set to |
|||
|
|
String |
Mandatory |
3 |
The currency of the requested/contested
transaction amount. Must be |
||
|
Numeric |
Mandatory |
9.2 |
The full amount that is requested/contested in a transaction. The amount must be between a defined minimum value and a defined maximum value. 2 decimal digits allowed. Format: 3-character abbreviation according to ISO 4217. |
|||
|
|
|
String |
Mandatory |
64 |
The first line of the consumer’s address street. |
|
|
String |
Mandatory |
32 |
The consumer’s state. |
|||
|
String |
Mandatory |
2 |
The consumer’s country code. |
|||
|
String |
Mandatory |
32 |
The consumer’s city. |
|||
|
String |
Mandatory |
16 |
The postal/ZIP code of the consumer’s address. |
|||
|
String |
Mandatory |
32 |
Consumer’s first name. |
|||
|
String |
Mandatory |
32 |
Consumer’s last name. |
|||
|
String |
Mandatory |
64 |
Consumer’s email address. |
|||
|
String |
Mandatory |
32 |
Consumer’s phone number. |
|||
|
String |
Mandatory |
n/a |
Consumer’s date of birth. Wirecard validates the consumer’s age to check if they are eligible for payment with Wirecard Payment on Invoice. |
|||
|
String |
Mandatory |
32 |
Merchant-side order number. |
|||
|
|
|
String |
Mandatory |
100 |
Name of the item in the shopping basket. |
|
|
String |
Mandatory |
40 |
EAN or other merchant side article identifier. |
|||
|
|
Numeric |
Mandatory |
10 |
Item’s price per unit. |
||
|
String |
Mandatory |
3 |
Currency of this item’s price. Must be |
|||
|
Numeric |
Mandatory |
4 |
Item’s tax rate per unit. |
|||
|
Numeric |
Mandatory |
5 |
Total number of this item in the shopping basket. |
|||
|
String |
Optional |
2 |
A 2-letter code which indicates what language the payment page is rendered in (ISO 639-1). |
|||
|
String |
Mandatory |
2000 |
The URL to which the consumer
is redirected after a successful payment,
e.g. |
|||
|
String |
Mandatory |
2000 |
The URL to which the consumer is
redirected after a failed payment,
e.g. |
|||
|
String |
Mandatory |
2000 |
The URL to which the consumer
is redirected after having canceled a payment,
e.g. |
|||
|
|
|
String |
Mandatory |
256 |
The name of the payment method used for the transaction, i.e. |
{
"payment-redirect-url": "https://wpp-test.wirecard.com/?wPaymentToken=8cSvZuJGWg5vQ2TnJb5UOy5Gljs8W44ve_dWQMaJf7o"
}
Field (JSON) | Data Type | Description |
---|---|---|
|
String |
The URL which redirects to the payment form. Sent as a response to the initial request. |
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.
Checkout
During checkout, the consumer has to agree to Wirecard’s general terms and conditions. They have to give their consent by ticking the respective checkbox. Additional Business Conditions
When consumers use Wirecard Payment on Invoice, payments with debt discharging effect can be made solely to Wirecard. |
Possible transaction results:
-
Successful (
transaction-state: success
), -
Failed (
transaction-state: failed
), -
Canceled (
transaction-state: failed
):The consumer canceled the payment before/after submission
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.
{
"payment": {
"ip-address": "127.0.0.1",
"custom-fields": {
"custom-field": [
{
"field-name": "terms-consent-checked",
"field-value": "true"
}
]
},
"transaction-id": "6c312602-cab9-4418-be2b-79f64667ac49",
"request-id": "7a869f37-dd1c-4dfb-ba9a-338545d2c21a",
"transaction-type": "authorization",
"transaction-state": "success",
"completion-time-stamp": "2019-07-22T09:37:47",
"requested-amount": {
"currency": "EUR",
"value": 19.5
},
"statuses": {
"status": [
{
"description": "The resource was successfully created.",
"severity": "information",
"code": "201.0000",
"provider-transaction-id": "59-2019072213786174"
}
]
},
"cancel-redirect-url": "https://demoshop-test.wirecard.com/demoshop/#/cancel",
"fail-redirect-url": "https://demoshop-test.wirecard.com/demoshop/#/error",
"merchant-account-id": {
"value": "7d7edecb-b008-4f05-9103-308c81cf2ea2"
},
"payment-methods": {
"payment-method": [
{
"payload": {},
"name": "ratepay-invoice"
}
]
},
"account-holder": {
"first-name": "John",
"email": "john@doe.com",
"phone": "+421123456789",
"account-info": {},
"last-name": "Doe",
"address": {
"country": "DE",
"street1": "Mullerstrasse 137",
"city": "Berlin",
"postal-code": "13353",
"state": "Berlin"
}
},
"success-redirect-url": "https://demoshop-test.wirecard.com/demoshop/#/success",
"order-number": "12345",
"order-items": {
"order-item": [
{
"description": "Simple Notebook",
"article-number": "123",
"tax-rate": 19,
"quantity": 2,
"amount": {
"currency": "EUR",
"value": 1
},
"name": "Notebook"
},
{
"description": "Set of Color Pencils",
"article-number": "456",
"tax-rate": 19,
"quantity": 3,
"amount": {
"currency": "EUR",
"value": 2.5
},
"name": "Pencils"
},
{
"article-number": "shipping",
"tax-rate": 19,
"quantity": 1,
"amount": {
"currency": "EUR",
"value": 10
},
"name": "SHIPPING & HANDLING (UNITED PARCEL SERVICE - WORLDWIDE EXPRESS)"
}
]
},
"api-id": "wpp",
"device": {
"fingerprint": "ea30eef6-86c4-023e-6d68-92ff840cbbd1"
},
"descriptor": "DK0257844A0"
}
}
The response for each |
In addition to the request fields, the response returns the following fields:
Field (JSON) | Data Type | Description | ||
---|---|---|---|---|
|
String |
The internet protocol address of the account holder as recorded by the entity receiving the transaction attempt from the account holder. Supported IP versions: IPv4 and IPv6. |
||
|
|
String |
The custom field name is |
|
|
Boolean |
|
||
|
String |
A unique identifier assigned to every transaction. Used when searching for or referencing it later. |
||
|
String |
The current transaction state. Possible values:
Typically, a transaction starts with state |
||
|
DateTime |
The UTC/ISO time-stamp documents the time and date when the transaction was executed. Format: |
||
|
|
String |
Status code of the status message. |
|
|
String |
The description of the transaction status message. Click here for a complete list of status descriptions. |
||
|
String |
The definition of the status message. Possible values:
|
||
|
String |
A unique transaction identifier generated by the provider. |
||
|
|
|
String |
The value of |
|
String |
Identifier of the currently used API. |
||
|
|
String |
||
|
String |
The descriptor (German: “Verwendungszweck”) must be printed on all invoice documents. It must be used by the consumer on bank transfers. |
Post-Processing Operations
WPP is best used for one-off payments (e.g. regular, independent authorization 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 capturing of one of your authorization transactions - use our REST API directly.
Check the REST API Wirecard Payment on Invoice specification for details on Wirecard Payment on Invoice-specific post-processing operations. |
JSON/NVP Field Reference
NVP equivalents for JSON fields (for migrating merchants).
Here you can:
-
find the NVP equivalents for JSON fields (for migrating merchants),
-
see the structure of a request (optional fields included).
{
"payment": {
"merchant-account-id": {
"value": "string"
},
"request-id": "string",
"transaction-type": "string",
"requested-amount": {
"currency": "string",
"value": "0"
},
"payment-methods": {
"payment-method": [
{
"name": "string"
}
]
},
"account-holder": {
"first-name": "string",
"last-name": "string",
"email": "string",
"phone": "string",
"date-of-birth": "string",
"address": {
"country": "string",
"street1": "string",
"city": "string",
"postal-code": "string",
"state": "string"
},
"order-items": {
"order-item": [
{
"name": "string",
"description": "string",
"article-number": "string",
"tax-rate": "numeric",
"quantity": "numeric",
"amount": {
"currency": "string",
"value": "numeric"
}
}
]
},
"order-number": "string",
"success-redirect-url": "string",
"fail-redirect-url": "string",
"cancel-redirect-url": "string"
}
}
}
Field (NVP) | Field (JSON) | JSON Parent |
---|---|---|
merchant_account_id |
value |
merchant-account-id |
request_id |
request-id |
payment |
transaction_type |
transaction-type |
payment |
requested_amount_currency |
currency |
requested-amount |
requested_amount |
value |
requested-amount |
payment_method |
payment-method [ { } ]/name |
payment-methods |
first_name |
first-name |
account-holder |
last_name |
last-name |
account-holder |
account-holder |
||
phone |
phone |
account-holder |
date_of_birth |
date-of-birth |
account-holder |
country |
address [ { } ]/ country |
account-holder |
city |
address [ { } ]/ city |
account-holder |
postal_code |
address [ { } ]/ postal-code |
account-holder |
state |
address [ { } ]/ state |
account-holder |
orderItems[n].name |
order-item [ { } ]/name |
order-items |
orderItems[n].description |
order-item [ { } ]/description |
order-items |
orderItems[n].articleNumber |
order-item [ { } ]/article-number |
order-items |
orderItems[n].amount.value |
amount [ { } ]/value |
order-item |
orderItems[n].amount.currency |
amount [ { } ] |
order-items |
orderItems[n].taxRate |
order-item [ { } ]/tax-rate |
order-items |
orderItems[n].quantity |
order-item [ { } ]/quantity |
order-items |
order_number |
order-number |
payment |
success_redirect_url |
success-redirect-url |
payment |
fail_redirect_url |
fail-redirect-url |
payment |
cancel_redirect_url |
cancel-redirect-url |
payment |
{
"payment": {
"custom-fields": {
"custom-field": [
{
"field-name": "string",
"field-value": "boolean"
}
]
},
"transaction-id": "string",
"transaction-state": "string",
"completion-time-stamp": "string"
},
"statuses": {
"status": [
{
"description": "string",
"severity": "string",
"code": "string",
"provider-transaction-id": "string"
}
]
},
"api-id": "string",
"device": {
"fingerprint": "string"
},
"descriptor": "string"
}
Field (NVP) | Field (JSON) | JSON Parent |
---|---|---|
ip_address |
ip-address |
payment |
field_name_1 |
custom-field( {} )/ field-name |
custom-fields |
field_value_1 |
custom-field( {} )/ field-value |
custom-fields |
transaction_id |
transaction-id |
payment |
transaction_state |
transaction-state |
payment |
completion_time_stamp |
completion-time-stamp |
payment |
status_severity_n |
status ([ {} ])/ severity |
statuses |
status_code_n |
status ([ {} ])/ code |
statuses |
status_description_n |
status ([ {} ])/ description |
statuses |
provider_transaction_id_n |
status ([ {} ])/ provider-transaction-id |
statuses |
api_id |
api-id |
payment |
device_fingerprint |
fingerprint |
device |
descriptor |
descriptor |
payment |