PaysafeCard
PaysafeCard allows customers to pay safely online without a bank account or credit card. The customer buys PaysafeCard at a point of sale in the form of a printout with a 16-digit PIN, and pays by entering the PIN in the PaysafeCard payment panel of your online shop.
Aside from paying with a PIN, PaysafeCard also offers users my PaysafeCard, an account for the customer's PINs. The customer signs up for my PaysafeCard and tops up the account with purchased PaysafeCard PINs. The customer can then access the combined value of all PaysafeCard PINs added to the my PaysafeCard account. Payments are made simply and safely by entering their username and password.
Supported Countries
Australia, Austria, Belgium, Bulgaria, Croatia, Cyprus, Czech Republic, Denmark, Finland, France, Germany, Hungary, Iceland, Ireland, Italy, Latvia, Lithuania, Luxembourg, Malta, Netherlands, New Zealand, Norway, Paraguay, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, Sweden, Switzerland, United Kingdom, Uruguay, USA (and its territories).
Customer Payment Flow
- When the customer is ready to pay, they select PaysafeCard on your checkout page.
- The customer is redirected to PaysafeCard to enter their PIN or use their my PaysafeCard account and complete their purchase.
- PINs are redeemed in real-time with the retail issuer and instantly validated.
Configuration Options
We offer 2 ways to integrate PaysafeCard, allowing merchants to support both simple one-time payments and streamlined repeat purchases. Depending on the customer journey you want to enable, you can choose between the standard payment flow or the 1-Click flow for returning users.
The sections below outline both integration approaches, including how they work, the API components involved, and common use cases.
Standard PaysafeCard Integration
This is the traditional integration method where the customer enters a 16-digit PaysafeCard PIN or logs into my PaysafeCard during checkout. It is typically used for single, one-off transactions.
How It Works
- Merchant creates a payment session and obtains a payment session ID (see the PaysafeCard payment session example request).
- Customer is redirected to PaysafeCard's secure payment page.
- Customer enters their PIN or logs in to their my PaysafeCard account.
- PaysafeCard processes the payment and sends a callback/notification to Skrill.
- Skrill sends status notification.
- Merchant validates the callback to confirm completion.
Mandatory Parameters
We would always recommend using our Straight Through Redirect when integrating the Payment Options on the Skrill Quick Checkout. Straight Through Redirect is used with a single payment method code to automatically redirect customers to the provider's website without showing the Quick Checkout payment form. For PaysafeCard you need to provide the following details:
| Payment Option | payment_methods | pay_from_email | firstname | lastname |
|---|---|---|---|---|
| PaysafeCard | PSC | Y | N | N |
Example:
curl --location 'https://pay.skrill.com/' \
--header 'Content-Type: application/json' \
--data-raw '{
"pay_to_email": "demoqco@sun-fish.com",
"pay_from_email": "test@payer.com",
"country": "DEU",
"amount": 39.68,
"currency": "EUR",
"payment_methods": "PSC",
"prepare_only": 1
}'
In case of payment failure, the status notification will contain failed_reason_code among the error codes.
PaysafeCard 1-Click Integration
The 1-Click integration allows customers to pay faster by linking their PaysafeCard account once and enabling subsequent payments without re-entering PINs. Payments use a stored customer token tied to their myPaysafeCard account. Please note that an additional annex needs to be signed. Please contact your Account Manager for assistance.
How It Works
Initial Payment:
- Merchant creates a payment session and obtains a payment session ID (see the PaysafeCard payment session example request).
- Customer is redirected to PaysafeCard's secure payment page.
- Customer logs in to their my PaysafeCard account and is provided with consent. *
- PaysafeCard processes the payment and sends a callback/notification to Skrill.
- Skrill sends status notification enriched with
rec_payment_id,ondemand_max_amount,ondemand_max_currencyandondemand_expiration_date**
* Customer is given an optional consent. Meaning it is at the customer’s discretion to decide whether they want to subscribe for the service. If the customer does not subscribe to the service the transaction is processed as a regular payment.
** Customer can subscribe for the 1-Click payments only if they deposit through their myPaysafeCard balance. If the customer decides to process the payment with a PIN they are not able to subscribe for the service. If the customer does not provide consent, the additional parameters will not be present in the status notification.
Example status notification:
200 OK
merchant_id=1001&transaction_id=2002&mb_transaction_id=3001&mb_amount=10&mb_currency=EUR&status=2&md5sig=08398C1E8428C2F6CBA336237EAA7013&amount=10&firstname=Test&address=Test&rec_payment_id=4001&ondemand_max_amount=1000&ondemand_expiration_date=08%2F12%2F2026&lastname=Payer&ondemand_max_currency=EUR&pay_from_email=test@example.com&pay_to_email=merchant@example.com¤cy=EUR&postal_code=123&customer_id=5001&payment_type=PSC
Please note that you can have only one active rec_payment_id per user. If you do multiple, the system will automatically cancel the old rec_payment_id and keep the new one active.
Consecutive Payment
- Merchant initiates a prepare request to https://www.skrill.com/app/ondemand_request.pl with the previously provided
rec_payment_id(We are utilizing the existing 1-Tap functionality for the consecutive payments). - Skrill will return a session.
- After you execute the session, the payment is processed automatically.
- Status notification is sent.
Example:
Request:
curl -X POST https://www.skrill.com/app/ondemand_request.pl \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "email=sample.merchant%40sunfish.com" \
-d "password=fb0dc09bd0989fe975afd3e4ddabb926" \
-d "action=prepare" \
-d "amount=1.23" \
-d "currency=EUR" \
-d "ondemand_note=ondemand note" \
-d "frn_trn_id=12341990" \
-d "rec_payment_id=1668618647"
Response:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<sid>4414c2a969c744c27bd674a0b0a5ba8a</sid>
</response>
Request:
curl -X POST https://www.skrill.com/app/ondemand_request.pl \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "sid=4414c2a969c744c27bd674a0b0a5ba8a" \
-d "action=request"
Response:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<transaction>
<amount>10.34</amount>
<currency>EUR</currency>
<id>1668624876</id>
<status>2</status>
<status_msg>processed</status_msg>
</transaction>
</response>
In case of payment failure, the status notification will contain failed_reason_code among the error codes.
Consecutive Payment in Case of Insufficient Balance
- Merchant initiates a prepare request to https://www.skrill.com/app/ondemand_request.pl with the previously provided
rec_payment_id(We are utilizing the existing 1-Tap functionality for the consecutive payments). - Skrill will return a session.
- After you execute the session, we will try to process the payment automatically.
- In case of an error for insufficient balance (error code
05), you need to initiate a new payment session and include the parameterondemand_disabledwith value1. In this way, you will receive a regular payment and the customer will have the ability to later update funds in their account. This is done so that the customer is not forced to go through the consent again and for us to issue a newrec_payment_id.
Example:
curl --location 'https://pay.skrill.com/' \
--header 'Content-Type: application/json' \
--data-raw '{
"pay_to_email": "demoqco@sun-fish.com",
"pay_from_email": "test@payer.com",
"country": "DEU",
"amount": 39.68,
"currency": "EUR",
"payment_methods": "PSC",
"ondemand_disabled": 1,
"prepare_only": 1
}'