Instant Payment Notification

Introduction

The Wirecard Payment Gateway has a built-in notification capability. An Instant Payment Notification (IPN) informs the merchant about the final status of a transaction.

There are two types of notifications:

  • HTTP(S) (Web Server POST)

  • SMTP (Email prefixed with ‘mailto’)

The following formats are currently supported:

  • application/x-www-form-urlencoded

  • application/xml

  • application/json

  • application/json-signed

Configuration

When the merchant wants to receive a notification, he can either

  • specify a URL as part the merchant account setup; or 

  • include either an email address or a URL as part of each transaction request

  • The definition of URL and format type in the transaction request overwrites the configured definition in the merchant account setup.

  • Only those notifications sent via URL contain a signature.

For request based IPN configuration, the request should contain the IPN notifications element.

In case there is no format specified in the request then the format specified in the merchant configuration is used. If there is no IPN format in the configuration then NVP response is used for HPP/EPP requests or application/xml for others by default.

Be aware that just one notification format can be set for all notifications sent to the specified URLs.

Request a Notification in JSON Format

The following example shows how the Wirecard Payment Gateway can be configured to send notifications as JSON format:

Signed JSON Notifications
To request an application/json-signed notification, simply switch the format value. Compared to the default JSON notification, signed notifications are base64 encoded and include a security signature: this means you can verify that the notification comes from Wirecard, but need to decode it before you can see its content.

<notifications format="application/json>

XML Request (determines notification in JSON format)
<?xml version="1.0" encoding="UTF-8"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment" xmlns:ns2="http://www.elastic-payments.com/schema/epa/transaction">
     <merchant-account-id>${unique for each merchant account}</merchant-account-id>
     <request-id>${unique for each request}</request-id>
     <transaction-type>debit</transaction-type>
     <requested-amount currency="EUR">1.00</requested-amount>
     <parent-transaction-id>${unique for each parent transaction}</parent-transaction-id>
     <account-holder>
          <first-name>John</first-name>
          <last-name>Doe</last-name>
     </account-holder>
     <order-number>12345</order-number>
     <descriptor>customerStatement 12003332222</descriptor>
     <notifications format="application/json">
          <notification url="https://www.merchant.com/special-IPN"></notification>
     </notifications>
     <payment-methods>
          <payment-method name="${payment method}"/>
     </payment-methods>
</payment>

The notification will look like this:

