Search Overlay

paysafecard

paysafecard is a popular alternative payment method that enables customers to make online purchases without the need for a bank account or credit card. Customers can purchase prepaid vouchers from authorized retailers and then redeem them at various online platforms, including gaming, e-commerce, and entertainment sites. With its widespread availability and ease of use, paysafecard offers a secure and convenient solution for customers seeking a flexible payment option for their online transactions.

Features

  1. Broad acceptance across industries: paysafecard is widely accepted by various online platforms, from gaming to e-commerce and entertainment.

  2. Secure and private transactions: With paysafecard, customers can make purchases online without sharing personal or financial information.

  3. No bank account or credit card required: paysafecard eliminates the requirement for traditional banking services, making it accessible to all.

  4. Flexible payment amounts: Customers can choose the desired denomination for prepaid vouchers, allowing for customized payment options.

  5. Convenient accessibility: paysafecard vouchers can be easily obtained from authorized retailers or online channels, ensuring widespread availability.

The Payments API caters to the following needs of paysafecard:

  • Payment Instrument: paysafecard , paysafecard account, Scan to Pay. 
  • Prepaid Payment Method: Pay online without entering any personal information, bank, or credit card details. 
  • Transaction types: Payments, Withdrawals, and Refunds. 
  • Payment authentication: PIN protected (Payment Services Directive 2 (PSD2) Compliance)

Product Availability

To see the availability of products, click here.

Typical Scenarios

paysafecard Payment

To process a payment request using paysafecard: 

  1. Create a payment handle with the following parameter settings:
    transactionType: PAYMENT
    paymentTypePAYSAFECARD
    POSTpaymenthub/v1/paymenthandles
  2. We return a response with the following details:
    • The action parameter is set to REDIRECT
    • A payment_redirect link points to paysafecard page redirect URL
    • The status of the payment handle becomes INITIATED.
  3. After the customer is redirected using payment_redirect on the paysafecard page, the customer gets different options to pay depending upon merchant configuration and the currency of transaction:
    • 16-Digit BIN
    • paysafecard Account 
    • Scan to Pay
      Note: Only payment with paysafecard account option makes the customer eligible for the payout service.
  4. Depending upon the status of the transaction, the customer is redirected to the success or failed page.
    • The status of the payment handle becomes PAYABLE after a successful transaction and becomes FAILED, if the transaction fails.
    • You get notified of the status change through a configured webhook.
  5. Use the paymentHandleToken returned in the response to process the payment request.
    POSTpaymenthub/v1/payments
  6. In the response of Payments API call, depending upon your configured account at paysafecard and the processing currency and the customer action, the response contains these parameters

    • The Id returned in the response is the payment ID, and it's the same as the settlement ID if settleWithAuth is set to TRUE, and must be stored at your end for future use, as paymentId is used in refunds directly.

    • If the Payment API request is done and settleWithAuth is set to FALSE, the Settlement API can be called separately. 
      • POST: paymenthub/v1/settlements
      • In this case, a new and separate Id from the Payments ID is returned in the response, and this should be stored at the merchant's end for future use, as settlementId is used in refunds directly and not paymentId. 

Note:

  • Customers who have a paysafecardaccount will be eligible for the payout service. 
  • To prevent the customer from changing the email ID on the paysafecard page, you can enable the email restriction feature while getting onboarded with paysafecard. 
    • You can pass the email ID of the customer under profile.email parameter of the payment handle. 
    • The email ID used by customer in the paysafecard page will be returned under gatewayResponse.profile.email. 

paysafecard Withdrawal

paysafecard payouts allow the transfer of funds to the paysafecard account holders. Payout is executed by the business partner at the demand of the customer. 

Payouts are currently only available for my paysafecard account holders in the following countries: 

Austria Croatia Denmark Georgia
Belgium Cyprus Finland Germany
Bulgaria Czech Rep. France Greece
Hungary Ireland Italy Latvia
Luxemburg Malta Netherlands Norway
Poland Portugal Romania Slovakia
Slovenia Spain Sweden Switzerland
United Kingdom      

