You can easily and securely process payments from your customers using either the:
The Payments API helps you to process payments of your customers using a variety of payment methods and a single API Endpoint.
Merchants can also access your transaction analytics and manage accounts within the merchant portal.
All requests must use HTTPS. Authentication is achieved using an API Key, passed headers, namely X-Api-Key.
Get your API and Secret Keys
The API’s use a dedicated Merchant API key for all requests. You can create an API under the merchant portal.
The API’s can be generated under Settings - Credentials
We use HTTP statuses for our response as per the HTTP specification
| Status range | Description |
|---|---|
| 2xx | indicates a successful request |
| 4xx | indicates there is a problem with the client's request |
| 5xx | indicates there is a problem with our servers/infrastructure. In this case it is our responsibility to fix the issue |
If you receive a 4xx HTTP status response, it is safe to retry the request after fixing the root cause of the problem (either your request parameters or your account configuration).
If you receive a 5xx HTTP status response, please contact our support with the request information so we can investigate.
Gateway specific codes
For a 400 Bad Request we will provide specific codes and descriptions in the body of the response.
| Error code | Message |
|---|---|
| 1016 | Credential not found |
| 1021 | Transaction ID is missing |
| 1025 | An error has occurred. Please try again later. |
| 1026 | API Key is missing |
| 1027 | API Key not found |
| 1028 | API Key has expired |
| 1039 | Transaction ID does not exist |
| 1076 | You can't change this transaction |
| 1089 | Client Transaction ID is missing |
| 1129 | You can't cancel this transaction |
| 1229 | Your Webhook URL is not available at this time |
| 1295 | Your IP is blocked |
Test accounts allow you to test and process API transactions that mirror the production environment.
Payment transactions processed in the Test environment are executed on a simulator. To create a test payments call the URL does not change. You will just need to ensure you use a DEV API key which can be created under Settings – Credentials
When integrating with our system, you will receive webhooks every time the status of a transaction changes. These webhooks are a convenient way to stay up to date with the latest information about your transactions in real-time. If your webhook URL is temporarily inaccessible when we send notifications, our system will automatically retry every five minutes, up to a maximum of 15 attempts.
Below is an example of the payload you will receive in these webhooks:
{
"transaction_id": "bbds7128hdha",
"user_id": "123",
"tracking_id": "kshdhay6381623",
"status": "successful",
"currency": "EUR",
"amount": "200.00",
"transaction_type": "withdrawal"
"provider": "simulator"
"rejected_reason": "Insufficient funds"
}
Webhook Payload Explanation
Webhook Signature
To ensure the integrity and authenticity of the data in these webhooks, it's crucial to verify the included signature. This guide explains how to verify the webhook signature generated by our system. When you receive a webhook, it will include an "x-signature" header in the HTTP request. To generate signature you must use the SHA-1 hashing algorithm. Update the hash with the payload, and then convert it to a hexadecimal representation in uppercase. The payload should be used exactly as we send it to you without any modifications.
Signature sample (NodeJs):
const crypto = require("crypto");
const data = /* Data object from the webhook payload */;
const signaturePassword = /* Your secret signature password that can be find in BACK OFFICE under Credentials page */;
const payloadForHash = JSON.stringify(data) + signaturePassword;
const localSignature = crypto
.createHash("sha1")
.update(payloadForHash)
.digest("hex")
.toUpperCase();
Example:
payload =
{
"transaction_id":"r21nmrtpcmrcava",
"user_id":"1111222",
"tracking_id":"b8f04416-116a-11ed-861d-0242ac120002",
"status":"rejected",
"currency":"GBP",
"amount":"200.00",
"transaction_type":"withdrawal"
}
signature_password = spg_test_companyxxxxQyGAheyMqcHVmp8ZMQtkYcev27sCu7RF
Calculated Hash: "5FDDA8F46411C132DCFBEE53C39BA06298CB48BC"
This endpoint facilitates an all in one cashier, this will provide a one time integration solution that will show all the available providers.
| x-api-key | string Example: api_key |
object |
{- "request": {
- "mode": "test",
- "theme": "dark",
- "settings": {
}, - "user_id": "128",
- "tracking_id": "fb832194-34e1-4e6c-8494-d88034cf3e47",
- "ip": "127.34.125.54",
- "amount": 10.05,
- "currency": "EUR",
- "amount_restricted": true,
- "customer": {
- "max_deposit_limit": 1000,
- "first_name": "John",
- "last_name": "Doe",
- "kyc_status": "passed",
- "email": "user@example.com",
- "zip_code": "12345",
- "address": "123 Main Street",
- "city": "New York",
- "dob": "05/03/2000",
- "country_code": "GB",
- "phone": {
- "country": "GB",
- "number": 783433252,
- "prefix": 44
}
}
}
}{- "token": "Mtg4OakI0YSGdHPY1y4vUnGLOaMxnJJZ9BX09LQ1u3yft0OY81"
}This endpoint facilitates Direct Integration payments, This hosted checkout allows users to be redirected directly to the payment provider for processing. You will need to specify the provider ID which you can find under settings - providers.
| x-api-key | string Example: api_key |
object |
{- "request": {
- "mode": "test",
- "provider_id": 210,
- "settings": {
}, - "user_id": "128",
- "tracking_id": "fb832194-34e1-4e6c-8494-d88034cf3e47",
- "ip": "127.34.125.54",
- "amount": 10.05,
- "currency": "EUR",
- "customer": {
- "max_deposit_limit": 1000,
- "first_name": "John",
- "last_name": "Doe",
- "kyc_status": "passed",
- "email": "user@example.com",
- "zip_code": "12345",
- "address": "123 Main Street",
- "city": "New York",
- "dob": "05/03/2000",
- "country_code": "GB",
- "phone": {
- "country": "GB",
- "number": 783433252,
- "prefix": 44
}
}
}
}This endpoint facilitates Server-to-Server (S2S) payments, providing a straightforward integration process. Below, you will find details on its implementation. Upon successful invocation, the response will include two key attributes: url and transaction_status. Check the url on the response; if it is not empty, redirect the user to complete the 3DS process. Additionally, if the transaction_status is rejected, an error attribute will accompany the response.
| x-api-key | string Example: api_key |
object |
{- "request": {
- "mode": "test",
- "routing_id": 210,
- "settings": {
}, - "user_id": "U123",
- "tracking_id": "fb832194-34e1-4e6c-8494-d88034cf3e47",
- "ip": "127.34.125.54",
- "amount": 10.05,
- "currency": "EUR",
- "customer": {
- "max_deposit_limit": 1000,
- "first_name": "John",
- "last_name": "Doe",
- "kyc_status": "passed",
- "email": "user@example.com",
- "zip_code": "12345",
- "address": "123 Main Street",
- "city": "New York",
- "dob": "05/03/2000",
- "country_code": "GB",
- "phone": {
- "country": "GB",
- "number": 783433252,
- "prefix": 44
}
}, - "card_details": {
- "holder_name": "John Doe",
- "card_number": "4111111111111111",
- "cvc": "444",
- "exp_month": "05",
- "exp_year": "2025"
}
}
}{- "url": "{{url}}",
- "transaction_status": "pending"
}This endpoint facilitates an all in one cashier for withdrawals. This will provide a one time integration solution that will show all the available payout providers. You can configure the payout providers in Settings - Provider Rules
| x-api-key required | string Example: xxxx |
object |
{- "request": {
- "mode": "test",
- "theme": "dark",
- "settings": {
}, - "user_id": "128",
- "tracking_id": "fb832194-34e1-4e6c-8494-d88034cf3e47",
- "ip": "127.34.125.54",
- "amount": 10.05,
- "currency": "EUR",
- "customer": {
- "first_name": "John",
- "last_name": "Doe",
- "kyc_status": "passed",
- "email": "user@example.com",
- "zip_code": "12345",
- "address": "123 Main Street",
- "city": "New York",
- "dob": "05/03/2000",
- "country_code": "GB",
- "phone": {
- "country": "GB",
- "number": 783433252,
- "prefix": 44
}
}
}
}{- "token": "Mtg4OakI0YSGdHPY1y4vUnGLOaMxnJJZ9BX09LQ1u3yft0OY81"
}If there are any pending payouts, this endpoint can be used to reject them from the client side.
| x-api-key required | string Example: xxxx API key for authentication |
| transaction_id required | string Our unique transaction id that you received in webhook |
{- "transaction_id": "fb832194-34e1-4e6c-8494-d88034cf3e47"
}{- "message": "Withdrawal has been rejected successfully"
}If there are any pending payouts, this endpoint can be used to approve them from the client side.
| x-api-key required | string Example: xxxx API key for authentication |
| transaction_id required | string Unique transaction id in your system. |
{- "transaction_id": "fb832194-34e1-4e6c-8494-d88034cf3e47"
}{- "message": "Transaction Withdrawal has been approved successfully",
- "transaction_status": "pending"
}This endpoint can be used to get the latest infromation regarding a specific transaction.
| id required | string Unique transaction id in your system |
| x-api-key required | string Example: xxxx API key for authentication |
{- "transaction_status": "rejected",
- "rejected_reason": "Insufficient funds"
}This endpoint retrieves transactions. You can specify a date range using from and to query parameters. If no date range is specified, it will return transactions for the current date. Maximum range between dates it’s 7 days
| from | string <date-time> Example: from=01-08-2024 (optional) The start date for the date range in DD-MM-YYYY format. |
| to | string <date-time> Example: to=02-08-2024 (optional) The end date for the date range in DD-MM-YYYY format. |
| x-api-key required | string Example: xxxx API key for authentication |
[- {
- "transaction": {
- "id": "g7xp8kudinz3tyi",
- "date": "2024-07-05 11:53:25",
- "type": "deposit",
- "status": "pending",
- "transaction_id": "g7xp8kudinz3tyi",
- "tracking_id": "sh7gv8knfxpktgh"
}, - "provider": {
- "provider": "nixxe_simulator",
- "provider_name": "Nixxe Systems",
- "provider_id": "sh7gv8knfxpktgh",
- "amount": {
- "value": 8.56,
- "currency": "GBP"
}, - "credited_amount": {
- "value": 10,
- "currency": "EUR"
}, - "fx": {
- "value": 10,
- "currency": "EUR"
}
}, - "customer": {
- "id": 123,
- "first_name": "John",
- "last_name": "Doe",
- "dob": "1985-05-20",
- "country": "US",
- "tags": [
- "Premium",
- "Trusted"
], - "IP": "192.168.0.1"
}
}
]