Menu

Paysafecard

Note: To learn about the features of Paysafecard, there's an overviewhere

How to integrate Paysafecard payments:

Direct payment request

The <shopperEmailAddress> must be unique to each shopper, as the encoded value is used for risk based checks.

You must supply this, as the payment will otherwise get rejected by Paysafecard.

Copied!
<?xml version="1.0" ?>
<!DOCTYPE paymentService PUBLIC "-//WorldPay//DTD WorldPay PaymentService v1//EN" "dtd/paymentService_v1.dtd">
<paymentService version="1.4" merchantCode="YOUR_MERCHANT CODE">
  <submit>
    <order orderCode="YOUR_ORDER_CODE"><!--Use a unique order code each time-->
      <description>YOUR_DESCRIPTION</description>
      <amount currencyCode="GBP" value="100" exponent="2" />
      <orderContent>
       <![CDATA[ ]]>
      </orderContent>
      <paymentDetails>
        <PAYSAFECARD-SSL shopperCountryCode="GB">
          <successURL>http://www.worldpay.com/?successURL</successURL>
          <cancelURL>http://www.worldpay.com/?cancelURL</cancelURL>
          <pendingURL>http://www.worldpay.com/?pendingURL</pendingURL>
        </PAYSAFECARD-SSL>
      </paymentDetails>
      <shopper>
        <shopperEmailAddress>shopper@worldpay.com</shopperEmailAddress><!--Mandatory-->
      </shopper>
    </order>
  </submit>
</paymentService>

Hosted payment request

In this example the merchant has specified that only the Paysafecard payment method should be offered. The append string ensures this:

&country=GB&preferredPaymentMethod=PAYSAFECARD-SSL

Copied!
<?xml version="1.0" ?>
<!DOCTYPE paymentService PUBLIC "-//WorldPay//DTD WorldPay PaymentService v1//EN" "dtd/paymentService_v1.dtd">
<paymentService version="1.4" merchantCode="YOUR_MERCHANT CODE">
  <submit>
    <order orderCode="YOUR_ORDER_CODE" installationId="1234567"><!--Use a unique order code each time. Contact Worldpay if you haven't got an installationID-->
      <description>Test order</description>
        <amount value="100" currencyCode="GBP" exponent="2" />
    <orderContent>
      <![CDATA[ ]]>
    </orderContent>
    <paymentMethodMask>
      <include code="ALL" />
    </paymentMethodMask>
      <shopper>
       <shopperEmailAddress>shopper@worldpay.com</shopperEmailAddress>
      </shopper>
    </order>
  </submit>
</paymentService>

Payment outcomes

Successful

Shopper pays
Event 1:The shopper successfully completes a payment for CZK.
Behaviour:successURL is returned
URL:SUCCESS
URL Example:https://secure.worldpay.com/sc4/jsp/shopper/SuccessView.jsp?orderKey=ADMINCODE^MERCHANTCODE^Example_Paysafecard_Order_Code&paymentStatus=AUTHORISED&paymentAmount=100&paymentCurrency=CZK&mac=6fb41860bc98a5763fdf9b007e7cf603
Payment Status:Payment status changes to AUTHORISED
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="MERCHANT_CODE"><!--Will contain the merchant code used in the request-->
  <notify>
    <orderStatusEvent orderCode="ORDER_CODE"><!--Will contain the order code used in the request-->
      <payment>
        <paymentMethod>PAYSAFECARD-SSL</paymentMethod>
        <amount value="100" currencyCode="CZK" exponent="2" debitCreditIndicator="credit"/>
        <lastEvent>AUTHORISED</lastEvent>
        <balance accountType="IN_PROCESS_AUTHORISED">
          <amount value="100" currencyCode="CZK" exponent="2" debitCreditIndicator="credit"/>
        </balance>
        <riskScore value="41"/>
      </payment>
      <journal journalType="AUTHORISED">
        <bookingDate>
          <date dayOfMonth="26" month="06" year="2013"/>
        </bookingDate>
        <accountTx accountType="IN_PROCESS_AUTHORISED" batchId="10">
          <amount value="100" currencyCode="CZK" exponent="2" debitCreditIndicator="credit"/>
        </accountTx>
      </journal>
    </orderStatusEvent>
  </notify>