Payout Prerequisites

  • For each payout request, the business partner needs to provide the customer’s personal details (first name, last name, email address and date of birth) to paysafecard during the payout call. paysafecard automatically validates the provided data against the registered paysafecard account data. The payout will automatically be refused if the data does not match.

  • If the data does not match 100%; the automatic validation cannot proceed and the payout will be refused automatically. The input will be normalized before the comparison starts by paysafecard.

To process a paysafecard withdrawal request:

  1. Create a payment handle with the following parameter settings:
    transactionType: PAYMENT
    paymentTypePAYSAFECARD
    POST:paymenthub/v1/paymenthandles
  2. The request needs two objects 

  3. In the response, a one-time token will be received with the tag paymentHandleToken and the status turns to PAYABLE, this token is then passed to the Standalone Credits API. 
    POST: paymenthub/v1/standalonecredits
  4. The final response will contain the details of the transaction with parameters like
    • id - unique identifier at Paysafe
    • gatewayReconciliationId - unique identifier at Skrill
    • Status of the transaction that can be used for future references.
  5. The status of the withdrawal will be PENDING initially and moves to COMPLETED once the refund is processed to the customer's bank account, at each step a webhook will be triggered to you. 

paysafecard Refunds

To process a refund transaction using paysafecard:

You can initiate a refund transaction only for a transaction whose settlement/payment is completed.

  1. After the payment and then settlement is done
    • The status is COMPLETED in the response of payments information
    • The refund can be initiated using the Settlement ID which is the same as Payment ID if settleWithAuth is TRUE.
  2. Create a refund request with the Refunds API. 
    POST: /paymenthub/v1/settlements/{settlementId }/refunds
  3. The response contains details of the payment and a unique identifier that could be used to refer to each individual refund, either partial or full.
  4. The status of the refund will be PENDING initially and moves to COMPLETED once the refund is processed to the customer's bank account, at each step a webhook will be triggered to you. 

Note: A refund transaction can only be initiated by you and for a transaction whose settlement/payment is completed. Partial refunds are not available. 

APIs to use

Get Balance

You can retrieve the balance in your accounts using the Get Balance API. The API call is a GET request and returns an array of account balances.

Note: While onboarding a customer to paysafecard, contact Paysafe Integration Team and get this feature enabled for your account. 

Name Mandatory/Optional Description
paymentType Mandatory Payment Type (PAYSAFECARD)
currencyCode Mandatory Filters based on currency, if provided. (3 letter ISO currency code)
accountId Optional  Only required if you have multiple accounts and maintain different balances at each level and you want to filter them in response. 

Sample Request:

GET: https://api.test.paysafe.com/paymenthub/v1/balances?paymentType={paymentType}&currencyCode={currencyCode}

Sample Response

[{
"currencyCode": "GBP",
"paymentType": "PAYSAFECARD",
"balance": "895009",
"gatewayResponse": {
"processor": "PAYSAFECARD",
"daily_payout_amount": 0,
"daily_payout_balance": 1000000,
"daily_payout_limit": 1000000,
"total_payment_amount": 13569,
"total_payout_amount": 118560,
"total_payout_balance": 895009
}
}]

Flow Diagram - Get Balance

Parameters

Payments API response parameters

Parameter Mandatory Description
gatewayResponse.id M - Returned for all transactions Unique Identifier of the Payment at paysafecard which could be used for reconciliation (common for all APMs)
gatewayResponse.profile C - returned only in specific cases and mandatory for Payouts  Profile details of the user
gatewayResponse.profile.dateOfBirth.day C - returned only in specific cases and mandatory for Payouts 

Day of Date of Birth of the paysafecard account holder at paysafecard end

gatewayResponse.profile.dateOfBirth.Month C - returned only in specific cases and mandatory for Payouts 

Month of Date of Birth of the paysafecard account holder at Paysafecard end

gatewayResponse.profile.dateOfBirth.Year C - returned only in specific cases and mandatory for Payouts 

Year of Date of Birth of the paysafecard account holder at Paysafecard end

gatewayResponse.profile.firstName C - returned only in specific cases and mandatory for Payouts 

First Name of the paysafecard account holder at Paysafecard end

gatewayResponse.profile.lastName C - returned only in specific cases and mandatory for Payouts 

Last Name of the paysafecard account holder at Paysafecard end

gatewayResponse.pscId

C - returned only in specific cases and mandatory for Payouts  Unique user identifier sent back from paysafecard

