Response Codes
You're able to obtain additional information about a transaction by using Response Codes. These codes allow you to see why a transaction was refused or why it is being charged back. These codes allow you to not only have a have a greater understanding of refusal or chargeback reasons, but also allow for you to build auto-responses into your payment system. For example, if a transaction is refused because of insufficient funds, you could use this response to instruct your systems to retry the transaction a few days later.
To use this functionality, contact your Relationship or Corporate Support Manager. Alternatively, contact corporatesupport@worldpay.com.
Using Response Codes
There are two ways you can use these Response Codes: XML messages and order inquiries.
XML messages
You submit a transaction to Worldpay but it is refused, and you want to know why. If you have the Response Code functionality turned on, we'll provide you with a code that feeds into your systems. You can see this code in the Merchant Administration Interface as part of the Payment and Order Details information. An example response you can expect to receive looks like this (note the ISO20022TransactionReasonCode
element):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE paymentService PUBLIC "-//WorldPay/DTD WorldPay PaymentService v1//EN" "http://dtd.worldpay.com/paymentService_v1.dtd">
<paymentService version="1.4" merchantCode="MERCHANT_CODE">
<notify>
<orderStatusEvent orderCode="ORDER_CODE"><!--Will contain the order code used in the request-->
<payment>
<paymentMethod>SEPA_DIRECT_DEBIT-SSL</paymentMethod>
<amount value="100" currencyCode="EUR" exponent="2" debitCreditIndicator="credit"/>
<lastEvent>REFUSED</lastEvent>
<ISO20022TransactionReasonCode code="MD01" description="No mandate"/><!--This is the response code-->
</payment>
<journal journalType="REFUSED" description="No mandate">
<bookingDate>
<date dayOfMonth="21" month="07" year="2016"/>
</bookingDate>
<accountTx accountType="IN_PROCESS_SENT_FOR_AUTH" batchId="9">
<amount value="100" currencyCode="EUR" exponent="2" debitCreditIndicator="debit"/>
</accountTx>
</journal>
</orderStatusEvent>
</notify>
</paymentService>
Order Enquiry
One of your customers has submitted a payment through Worldpay's Hosted Payment Pages and it was refused. You want to find out why. You're able to submit an order enquiry to Worldpay and we'll respond with a Response Code. It turns out that the customer has insufficient funds in their account; you're able to contact the customer and ask them to repeat the payment in a few days when they have money in their account. An example of an order enquiry response looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE paymentService PUBLIC "-//WorldPay/DTD WorldPay PaymentService v1//EN" "http://dtd.worldpay.com/paymentService_v1.dtd">
<paymentService version="1.4" merchantCode="MERCHANT_CODE"><!--Will contain the merchant code used in the request-->
<reply>
<orderStatusEvent orderCode="ORDER_CODE"><!--Will contain the order code used in the request-->
<payment>
<paymentMethod>SEPA_DIRECT_DEBIT-SSL</paymentMethod>
<amount value="100" currencyCode="EUR" exponent="2" debitCreditIndicator="credit"/>
<lastEvent>REFUSED</lastEvent>
<ISO20022TransactionReasonCode code="MD01" description="No mandate"/><!--This is the response code-->
</payment>
<date dayOfMonth="02" month="08" year="2016" hour="8" minute="41" second="0"/>
</orderStatus>
</reply>
</paymentService>
Response Codes and their descriptions
Response Code | Description |
---|---|
AC01 | Format of the account number specified is not correct |
AC04 | Account number specified has been closed |
AC06 | Account specified is blocked, prohibiting posting of transaction against it |
AC13 | Invalid debtor account type |
AG01 | Transaction forbidden on this type of account (formerly No Agreement) |
AG02 | Bank Operation code specified in the message is not valid for receiver |
AM04 | Amount of funds available to cover specified message amount is insufficient |
AM05 | Duplication |
BE05 | Party who initiated the message is not recognised by the end customer |
CNOR | Creditor Bank is not registered under this BIC in the CSM |
DNOR | Debtor Bank is not registered under this BIC in the CSM |
FF01 | File format incomplete or invalid |
FF05 | Local Instrument code is missing or invalid |
MD01 | No mandate |
MD02 | Mandated related information data required by the scheme is missing |
MD06 | Return of funds requested by end customer |
MD07 | End customer is deceased |
MS02 | Reason has not been specified by end customer |
MS03 | Reason has not been specified by agent |
RC01 | Bank Identifier code specified in the message has an incorrect format |
RR01 | Specification of the Debtor's account or unique identification needed for reasons of regulatory requirements is insufficient or missing |
RR02 | Specification of the Debtor's name and/or address needed for regulatory requirements is insufficient or missing |
RR03 | Specification of the creditor's name and/or address needed for regulatory requirements is insufficient or missing |
RR04 | Regulatory Reason |
SL01 | Due to specific service offered by the Debtor Agent |
Note: For a comprehensive list of ISO20022 codes and their descriptions, see the European Payments Council's Guidance on Reason Codes for SEPA Direct Debit R-Transactions.
Warning: Not all banks in the SEPA region support SEPA Direct Debit. If a merchant tries to initiate a payment request to these banks, it will be refused. For a full registry of participating banks, look under SDD Core at this link: Registers of Participants in SEPA payment and payment related schemes