Paysafecard Deposit

Paysafecard Deposit is a popular voucher payment method allowing user to purchase paysafecard 16-digit PINs at various outlets.

In order to improve usability and to meet KYC requirements in various countries, besides the option to only enter the PIN(s), Paysafecard also offers a my paysafecard account - both options are selected only after the redirect to Paysafecard.

The following method IDs are covered in this section:

IDNameCredit/Debit State
19PaysafecardDepositCapturedByProvider

Payment method interaction type: Redirection to External Payment Provider (see Interaction Types).

The following Paysafecard payment methods are available in the PXP Financial payment service:

Payment MethodDescription
Paysafecard Deposit* with provider Paysafecard**The old implementation of Paysafecard is no longer in use.
Paysafecard Deposit with *provider PaysafecardSOPG**This implementation is utilizing the (current) Paysafecard SOPG interface.
Paysafecard WithdrawalThe withdrawal option requires that the customer uses a my paysafecard account.
Paysafecard Direct DepositThe Paysafecard Direct Deposit option allows to enter the PIN at the merchant´s website and complete the payment without redirection to Paysafecard. This payment option is being phased out and is no longer available for new merchants.

Redirect Integration

Paysafecard is supported.

Backend2BackendIntegration

The following description applies to PaysafecardDeposit with provider Paysafecard SOPG.

The following parameters can be provided in initiatePaymentRequest.specificPaymentData:

key (value type, account type, required)value
SuccessPageURL
(string)
The URL to redirect user in case of a successful payment
ErrorPageUrl (string)The URL to redirect user in case of unsuccessful payment
MerchantNotificationUrl (string)Either SuccessPageURL/ErrorPageURL is selected, or MerchantNotificationURL is used if provided
UserID (string, required)UserID of merchant´s user. The username should not be used.
UserIP (string, required)IP address of the user.
ShouldRequestKYC (string, optional)When the merchant sends true, the payment is extending with the KYC flow. This flow can only be used when activated by Paysafe. See the section further below for details.

Example initiatePaymentRequest:

<?xml version="1.0" encoding="utf-8"?>
<initiatePaymentRequest xmlns="http://www.cqrpayments.com/PaymentProcessing">
	<merchantID>AcceptDemo</merchantID>
	<shopID>AcceptDemo</shopID>
	<merchantTransactionID>testPSCAD00001085_06</merchantTransactionID>
	<paymentMethodID>19</paymentMethodID>
	<amount currencyCode="EUR">50.00</amount>
	<userID>48722522</userID>
	        <userData>
                <username>accept308</username>
                <firstname>John</firstname>
                <lastname>Doe</lastname>
                <languageCode>en</languageCode>
                <email>[email protected]</email>
                <address>
                        <street>Address2308</street>
                        <houseName>Address308</houseName>
                        <postalCode>447474</postalCode>
                        <state>State308</state>
                        <countryCode2>DE</countryCode2>
                </address>
                <dateOfBirth>1941-01-03T00:00:00</dateOfBirth>
        </userData>

	<userIP>127.0.0.1</userIP>
	<userSessionID>07430107032016axcvED5CPaQ</userSessionID>
	<creationTypeID>1</creationTypeID>
	<specificPaymentData>
        <data xsi:type="keyStringValuePair">
               <key>SuccessPageUrl</key>
               <value>https://example.com/?status=success&amp;txnid=14573330244299428</value>
        </data>
        <data xsi:type="keyStringValuePair">
               <key>ErrorPageUrl</key>
               <value>https://example.com/?status=fail&amp;txnid=14573330244299428</value>
        </data>
        <data xsi:type="keyStringValuePair">
               <key>MerchantNotificationUrl</key>
               <value>https://example.com/paysafecardRedirectBack.action</value>
        </data>
        </specificPaymentData>
</initiatePaymentRequest>

Example initiatePaymentRequest (with KYC flow):

<?xml version="1.0" encoding="utf-8"?>
<initiatePaymentRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.cqrpayments.com/PaymentProcessing">
       <merchantID>B2BTestMerchant</merchantID>
