Menu

Request a bank transfer refund

How to request a merchant-completed or shopper-completed bank transfer refund.

Local and international bank transfers

  • A local bank transfer is for the country that can accept the authorised currency - for example refunding GBP to a UK bank account.
  • An international bank transfer is used when the authorised currency is not in the preferred currency of the country receiving the refund - for example refunding GBP to a French account. This kind of refund is considered a cross-border refund, and costs more.

Restrictions

In some cases it might be impossible, impractical or not cost-effective to perform a bank transfer refund:

  • If Worldpay does not support bank transfer refunds in the required currency
  • If the shopper does not have a bank account
  • If the cost of the refund outweighs the benefits

Merchant-completed bank transfer refund

To initiate a merchant-completed bank transfer refund:

  1. Log in to the MAI and click TRANSACTIONS.
  2. Find and open the payment you want to refund.
  3. In the Refund by Bank Transfer section, type the amount you want to refund.
  4. Click BT Refund.
  5. Fill out the shopper's bank details.
  6. Click Refund Payment.

The status of the transaction changes to SENT_FOR_REFUND, and when Worldpay has sent the request on to the bank the payment status changes to REFUNDED. It will remain at REFUNDED unless there are issues processing the refund, in which case it will change to REFUND_FAILED.

Shopper-completed bank transfer refund

Shopper-completed bank transfer refunds are initiated via a unique refund link (Webform URL), which you send to the shopper to complete, along with a refund ID. When they click the link they are redirected to a Webform refund page. They fill out their refund ID and are then taken to a bank transfer page, where they complete their bank details and send the refund request.

Initiate the refund

To initiate a refund that the shopper completes, send an order modification but include the <refund> attribute shopperWebformRefund="true":

Copied!
<?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="YOUR_MERCHANT_CODE">
  <modify>
    <orderModification orderCode="YOUR_ORDER_CODE">
      <refund shopperWebformRefund="true">
        <amount value="100" currencyCode="RON" exponent="2">
      </refund>
    </orderModification>
  </modify>
</paymentService>

Response

The response confirms that we've received the modification successfully, not that it has been processed:

Copied!
<?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="YOUR_MERCHANT_CODE">
  <reply>
    <ok>
      <refundReceived orderCode="YOUR_ORDER_CODE">
        <amount value="100" currencyCode="RON" exponent="2" debitCreditIndicator="credit">
      </refundReceived>
    </ok>
  </reply>
</paymentService>

Next, you need to receive and process the REFUND_WEBFORM ISSUED notification.

Turn on Webform notifications

To receive notifications on Webform refunds, use theMAIto activate notifications for the payment status of REFUND_WEBFORM_ISSUED.

Set up your system to receive new elements

You'll receive additional data in your order notifications for the status of REFUND_WEBFORM_ISSUED, within <shopperWebformRefundDetails>. A table below explains this in more detail.

Note: You won't receive <shopperWebformRefundDetails> in any other notifications, only those with a status of REFUND_WEBFORM_ISSUED.