paysafecard.consumerId

 

M - Returned for all transactions Unique Merchant-User-processor identifier provided by Merchant in request. 

paysafecard object

Parameter Mandatory Description
consumerId M - Needed for all transactions Unique email ID of the user which is used to identify to account at Skrill end
pscId C - This is mandatory if email in profile is not provided Unique user identifier provided by paysafecard in Payments call

profile object

Parameter Mandatory Description
firstName M - Needed for all transactions Unique email ID of the user which is used to identify to account at Skrill end
lastName M - Needed for all transactions Two-digit unique country code to identify the area of operation of bank account and currency.
email C - This is mandatory if pscId in paysafecard object is not provided email Id of the user registered at paysafecard end
dateOfBirth.day M - Needed for all transactions Day of Date of Birth of the paysafecard account holder at Paysafecard end
dateOfBirth.Month M - Needed for all transactions Month of Date of Birth of the paysafecard account holder at Paysafecard end.
dateOfBirth.Year M - Needed for all transactions Year of Date of Birth of the paysafecard account holder at Paysafecard end

Code Examples

Payment handle API request

{
"merchantRefNum": "6005618c-afe8-41c2-a65f-50138790d7b4",
"transactionType": "PAYMENT",
"accountId": "1001737020",
"paysafecard": {
"consumerId": "merchantclientid",
"minAgeRestriction": 18,
"kycLevelRestriction": "SIMPLE"

},
"paymentType": "PAYSAFECARD",
"amount": 500,
"currencyCode": "WUR",
"customerIp": "172.0.0.1",
"billingDetails": {
"nickName": "Home",
"street": "100 Queen",
"street2": "Unit 201",
"city": "Toronto",
"zip": "M5H 2N2",
"country": "UK"
},
"merchantDescriptor": {
"dynamicDescriptor": "OnlineStore",
"phone": "12345678"
},
"returnLinks": [{
"rel": "on_completed",
"href": "https://usgaminggamblig.com/payment/return/success",
"method": "GET"
}, {
"rel": "on_failed",
"href": "https://usgaminggamblig.com/payment/return/failed",
"method": "GET"
}, {
"rel": "default",
"href": "https://usgaminggamblig.com/payment/",
"method": "GET"
}
]
}

Payment handle API response

{
"id": "e8c217c0-f212-4007-b4ac-fd0642a75d3f",
"paymentType": "PAYSAFECARD",
"paymentHandleToken": "PHlO4bOFGsNX5X1N",
"merchantRefNum": "df9b287b-a0df-4996-87b0-3089e4b1363f",
"currencyCode": "EUR",
"txnTime": "2023-03-17T10:47:08Z",
"billingDetails": {
"street": "100 Queen",
"street2": "Unit 201",
"city": "Toronto",
"zip": "M5H 2N2",
"country": "UK"
},
"customerIp": "172.0.0.1",
"status": "INITIATED",
"links": [
{
"rel": "redirect_payment",
"href": "https://api.test.paysafe.com/alternatepayments/v1/redirect?accountId=1001737020&paymentHandleId=e8c217c0-f212-4007-b4ac-fd0642a75d3f&token=eyJhbGciOiJIUzI1Ni"
}
],
"liveMode": false,
"usage": "SINGLE_USE",
"action": "REDIRECT",
"executionMode": "SYNCHRONOUS",
"amount": 1,
"merchantDescriptor": {
"dynamicDescriptor": "OnlineStore",
"phone": "12345678"
},
"timeToLiveSeconds": 599,
"gatewayResponse": {
"processor": "PAYSAFECARD",
"id": "pay_1020009410_9QDoaAb53xJYymobWDtatr0n3KUphzAD_EUR"
},
"returnLinks": [
{
"rel": "on_completed",
"href": "https://usgaminggamblig.com/payment/return/success"
},
{
"rel": "on_failed",
"href": "https://usgaminggamblig.com/payment/return/failed"
},
{
"rel": "default",
"href": "https://usgaminggamblig.com/payment/"
}
],
"transactionType": "PAYMENT",
"gatewayReconciliationId": "pay_1020009410_9QDoaAb53xJYymobWDtatr0n3KUphzAD_EUR",
"updatedTime": "2023-03-17T10:47:08Z",
"statusTime": "2023-03-17T10:47:08Z",
"paysafecard": {
"consumerId": "merchantclientid"
}
}