<shopID>PaysafecardSOPGShouldRequestKYCBDD</shopID>
       <merchantTransactionID>06129a57-d536-4bef-b9dc-f84efc893583</merchantTransactionID>
       <paymentMethodID>19</paymentMethodID>
       <amount currencyCode="EUR">21</amount>
<userID>PaysafecardSOPGShouldRequestKYCBDD</userID>
       <userData>
       <username>PaysafecardSOPGShouldRequestKYCBDD</username>
       </userData>
       <userIP>127.0.0.1</userIP>
       <userSessionID>32e4937d-7d93-477f-aaf2-52a24a4a9c9c</userSessionID>
       <creationTypeID>1</creationTypeID>
       <specificPaymentData>
              <data xsi:type="keyStringValuePair">
                    <key>SuccessPageUrl</key>
                    <value>http://accept/</value>
              </data>
              <data xsi:type="keyStringValuePair">
                    <key>ErrorPageUrl</key>
                    <value>http://decline/</value>
              </data>
              <data xsi:type="keyStringValuePair">
                     <key>MerchantNotificationUrl</key>
                    <value />
              </data>
              <data xsi:type="keyStringValuePair">
                    <key>LanguageCode</key>
                    <value>de</value>
              </data>
              <data xsi:type="keyBooleanValuePair">
                    <key>ShouldRequestKYC</key>
                    <value>true</value>
              </data>
       </specificPaymentData>
</initiatePaymentRequest>

Example initiatePaymentResponse:

<initiatePaymentResponse xmlns="http://www.cqrpayments.com/PaymentProcessing">
         <payment xsi:type="paymentWithPaymentAccount" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <merchantID>PG</merchantID>
            <shopID>releaseb</shopID>
            <paymentMethod>
               <key>19</key>
               <value>Paysafecard Deposit</value>
            </paymentMethod>
            <merchantTransactionID>testPSCAD00001085_06</merchantTransactionID>
            <paymentID>3603bd0e-5449-4ced-ba01-5eadf858e741</paymentID>
            <userID>48722522</userID>
            <paymentProvider>
               <key>118</key>
               <value>PaysafecardSOPG</value>
            </paymentProvider>
            <amount currencyCode="EUR">50.00</amount>
            <creationType>
               <key>1</key>
               <value>User</value>
            </creationType>
            <userIP>127.0.0.1</userIP>
            <state>
               <id>e468b1ea-5771-4bda-bc9e-3434838ef29b</id>
               <definition>
                  <key>30</key>
                  <value>RedirectURLCreated</value>
               </definition>
               <createdOn>2017-05-15T16:28:42.3064018Z</createdOn>
               <description>https://api.test.kalixa.com/WebMockProviders/PaysafecardSOPG.aspx?mid=1000001234&amp;mtid=3603bd0e-5449-4ced-ba01-5eadf858e741&amp;amount=50.00&amp;currency=EUR</description>
               <paymentStateDetails>
                  <detail xsi:type="keyStringValuePair">
                     <key>RedirectionUrl</key>
                     <value>https://api.test.kalixa.com/WebMockProviders/PaysafecardSOPG.aspx?mid=1000001234&amp;mtid=3603bd0e-5449-4ced-ba01-5eadf858e741&amp;amount=50.00&amp;currency=EUR</value>
                  </detail>
                  <detail xsi:type="keyStringValuePair">
                     <key>PaymentStateReasonID</key>
                     <value>1</value>
                  </detail>
               </paymentStateDetails>
            </state>
            <isExecuted>false</isExecuted>
            <baseAmount currencyCode="EUR">50</baseAmount>
            <paymentDetails>
               <detail xsi:type="keyStringValuePair">
                  <key>ProviderExternalID</key>
                  <value>3603bd0e-5449-4ced-ba01-5eadf858e741</value>
               </detail>
            </paymentDetails>
            <paymentAccount>
               <paymentAccountID>0</paymentAccountID>
            </paymentAccount>
         </payment>
      </initiatePaymentResponse>

KYC flow

When the KYC flow has been initiated, PXP returns the customer´s Firstname, Lastname, customerID and DateOfBirth in a state notification for the state AuthorisedByProvider.

The merchant has to respond to this notification. if the payment is blocked or refused by merchant, then the authorization is cancelled on Paysafecard.