Copied!
...   </journal>
      <shopperWebformRefundDetails>
        <Webform Id>6</Webform Id>
        <paymentId>2468876244</paymentId>
        <Webform Status>ISSUED</Webform Status>
        <amount currencyCode="RON" debitCreditIndicator="credit" exponent="2" value="100"/>
        <reason>
          <![CDATA[Refund reason]]> 
        </reason>
        <Webform URL>
          <![CDATA[https://secure.worldpay.com/merchant/shopperWebformRefund/startBTRefund.html?wfurl=MWQyMjJkNDNmYmFlYTEzNmFkNTUwZTI2YjAxNGM4XXXXXXXXXXXX==]]> 
        </Webform URL>
        <refundId>
          <![CDATA[NGJkMDIwZWUyM2NhM2UyN2UwMXXXXXXlZmEzYzZlZDc1NjVkOQ==]]>      
        </refundId>
      </shopperWebformRefundDetails>
    </orderStatusEvent>
  </notify>
</paymentService>

Use the data from the notification

When you receive a REFUND_WEBFORM_ISSUED notification, extract the <Webform URL> and the <refundId>, and send these to the shopper to complete their details and start the refund process.

Best practice: To track the process we recommend that you enable notifications for the statuses SENT_FOR_REFUND, REFUNDED and REFUND_FAILED.

  1. When the shopper clicks the Webform URL they'll be taken to a Webform refund page.
  2. They fill out their refund ID and are then taken to a bank transfer page.
  3. They complete their bank details and send the refund request. The payment status changes to SENT_FOR_REFUND.
  4. The bank receives the request, and the payment status changes to REFUNDED.
  5. If the bank declines the refund for any reason (such as the bank details were incorrect), the payment status then changes to REFUND_FAILED.

Example notification

An example of an order notification on the payment status of REFUND_WEBFORM_ISSUED:

Note: The Journal status of REFUND_PENDING shows the amount set aside for the Shopper Webform Bank Transfer Refund request and matches the value of the Shopper Webform Bank Transfer Refund i.e. in this example RON 1.00. This amount is released if the Webform is cancelled.

Copied!
<?xml version="1.0" ?>
<!DOCTYPE paymentServicePUBLIC "-//WorldPay//DTD WorldPay PaymentService v1//EN"
  "http://dtd.worldpay.com/paymentService_v1.dtd">
<paymentService merchantCode="YOUR_MERCHANT_CODE" version="1.4">
  <notify>
    <orderStatusEvent orderCode="YOUR_ORDER_CODE">
      <payment>
        <paymentMethod>PAYSAFECARD-SSL</paymentMethod>
        <amount currencyCode="RON" debitCreditIndicator="credit" exponent="2" value="100"/>
        <lastEvent>REFUND_WEBFORM_ISSUED</lastEvent>
        <balance accountType="IN_PROCESS_REFUND_PENDING">
          <amount currencyCode="RON" debitCreditIndicator="debit" exponent="2" value="100"/>
        </balance>
        <balance accountType="IN_PROCESS_CAPTURED">
          <amount currencyCode="RON" debitCreditIndicator="credit" exponent="2" value="100"/>
        </balance>
        <riskScore value="21"/>
      </payment>
      <journal journalType="REFUND_WEBFORM_ISSUED">
        <bookingDate>
          <date dayOfMonth="15" month="03" year="2013"/>
        </bookingDate>
        <accountTx accountType="IN_PROCESS_REFUND_PENDING" batchId="5">
          <amount currencyCode="RON" debitCreditIndicator="debit" exponent="2" value="100"/>
        </accountTx>
        <accountTx accountType="REFUND_PENDING" batchId="5">
          <amount currencyCode="RON" debitCreditIndicator="credit" exponent="2" value="100"/>
        </accountTx>
      </journal>
      <shopperWebformRefundDetails>
        <Webform Id>6</Webform Id>
        <paymentId>2468876244</paymentId>
        <Webform Status>ISSUED</Webform Status>
        <amount currencyCode="RON" debitCreditIndicator="credit" exponent="2" value="100"/>
        <reason>
          <![CDATA[Refund reason]]> 
        </reason>
        <Webform URL>
          <![CDATA[https://secure.worldpay.com/merchant/shopperWebformRefund/startBTRefund.html?wfurl=MWQyMjJkNDNmYmFlYTEzNmFkNTUwZTI2YjAxNGM4XXXXXXXXXXXX==]]> 
        </Webform URL>
        <refundId>
          <![CDATA[NGJkMDIwZWUyM2NhM2UyN2UwMXXXXXXlZmEzYzZlZDc1NjVkOQ==]]>      
        </refundId>
      </shopperWebformRefundDetails>
    </orderStatusEvent>
  </notify>
</paymentService>

Customise the Webform refund page

To include your own stylesheet and company logo, and display your company name as a text field:

  1. Log in to the MAI and click INTEGRATION.
  2. Click the Webforms settings tab.

Webform settings

Field NameField PropertiesDescription
NameMaximum: 50 charactersAdd your company name here - this will appear on the Webform page that the shopper will see.
LogoMaximum Width: 141 pixels
Maximum Height: 60 pixels
Maximum size: 1 MB
File Types: png, jpg and jpeg
Upload your company logo here for it to be displayed on the Webform page that the shopper will see.
Uploading a logo will overwrite any previously uploaded logo.
StylesheetMaximum size: 1 MB
File types: css, html, htm, txt
Upload your stylesheet to customise the Webform page that the shopper will see.
Uploading a stylesheet will overwrite any stylesheet previously uploaded.
Receive eMail notification when shopper submits the formTick to turn onTick the check box to be notified via an email, to the email address configured to receive email notifications, when the shopper has submitted the refund using the Webform. An email will be sent on the Webform status of 'SUBMITTED'.

Note: To remove any merchant customisation on the Webform Refund page and go back to WorldPay's default customisation, then upload the default logo (WFWPlogo.png) and the default stylesheet (WFdefault.css).

Webform notifications

We explain the Webform notification datahere.