Payments API request

{
"merchantRefNum": "5bb81950-bed0-4e4a-8cce-8af39a6192c7",
"amount": 1000,
"currencyCode": "EUR",
"dupCheck": true,
"settleWithAuth": true,
"paymentHandleToken": "PHtxnH0z99GXgc0Z",
"customerIp": "172.0.0.1",
"description": "Test Paysafe"
}

Payments API response

{
"id": "3946cb51-9a7d-406e-b546-17c97d94ee2d",
"paymentType": "PAYSAFECARD",
"paymentHandleToken": "PHlO4bOFGsNX5X1N",
"merchantRefNum": "123eb3cd-847b-4c2b-9d8c-7786c5dea18e",
"currencyCode": "EUR",
"settleWithAuth": false,
"dupCheck": true,
"txnTime": "2023-03-17T10:47:08Z",
"billingDetails": {
"street1": "100 Queen",
"street2": "Unit 201",
"city": "Toronto",
"zip": "M5H 2N2",
"country": "UK"
},
"customerIp": "172.0.0.1",
"status": "COMPLETED",
"gatewayReconciliationId": "pay_1020009410_9QDoaAb53xJYymobWDtatr0n3KUphzAD_EUR",
"amount": 1,
"availableToRefund": 0,
"consumerIp": "172.0.0.1",
"liveMode": false,
"simulator": "EXTERNAL",
"updatedTime": "2023-03-17T10:47:39Z",
"statusTime": "2023-03-17T10:47:39Z",
"gatewayResponse": {
"id": "pay_1020009410_9QDoaAb53xJYymobWDtatr0n3KUphzAD_EUR",
"pscId": 184746891465,
"processor": "PAYSAFECARD",
"profile": {
"firstName": "Test",
"lastName": "SquvmeUPmFYBvAvokItGtfaamD",
"dateOfBirth": {
"day": 15,
"month": 9,
"year": 1992
}
}
},
"availableToSettle": 1,
"paysafecard": {
"consumerId": "merchantclientid"
}
}

Standalone credit - payment handle API request

{
"merchantRefNum": "0599b8fc32e757e356cc",
"paysafecard": {
"consumerId": "merchantclientid",
"pscId":"184746891465"
},
"transactionType": "STANDALONE_CREDIT",
"shopperUrl": "https://google.com/",
"profile": {
"firstName": "Test",
"lastName": "SquvmeUPmFYBvAvokItGtfaamD",
"dateOfBirth": {
"day": 15,
"month": 9,
"year": 1992
}},
"paymentType": "PAYSAFECARD",
"amount": 500,
"currencyCode": "USD",
"customerIp": "172.0.0.1",
"billingDetails": {
"nickName": "Home",
"street": "100 Queen",
"street2": "Unit 201",
"city": "Toronto",
"zip": "M5H 2N2",
"country": "CA"
},
"merchantDescriptor": {
"dynamicDescriptor": "OnlineStore",
"phone": "12345678"
},
"returnLinks": [
{
"rel": "on_completed",
"href": "https://usgaminggamblig.com/payment/return/success",
"method": "GET"
},
{
"rel": "on_failed",
"href": "https://usgaminggamblig.com/payment/return/failed",
"method": "GET"
},
{
"rel": "default",
"href": "https://usgaminggamblig.com/payment/",
"method": "GET"
}
]
}

Standalone credit - payment handle API response

{
"id": "3202df97-24ba-4a39-badb-cec34a73378c",
"paymentType": "PAYSAFECARD",
"paymentHandleToken": "PHoQM3F6IZr6Q9u5",
"merchantRefNum": "28a6dfea3263458a1c3e",
"currencyCode": "USD",
"txnTime": "2022-09-15T11:17:19Z",
"billingDetails": {
"street": "100 Queen",
"street2": "Unit 201",
"city": "Toronto",
"zip": "M5H 2N2",
"country": "CA"
},
"customerIp": "172.0.0.1",
"status": "PAYABLE",
"liveMode": false,
"usage": "SINGLE_USE",
"action": "NONE",
"executionMode": "SYNCHRONOUS",
"amount": 500,
"merchantDescriptor": {
"dynamicDescriptor": "OnlineStore",
"phone": "12345678"
},
"timeToLiveSeconds": 599,
"gatewayResponse": {
"processor": "PAYSAFECARD",
"id": "out_6235070452_ayuUQc6xXnocrat7oTO7VTLrHtUPAEWv_USD",
"status": "VALIDATION_SUCCESSFUL"
},
"returnLinks": [
{
"rel": "default",
"href": "https://usgaminggamblig.com/payment/"
},
{
"rel": "on_failed",
"href": "https://usgaminggamblig.com/payment/return/failed"
},
{
"rel": "on_completed",
"href": "https://usgaminggamblig.com/payment/return/success"
}
],
"transactionType": "STANDALONE_CREDIT",
"gatewayReconciliationId": "out_6235070452_ayuUQc6xXnocrat7oTO7VTLrHtUPAEWv_USD",
"updatedTime": "2022-09-15T11:17:19Z",
"statusTime": "2022-09-15T11:17:19Z",
"profile": {
"firstName": "Test",
"lastName": "SquvmeUPmFYBvAvokItGtfaamD",
"email": "JHxDfTbXua@LAKdfisezY.svz",
"dateOfBirth": {
"day": 15,
"month": 9,
"year": 1992
}
},
"paysafecard": {
"consumerId": "merchantclientid"
}
}

Standalone credit - API request

{
"merchantRefNum": "e10abc4d4be42ba19cf0",
"amount": "3000",
"currencyCode": "EUR",
"dupCheck": true,
"settleWithAuth": true,
"paymentHandleToken": "PH9pFHcgzpdqZLQB",
"customerIp": "172.0.0.1",
"description": "Magazine subscription"
}

Standalone credit - API response

{
"id": "e5b39cb0-538c-44bf-918e-cf067de9adc0",
"paymentType": "PAYSAFECARD",
"paymentHandleToken": "PHoQM3F6IZr6Q9u5",
"merchantRefNum": "3291035a-93db-4243-a459-74da030d4fe0",
"currencyCode": "USD",
"dupCheck": true,
"txnTime": "2022-09-15T11:17:58Z",
"billingDetails": {
"street1": "100 Queen",
"street2": "Unit 201",
"city": "Toronto",
"zip": "M5H 2N2",
"country": "CA"
},
"customerIp": "204.91.0.12",
"status": "COMPLETED",
"gatewayReconciliationId": "out_6235070452_ayuUQc6xXnocrat7oTO7VTLrHtUPAEWv_USD",
"amount": 500,
"returnLinks": [
{
"rel": "default",
"href": "https://usgaminggamblig.com/payment/"
},
{
"rel": "on_failed",
"href": "https://usgaminggamblig.com/payment/return/failed"
},
{
"rel": "on_completed",
"href": "https://usgaminggamblig.com/payment/return/success"
}
],
"liveMode": false,
"updatedTime": "2022-09-15T11:17:59Z",
"statusTime": "2022-09-15T11:17:59Z",
"gatewayResponse": {
"processor": "PAYSAFECARD",
"id": "out_6235070452_ayuUQc6xXnocrat7oTO7VTLrHtUPAEWv_USD",
"status": "SUCCESS"
},
"profile": {
"firstName": "Test",
"lastName": "SquvmeUPmFYBvAvokItGtfaamD",
"email": "JHxDfTbXua@LAKdfisezY.svz",
"dateOfBirth": {
"day": 15,
"month": 9,
"year": 1992
}
},
"paysafecard": {
"consumerId": "merchantclientid"
}
}

Refunds API - request

POST:paymenthub/v1/settlements/{settlementId}/refunds
{
"merchantRefNum": "db1c255c-3081-4e04-8838-fe1ab2545445",
"amount": 2500,
"dupCheck": true
}

Refunds API - response

{
"id": "a07cc34d-49d0-4cc9-a8cc-9a92b1d564a9",
"paymentType": "PAYSAFECARD",
"merchantRefNum": "cfbb5d43-e26b-4e80-9245-5206a348c586",
"currencyCode": "USD",
"txnTime": "2023-06-27T13:19:34Z",
"status": "COMPLETED",
"gatewayReconciliationId": "bc363f96-c75d-46c0-a5a9-95a5c6415fc6",
"amount": 100,
"updatedTime": "2023-06-27T13:19:35Z",
"statusTime": "2023-06-27T13:19:35Z",
"liveMode": false,
"gatewayResponse": {
"id": "bc363f96-c75d-46c0-a5a9-95a5c6415fc6",
"processor": "PAYSAFECARD"
},
"source": "SingleAPI"
}

Testing Instructions

Test Customer Id Values

Customer ID is also known as Merchant Client ID, is an important parameter for the integration of paysafecard. The Customer ID identifies the Customer on our business partners side. The most optimal customer ID is a completely random value. A value that uniquely identifies the customer and is disconnected from any personal information. This customer ID value should be the same for all transactions of the customer. Here are Guidelines for possible Customer IDs:

Valid Values:

Value Type
2c3be0b50c7a5f1964a63d78f38a6ffc41c027e9 SHA1 - test@123.com
742f2b1a55cd5d606ea44b4fcb54646a MD5 - test@123.com
3a5b0d0777dead9df93d502df85c8180e53804eb SHA1 - UsernameValue1
3192481752123 Random Customer Identifier
CustomerID1 Customer Identifier free of personal information

Invalid Values

test@123.com
Username_1
FirstName123
LastName123
Timestamp
IP Address

Sending any form of the invalid values will not be accepted. If you intend to process paysafecard transactions on multiple brands, please inquire about the possibilities of separating multiple entities for your account.

Webhooks

Payment Handle

  1. PAYMENT_HANDLE_PAYABLE – This webhook signifies that the payment handle token created for the required purpose can now be executed, and the preliminary requirements are completed, the next API call with the payment handle can be done.
  2. PAYMENT_HANDLE_PROCESSING – This webhook is triggered when the user is successfully redirected to the payment platform page and operation has started for the payment by the user.
  3. PAYMENT_HANDLE_COMPLETED – This webhook is triggered when the process of the payment handle is token is completed after triggering the next API, Payments or Standalone Credit API.
  4. PAYMENT_HANDLE_EXPIRED – This webhook is triggered when the next step is not initiated after the payment handle is created within the given time frame, the duration can be seen in the response to /paymenthub/v1/paymenthandles API under the tag timeToLiveSeconds.

Payments

  1. PAYMENT_PROCESSING: The payment is in progress. In some cases, there might be delays due to an action pending by you or the customer. 
  2. PAYMENT_PENDING - The payment is pending because the transaction hasn't been completed from the bank account to Skrill wallet to you.
  3. PAYMENT_COMPLETED/SETTLEMENT_COMPLETED – The payment was completed successfully.
  4. PAYMENT_FAILED – This webhook is triggered when the payment fails during the process.

Settlement

  1. SETTLEMENT_FAILED - This webhook is triggered in case the transaction was initially completed and later failed due to some settlement error.
  2. SETTLEMENT_CANCELLED - This webhook is triggered when the transaction was cancelled after it was completed
  3. SETTLEMENT_ERRORED - This webhook is used when there is a technical error during the initiation of a transaction.
  4. SETTLEMENT_PENDING - This webhook is triggered when the withdrawal has been initiated but due to various bank delay reasons or time zone issues the actual money transfer has not happened.

Standalone Credits/Withdrawal

  1. SA_CREDIT_FAILED - This webhook is triggered in case the transaction was initially completed and later failed due to some settlement error.
  2. SA_CREDIT_CANCELLED - This webhook is triggered when the transaction was cancelled after it was completed
  3. SA_CREDIT_ERRORED - This webhook is used when there is a technical error during the initiation of a transaction.
  4. SA_CREDIT_PENDING - This webhook is triggered when the withdrawal has been initiated but due to various bank delay reasons or time zone issues the actual money transfer has not happened.

Refunds

  1. REFUND_FAILED - This webhook is triggered when the refund is initiated but failed due to a functional error for refund amount is more than the payment amount.
  2. REFUND_COMPLETED - This webhook is triggered when the refund has been successfully transferred from merchant account to the user's chosen bank account
  3. REFUND_PENDING - This webhook is triggered when refund has been initiated but due to various bank delay reasons or time zone issues the actual money transfer has not happened.