Example handleProviderNotificationToMerchantRequest (with KYC data):

<?xml version="1.0" encoding="utf-8"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.cqrpayments.com/PaymentProcessing">
	<payment xsi:type="paymentWithPaymentAccount">
		<merchantID>B2BTestMerchant</merchantID>
		<shopID>PaysafecardSOPGShouldRequestKYCBDD</shopID>
		<paymentMethod>
			<key>19</key>
			<value>Paysafecard Deposit</value>
		</paymentMethod>
		<merchantTransactionID>06129a57-d536-4bef-b9dc-f84efc893583</merchantTransactionID>
		<paymentID>072d3d6e-883f-49f1-bc27-80d1c1be9da0</paymentID>
		<userID>PaysafecardSOPGShouldRequestKYCBDD</userID>
		<paymentProvider>
			<key>118</key>
			<value>PaysafecardSOPG</value>
		</paymentProvider>
		<amount currencyCode="EUR">21.0000</amount>
		<creationType>
			<key>1</key>
			<value>User</value>
		</creationType>
		<userIP>127.0.0.1</userIP>
		<state>
			<id>f31cab99-ffa1-4296-a363-a38703f94171</id>
			<definition>
				<key>27</key>
				<value>AuthorisedByProvider</value>
			</definition>
			<createdOn>2019-12-30T10:02:16.933</createdOn>
			<paymentStateDetails xsi:nil="true" />
		</state>
		<isExecuted>true</isExecuted>
		<baseAmount currencyCode="EUR">21.0000</baseAmount>
		<paymentDetails>
			<detail xsi:type="keyStringValuePair">
				<key>ProviderExternalID</key>
				<value>072d3d6e-883f-49f1-bc27-80d1c1be9da0</value>
			</detail>
			<detail xsi:type="keyStringValuePair">
				<key>CustomerID</key>
				<value>10677219</value>
			</detail>
			<detail xsi:type="keyStringValuePair">
				<key>KYCFirstname</key>
				<value>Tore</value>
			</detail>
			<detail xsi:type="keyStringValuePair">
				<key>KYCLastname</key>
				<value>God</value>
			</detail>
			<detail xsi:type="keyStringValuePair">
				<key>KYCDateOfBirth</key>
				<value>06/06/1466</value>
			</detail>
		</paymentDetails>
		<paymentAccount>
			<paymentAccountID>e3ae02c5-614d-4932-8cca-f6a68a6bde47</paymentAccountID>
		</paymentAccount>
	</payment>
</handlePaymentStateChangedNotificationRequest>