JSON Notification
{
    "payment": {
        "statuses": {
            "status": [{
                "code": "201.0000",
                "description": "3d-acquirer:The resource was successfully created.",
                "severity": "information"
            }]
        },
        "descriptor": "demo descriptor",
        "merchant-account-id": {
            "value": "04bfef3e-6029-4bdb-8bf7-951cb36077ab"
        },
        "transaction-id": "d5c773d7-2e03-4513-9f7f-343de0b35e4d",
        "request-id": "969fed83-252e-44d8-956d-74c4a42558bd",
        "transaction-type": "purchase",
        "transaction-state": "success",
        "completion-time-stamp": 1522225304000,
        "requested-amount": {
            "value": 1.01,
            "currency": "USD"
        },
        "account-holder": {
            "email": "john.doe@test.com",
            "phone": "55555555555",
            "address": {
                "street1": "123 anystreet",
                "city": "Brantford",
                "state": "ON",
                "country": "CA"
            },
            "first-name": "John",
            "last-name": "Doe"
        },
        "card-token": {
            "token-id": "4190024503651111",
            "masked-account-number": "444433******1111"
        },
        "ip-address": "127.0.0.1",
        "payment-methods": {
            "payment-method": [{
                "name": "creditcard"
            }]
        },
        "authorization-code": "153620",
        "api-id": "elastic-api",
        "entry-mode": "mail-order"
    }
}
application/JSON-signed Notification Example
response-signature-base64: RfEJZDauGzMIvyzbR6n6qjjqhwDk9yUTKECdhWtPAiw=
response-signature-algorithm: HmacSHA256
response-base64: ewogICJkZXNjcmlwdG9yIiA6ICJkZW1vIGRlc2NyaXB0b3IiLAogICJzdGF0dXNlcyIgOiB7CiAgICAic3RhdHVzIiA6IFsgewogICAgICAiY29kZSIgOiAiMjAxLjAwMDAiLA
ogICAgICAic2V2ZXJpdHkiIDogImluZm9ybWF0aW9uIiwKICAgICAgImRlc2NyaXB0aW9uIiA6ICIzZC1hY3F1aXJlcjpUaGUgcmVzb3VyY2Ugd2FzIHN1Y2Nlc3NmdWxseSBjcmVhdGVkLiIKICAgI
H0gXQogIH0sCiAgImFjY291bnQtaG9sZGVyIiA6IHsKICAgICJmaXJzdC1uYW1lIiA6ICJKb2huIiwKICAgICJsYXN0LW5hbWUiIDogIkRvZSIKICB9LAogICJzdWNjZXNzLXJlZGlyZWN0LXVybCIg
OiAiaHR0cDovL2xvY2FsaG9zdDo4MDgwL3Nob3Avc3VjY2Vzcy5qc3AiLAogICJmYWlsLXJlZGlyZWN0LXVybCIgOiAiaHR0cDovL2xvY2FsaG9zdDo4MDgwL3Nob3AvZXJyb3IuanNwIiwKICAibWF
uZGF0ZSIgOiB7CiAgICAibWFuZGF0ZS1pZCIgOiAiMTIzNCIsCiAgICAic2lnbmVkLWNpdHkiIDogIjEyMzQiLAogICAgInNpZ25hdHVyZS1pbWFnZSIgOiAiMTIzNCIKICB9LAogICJwYXltZW50LW
1ldGhvZHMiIDogewogICAgInBheW1lbnQtbWV0aG9kIiA6IFsgewogICAgICAibmFtZSIgOiAiY3JlZGl0Y2FyZCIKICAgIH0gXQogIH0sCiAgInJlcXVlc3QtaWQiIDogImY2YjIxMWZkLWQxNWMtN
DQzNC1iNTI2LWM1YmU3ODM1ZmRhZCIsCiAgIm1lcmNoYW50LWFjY291bnQtaWQiIDogewogICAgInZhbHVlIiA6ICJmZjM5ZTZmZC0zNWY0LTExZTUtOWU5Yi1mODE2NTQ2MzIzMjgiCiAgfSwKICAi
dHJhbnNhY3Rpb24tdHlwZSIgOiAiYXV0aG9yaXphdGlvbiIsCiAgInJlcXVlc3RlZC1hbW91bnQiIDogewogICAgInZhbHVlIiA6IDEwLjEsCiAgICAiY3VycmVuY3kiIDogIkVVUiIKICB9LAogICJ
0cmFuc2FjdGlvbi1pZCIgOiAiY2U5MGQ4ZjUtMDUzMC00OGM0LTkyMDEtMDFiN2RiNDBkMjFkIiwKICAidHJhbnNhY3Rpb24tc3RhdGUiIDogInN1Y2Nlc3MiLAogICJjb21wbGV0aW9uLXRpbWUtc3
RhbXAiIDogIjIwMTctMTAtMjdUMDg6MzA6NDUiLAogICJjYXJkLXRva2VuIiA6IHsKICAgICJ0b2tlbi1pZCIgOiAiNDI0MzMxMjcwNzUxMTExMSIsCiAgICAibWFza2VkLWFjY291bnQtbnVtYmVyI
iA6ICI0NDQ0MzMqKioqKioxMTExIgogIH0sCiAgImF1dGhvcml6YXRpb24tY29kZSIgOiAiMTUzNjIwIiwKICAiYXBpLWlkIiA6ICJ1cDMtZ3BwIiwKICAib3JkZXItaXRlbXMiIDogewogICAgIm9y
ZGVyLWl0ZW0iIDogWyB7CiAgICAgICJuYW1lIiA6ICJNVU5JQ0ggLSBWSUVOTkEiLAogICAgICAiYW1vdW50IiA6IHsKICAgICAgICAidmFsdWUiIDogMTAuMSwKICAgICAgICAiY3VycmVuY3kiIDo
gIkVVUiIKICAgICAgfSwKICAgICAgImRlc2NyaXB0aW9uIiA6ICIoT1MxMTIpIHwgMWggMTBtaW4iLAogICAgICAicXVhbnRpdHkiIDogMQogICAgfSBdCiAgfSwKICAiY3JlZGl0b3ItaWQiIDogIj
EyMzQiCn0=
Verifying the Notification Signature

