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.
Neteller Payments
To process a payment request using Neteller as the payment type:
-
Create a payment handle with the following parameter settings:
transactionType: PAYMENT
paymentType: NETELLER - The NETELLER object of the payment handle request will take the following parameter:
- consumerId - Email Id of the consumer.
-
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.
- Redirect the customer to the Neteller login page (using redirect_payment).
Consumer can provide the email address and password details to complete the payment. - 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. - 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.
APIs to use
Neteller Withdrawal/Standalone Credits
To process a withdrawal transaction using Neteller:
-
Create a payment handle with the following parameter settings:
transactionType: STANDALONE_CREDIT
paymentType: NETELLER - 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.
-
Pasyafe returns a response with the following details:
- A one-time token received with the tag paymentHandleToken.
- Status is PAYABLE.
-
Use the paymentHandleToken returned in the response to process the Standalone credit request.
-
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.
APIs to use
Neteller Refunds
To process a refund transaction for a Neteller payment:
- Ensure the initial payment has a status of COMPLETED – you can only initiate a refund for a transaction where settlement/payment is completed.
- 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.
- 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.
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
-
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.
-
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.
-
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.
-
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.
-
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
-
PAYMENT_PENDING -The payment is pending because the transaction hasn't been completed from the bank account to Skrill wallet to merchant.
-
PAYMENT_COMPLETED/SETTLEMENT_COMPLETED – The payment was completed successfully.
-
PAYMENT_FAILED – This webhook is triggered when the payment fails during the process.
Standalone Credits/Withdrawal
-
SA_CREDIT_FAILED - This webhook is triggered in case the transaction was initially completed and later failed due to some settlement error.
-
SA_CREDIT_CANCELLED - This webhook is triggered when the transaction was canceled after it was completed.
-
SA_CREDIT_ERRORED - This webhook is used when there is a technical error during the initiation of a transaction.
-
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
-
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.
-
REFUND_COMPLETED - This webhook is triggered when the refund has been successfully transferred from merchant account to the user's chosen bank account.
-
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 :
|
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:
|
For more details on errors, see Payments API