Example handlePaymentStateChangedNotificationResponse (successful case:

<?xml version="1.0" encoding="utf-8"?>
<handlePaymentStateChangedNotificationResponse 
    xmlns="http://www.cqrpayments.com/PaymentProcessing" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <resultCode>
    <key>0</key>
    <value>ProcessedSuccessfully</value>
  </resultCode>
  <resultMessage>Approved payment</resultMessage>
</handlePaymentStateChangedNotificationResponse>

Example handlePaymentStateChangedNotificationResponse (error case):

<?xml version="1.0" encoding="utf-8"?>
<handlePaymentStateChangedNotificationResponse 
    xmlns="http://www.cqrpayments.com/PaymentProcessing"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<resultCode>
		<key>15</key>
		<value>BlockedByMerchant</value>
	</resultCode>
	<resultMessage>Rejected payment</resultMessage>
</handlePaymentStateChangedNotificationResponse>

Note: When the merchant responds with resultCode 0 (Approved), the payment is captured and the state CapturedByProvider is notified to the merchant.

However, if the merchant responds with resultcode 15 (BlockedByMerchant), the payment is cancelled at provider (captured with an amount of zero) and a notification for the state Cancelled can be sent to the merchant.

Finalization of payment

Example handleProviderNotificationToMerchantRequest:

<handleProviderNotificationToMerchantResponse xmlns="http://www.cqrpayments.com/PaymentProcessing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
	<payment>
		<merchantID>YourMerchantID</merchantID>
		<shopID>YourShopID</shopID>
		<paymentMethod>
			<key>19</key>
			<value>Paysafecard Deposit</value>
		</paymentMethod>
		<merchantTransactionID>0e23b2f1-1d92-4ddd-8d43-9de4e77e279b</merchantTransactionID>
		<paymentID>18746be1-b2c3-42d8-8543-fc2d0a93f77d</paymentID>
		<userID>d48693ca-e96e-4ca1-9e01-035645a79399</userID>
		<paymentProvider>
			<key>118</key>
			<value>PaysafecardSOPG</value>
		</paymentProvider>
		<amount currencyCode="EUR">100</amount>
		<creationType>
			<key>1</key>
			<value>User</value>
		</creationType>
		<userIP>127.0.0.1</userIP>
		<state>
			<id>9b4bf2bc-c0e7-4bee-abb4-a00ebe5ce4cf</id>
			<definition>
				<key>27</key>
				<value>CapturedByProvider</value>
			</definition>
			<createdOn>2010-05-19T10:14:41.1242993Z</createdOn>
			<paymentStateDetails xsi:nil="true" />
		</state>
		<isExecuted>true</isExecuted>
		<baseAmount currencyCode="EUR">100</baseAmount>
		<paymentDetails xsi:nil="true" />
</payment>
</handleProviderNotificationToMerchantResponse >

The possible payment states in *handleProviderNotificationToMerchantRequest are listed below:

Payment StateDescription
CapturedByProvider (27)Success state; Redirect user to SuccessPage and deliver goods
CaptureErrorReportedByProvider (28)Error state; Technical error during payment finalization
CaptureCommunicationErrorOccurred (324)Error state; Communication error during payment finalization
AuthorisedByProvider (13)Intermediate state; It’s not a final state yet. Payment still needs to captured.
PendingOnProvider (120)Pending state.
Cancelled (113)Final state: Payment cancelled by merchant.
AbortedByCustomer (101)Final state: Payment cancelled by merchant`s user.
AbortedOnProvider (397)Final state: Payment cancelled by merchant operator while in AuthorisedByProvider state.

Paysafecard deposits with provider PaysafecardSOPG can be captured either automatically, after a pre-defined time or manually on demand.

Step 3 - optional (for manual capturing):

If merchant wants to initiate a capturing he needs to call the method executePaymentAction with the ActionID = 205

Notifications

The standard notification mechanism is used for notifying the merchant in the background (asynchronously) about payment state changes. For more information see PaymentStateChangedNotification.

Example handlePaymentStateChangedNotificationRequest for the state CapturedByProvider:

<?xml version="1.0" encoding="utf-8"?>
<handlePaymentStateChangedNotificationRequest xmlns="http://www.cqrpayments.com/PaymentProcessing" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<payment xsi:type="paymentWithPaymentAccount">
		<merchantID>KalixaAcceptDEMO</merchantID>
		<shopID>KalixaAcceptDEMO</shopID>
		<paymentMethod>
			<key>19</key>
			<value>Paysafecard Deposit</value>
		</paymentMethod>
		<merchantTransactionID>20141217_1</merchantTransactionID>
		<paymentID>ccbc1e5e-baeb-4331-ab99-7c94fef0ce73</paymentID>
		<userID>KalxiaTestUser_7</userID>
		<paymentProvider>
			<key>118</key>
			<value>PaysafecardSOPG</value>
		</paymentProvider>
		<amount currencyCode="EUR">100.0000</amount>
		<creationType>
			<key>1</key>
			<value>User</value>
		</creationType>
		<userIP>195.72.132.1</userIP>
		<state>
			<id>52ad9032-ebd7-4546-ac86-45e67453fc35</id>
			<definition>
				<key>27</key>
				<value>CapturedByProvider</value>
			</definition>
			<createdOn>2014-12-17T08:14:02.34</createdOn>
			<paymentStateDetails xsi:nil="true" />
		</state>
		<isExecuted>true</isExecuted>
		<baseAmount currencyCode="EUR">100.0000</baseAmount>
		<paymentDetails>
			<detail xsi:type="keyStringValuePair">
				<key>ProviderExternalID</key>
				<value>ccbc1e5e-baeb-4331-ab99-7c94fef0ce73</value>
			</detail>
			<detail xsi:type="keyIntValuePair">
				<key>PaymentScoring</key>
				<value>714663</value>
			</detail>
		</paymentDetails>
		<paymentAccount>
			<paymentAccountID>72562076-5d33-4279-8345-e6bc016cbfcc</paymentAccountID>
		</paymentAccount>
	</payment>
</handlePaymentStateChangedNotificationRequest>

Example handlePaymentStateChangedNotificationRequest for the state Cancelled:

<?xml version="1.0" encoding="utf-8"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.cqrpayments.com/PaymentProcessing">
	<payment xsi:type="paymentWithPaymentAccount">
		<merchantID>B2BTestMerchant</merchantID>
		<shopID>PaysafecardSOPGShouldRequestKYCBDD</shopID>
		<paymentMethod>
			<key>19</key>
			<value>Paysafecard Deposit</value>
		</paymentMethod>
		<merchantTransactionID>21e30378-3dca-4694-acd3-7c1e91f33c61</merchantTransactionID>
		<paymentID>07e7ca39-14f6-4a72-a3e6-442b850d122a</paymentID>
		<userID>PaysafecardSOPGShouldRequestKYCBDD</userID>
		<paymentProvider>
			<key>118</key>
			<value>PaysafecardSOPG</value>
		</paymentProvider>
		<amount currencyCode="EUR">46.0000</amount>
		<creationType>
			<key>1</key>
			<value>User</value>
		</creationType>
		<userIP>127.0.0.1</userIP>
		<state>
			<id>f22eceab-f0ab-430e-a031-045668603500</id>
			<definition>
				<key>113</key>
				<value>Cancelled</value>
			</definition>
			<createdOn>2019-12-30T10:02:21.42</createdOn>
			<paymentStateDetails>
				<detail xsi:type="keyIntValuePair">
					<key>PaymentStateReasonID</key>
					<value>1</value>
				</detail>
			</paymentStateDetails>
		</state>
		<isExecuted>false</isExecuted>
		<baseAmount currencyCode="EUR">46.0000</baseAmount>
		<paymentDetails>
			<detail xsi:type="keyStringValuePair">
				<key>ProviderExternalID</key>
				<value>07e7ca39-14f6-4a72-a3e6-442b850d122a</value>
			</detail>
			<detail xsi:type="keyStringValuePair">
				<key>CustomerID</key>
				<value>10677219</value>
			</detail>
		</paymentDetails>
		<paymentAccount>
			<paymentAccountID>e3ae02c5-614d-4932-8cca-f6a68a6bde47</paymentAccountID>
		</paymentAccount>
	</payment>
</handlePaymentStateChangedNotificationRequest>

Paysafecard error codes

ProviderResponseCodeProviderResponseMessage
3001Merchant %1 is not active. Please contact your webshop.
3002Currency %1 is not valid for merchant %2. Please contact your webshop.
3003Merchant %1 does not exist. Please contact your webshop.
3006Card Type %1 is not accepted by the merchant.
3007Merchant %1 exceeded time window to debit the transaction.
3012Merchant %1 exceeded time window for Micropayment.
3013Merchant %1 already exists.
3014Reporting Criterion %1 for Merchant %2 doesn't exist.
3015Reporting Criterion %1 for Merchant %2 is in state %3, expected %4 or %5.
4001SSL error.
4002Invalid function request.
4003above maximum disposition amount (1000.00 EUR or equivalent in different transaction currency)
4004Invalid proxy request.
4005Connection error.
4006Unexpected response from server.
4007Undefined error - this should not happen.
4008Error reported from backend.
4010Error opening configuration file.
4011Configuration file is no regular readable file.
4012Incorrect syntax in configuration file.
4013Incorrect value in configuration file.
4014Error HTTP response from API proxy: %1.
10003HTTPS request error
10004General technical error
10005General technical error
10006PIN validation failed
10007Unexpected error
10008Authentication failed
10010cancelPayment too late
10011Insufficient Balance
10012Zero Balance
10013Card not active
10014Method not allowed for SOPG User
10015Currency not valid for SOPG User
10021Invalid transaction amount
10028Invalid request parameters