To verify a signed notification, check the signature data against the Secret Key you received during merchant configuration:

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;

...

private String merchantSecretKey = "merchantSecretKey";

public boolean isValidSignature(String responseBase64, String responseBase64Signature, String responseSignatureAlgorithm) throws Exception {
    Mac mac = Mac.getInstance(responseSignatureAlgorithm);
    mac.init(new SecretKeySpec(merchantSecretKey.getBytes("UTF-8"), responseSignatureAlgorithm));
    return responseBase64Signature != null && responseBase64Signature.equals(DatatypeConverter.printBase64Binary(mac.doFinal(responseBase64.getBytes("UTF-8"))));
}
Request a Notification in HTML Format

<notifications format="application/html">

HTML Notification

Request a Notification in XML Format

<notifications format="application/xml">

Notification in XML Format
<?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>6f2c9d44-7eb0-4449-94cd-28d44c177320</merchant-account-id>
    <transaction-id>c2dcebc1-6c8b-4d87-b7d0-770df740116c</transaction-id>
    <request-id>3c5170d9-3ede-444b-bacf-b0cf5d5f93c2</request-id>
    <transaction-type>purchase</transaction-type>
    <transaction-state>success</transaction-state>
    <completion-time-stamp>2018-03-28T08:36:30.000Z</completion-time-stamp>
    <statuses>
        <status code="201.0000" description="3d-acquirer:The resource was successfully created." severity="information"/>
    </statuses>
    <requested-amount currency="USD">1.01</requested-amount>
    <account-holder>
        <first-name>John</first-name>
        <last-name>Doe</last-name>
        <email>john.doe@test.com</email>
        <phone>55555555555</phone>
        <address>
            <street1>123 anystreet</street1>
            <city>Brantford</city>
            <state>ON</state>
            <country>CA</country>
        </address>
    </account-holder>
    <card-token>
        <token-id>4585779929881111</token-id>
        <masked-account-number>444433******1111</masked-account-number>
    </card-token>
    <ip-address>127.0.0.1</ip-address>
    <descriptor>demo descriptor</descriptor>
    <payment-methods>
        <payment-method name="creditcard"/>
    </payment-methods>
    <authorization-code>153620</authorization-code>
    <api-id>elastic-api</api-id>
    <entry-mode>mail-order</entry-mode>
</payment>

It is possible to set up conditional notifications based on the state of the transaction.  For example, it is possible to instruct a notification to only occur on ‘failed’ or ‘successful’ transactions.

Notification Type Notification Tag in Request Possible Extensions of URL Ports Possible Extensions of transaction-state

HTTP(S)

URL, transaction-state

any configured URL

80, 443, 5500

if URL <> empty and `transaction-state` = empty all notifications go to that URL or if URL <> empty and `transaction-state` <> empty depending on the transaction-state (success, failed, in-progress, etc) the notification goes to the corresponding URL.

SMTP

URL, transaction-state

if URL <> empty and transaction-state = empty all notifications go to that URL (Email address prefixed with ‘mailto’). OR if URL <> empty and transaction-state <> empty depending on the transaction-state (success, failed, in-progress, etc) the notification goes to the corresponding URL (Email address prefixed with ‘mailto’).

A request, which defines a URL to be used, when the payment process will fail:

XML Request with different URL for failed transactions
<?xml version="1.0" encoding="UTF-8"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment" xmlns:ns2="http://www.elastic-payments.com/schema/epa/transaction">
      <merchant-account-id>${unique for each merchant account}</merchant-account-id>
      <request-id>${unique for each request}</request-id>
      <transaction-type>debit</transaction-type>
      <requested-amount currency="EUR">1.00</requested-amount>
      <parent-transaction-id>${unique for each parent transaction}</parent-transaction-id>
      <account-holder>
            <first-name>John</first-name>
            <last-name>Doe</last-name>
      </account-holder>
      <order-number>12345</order-number>
      <descriptor>customerStatement 12003332222</descriptor>
      <notifications>
            <notification url="https://www.merchant.com/errorURL" transaction-state="failed"/>
      </notifications>
      <payment-methods>
            <payment-method name="${payment method}"/>
      </payment-methods>
</payment>
Notification Examples
Credit Card 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>${unique for each merchant account}</merchant-account-id>
            <transaction-id>${unique for each transaction}</transaction-id>
            <request-id>${unique for each request}</request-id>
            <transaction-type>authorization</transaction-type>
            <transaction-state>success</transaction-state>
            <completion-time-stamp>2017-06-19T10:00:36.000Z</completion-time-stamp>
            <statuses>
               <status code="201.0000" description="3d-acquirer:The resource was successfully created." severity="information" provider-transaction-id="C123456789876543212345"/>
            </statuses>
            <avs-code>U</avs-code>
            <csc-code>P</csc-code>
            <requested-amount currency="USD">1.01</requested-amount>
            <account-holder>
               <first-name>John</first-name>
               <last-name>Doe</last-name>
               <email>john.doe@test.com</email>
               <phone>5555555555</phone>
               <address>
                  <street1>123 anystreet</street1>
                  <street2></street2>
                  <city>Brantford</city>
                  <state>ON</state>
                  <country>CA</country>
               </address>
            </account-holder>
            <card-token>
               <token-id>${unique for each token}</token-id>
               <masked-account-number>111111******1111</masked-account-number>
            </card-token>
            <ip-address>127.0.0.1</ip-address>
            <descriptor>demo descriptor</descriptor>
            <notifications>
               <notification transaction-state="failed" url="https://www.merchant.com/IPN"></notification>
               <notification url="mailto:admin@merchant.com"></notification>
            </notifications>
            <authorization-code>123456</authorization-code>
            <api-id>elastic-api</api-id>
</payment>
Alternative Payment Methods
<?xml version="1.0" encoding="UTF-8"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment" xmlns:ns2="http://www.elastic-payments.com/schema/epa/transaction">
      <merchant-account-id>${unique for each merchant account}</merchant-account-id>
      <transaction-id>${unique for each transaction}</transaction-id>
      <request-id>${unique for each request}</request-id>
      <transaction-type>debit</transaction-type>
      <transaction-state>success</transaction-state>
      <completion-time-stamp>2017-06-19T10:22:17.000Z</completion-time-stamp>
      <statuses>
            <status code="201.1126" description="qtill:Successful confirmation received from the bank." severity="information"/>
      </statuses>
      <requested-amount currency="EUR">1.00</requested-amount>
      <parent-transaction-id>${unique for each parent transaction}</parent-transaction-id>
      <account-holder>
            <first-name>John</first-name>
            <last-name>Doe</last-name>
      </account-holder>
      <order-number>12345</order-number>
      <descriptor>customerStatement 12003332222</descriptor>
      <notifications>
            <notification transaction-state="failed" url="https://www.merchant.com/IPN"></notification>
            <notification url="mailto:admin@merchant.com"></notification>
      </notifications>
      <payment-methods>
            <payment-method name="${payment method}"/>
      </payment-methods>
      <api-id>---</api-id>
      <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
            <SignedInfo>
                  <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
                  <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
                  <Reference URI="">
                        <Transforms>
                              <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
                        </Transforms>
                        <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
                        <DigestValue>uJWSjDzaJg3C04055Q/X6ZSiE6Fpivc1TAfdff9Ozfo=</DigestValue>
                  </Reference>
            </SignedInfo>
            <SignatureValue>I3DM296RHzvbZV4h30q5PAMv0/16JcSuN04a2OcYlA9KOnfi8nM8QQC39VfrCdTB/pvaI62b4plq