</paymentService>
Payment captured
Event 2:The payment is captured in WPG.
Behaviour:The automatic capture job runs in WPG to automatically capture the payment.
URL:No URL is returned to the shopper as the shopper journey is already complete.
URL Example:N/A
Payment Status:Payment status changes to CAPTURED
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="MERCHANT_CODE"><!--Will contain the merchant code used in the request-->
  <notify>
    <orderStatusEvent orderCode="ORDER_CODE"><!--Will contain the order code used in the request-->
      <payment>
        <paymentMethod>PAYSAFECARD-SSL</paymentMethod>
        <amount value="100" currencyCode="CZK" exponent="2" debitCreditIndicator="credit"/>
        <lastEvent>CAPTURED</lastEvent>
        <balance accountType="IN_PROCESS_CAPTURED">
          <amount value="100" currencyCode="CZK" exponent="2" debitCreditIndicator="credit"/>
        </balance>
        <riskScore value="41"/>
      </payment>
      <journal journalType="CAPTURED">
        <bookingDate>
          <date dayOfMonth="26" month="06" year="2013"/>
        </bookingDate>
        <accountTx accountType="IN_PROCESS_AUTHORISED" batchId="28">
          <amount value="100" currencyCode="CZK" exponent="2" debitCreditIndicator="debit"/>
        </accountTx>
        <accountTx accountType="IN_PROCESS_CAPTURED" batchId="39">
          <amount value="100" currencyCode="CZK" exponent="2" debitCreditIndicator="credit"/>
        </accountTx>
      </journal>
    </orderStatusEvent>
  </notify>
</paymentService>
Payment settled
Event 3:The payment is settled internally in WPG
Behaviour:The payment is successfully settled to the merchant's Worldpay account.
URL:No URL is returned to the shopper as the shopper journey is already complete.
URL Example:N/A
Payment Status:Payment status changes to SETTLED
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="MERCHANT_CODE"><!--Will contain the merchant code used in the request-->
  <notify>
    <orderStatusEvent orderCode="ORDER_CODE"><!--Will contain the order code used in the request-->
      <payment>
        <paymentMethod>PAYSAFECARD-SSL</paymentMethod>
        <amount value="100" currencyCode="CZK" exponent="2" debitCreditIndicator="credit"/>
        <lastEvent>SETTLED</lastEvent>
        <balance accountType="SETTLED_BIBIT_NET">
          <amount value="3" currencyCode="GBP" exponent="2" debitCreditIndicator="credit"/>
        </balance>
        <riskScore value="21"/>
      </payment>
    <journal journalType="SETTLED" description="1 CZK = 0.03257 GBP">
        <bookingDate>
          <date dayOfMonth="19" month="07" year="2013"/>
        </bookingDate>
        <accountTx accountType="IN_PROCESS_CAPTURED" batchId="42">
          <amount value="100" currencyCode="CZK" exponent="2" debitCreditIndicator="debit"/>
        </accountTx>
        <accountTx accountType="SETTLED_BIBIT_NET" batchId="31">
          <amount value="3" currencyCode="GBP" exponent="2" debitCreditIndicator="credit"/>
        </accountTx>
      </journal>
    </orderStatusEvent>
  </notify>
</paymentService>

Cancellation

Shopper cancels
Event:Shopper clicks Cancel on the Paysafecard website
Behaviour:The cancel button is clicked and the shopper is redirected to the cancelURL.
URL:CANCEL
URL Example:http://www.worldpay.com/?cancelURL&orderKey=ADMINCODE^MERCHANTCODE^Example_Paysafecard_Order_Code
Payment StatusThe payment status changes to SHOPPER_CANCELLED
Notification Example:No notification is generated.

Invalid data entry

Invalid data
Event 1:The Shopper provides incorrect credentials on the Paysafecard website
Behaviour:The credentials are validated on the Paysafecard website. The shopper remains on the Paysafecard website until the shopper:
  • Enters a valid 16-digit Paysafecard PIN
  • Enters a valid my paysafecard username and password combination
  • Cancels the transaction
