Using the Service
To use the service, send a POST
request to the service endpoint detailed below:
https://api.skrill.com/mqi/customer-verifications
You should add the following header to your HTTP request:
Content-Type: application/json
or
Content‐Type: application/json; charset="UTF8"
if you are including UTF8 characters in the request.
Request Parameters
The available parameters are described in the table below:
Field | Description | Case Sensitive | Required | Example |
---|---|---|---|---|
merchantId | The customer ID of your merchant account. The customer ID is shown in brackets under your account email address when you login to your Skrill account at https://www.skrill.com/login/ e.g. (ID: 275556522) | N/A | Yes | 275556522 |
password | The lowercase hex MD5 of the secret word set up for your merchant account | Yes | Yes | 9f535b6ae672f627e4e5f79f2b7c63fe |
email | The email address to be checked. Matches any primary or secondary email addresses registered with Skrill. Removed email addresses will also match. | Yes | No * | samplemerchant@sunfish.com |
customerId | The customer ID of the Skrill account to be checked. If both email and customerId are included in the request, customerId takes priority and a match / no match response is shown for the email field | N/A | No * | 276261219 |
dateOfBirth | The customer's date of birth in YYYYMMDD format e.g. 1st December 1970 = 19701201 | N/A | No | 19701201 |
houseNumber | Matches an alphanumeric string separated from the rest of the text by non‐alphanumeric character in line 1 or 2 of the stored customer address. Examples: "221b Baker street" → 221b = MATCH, 221 = NO MATCH "Main street,21" → 21 = MATCH, 1 = NO MATCH "Main street21" → 21 = NO MATCH Only Latin‐1 alphanumeric characters can be used. Non‐alphanumeric characters like spaces/commas are not supported and cause NO_MATCH. Example: "April Cottage" → April = MATCH, April Cottage = NO_MATCH | Yes | No | 221b |
postCode | White space ignored for matches (e.g., CR34JP matches CR3 4JP). Supports UTF-8. | Yes | No | CR34JP |
country | ISO_3166‐1_alpha‐3 country code e.g. DEU for Germany | Yes | No | DEU |
* At least one parameter is required from customerid and email to identify the customer
Locking
If you make more than three failed authentication requests (incorrect MD5 hash password supplied for the account identified by the merchantId or invalid IP ‐ WRONG_PASSWORD
or NOT_ALLOWED_IP
errors) in six hours, the customer verification tool will return VERIFICATION_SERVICE_USER_IS_LOCKED
and the service will be blocked until you log in to your Skrill merchant account. Note unlocking the account reduces the failure count to 2 rather than 0, so a single additional failure will lock the account. The failure count will only reset to 0 once six hours have passed from the initial failed authentication.
UTF-8 Support
Although some of the fields support UTF8, Skrill currently only allows customers to sign-up with Latin-1 characters in the name and address fields. This could lead to match failures if you are storing UTF‐8 contact details for customers.
Example 1: Matching Customer Found
Request:
{
"merchantId": "276261218",
"password": "9f535b6ae672f627e4e5f79f2b7c63fe",
"customerId": "276261219",
"email": "sample.merchant@sun-fish.com",
"firstName" : "Sample",
"lastName" : "Customer",
"dateOfBirth": "19461127",
"houseNumber": "23b",
"postCode": "123124",
"country": "DEU"
}
Response:
200 OK
{
"email": "MATCH"
"firstName": "MATCH"
"lastName": "NO_MATCH"
"dateOfBirth": "MATCH"
"houseNumber": "NO_MATCH"
"country": "MATCH"
"postCode": "NO_MATCH"
"verificationLevel": "10"
}
If the same request is sent without the email
parameter or alternatively with the email
parameter but no customer id parameter, the following response will be received:
200 OK
{
"firstName": "MATCH"
"lastName": "NO_MATCH"
"dateOfBirth": "MATCH"
"houseNumber": "NO_MATCH"
"country": "MATCH"
"postCode": "NO_MATCH"
"verificationLevel": "10"
}
Example 2: Matching Customer Not Found
Request:
{
"merchantId": "276261218",
"password": "9f535b6ae672f627e4e5f79f2b7c63fe",
"email": "nosuchcustomer@sun-fish.com",
"firstName" : "Fnrrlodhqjqn",
"lastName" : "Lndfhtnlhibo",
"dateOfBirth": "19461127",
"houseNumber": "23b",
"postCode": "123124",
"country": "DEU"
}
Response:
404 Not Found
{
"code": "ACTIVE_CUSTOMER_ACCOUNT_NOT_FOUND",
"message": "Active customer account not found!"
}
Example 3: Missing Parameter
Request:
{
"merchantId": "276261218",
"password": "9f535b6ae672f627e4e5f79f2b7c63fe",
"firstName" : "Fnrrlodhqjqn",
"lastName" : "Lndfhtnlhibo",
"dateOfBirth": "19461127",
"houseNumber": "23b",
"postCode": "123124",
"country": "DEU"
}
Response:
400 Bad Request
{
"code": "MISSING_MANDATORY_PARAMETERS",
"message": "customerId or email must not be null"
}
Errors
Status Code | Error Code | Description |
---|---|---|
404 Not found | ACTIVE_CUSTOMER_ACCOUNT_NOT_FOUND | No active Skrill account found matching the Customer ID (if provided) or the email address (if not). |
400 Bad request | NUMBER_FORMAT_PARSE_EXCEPTION | A numeric parameter contains non-numeric characters (e.g., date or customer ID). |
400 Bad request | INVALID_DATE_FORMAT | The date parameter format does not match YYYYMMDD. |
400 Bad request | MISSING_MANDATORY_PARAMETERS | Neither Customer ID nor email is provided. |
409 Conflict | VERIFICATION_SERVICE_USER_IS_LOCKED | Verification is blocked due to too many failed authentications. Login via Skrill website to unblock. |
409 Conflict | ACTIVE_MERCHANT_ACCOUNT_NOT_FOUND | No active merchant account found for the provided merchant account ID. |
409 Conflict | WRONG_PASSWORD | Incorrect password parameter for the merchant account. |
409 Conflict | NOT_ALLOWED_IP | This IP address is not configured to access verification for this merchant account. |
409 Conflict | VERIFICATION_SERVICE_NOT_ALLOWED | Verification service not enabled for this merchant account. Contact Skrill to enable. |
400 Bad request | PARAMETER_MUST_NOT_BE_NULL | A required parameter (e.g., password or merchantId) is missing. |