bjkth9Lwew09NXGcBGcOKmIAX7/pncpiETHiUmZKkYca4vVA2WxJcVDIyc2ZXvN8o0PByDYvdejn
oMAsfKPMOAkDhKLrRFE/MGgeuvtNH/FCXAqRv5JNfWEp8Ua91IXYT64XT6MxkKncmHGyDf/BE3ns
/dfyn2pWJPzs6EvTDoRmaCQPaCeLgTUVvbgABOE1TPZ89PIkbiaoJAKxSejwaCScwx2cKOzvqA01
vpcem1R1mEchxnafACZBQVy+Xme5gqL2F2PNO8MCtywXrRGsbV1mbhpIj5Apu/mj7C7xnTsJAf0k
t5y3y11hjeprallyQe2DYrbrEOYkanNNkZXouicuaelPJ9QWlb9HTDz7Ris95b6hzRrNDSgeoEdB
152wSYymdtyYXE1ViUDPkOi2jiAMMwmf2Xtt+Wpeatx/TlTyA14/+QJ+bn7ZgynYw4OUU5ps/KJD
ExE8TG4TCKcJdcjdEd0dVGb5mC9+SHLRATrZJxw+VwpwFDVFjbpxgcKl/RlY/5qWe/ihrPrCJeoW
Q0YN9ljXmiCmeSyeOVl8pEM6uANL24byLIF3A7YNs1t7fWfALckE5PQX6X/9lZGAvYH03o+kLCE=</SignatureValue>
            <KeyInfo>
                  <X509Data>
                        <X509SubjectName>L=Ascheim,2.5.4.4=#130642617965726e,CN=api-qa.wirecard.sys,OU=Operations,O=Wirecard Technologies GmbH,C=DE</X509SubjectName>
                        <X509Certificate>MIIF4jCCBMqgAwIBAgICLGswDQYJKoZIhvcNAQELBQAwWzELMAkGA1UEBhMCREUxETAPBgNVBAoT