URL:NO URL is returned as the shopper does not leave the paysafecard website.
URL Example:N/A
Payment StatusThe payment status remains at SHOPPER_REDIRECTED.
Notification Example:No notification is generated.
Insufficient funds
Event 2:The Shopper does not have sufficient funds on their paysafecard
Behaviour:The system produces a message that informs the shopper that there are insufficient funds on their paysafecard. It then prompts the shopper to provide additional paysafecard PINs to complete the payment.
URL:No URL is returned as the shopper does not leave the Paysafecard website
URL Example:N/A
Payment StatusThe payment status remains at SHOPPER_REDIRECTED
Notification Example:No notification is generated.

Payment timeout

Time expired
Event:The shopper does not complete the payment within the allocated timeout period
Behaviour:Shoppers are automatically taken to a page to check their paysafecard balance. This is instead of shoppers going to the payment details page.
URL:No URL is returned as the shopper does not leave the paysafecard website.
URL Example:N/A
Payment StatusThe payment status remains at SHOPPER_REDIRECTED
Notification Example:No notification is generated.

Exception conditions

Error with PSP
Event 1:The payment cannot be processed due to technical issues at the Payment Service Provider (PSP).
Behaviour:pendingURL with status=ERROR is returned. This scenario occurs in exceptional circumstances where the payment cannot be processed for technical reasons.
URL:PENDING (ERROR)
URL Example:http://www.worldpay.com/pendingURL?orderKey=ADMINCODE^MERCHANTCODE^Example_Paysafecard_Order_Code&status=ERROR
Payment StatusThe payment status remains at SHOPPER_REDIRECTED
Notification Example:No notification is generated.
Authorisation + 5 seconds
Event 2:Worldpay receives the asynchronous authorisation from Paysafecard more than 5 seconds after the shopper completes their journey.
Behaviour:A pendingURL with an OPEN status is returned.
URL:pendingURL
URL Example:http://www.worldpay.com/?pending&orderKey=ADMINCODE^MERCHANTCODE^Example_Paysafecard_Order_Code&status=OPEN
Payment StatusThe payment status changes to AUTHORISED.
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="MERCHANT_CODE"><!--Will contain the merchant code used in the request-->
  <notify>
    <orderStatusEvent orderCode="ORDER_CODE"><!--Will contain the order code used in the request-->
      <payment>
        <paymentMethod>PAYSAFECARD-SSL</paymentMethod>
        <amount value="100" currencyCode="CZK" exponent="2" debitCreditIndicator="credit"/>
        <lastEvent>AUTHORISED</lastEvent>
        <balance accountType="IN_PROCESS_AUTHORISED">
          <amount value="100" currencyCode="CZK" exponent="2" debitCreditIndicator="credit"/>
        </balance>
        <riskScore value="41"/>
      </payment>
      <journal journalType="AUTHORISED">
        <bookingDate>
          <date dayOfMonth="26" month="06" year="2013"/>
        </bookingDate>
        <accountTx accountType="IN_PROCESS_AUTHORISED" batchId="10">
          <amount value="100" currencyCode="CZK" exponent="2" debitCreditIndicator="credit"/>
        </accountTx>
      </journal>
    </orderStatusEvent>
  </notify>
</paymentService>
Invalid amount
Event 3:The merchant submits a payment that is either above the maximum or below the minimum transaction amount for paysafecard.
Behaviour:pendingURL with status=ERROR is returned.
URL:pendingURL
URL Example:http://www.worldpay.com/?pendingURL&orderKey=ADMINCODE^MERCHANTCODE^Example_Paysafecard_Order_Code&status=ERROR
Payment StatusThe payment status remains at SHOPPER_REDIRECTED
Notification Example:No notification is generated.

Refunds

