Skrill
Make your move
Supports in this guide: Payments, Payouts
Provider website: skrill.com
What you need to do for start processing transactions (brief summary)
- Set up your Skrill merchant account (enable API/MQI access)
- Get your credentials (from Skrill)
- Connect in Dashboard
- Send an API request
Choose account type
Skrill has a single account type that covers both directions:
- Provider account -> used for both payments (Skrill's hosted Quick Checkout page, covering the Skrill wallet plus around 30 other bundled payment methods - Neteller, paysafecard, cards, bank redirects, local cash/bank methods, etc.) and payouts (to a Skrill, Neteller, or paysafecard wallet, or via Rapid Transfer)
If you're not sure whether Skrill fits your use case, confirm with your Corefy account manager.
Prerequisites: get from Skrill
Step 1 - Register and get verified as a Merchant
Register on Skrill's website, then contact the Skrill Merchant Services team (merchantservices@skrill.com) with your account details to get it verified as a Merchant account.
When testing payments, set the beneficiary/payout email to the same account so the test account has enough virtual funds.
Step 2 - Enable automatic payments
In Settings -> Account settings, enable Auto accept payments.
If Settings -> Account Settings isn't shown in your back office, contact merchantservices@skrill.com.
Step 3 - Enable API access and set security parameters
In Developer settings:
- Enable the following services: Automated Payment Interface (API), Merchant Query Interface (MQI), Quick Checkout Secure Restriction.
- Add Corefy's white-list IP addresses to each of those services' IP white lists.
- Set an MQI/API password and a Secret word.
Then get the following from Skrill to fill the Corefy connection form:
- Account email -> Corefy field
account_email. - Merchant ID -> Corefy field
merchant_id. - Secret word (set in Step 3) -> Corefy field
secret_word. - API password (set in Step 3) -> Corefy field
api_password.
Be aware
If you have several Skrill accounts in the same currency, their balances are summed into a single currency account at the Corefy Dashboard.
Payments processing (connect Provider account, create payment-invoice)
Connect Provider account in Corefy Dashboard
Step 1 - Open connection form
Open Skrill in the provider directory and press Connect at Skrill Provider Overview page in the New connection section. Choose Provider account.
Step 2 - Fill in fields and select settings
- Account email
- Merchant ID
- Secret word
- API password
- Account verification (optional toggle - only affects payouts, see Payouts below)
- Test Mode -> (enable if you are using sandbox credentials)
Choose Currencies - multi-select from EUR, USD, AUD, GBP, CHF, BGN, CZK, DKK, HRK, HUF, NOK, PLN, RON, SEK, THB, MYR, BDT, NPR, LKR, MDL, MXN, BRL, COP, CLP, PEN; check with your Corefy account manager which are enabled for your account.
Success
You have connected Skrill Provider account!
First request to Corefy API (MIN)
What it does: creates a payment-invoice; Corefy redirects the customer to Skrill's hosted Quick Checkout page, where they pick a payment method (Skrill wallet, card, bank redirect, etc. - see the method table below) and complete the purchase.
Payment - MIN
POST /api/payment-invoices
{
"data": {
"type": "payment-invoice",
"attributes": {
"reference_id": "8e3dbbb0-17af-4c9a-bedb-93bdac6900a2",
"service": "skrill_eur_hpp",
"currency": "EUR",
"amount": 10
}
}
}
Payment - MAX
POST /api/payment-invoices
{
"data": {
"type": "payment-invoice",
"attributes": {
"reference_id": "6795502c-e27d-4d07-85e0-93245aab9a3f",
"service": "neteller_eur_hpp",
"currency": "EUR",
"amount": 10,
"customer": {
"reference_id": "cus_123",
"name": "John Smith",
"email": "johnsmith@gmail.com",
"phone": "+15551234567",
"address": {
"country": "DE"
},
"metadata": {
"preferred_language": "deu"
}
},
"fields": {
"email": "johnsmith@skrill-account.com"
}
}
}
}
customer is entirely optional - everything sent is only used to prefill the checkout page / pass to Skrill as billing details, it never blocks the sale. fields.email, if sent, pre-fills the Neteller login email on the checkout widget (useful mainly for neteller_*_hpp services).
Note
Checkout language is resolved in this order: customer.metadata.preferred_language -> language derived from customer.address.country -> the DEFAULT_LANGUAGE Constant -> English.
Available payment methods and currencies
One underlying flow (Skrill's hosted Quick Checkout), routed to different payment methods. Service codes follow <method>_<ccy>_hpp.
Payment method (service) | Currencies |
|---|---|
skrill (wallet) | EUR, USD, GBP, CHF, PLN, THB, MYR, BDT, NPR, LKR, MDL, MXN |
neteller | EUR |
paysafecard | EUR, GBP, CHF, BGN, CZK, DKK, HRK, HUF, NOK, PLN, RON, SEK |
paysafecash | EUR, PLN |
resursbank | EUR |
payment_card (Visa/Mastercard/Maestro/Amex/Diners) | EUR |
jcb | EUR |
cartebleue | EUR |
dankort | EUR |
postepay | EUR |
cartasi | EUR |
rapidtransfer | EUR, PLN |
giropay | EUR |
directdebit | EUR |
nordeasolo | EUR |
ideal | EUR |
eps | EUR |
polipayonline | AUD |
przelewy24 | EUR, PLN |
epaybg | EUR |
trustly | EUR |
alipay | EUR |
astropaydirect / astropaymanual / astropaycash / astropayunion | EUR |
cash, boleto_bancario, pix, online_banking, mach | BRL, COP, MXN, CLP, PEN |
blik | PLN, EUR |
mybank2 | PLN, EUR |
mb_way | EUR |
multibanco | EUR |
bank_transfer_klarna | EUR |
Note
mybank2 additionally needs a website_id resolved (from metadata.website_id in the request, or the WEBSITE_ID Constant below) - other methods work without it.
Extended request (MAX)
Why add extra fields (typical reasons): - Provide additional customer details for compliance/reconciliation - Positively influence conversion rate - Include optional fields required by your specific flow
Options
finalize_after_minutes-> optional,15-999- time window the connector waits for the final callback before finalizing the payment from the last known status.enable_status_request-> optional, boolean - when enabled, Corefy actively polls Skrill's transaction status API during reconciliation instead of relying only on the asynchronous callback.verify_wallet_owner-> optional, boolean - when enabled, before redirecting to checkout Corefy calls Skrill's Merchant Query Interface to check whethercustomer.email/customer.namematch an existing Skrill account, and passes the result (MATCH/NO_MATCH/NOT_FOUND/NOT_AVAILABLE) to the checkout widget as a fraud/KYC signal. This is informational only - it does not block the sale on Corefy's side.
Constants (fallback fields)
Constants are static values that Corefy can send to the provider instead of dynamic data from your API request, when those fields are missing in the request.
Priority (predictable rule): 1. If a value is present in the request -> Corefy uses the request value 2. Else if the constant is set -> Corefy uses the constant 3. Else -> provider may reject the request or apply its defaults (depends on provider)
Constants are configured per service (payment method/currency).
Currently available constants (constant -> Corefy API field)
WEBSITE_ID->metadata.website_id-> the website identifier Skrill assigns when you register an additional website with them; required only for themybank2method.DEFAULT_LANGUAGE-> checkout page language, used only if it can't be resolved fromcustomer.metadata.preferred_languageorcustomer.address.country. Supports Bulgarian, Czech, Danish, German, Greek, English, Spanish, Finnish, French, Italian, Japanese, Korean, Dutch, Polish, Portuguese, Romanian, Russian, Swedish, Turkish, and Chinese.
Refunds
Skrill supports partial refunds, but only one refund per payment (no multiple partial refunds against the same payment).
Payouts processing (connect Provider account, create payout-invoice)
Connect Provider account in Corefy Dashboard
Uses the same Provider account connection as Payments above - one connection covers both directions, nothing extra to fill in for payouts specifically, except the optional Account verification toggle (see below).
First request to Corefy API (MIN)
What it does: creates a payout-invoice and sends funds to the beneficiary's wallet (Skrill, Neteller, paysafecard, or Rapid Transfer, depending on the service).
Payout - MIN
POST /api/payout-invoices
{
"data": {
"type": "payout-invoice",
"attributes": {
"reference_id": "0dde9e79-2c64-4703-adaf-93d710633401",
"service": "skrill_eur",
"currency": "EUR",
"amount": 10,
"fields": {
"email": "recipient@example.com"
}
}
}
}
Important
fields.email is required - it's the beneficiary's wallet email address (Skrill/Neteller/paysafecard/Rapid Transfer account).
Payout - MAX
POST /api/payout-invoices
{
"data": {
"type": "payout-invoice",
"attributes": {
"reference_id": "3c6d2f8e-8a2a-4e7a-9b1a-2f6a7b9c0d1e",
"service": "skrill_eur",
"currency": "EUR",
"amount": 10,
"customer": {
"reference_id": "cus_123",
"name": "John Smith",
"address": {
"country": "DE",
"city": "Berlin",
"street": "1 Main street",
"post_code": "10115"
}
},
"fields": {
"email": "recipient@example.com"
}
}
}
}
customer is entirely optional - name/address, when sent, are only forwarded to Skrill as billing details for the transfer.
Available payout methods and currencies
Payout method (service) | Currencies |
|---|---|
skrill | EUR, USD, GBP, CHF, PLN, THB, MYR, BDT, NPR, LKR, MDL, MXN |
neteller | EUR |
paysafecard | EUR |
rapidtransfer | EUR |
Extended request (MAX)
Why add extra fields (typical reasons): - Provide additional customer details for compliance/reconciliation - Positively influence conversion rate - Include optional fields required by your specific flow
No Options or Constants are configured for this flow.
Account verification (optional)
If the Account verification toggle is enabled on the Provider account, Corefy checks with Skrill whether fields.email belongs to an existing, active account before sending the payout:
- If it matches an existing account -> the payout is sent normally.
- If no such account exists -> the payout is still submitted, but held by Skrill pending the beneficiary's registration; Corefy reports it with the status message "Scheduled (if the beneficiary is not yet registered with Skrill)".
If Account verification is disabled (default), payouts are sent directly without this check.
Additional info
- Callback routing is automatic - Corefy generates the callback/return URLs per transaction, nothing to configure in Skrill's own back-office beyond the IP white-list from the Prerequisites.
- One connection, many methods. The Skrill integration bundles around 30 payment methods (wallet, cards, bank redirects, cash vouchers, Alipay, AstroPay, etc.) behind the same Provider account - pick the one(s) relevant to your markets via the
servicecode. - Partial refunds only, once. See Refunds above.
FAQ / Troubleshooting
- Invalid credentials /
Access denied for IPerror -> double check the account email/merchant ID/API password, and make sure Corefy's IPs are white-listed on every enabled Developer Settings service (API, MQI, Quick Checkout Secure Restriction) - Payout stuck as "Scheduled" -> the beneficiary hasn't registered a Skrill account with the email you sent yet; it completes once they do, or disable Account verification if you don't need this check
- MyBank payments fail ->
mybank2needs awebsite_id(Constant ormetadata.website_id) matching a website registered on your Skrill account - Currency or service is not supported -> confirm allowed currencies/features in your Skrill account and in Corefy
Question
Still looking for help connecting your Skrill account? Please contact our support team!