CFdpcmVjYXJkMTkwNwYDVQQDFDB3aXJlY2FyZC1EUS1NVUMtaW50ZXJuYWwtd2Vic2VydmljZS1p
c3N1aW5nQ0FfMDIwHhcNMTYxMjE0MTQzNzQ2WhcNMTgxMjE0MTQzNzQ2WjCBiDELMAkGA1UEBhMC
REUxIzAhBgNVBAoTGldpcmVjYXJkIFRlY2hub2xvZ2llcyBHbWJIMRMwEQYDVQQLEwpPcGVyYXRp
b25zMRwwGgYDVQQDExNhcGktcWEud2lyZWNhcmQuc3lzMQ8wDQYDVQQEEwZCYXllcm4xEDAOBgNV
BAcTB0FzY2hlaW0wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJuFgv7WVoBdbfDBhN
SVJAwEe5fJ/liTFq/efCLOzJglN57ncLlsXE8RFsgu3vh5P/7Fu5K9b3rRxFrdH27A3qBUfQb5QM
EoeUawiCQSxJy4C1/iXfN7VUEfVWLRhJFSO3+oIcixN8X4EWk26YHPNKaxPmtNi+UrFlhKSUjgcf
2QwS7eKyoHk//i4lJ2Pm8N5yYNSI9EFQXpfQneAIT6I4musFWsVzSnmTjdFo7p62TJflZcz9V0ON
i1cqgXcr/5B1RMkz41JbEPOTZxEO5tl8U8GzkDAdjRncSn4dsNQKysuJOudmIQZKmEvvCZ66KAJ4
yStzODVjUv26zvOOGM5IXARRB5jgeyZpuWuaGVMe0MK90J6B8KIvjfpGfcx4HoRAGylbPxLlFdn2
g+w81d0KWwu2DP8tMa3sPBGBqELCuICnQz9Cg3r+4MNvmGGShg1j3vxJmAHfrtDv/ZIk4l5txo/L
//iwxlXBpXWxgO02PcAgFBpcWrSfFrSofhO5Ve7f44KBMvBdXzDMKy5BAiqz7Crs89Px1dRXSwAF
P8vcLsIMiEa9UK0i7pVKb1JKv2zY7iSKBR+0scwNQ+1eud9fgN4KPtZMPn90r+qv+NIQVZ+3j3uH
ijcNZACbJSETmt5npc/Kn9WvYIPWz1UTJU/lA8+PUKf6Efgpa4MtXIjaWwIDAQABo4IBgDCCAXww
EQYDVR0OBAoECEDTetAg6sf8MBMGA1UdIwQMMAqACENsHhbUPQUOMAsGA1UdDwQEAwIE8DCCAUMG
A1UdHwSCATowggE2MIIBMqCCAS6gggEqhoHVbGRhcDovL3dpcmVjYXJkLmxhbi9DTj13aXJlY2Fy
ZC1EUS1NVUMtaW50ZXJuYWwtd2Vic2VydmljZS1pc3N1aW5nQ0FfMDIsQ049Q0RQLENOPVB1Ymxp
YyBLZXkgU2VydmljZXMsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixkYz13aXJlY2FyZCxk
Yz1sYW4/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdD9iYXNlP29iamVjdENsYXNzPUNSTERpc3Ry
aWJ1dGlvblBvaW50hlBodHRwOi8vY3JsLndpcmVjYXJkLmxhbi9DUkxfd2lyZWNhcmQtRFEtTVVD
LWludGVybmFsLXdlYnNlcnZpY2UtaXNzdWluZ0NBXzAyLmNybDANBgkqhkiG9w0BAQsFAAOCAQEA
TRhKA9IiGvF5GPaUOdf0aQsWT+NevciPfh7RWUE1wM4xU1Zimrj3Ey27qBhmZgbpzkLKcBugW4z7
KK8kwBwpf4OZNhMBZNevE6AbllWNcSy5GZFFmfRm9CUwEdAyZYSEul0ncPOr9qczFhQV296dqdv3
3/j0l+TnOPJFXXazrSsIBtBB1DnJMHZ9A591Y9BZeoLMfBs5x1PQfTkEiJbUO5yhANd0GmxWrKIb
nJaL9ovrceEcmIpIDlb9qe++us87pMn0QBK+y/QDjjmOBkUNZ27QVsNnrl7Sk/hA8pQPw6ukd1+u
hvXVMX/EVZt5y1Ip3v0YW7qUaRH0dW/q84OISg==</X509Certificate>
                  </X509Data>
            </KeyInfo>
      </Signature>
</payment>
Note that the “amount” value for some alternative payment notifications contains 6 minor digits.

Content of the Notification

The content of the notification depends on the status of the response Wirecard Payment Gateway receives from the provider.

WPG receives…​ WPG sends notification:…​

a successful response

Success Return Code and Transaction Status

a failure response

Failure Return Code and Transaction Status

a timeout from provider

Failure with error code (e.g. 500.1051)

no info from provider

Failure with error code 500.1052, if WPG runs in its internal timeout

Credit Card IPNs are not encoded and non Credit Card IPNs are mostly Base64 encoded, but there are variations possible. The variations depend on the payment methods.

For each notification type it is possible to add more than one recipient. Simply copy the tag and add a different URL.

In the following example, the transaction will notify the merchant’s site for a failed transaction and send all results to an email address.

Notification Transaction Types

The table below defines the expected transaction type in the notification after a specific request/response.

Request/Response Transaction Type Possible Notification Transaction Type

authorization

deposit 

get-url

debit, debit-return

pending-credit

credit, credit-return, deposit

pending-debit

debit, debit-return, deposit

refund-request

refund-debit

Notification Delay

In some cases the Wirecard Payment Gateway (WPG) may send a delayed IPN.

This may occur due to one of the following reasons:

  • Some payment method providers have longer processing periods than others

  • Communication delays caused by:

    • downtime of the provider’s system

    • a workflow which has a fixed waiting time, at the Wirecard Payment Gateway as well as the provider.

    • the merchant has sent an incorrect ID. In that case Wirecard Payment Gateway will send a 404 message, stating that the transaction is not available.

Custom URL: