Search Overlay

Neteller via Skrill Quick Checkout

Neteller is a money transfer service used to transfer money between merchants. Through Skrill quick checkout, the Paysafe Payments API supports Neteller as a payment instrument. 

Supported Currencies: All currencies are supported. If a currency is not supported by Neteller and is supported by Skrill, then a conversion can be done at Skrill.

Afghanistan Bouvet Island (Keeling) Islands Cuba South Sandwich Islands Territory of Heard Island and McDonald Islands
Armenia Myanmar Democratic Republic of Congo Eritrea Guam Iran
Bhutan China Cook Islands South Georgia Guinea Iraq
Cote d'Ivoire Kazakhstan North Korea Kyrgyzstan Liberia Libya
Mongolia Northern Mariana Islands Federated States of Micronesia MarshalI slands Palau Pakistan
East Timor Puerto Rico Sierra Leone Somalia Zimbabwe Sudan
Syria Tajikistan Turkmenistan Uganda United States US Virgin Islands
Uzbekistan Yemen        

Setup Requirements

For us to create a test account in the sandbox and production environment, we need the following details.

  • You must be onboarded with Skrill's solution. 

  • Your Skrill Pay to Email.

  • Your Skrill account API/MQI Password.

Transaction Types

We support the following transaction types:

  1. Payments
  2. Refunds
  3. Withdrawals

Typical Scenarios

Neteller Payments

To process a payment request using Neteller as the payment type:

  1. Create a payment handle with the following parameter settings:
    transactionType: PAYMENT
    paymentType: NETELLER

  2. The NETELLER object of the payment handle request will take the following parameter:
    • consumerId - Email Id of the consumer. 
  3. We return a payment handle response with the following details:

    • The action parameter is set to REDIRECT. 
    • A redirect_payment link points to Neteller login page URL. 
    • A payment handle status of INITIATED. 
  4. Redirect the customer to the Neteller login page (using redirect_payment).
    Consumer can provide the email address and password details to complete the payment. 
  5. Depending on the status of the transaction, the consumer is redirected to either your success or failed page.
    The status of the payment handle changes to PAYABLE if the transaction is successful, or FAILED if it is unsuccessful – you will be notified of this status change via your configured webhooks. 
  6. Use the paymentHandleToken returned in the response to process the payment request. 

Note: You should store the payment ID returned to the response in case you need to process a refund. The payment ID is needed to deposit refunds directly into the bank account that was used for the original transaction.

Neteller Withdrawal/Standalone Credits

To process a withdrawal transaction using Neteller:

  1. Create a payment handle with the following parameter settings:
    transactionType: STANDALONE_CREDIT
    paymentType: NETELLER

  2. Pass the following parameters in the NETELLER object of the payment handle request:
    • paymentId - This is the Id of the payment done previously, from which the bank details would be extracted, and the withdrawal money would be transferred to without asking the consumer to enter the details again. This is used to prevent fraudulent transactions, as only accounts which are used in deposit should be used for withdrawals. 
    • emailSubject - Customizable subject of the email that would be triggered to the consumer informing them about the details of the transaction.
    • emailMessage - Customizable body of the email that would be triggered to the consumer, informing them about the details of the transaction. 
    • consumerId - Email ID of the consumer.
  3. Pasyafe returns a response with the following details:

    • A one-time token received with the tag paymentHandleToken. 
    • Status is PAYABLE.
  4. Use the paymentHandleToken returned in the response to process the Standalone credit request.

  5. Status of the transaction moves from PENDING to COMPLETED once the standalone credit is processed. At each step, a webhook will be triggered to you.

Neteller Refunds

To process a refund transaction for a Neteller payment:

  1. Ensure the initial payment has a status of COMPLETED – you can only initiate a refund for a transaction where settlement/payment is completed.
  2. Create a refund request using the payment ID received in the initial payment response:
    POST:/paymenthub/v1/settlements/{paymentId}/refunds
    NOTE:
    • The refund amount can be equal to the initial payment, or lower if you want to make a partial refund.
    • If required, you can initiate multiple partial refunds until the total refund amount is less than or equal to the initial payment amount.
  3. We return a refund response containing details of the completed payment and a unique identifier for referring to each individual refund (partial or full). The status changes from SCHEDULED to PROCESSED once the refund is processed to the consumer's bank account. At each step, a webhook will be triggered to you.

Code Examples

Payment handle - request

{
"merchantRefNum": "6e75dd30-6c98-457e-9d09-d723af60ceea",
"transactionType": "PAYMENT",

"neteller": {
"consumerId":"elvisstoyanov.nt.eea@sun-fish.com"
},
"paymentType": "NETELLER",
"amount": 100,
"currencyCode": "EUR",

"returnLinks": [

{
"rel": "default",
"href": "http://www.amazon.ca"
}
]
}

Payment handle - response

{
"id": "cb78ab77-98e7-4f03-9e0f-5cd9156327a9",
"merchantRefNum": "6e75dd30-6c98-457e-9d09-d723af60ceea",
"paymentHandleToken": "PH1EweuiUafyt6Du",
"status": "INITIATED",
"paymentType": "NETELLER",
"liveMode": false,
"simulator": "EXTERNAL",
"usage": "SINGLE_USE",
"action": "REDIRECT",
"executionMode": "SYNCHRONOUS",
"amount": 100,
"currencyCode": "EUR",
"timeToLiveSeconds": 899,
"gatewayResponse": {
"processor": "SKRILL_QCO",
"sid": "37ac03b8642987023ca3e9b6e1e959a9"
},
"returnLinks": [

{
"rel": "default",
"href": "http://www.amazon.ca"
}
],
"transactionType": "PAYMENT",
"gatewayReconciliationId": "7d4a8867-2b75-4ba2-a46c-94b9284a6985",
"txnTime": "2023-04-03T15:01:15Z",
"updatedTime": "2023-04-03T15:01:15Z",
"statusTime": "2023-04-03T15:01:15Z",
"links": [
{
"rel": "redirect_payment",
"href": "http://mtl-qa-app-18.qa.oneplatform.io:8011/alternatepayments/v1/redirect?accountId=1680534026&paymentHandleId=cb78ab77-98e7-4f03-9e0f-5cd9156327a9&token=eyJhbGciOiJIUzI1NiJ9.eyJhY2QiOiIxNjgwNTM0MDI2IiwicHlkIjoiY2I3OGFiNzctOThlNy00ZjAzLTllMGYtNWNkOTE1NjMyN2E5IiwiZXhwIjoxNjgwNTM1ODc1fQ.tLfjwNKpAhtetNq7EW3xRG-iMNOkKkv-ZOHrg5XPYCI"
},
{
"rel": "self",
"href": "http://mtl-qa-app-18.qa.oneplatform.io:8011/alternatepayments/v1/accounts/1680534026/paymenthandles/cb78ab77-98e7-4f03-9e0f-5cd9156327a9"
}
],

"neteller": {
"consumerId": "elvisstoyanov.nt.eea@sun-fish.com"
}
}

Payment request

{
"amount": 100,
"merchantRefNum": "1680534477",
"paymentHandleToken": "PHxdSkr9os6v2KE3"
}

Payment response

{
"id": "4e71423a-07ee-466a-b004-7301868c2f4b",
"gatewayReconciliationId": "2c281f1d-feab-4b9e-83dd-f1b67a9651bb",
"merchantRefNum": "1680534477",
"dupCheck": false,
"amount": 100,
"currencyCode": "EUR",
"paymentType": "NETELLER",
"paymentHandleToken": "PHxdSkr9os6v2KE3",
"settleWithAuth": true,
"availableToRefund": 100,
"liveMode": false,
"simulator": "EXTERNAL",
"txnTime": "2023-04-03T15:06:06Z",
"updatedTime": "2023-04-03T15:07:58Z",
"statusTime": "2023-04-03T15:07:58Z",
"status": "COMPLETED",
"gatewayResponse": {
"transaction_id": "2c281f1d-feab-4b9e-83dd-f1b67a9651bb",
"amount": "1.00",
"mb_transaction_id": "322514141",
"pay_from_email": "elvisstoyanov.nt.eea@sun-fish.com",
"pay_to_email": "elvisstoyanov.qco@sun-fish.com",
"currency": "EUR",
"merchant_id": "298847640",
"id": "322514141",
"processor": "SKRILL_QCO",
"status": "2",
"sid": "78b87201efb263ad45e6f48434e39dba"
},
"availableToSettle": 0,
"links": [
{
"rel": "self",
"href": "http://mtl-qa-app-18.qa.oneplatform.io:8011/alternatepayments/v1/accounts/1680534026/payments/4e71423a-07ee-466a-b004-7301868c2f4b"
},
{
"rel": "settlements",
"href": "http://mtl-qa-app-18.qa.oneplatform.io:8011/alternatepayments/v1/accounts/1680534026/payments/4e71423a-07ee-466a-b004-7301868c2f4b/settlements"
}
],

"neteller": {
"consumerId": "elvisstoyanov.nt.eea@sun-fish.com"
}
}

Payment handle - request (withdrawal/standalone credit)

 {
"merchantRefNum": "1680534673",
"transactionType": "STANDALONE_CREDIT",
"paymentType": "NETELLER",
"amount": 100,
"currencyCode": "EUR",

"neteller": {
"consumerId": "elvisstoyanov.nt.eea@sun-fish.com",
"paymentId": "4e71423a-07ee-466a-b004-7301868c2f4b",
"emailMessage": "emailMessage",
"emailSubject": "emailSubject"
}

}

Payment handle - response (withdrawal/standalone credit)

{
"id": "5085d635-096c-4260-9c1d-df2e9ca55a73",
"merchantRefNum": "1680534673",
"paymentHandleToken": "PHpVlCdj6c23DDmN",
"status": "PAYABLE",
"paymentType": "NETELLER",
"liveMode": false,
"simulator": "EXTERNAL",
"usage": "SINGLE_USE",
"action": "NONE",
"executionMode": "SYNCHRONOUS",
"amount": 100,
"currencyCode": "EUR",
"timeToLiveSeconds": 899,
"gatewayResponse": {
"processor": "SKRILL_QCO"
},
"transactionType": "STANDALONE_CREDIT",
"gatewayReconciliationId": "ccb996ac-c6cf-48eb-a0d4-fc25553c7883",
"txnTime": "2023-04-03T15:11:13Z",
"updatedTime": "2023-04-03T15:11:13Z",
"statusTime": "2023-04-03T15:11:13Z",
"links": [
{
"rel": "self",
"href": "http://mtl-qa-app-18.qa.oneplatform.io:8011/alternatepayments/v1/accounts/1680534026/paymenthandles/5085d635-096c-4260-9c1d-df2e9ca55a73"
}
],
"neteller": {
"consumerId": "elvisstoyanov.nt.eea@sun-fish.com",
"emailSubject": "emailSubject",
"emailMessage": "emailMessage",
"paymentId": "4e71423a-07ee-466a-b004-7301868c2f4b"
}
}

Standalone credit - request

{
"amount": 100,
"merchantRefNum": "1680534889",
"paymentHandleToken": "PHpVlCdj6c23DDmN"
}

Standalone credit - response

{
"id": "cd279bd7-dfff-47f6-8a41-88c7e3893dad",
"gatewayReconciliationId": "AIAAAAI2A4",
"merchantRefNum": "1680534889",
"dupCheck": true,
"amount": 100,
"currencyCode": "EUR",
"paymentType": "NETELLER",
"paymentHandleToken": "PHpVlCdj6c23DDmN",
"liveMode": false,
"simulator": "EXTERNAL",
"txnTime": "2023-04-03T15:14:49Z",
"updatedTime": "2023-04-03T15:14:52Z",
"statusTime": "2023-04-03T15:14:52Z",
"status": "COMPLETED",
"gatewayResponse": {
"status_msg": "processed",
"id": "322514167",
"processor": "SKRILL_QCO",
"sid": "606b1012368b27e8fce64a5b78a5fda8",
"status": "2"
},
"links": [
{
"rel": "self",
"href": "http://mtl-qa-app-18.qa.oneplatform.io:8011/alternatepayments/v1/accounts/1680534026/standalonecredits/cd279bd7-dfff-47f6-8a41-88c7e3893dad"
}
],
"neteller": {
"consumerId": "elvisstoyanov.nt.eea@sun-fish.com",
"emailSubject": "emailSubject",
"emailMessage": "emailMessage",
"paymentId": "4e71423a-07ee-466a-b004-7301868c2f4b"
}
}

Create refund - request

{
"amount": 10,
"merchantRefNum": "1680535025",
"paymentType": "NETELLER",
"currencyCode": "EUR"
}

Create refund - response

{
"id": "11c996aa-31db-42a9-988e-502f3eaeb2a4",
"gatewayReconciliationId": "322514177",
"merchantRefNum": "1680535025",
"amount": 10,
"currencyCode": "EUR",
"paymentType": "NETELLER",
"txnTime": "2023-04-03T15:17:05Z",
"updatedTime": "2023-04-03T15:17:07Z",
"statusTime": "2023-04-03T15:17:07Z",
"liveMode": false,
"simulator": "EXTERNAL",
"status": "COMPLETED",
"gatewayResponse": {
"id": "322514177",
"status": "2",
"merchant_id": "298847640",
"processor": "SKRILL_QCO"
},
"links": [
{
"rel": "self",
"href": "http://mtl-qa-app-18.qa.oneplatform.io:8011/alternatepayments/v1/accounts/1680534026/refunds/11c996aa-31db-42a9-988e-502f3eaeb2a4"
},
{
"rel": "payment",
"href": "http://mtl-qa-app-18.qa.oneplatform.io:8011/alternatepayments/v1/accounts/1680534026/payments/4e71423a-07ee-466a-b004-7301868c2f4b"
}
]
}

Auto-Settlement

If you did not make a Payments API call and opted for auto-settlement:   

  • Auto-settlement: After 15 minutes, the system will automatically trigger the Payments API call and finish the payments and settlements. The payment handle also gets expired. 

To opt for this functionality, you should email Integrations team. 

Webhooks

Payment Handle

  1. PAYMENT_HANDLE_PAYABLE - This webhook notifies that the payment handle token created for the required purpose and it can be executed when 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 customer 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 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.

  5. PAYMENT_HANDLE_FAILED - This webhook is triggered when the customer is successfully redirected to the payment platform page, but some technical error occurred and final communication couldn't reach back to Paysafe.

Payments

  1. PAYMENT_PENDING -The payment is pending because the transaction hasn't been completed from the bank account to Skrill wallet to merchant.

  2. PAYMENT_COMPLETED/SETTLEMENT_COMPLETED – The payment was completed successfully.

  3. PAYMENT_FAILED – This webhook is triggered when the payment fails during the process.

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 canceled 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. Example – 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 a refund has been started, but the actual money transfer hasn't happened because of a bank delay or time zone issue.

Simulation Cases

Use Simulator in the HTTP header of your request and pass value as INTERNAL. 

Standalone Credits Simulations

Standalone Credit Amount Initial Status Next Status Transition Status Transition Delay (in seconds)
24.19 PENDING COMPLETED 5
24.29 PENDING FAILED 10
25.19 PENDING COMPLETED 10
25.29 PENDING FAILED 15
26.19 ERROR ERROR 0
  • Any standalone credit transaction other than the above amounts will be marked as PENDING.

 

Refund Simulations

Refund amount Initial Status Next Status Transition Status Transition Delay (in seconds)
24.21 PENDING COMPLETED 5
24.31 PENDING FAILED 10
26.31 FAILED FAILED 0
  • Refund would be FAILED, if the refund amount exceeds the original payment amount.
  • Any refund transaction other than the above amounts will be marked as COMPLETED. 

Error Codes

Initiate Payment Error Codes

Skrill PSP Return code Message Code Paysafe Error Message Paysafe Error Details Paysafe Status Comments
-2 failed External Gateway Error An external Gateway error occurred. FAILED Failed (-2) is typically sent when the customer tries to pay, but Skrill's provider declines the transaction. It can also be sent if the transaction is declined by Skrill’s internal fraud engine.

Initiate Standalone Credit Error Codes

Skrill PSP Return code Message Code Paysafe Error Message Paysafe Error Details Paysafe Status Comments
-2 failed External Gateway Error An external Gateway error occurred. FAILED

Failed (-2) can occur in case of the following scenarios :

  • Standalone credit amount exceeds account. 
  • Balance referenced transaction was not processed. 
  • Other generic errors and technical errors.

Initiate Refund Error Codes

Skrill PSP Return code Message Code Paysafe Error Message Paysafe Error Details Paysafe status Comments
-2 failed External Gateway Error An external Gateway error occurred. FAILED Failed (-2) can occur in case of the following scenarios:
  • Refund amount exceeds account balance.
  • Transaction has been exceeded already.
  • Other generic errors.  

For more details on errors, see Payments API