Refund requested
Event 1:The merchant requests a refund of the payment in MAI (Merchant Interface).
Behaviour:The merchant requests a direct refund of a settled payment in WPG.
URL:No URL is returned as the shopper journey is complete.
URL Example:N/A
Payment StatusThe payment status changes to SENT_FOR_REFUND
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="MERCHANT_CODE"><!--Will contain the merchant code used in the request-->
  <notify>
    <orderStatusEvent orderCode="ORDER_CODE"><!--Will contain the order code used in the request-->
      <payment>
        <paymentMethod>PAYSAFECARD-SSL</paymentMethod>
        <amount value="100" currencyCode="CZK" exponent="2" debitCreditIndicator="credit"/>
        <lastEvent>SENT_FOR_REFUND</lastEvent>
        <balance accountType="SETTLED_BIBIT_NET">
          <amount value="3" currencyCode="GBP" exponent="2" debitCreditIndicator="credit"/>
        </balance>
        <balance accountType="IN_PROCESS_CAPTURED">
          <amount value="100" currencyCode="CZK" exponent="2" debitCreditIndicator="debit"/>
        </balance>
        <riskScore value="41"/>
      </payment>
      <journal journalType="SENT_FOR_REFUND" description="Envoy bank transfer refund">
        <bookingDate>
          <date dayOfMonth="17" month="09" year="2013"/>
        </bookingDate>
        <accountTx accountType="IN_PROCESS_CAPTURED" batchId="77">
          <amount value="100" currencyCode="CZK" exponent="2" debitCreditIndicator="debit"/>
        </accountTx>
      </journal>
    </orderStatusEvent>
  </notify>
</paymentService>
Refund sent
Event 2:The requested refund is successfully sent to the shopper's bank
Behaviour:WPG receives confirmation that the payment has been successfully sent to the shopper's wallet.
URL:N/A
URL Example:N/A
Payment Status:The payment status is set to REFUNDED.
Refund fails
Event 3:The refund fails (e.g. shopper has specified incorrect bank details)
Behaviour:WPG receives confirmation that the payment has not been successfully sent to the shopper's wallet.
URL:N/A
URL Example:N/A
Payment Status:The payment status is set to REFUND_FAILED.
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="MERCHANT_CODE"><!--Will contain the merchant code used in the request-->
  <notify>
    <orderStatusEvent orderCode="ORDER_CODE"><!--Will contain the order code used in the request-->
      <payment>
        <paymentMethod>PAYSAFECARD-SSL</paymentMethod>
        <amount value="100" currencyCode="CZK" exponent="2" debitCreditIndicator="credit"/>
        <lastEvent>REFUND_FAILED</lastEvent>
        <balance accountType="SETTLED_BIBIT_NET">
          <amount value="3" currencyCode="GBP" exponent="2" debitCreditIndicator="credit"/>
        </balance>
        <riskScore value="41"/>
      </payment>
      <journal journalType="REFUND_FAILED">
        <bookingDate>
          <date dayOfMonth="17" month="09" year="2013"/>
        </bookingDate>
        <accountTx accountType="IN_PROCESS_CAPTURED" batchId="77">
          <amount value="100" currencyCode="CZK" exponent="2" debitCreditIndicator="credit"/>
        </accountTx>
      </journal>
    </orderStatusEvent>
  </notify>
</paymentService>

Transfer report

Settled

Copied!
<?xml version="1.0"?>
<orderStatusEvent orderCode="ORDER_CODE"><!--Will contain the order code used in the request-->
  <payment>
    <paymentMethod>PAYSAFECARD-SSL</paymentMethod>
    <amount value="1000" currencyCode="EUR" exponent="2" debitCreditIndicator="credit"/>
    <lastEvent>SETTLED</lastEvent>
    <balance accountType="SETTLED_BIBIT_NET">
      <amount value="920" currencyCode="EUR" exponent="2" debitCreditIndicator="credit"/>
    </balance>
    <balance accountType="SETTLED_BIBIT_COMMISSION">
     <amount value="80" currencyCode="EUR" exponent="2" debitCreditIndicator="credit"/>
    </balance>
  </payment>
  <journal journalType="SETTLED" description=" ">
    <bookingDate>
       <date dayOfMonth="2" month="4" year="2013" hour="8" minute="11" second="30"/>
    </bookingDate>
    <accountTx accountType="SETTLED_BIBIT_COMMISSION">
       <amount value="80" currencyCode="EUR" exponent="2" debitCreditIndicator="credit"/>
    </accountTx>
    <accountTx accountType="SETTLED_BIBIT_NET" batchId="106">
      <amount value="920" currencyCode="EUR" exponent="2" debitCreditIndicator="credit"/>
    </accountTx>
    <accountTx accountType="IN_PROCESS_CAPTURED" batchId="336">
      <amount value="1000" currencyCode="EUR" exponent="2" debitCreditIndicator="debit"/>
    </accountTx>
  </journal>
</orderStatusEvent>