Version: 6.6.2
Released: 2025/02/26
Introduction
This document describes the Checkout integration procedures between Checkout service and the website for e-commerce merchants.
To make your integration easier, please download collection and try it out:
Postman Collection
General Information
Checkout service is a fast and easy way to create a secure payment page. It allows collecting and submitting payments and sending them for processing.
To use the Checkout service on the site you have to perform integration. Checkout integration provides a set of APIs that allow customizing payment processing for the business. These protocols implement acquiring payments (purchases) using specific API interaction with the merchant websites.
The API requires request data as json string data and responds also with json string data.
⚠️ Pay attention
Checkout protocol requires requests to be sent using JSON formatting with the following content type:
Header: Content-Type: application/json
Checkout process
Checkout payment flow is shown below.
When a Customer wants to make a purchase on your site the following happens:
- Customer places an order and initiates payment on the site.
- Site confirms the order and sends the payment processing request to the Checkout system with information about the order, payment and hash.
- Checkout system validates the request and sends to the site the response with the redirect link.
- The site redirects the Customer on the Checkout page by redirect link.
- Customer selects the payment method, enters the payment data and confirms the payment. The payment method will be specifying automatically If only one method is available.
- The payment processes at Payment Gateway.
- Payment Gateway sends a callback to the site with the payment result.
- The payment result is shown to the Customer.
The payment could be declined in case of invalid data detection.
Protocol Mapping
It is necessary to check the existence of the protocol mapping before using the Checkout integration. Merchants can’t make payments if the CHECKOUT protocol is not mapped.
Customer return after payment
After completing the payment, the payer will be returned to the URL specified in the Authentication request in the "success_url" and "cancel_url" parameters. If you need to get additional parameters in the return URLs, you should configure it in the Protocol Mappings modules by enabling the "Return parameters" attribute. In that case, "success_url" and "cancel_url" will contain the following data:
Parameter | Description |
---|---|
payment_id | Payment ID Example: dc66cdd8-d702-11ea-9a2f-0242c0a87002 |
trans_id | Transaction ID Example: dc66cdd8-d702-11ea-9a2f-0242c0a87002 |
order_id | Order ID Example: order-1234 |
hash | Special signature, used to validate data. Addition in Signature section. Must be SHA1 of MD5 encoded string (uppercased): payment_public_id + order.number + order.amount + order.currency + order.description + merchant.pass |
⚠️ Pay attention
that for "cancel_url", the payer's return to the merchant with parameters is possible only after the decline has happened and the payer has closed the payment form (not the browser tab). If the payer closes the payment form without initiating the payment (pressing the PAY button), the redirection to "cancel_url" occurs without passing additional parameters.
DMS mode
If you need to use Checkout integration to work with payments in DMS-mode (two-step payments), you should set the corresponding MID configuration in the admin panel. Specify DMS-mode for the MID attribute. In this case, the payment request will be processed as an authorization stage for DMS-mode. The capture requests will be generated and gathered in the queue. You could monitor and manage the capture request queue via the admin panel as well. For detailed information, please contact your administrator.
Checkout page description
Checkout page is shown to the Customer after a payment initiation. There are the fields to enter the payment data.
Fields and Validation
The list of the fields on the Checkout page depends on the request parameters and the specified payment method.
Your customers will not see the fields if the acquirer does not need the information that is transmitted in them. For example, if an alternative payment method is specified, the card data is not displayed on the Checkout page.
As well, pay attention to the conditional fields such as e-mail or billing address. If the e-mail and billing address (data object) parameters are specified in the request, the Checkout page will not contain them.
Additional fields can also be displayed if a payment method is selected that requests additional data from the Customer.
The Checkout page has the fields validation. In case of the invalid data the error message will be shown and the field will be highlighted.
The list of the general fields and possible errors on the Checkout page is below:
Fields | Type | Limitations | Error |
---|---|---|---|
Card number | Integral | Lun algorithm, length 14-19 numbers | Invalid card number |
Expirу Date | Date | 2-2 numbers (in the format mm-yy), after today's date | The expiration date of card is expired and not valid. |
Security code | Integral | Up to 4 characters | Invalid security code |
Name on card | String | Up to 32 characters | The name on card field Must contain at least 2 words: first name and last name. Allowed special characters: hyphens, apostrophes, diacritics |
Country | List | 2-letters code | Country is required. Please enter a valid Country |
State/Region | String List - for USA, Canada, Australia, Japan, India | ||
City | String | Up to 32 characters | City is required. Please enter a valid City |
Address line | String | Up to 32 characters | Address line is required. Please enter a valid Address line |
Zip code | String | Up to 32 characters | Zip code is required. Please enter a valid Zip code |
Phone number | String | Up to 32 characters | Phone number is required. Please enter a valid Phone number |
Pre-routing
To make payment method choice easier for the Customer, pre-routing is provided on the Checkout.
The functionality allows you to set up matches in the admin panel via the Custom routing module, which will determine the list of payment methods suitable for the current payment.
This way, you can restrict your Customers from randomly choosing a payment method that is not available in their region, for example. This will help you to increase the number of successful payments and reduce the risk of declined transactions.
Note that if the Authentication request contains a list of the payment methods in the methods
array, then the pre-routing configurations will be ignored.
Card data tokenization
For regular customers, we have made the payment page even more convenient and simple.
You can save the customer's card data so that they can reuse it for future payments.
To do this, you need to send the req_token = true
parameter in the Authentication request. And then, in the callback, you will receive a card token.
Use the token when sending the next Authentication request and your client will see anonymized card details on the payment form, which will greatly simplify the payment process.
Web information
Checkout service gathers information about browser, which the Customer uses.
When the Customer is on the Checkout page, the service gets the data about the Customer's OS, browser, and browser language. That information is sent to the acquirer in some cases.
iFrame option
You can use iFrame option to show Checkout page on your domain. All you need is just to past in the code redirect url received in the response to the Authentication request.
Please follow the example:
<iframe src=redirect_url height="600" width="300"></iframe>
Note that screen size can be adjusted according to your requirements.
Important: cross-domain requests are prohibited by security policy of our service.
⚠️ Pay attention
By adding our Checkout Payment Page to the iframe on your site, ensure you ALLOW ACCESS TO COOKIE STORAGE.
This is required to avoid issues when redirecting the payer back to your site, such as after 3DS authentication. If you prohibit the storage of third-party data in your cookies, you will prevent the identification of the payer after returning from 3DS. This can cause interruptions in the payment session.
Page Customization
The administration service provides the ability to stylize the Checkout page in accordance with the preferences of the merchant. The action is available for the authorized users only. To customize the payment page you need:
- Click the “Configuration → Branding” item on the menu bar. The settings are displayed in the work area.
- Select a page template to make changes.
- Change the settings:
- login icon selection;
- color selection for the following items:
- heading;
- background;
- buttons;
Authentication request parameters
The merchant submits an authorization request and as a result of successful response receives the redirect_url
- link on the Checkout page.
/api/v1/session
The authentication performs when the payment is initiated.
You need to send an authentication POST request in JSON format on Checkout form URL (CHECKOUT_URL) to start checkout process for the Customers. As a result of the authentication request you will receive the following:
- An authentication session is created with a unique identifier (Session ID). The session expires after one hour.
- A link is generated to redirect to the Checkout page: one link corresponds to one payment. The link becomes invalid after a successful payment. The authentication request parameters are below.
If DMS-mode (two-stages payment) is available, after successful authentication it is necessary to capture. The capture would be performed automatically according to the settings or you can do it manually in the admin portal.
Request Parameters
Parameter | Type | Mandatory, Limitations | Description |
---|---|---|---|
merchant_key | String | Required | Key for Merchant identification Example: xxxxx-xxxxx-xxxxx |
operation | String | Required | Defines a payment transaction Possible values: purchase, debit, transfer Send the “purchase” value so that the payment page for sale initiation will be shown to the customer. Send the “debit” value so that the payment page for debit initiation will be shown to the customer. Send the “transfer” value so that the payment page for transfer initiation will be shown to the customer. Example: purchase |
methods | Array | Optional | An array of payment methods. Limits the available methods on the Checkout page (the list of the possible values in the Payment methods section). In the case of parameter absence, the pre-routing rules are applied. If pre-routing rules are not configured, all available payment methods are displayed. Condition: for purchase operation only For purchase and debit operations. Example: card, paypal, googlepay |
channel_id | String | Optional max: 16 | This parameter is used to direct payments to a specific sub-account (channel). If the channel is configured for Merchant Mapping, the system matches the value with the corresponding channel_id value in the request to route the payment. Note: The channel must correspond to one of the payment methods (brands) listed in the methods array. If the methods array is empty, only the channel_id will affect the selection of the payment method (Merchant Mapping). |
session_expiry | Integer | Optional Values from 1 to 720 min | Session expiration time in minutes. Default value = 60. Could not be zero. Example: 60 |
success_url | String | Required Valid URL max: 1024 | URL to redirect the Customer in case of the successful payment Example: https://example.domain.com/success The return of additional parameters can be configured for success_url. See the “Customer return after payment” section for details. |
cancel_url | String | Optional Valid URL min: 0 max: 1024 | URL to return Customer in case of a payment cancellation (“Close” button on the Checkout page). The logic of redirection on “cancel_url” could be configured in the admin panel (Configuration -> Protocol Mappings section): use the “Maximum count declines” field to set the payment failed attempts quantity before redirection. For example, if the field value is set to "1", then after the first declined attempt, a payer will be redirected to "cancel_url." Example: https://example.domain.com/cancel The return of additional parameters can be configured for cancel_url. See the “Customer return after payment” section for details. |
expiry_url | String | Optional Valid URL min: 0 max: 1024 | URL where the payer will be redirected in case of session expiration Example: https://example.domain.com/expiry |
error_url | String | Optional Valid URL min: 0 max: 1024 | URL to return Customer in case of undefined transaction status. If the URL is not specified, the cancel_url is used for redirection. Example: https://example.domain.com/errorurl |
url_target | String | Optional Possible values: _self , _parent , _top .Find the result of applying the values in the HTML standard description (Browsing context names) | Name of, or keyword for a browsing context where Customer should be returned according to HTML specification. Example: _parent |
req_token | Boolean | Optional default - false | Special attribute pointing for further tokenization If the card_token is specified, req_token will be ignored.For purchase and debit operations. Example: false |
card_token | Array of Strings | Optional String 64 characters | Credit card token value For purchase and debit operations. Example: f5d6a0ab6fcfb6487a39e2256e50fff3c95aaa97 |
recurring_init | Boolean | Optional default - false | Initialization of the transaction with possible following recurring Only for purchase operation Example: true |
schedule_id | String | Optional It s available when recurring_init = true | Schedule ID for recurring payments Only for purchase operation Example: 57fddecf-17b9-4d38-9320-a670f0c29ec0 |
vat_calc | Boolean | Conditional true or false default - false | Indicates the need of calculation for the VAT amount • 'true' - if VAT calculation needed • 'false' - if VAT should not be calculated for current payment. Only for purchase operation Example: false |
hash | String | Required | Special signature to validate your request to Payment Platform Addition in Signature section. Example: Must be SHA1 of MD5 encoded string (uppercased): order_number + order_amount + order_currency + order_description + password |
order | Object | Required | Information about an order |
number | String | Required max: 255 [a-z A-Z 0-9 -!"#$%&'()*+,./:;&@] | Order ID Example: order-1234 |
amount | String | Required Greater then 0 [0-9] max: 255 | Format depends on currency. Send Integer type value for currencies with zero-exponent. Example: 1000 Send Float type value for currencies with exponents 2, 3, 4. Format for 2-exponent currencies: XX.XX Example: 100.99 Pay attention that currencies 'UGX', 'JPY', 'KRW', 'CLP' must be send in the format XX.XX, with the zeros after comma. Example: 100.00 Format for 3-exponent currencies: XXX.XXX Example: 100.999. Format for 4-exponent currencies: XXX.XXXX Example: 100.9999 ⚠️ Note! For crypto currencies use the exponent as appropriate for the specific currency. For purchase operation with crypto: Do not send parameter at all if you want to create a transaction with an unknown amount - for cases when the amount is set by the payer outside the merchant site (for example, in an app). As well, you have to omit "amount" parameter for hash calculation for such cases. For transfer operation: Send amount if you want to show default value in the amount field on the Checkout. The customers can change the value manually on the payment form.Send "-1" value if you want to show empty amount field on the Checkout so that the Customers could enter the value manually. |
currency | String | Required 3 characters for fiat currencies and from 3 to 6 characters for crypto currencies [A-Z] ISO 4217 | Currency Example (fiat): USD Example (crypto): USDT |
description | String | Required min: 2 max: 1024 [a-z A-Z 0-9 !"#$%&'()*+,./:;&@] | Product name Example: Very important gift - # 9 |
customer | Object | Conditional | Customer's information. Send an object if a payment method needs |
name | String | Conditional min: 2 max: 32 Latin basic [a-z A-Z] | Customer's name Condition: If the parameter is NOT specified in the request, then it will be displayed on the Checkout page (if a payment method needs) - the "Cardholder" field Example: John Doe |
email | String | Conditional min: 2 max: 255 email format | Customer's email address Condition: If the parameter is NOT specified in the request, then it will be displayed on the Checkout page (if a payment method needs) - the "E-mail" field Example: [email protected] |
birth_date | String | Conditional format: yyyy-mm-dd ISO 8601 | Payer's birth date Example: 1970-02-17 |
billing_address | Object | Conditional | Billing address information. Condition: If the object or some object's parameters are NOT specified in the request, then it will be displayed on the Checkout page (if a payment method needs) |
country | String | Conditional 2 characters (alpha-2 code) ISO 3166-1 | Billing country Example: US |
state | String | Optional min: 2 max: 32 [a-z A-Z] It is 2-letters code for USA, Canada, Australia, Japan, India | Billing state address Example: CA |
city | String | Conditional min: 2 max: 40 [a-z A-Z] | Billing city Example: Los Angeles |
district | String | Optional min: 2 max: 32 [a-z A-Z 0-9 - space] | City district Example: Beverlywood |
address | String | Conditional min: 2 max: 32 [a-z A-Z 0-9] | Billing address Example: Moor Building |
house_number | String | Optional min: 1 max: 9 [a-z A-Z 0-9/ - space] | House number Example: 17/2 |
zip | String | Conditional min: 2 max: 10 [a-z A-Z 0-9] | Billing zip code Example: 123456, MK77 |
phone | String | Conditional min: 1 max: 32 [0-9 + () -] | Customer phone number Example: 347771112233 |
payee | Object | Conditional | Payee's information. Specify additional information about Payee for transfer operation if it is required by payment provider. |
name | String | Required min: 2 max: 32 Latin basic [a-z A-Z] | Customer's name. Example: John Doe |
email | String | Conditional email format | Customer's email address. Example: [email protected] |
payee_billing_address | Object | Conditional | Billing address information for Payee. |
country | String | Conditional 2 characters (alpha-2 code) ISO 3166-1 | Billing country Example: US |
state | String | Optional min: 2 max: 32 [a-z A-Z] It is 2-letters code for USA, Canada, Australia, Japan, India | Billing state address Example: CA |
city | String | Conditional min: 2 max: 40 [a-z A-Z] | Billing city Example: Los Angeles |
district | String | Optional min: 2 max: 32 [a-z A-Z 0-9 - space] | City district Example: Beverlywood |
address | String | Conditional min: 2 max: 32 [a-z A-Z 0-9] | Billing address Example: Moor Building |
house_number | String | Optional min: 1 max: 9 [a-z A-Z 0-9/ - space] | House number Example: 17/2 |
zip | String | Conditional min: 2 max: 10 [a-z A-Z 0-9] | Billing zip code Example: 123456, MK77 |
phone | String | Conditional min: 1 max: 32 [0-9 + () -] | Customer phone number Example: 347771112233 |
crypto | Object | Optional | Additional information regarding crypto transactions |
network | String | Optional max: 50 | You can use an arbitrary value or select one from the following. Example: • ERC20 • TRC20 • BEP20 • BEP2 • OMNI • solana • polygon |
parameters | Object | Optional | Extra-parameters required for specific payment method Example: "parameters": { "payment_method": { "param1":"val1", "param2":"val2" } } |
custom_data | Object | Optional | Custom data This block can contain arbitrary data, which will be returned in the callback. Example: “custom_data”: {“param1”:”value1”, “param2”:”value2”, “param3”:”value3”} |
Authentication (OK)
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"card",
"method1"
],
"parameters": {
"card": {
"param1": "val-1",
"param2": "val-2"
},
"method1": {
"param1": "val-3",
"param2": "val-4"
}
},
"session_expiry": 60,
"order": {
"number": "order-1234",
"amount": "0.19",
"currency": "USD",
"description": "Important gift"
},
"cancel_url": "https://example.domain.com/cancel",
"success_url": "https://example.domain.com/success",
"expiry_url": "https://example.domain.com/expiry",
"url_target": "_blank",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "US",
"state": "CA",
"city": "Los Angeles",
"district": "Beverlywood",
"address": "Moor Building 35274",
"house_number": "17/2",
"zip": "123456",
"phone": "347771112233"
},
"card_token": [
"f5d6a0ab6fcfb6487a39e2256e50fff3c95aaa97075ee5e539bb662fceff4dc1"
],
"req_token": true,
"recurring_init": true,
"schedule_id": "9d0f5cc4-f07b-11ec-abf4-0242ac120006",
"hash": "{{session_hash}}"
}
'
Debit Operation (OK)
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "debit",
"methods": [
"card"
],
"parameters": {
"card": {
"param1": "val-1",
"param2": "val-2"
},
"session_expiry": 60,
"order": {
"number": "order-1234",
"amount": "0.19",
"currency": "USD",
"description": "Important gift"
},
"cancel_url": "https://example.domain.com/cancel",
"success_url": "https://example.domain.com/success",
"expiry_url": "https://example.domain.com/expiry",
"url_target": "_blank",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "US",
"state": "CA",
"city": "Los Angeles",
"disctrict": "Beverlywood",
"address": "Moor Building 35274",
"house_number": "17/2",
"zip": "123456",
"phone": "347771112233"
},
"card_token": [
"f5d6a0ab6fcfb6487a39e2256e50fff3c95aaa97075ee5e539bb662fceff4dc1"
],
"req_token": true,
"hash": "{{session_hash}}"
}
}
'
Transfer Operation (OK)
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key":"xxxxx-xxxxx-xxxxx",
"operation":"transfer",
"order":{
"number":"order-1234",
"amount": "100.55",
"currency":"USD",
"description":"Important gift"
},
"cancel_url":"https://example.com/cancel",
"success_url":"https://example.com/success",
"customer":{
"name":"John Doe",
"email":"[email protected]"
},
"payee": {
"name":"John Doe",
"email":"[email protected]"
},
"billing_address":{
"country":"US",
"state":"California",
"city":"Los Angeles",
"address":"Moor Building 35274 State ST Fremont. U.S.A",
"zip":"94538",
"phone":"0987654321",
"district":"Brentwood",
"house_number":"123"
},
"payee_billing_address":{
"country":"US",
"state":"New York",
"city":"New York",
"address":"Moor Building 35274 State ST Fremont. U.S.A",
"zip":"94538",
"phone":"0987654321",
"district":"Brentwood",
"house_number":"123"
},
"hash":"{{session_hash}}"
}
'
Example Response (OK)
{
"redirect_url": "{{CHECKOUT_HOST}/auth/ZXlKMGVYQWlPaUpLVjFRaUxDSmhiR2NpT2lKU1V6STFOaUo5LmV5SnBZWFFpT2pFMU9UWXhPRFl6T0Rnc0ltcDBhU0k2SWpGbE5qTTNObVZoTFdRek1HUXRNVEZsWVMxaE16QXlMVEF5TkRKak1HRTRNekF4TWlJc0ltVjRjQ0k2TVRVNU5qRTRPVGs0T0gwLm9CMmVhdlRtTU5DMXFTajlDVFlqQ0dOMDlHdUs1NXRkQTVpWFR3d2F2cWR0cEpEU2NRWWFaT3Z5dmJSVjJUSFNUVlFlS0NUX3pRdFNycDlKS1M4X0pqUzRMclM5MnUyNXRfSHNGa1FUQ0VOdGtadHQtaGxONERYdVhkLTU5cEhKLUN1RXBqSmZ4UDZEQXhFaVAxWEpRZDlyQldNa1RQVDdGZm1ac0g4LTM5YnV6LTI3MWxKMndkekdvSGJYa0NKVnNTNFJldGxrbno2U3dGd3ZFMW5KNDhwYTBGMDNLWjBpNnhpRFVPR3p2U0ZKdGZfMndDTTdzTTdsemc1TlBmSDl0Q0RKQmZEaG1hUmJCRmR6RlZMZlJncG5tMzB3VWpTMGMxbmt6SkkxOGJTd2Z6Z0hfZFpnc1cyUFhCM2ZLdG9pWDJXeFRsQzlxR204QTRYVm9EQy1mOWxvRHlMd0F5eV9xY3JrWmNuQTJVSjk5Zl91c0cwODZKUlBTT0I4VHVRZndSTzUxSEN2bEU2TXdFYzVYRmtnYjBleEZRcXdpNGE4S2RlWV9HX3ZQam42bnpZODdtVzFINlpQMjJ0dzVzazYtUENMeHdvNXctUmFBWC1mYVVhcEVHTzFLZkVHbndaQWZBZVNyc3U4MV9XQUFJMlN5RUxGWi1IU1lXMUZLWFgybzNNeF93Ty1DS3FLTWZsUTV1cGc2eDAybzhsbFhoeGJlVmVIOWlkMHgzYldRWE9vWk5hWm1MeVpJMmJsT2dtVDV0cHR4NHNQNDNqT0NtYW1sdkxyUkZvQmxCNTJ4V0RUQTBZQnhBLW5meUxCRHRJN0dPaVRWQjJ5cWd1Z1lBdGRfbWFQN2x2YTJpbVJWaHhxT0R5SlRiZThxcDdhWkw4bkJvTHZocnZDOHlv"
}
Authentication request possible errors
Parameter Values Validation
Checkout service validates the request parameters and sends the error responses in case of an invalid data detection.Example Request - Validation (bad)
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key":"xxxxx-xxxxx-xxxxx",
"operation":"credit",
"methods":[ "" ],
"order":{
"number":"",
"amount": "1.2",
"currency":"Dollar",
"description":""
},
"cancel_url":"1.com",
"success_url":"",
"customer":{
"name":"John Doe",
"email":"[email protected]"
},
"recurring_init": "true",
"hash":"728d13b95cf2b6b3ee04b20dc2fc9889ffff1cf4"
}
'Example Response - 400 Bad Request
{
"error_code": 0,
"error_message": "Request data is invalid.",
"errors": [
{
"error_code": 100000,
"error_message": "operation: The value you selected is not a valid choice."
},
{
"error_code": 100000,
"error_message": "methods: This value should not be blank."
},
{
"error_code": 100000,
"error_message": "order.number: This value should not be blank."
},
{
"error_code": 100000,
"error_message": "order.amount: This value should be greater than 0."
},
{
"error_code": 100000,
"error_message": "order.currency: This value is not valid."
},
{
"error_code": 100000,
"error_message": "order.description: This value should not be blank."
},
{
"error_code": 100000,
"error_message": "cancel_url: This value is not a valid URL."
},
{
"error_code": 100000,
"error_message": "success_url: This value should not be blank."
}
]
}
Hash Validation
The Checkout service always performs hash
validation.
The request will be rejected if the hash
value is invalid.Example Request - Hash Validation
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key":"xxxxx-xxxxx-xxxxx",
"operation":"purchase",
"methods":[
"card"
],
"order":{
"number":"order-1234",
"amount": "0.19",
"currency":"USD",
"description":"Important gift"
},
"cancel_url":"https://example.com/cancel",
"success_url":"https://example.com/success",
"customer":{
"name":"John Doe"
},
"hash":"wrong hash"
}
'Example Response - Hash error
{
"error_code": 0,
"error_message": "Request data is invalid.",
"errors": [
{
"error_code": 100000,
"error_message": "hash: Hash is not valid."
}
]
}
Callback Notification
Checkout service sends the callback on the merchant notification_URL
as a result of an operation.
You can receive the callback for the next operation types:
- SALE
- 3DS
- REDIRECT
- REFUND
- VOID
- RECURRING
- CHARGEBACK
- DEBIT
- TRANSFER
⚠️ Pay attention
Note that the notification URL may be temporarily blocked due to consistently receiving timeouts in response to the callback. If five timeouts accumulate within five minutes for a merchant’s notification URL, it will be blocked for 15 minutes. During this block, all merchants associated with the URL will not receive notifications. The block automatically lifts after 15 minutes. Additionally, it is possible to manually unblock the URL through the admin panel by navigating to Configuration → Merchants → Edit Merchant. In this case, the block will be removed immediately. The timeout counter resets if a callback response is successfully processed. For instance, if there are four timeouts within five minutes but a successful response on the sixth minute, the counter resets.
⚠️ Pay attention
In the case of cascading, the logic for sending callbacks differs.
If cascading is triggered for the order, in general case you will receive only callback for the last payment attempt, where the final status of the order (settled or declined) is determined. In the particular cases, you will receive callback for the first payment attempt with the data for customer’s redirection if it is required by payment provider. Callbacks for intermediate attempts (between the first decline and the last payment attempt) are not sent.
List of Possible Transaction Statuses
The possible statuses are listed below:
Transaction Status | Operation type | Description |
---|---|---|
SUCCESS | sale, 3ds, redirect, capture, refund, void, recurring, chargeback, debit, transfer | Transaction is successfully completed in Payment Platform |
FAIL | sale, capture, refund, void, recurring, debit, transfer | Transaction has the errors and is not validated by Payment Platform |
WAITING | sale, capture, refund, void, recurring, debit, transfer | Transaction is being processed by Payment Platform |
UNDEFINED | sale, 3ds, redirect, capture, refund, void, recurring, debit, transfer | Uncertain payment status due to problems interacting with the payment provider |
⚠️ Pay attention
that successful transaction does not mean successful final status for the payment.
Example for SMS mode (1-step paments) only:
Payment is successfully completed if transaction hasstatus
= success andtype
= sale. Payment is not completed if transaction hasstatus
= success andtype
= redirect.
Callback parameters
Callback is HTTP POST request whcih includes the following data:
Parameter | Type | Mandatory, Limitations | Description |
---|---|---|---|
id | String | Required | Transaction ID Example: dc66cdd8-d702-11ea-9a2f-0242c0a87002 |
order_number | String | Required Up to 255 characters | Order ID Example: order-1234 |
order_amount | Float | Required Format: XX.XX, without leading zeroes | Product price Example: 0.19 |
order_currency | String | Required Up to 6 characters | Currency code. 3-characters for fiat currencies and from 3 to 6 characters for crypto currencies Example (fiat): USD Example (crypto): USDT |
order_description | String | Required Up to 1024 characters | Product description Example: Important gift |
order_status | String | Required Up to 20 characters | Payment status: prepare, settled, pending, 3ds, redirect, decline, refund, reversal, chargeback Example: 3ds |
type | String | Required Up to 36 characters | Operation type: sale, 3ds, redirect, capture, refund, void, chargeback, debit, transfer Example: sale |
status | String | Required Up to 20 characters | Transaction status: success, fail, waiting, undefined Example: success |
reason | String | Optional Up to 1024 characters | Decline or error reason. It displays only if the transaction has FAIL status. Example: The operation was rejected. Please contact the site support |
payee_name | String | Optional | Payee's first and last name Returns only for transfer operation Example: John Rickher |
payee_email | String | Optional | Payee's e-mail Returns only for transfer operation Example: [email protected] |
payee_country | String | Optional Up to 3 characters | Payee's country Returns only for transfer operation Example: US |
payee_state | String | Optional Up to 32 characters | Payee's state Returns only for transfer operation Example: California |
payee_city | String | Optional Up to 32 characters | Payee's city Returns only for transfer operation Example: Los Angeles |
payee_address | String | Optional Up to 32 characters | Payee's city Returns only for transfer operation Example: 123 Sample Street |
connector_name * | String | Optional | Connector's name (Payment Gateway). Example: MyPaymentConnector |
rrn * | String | Optional | Retrieval Reference Number value from the acquirer system. Example: 123456789012 |
approval_code * | String | Optional | Approval code value from the acquirer system. Example: 123456 |
gateway_id * | String | Optional | Gateway ID – transaction identifier provided by payment gateway. Example: 123-456-789 |
extra_gateway_id * | String | Optional | Extra Gateway ID – additional transaction identifier provided by payment gateway. Example: abc123 |
merchant_name * | String | Optional | Merchant Name Example: TESTMerchantName |
mid_name * | String | Optional | MID Name Example: TESTMIDName |
issuer_country * | String | Optional | Issuer Country Example: DE |
issuer_bank * | String | Optional | Issuer Bank Example: Deutsche Bank |
card | String | Optional Format: ХХХХХХ******ХХХХ | Card number mask Example: 411111******1111 |
card_expiration_date | String | Optional | Card expiration date Example: 12/2022 |
payee_card | String | Optional | Payee card number mask Returns only for transfer operation Example: 411111******1111 |
card_token | String | Optional | Card token. It is available if the parameter req_token was enabledIt is available only for purchase operation Example: VjFRaUxDSmhiR2NpT2lKU1V6STFO |
crypto_network | String | Optional | Blockchain network where the transaction is taking place Example: ERC20 |
crypto_address | String | Optional | Public address of a cryptocurrency wallet Example: bc1QWXYZ8901ghijkLMNOPqrstv2345wxyzABCDE |
customer_name | String | Optional | Customer's first and last name Example: John Rickher |
customer_email | String | Optional Format: [email protected] | Customer's email address Example: [email protected] |
customer_country | String | Optional Up to 3 characters | Customer's country Example: US |
customer_state | String | Optional Up to 32 characters | Customer's state Example: California |
customer_city | String | Optional | Customer's city Example: Los Angeles |
customer_address | String | Optional Up to 32 characters | Customer's address Example: 123 Sample Street |
customer_ip | String | Required | Customer's IP Example: 255.41.45.57 |
date | Date | Optional Format: YYYY-MM-DD hh:mm:ss | Transaction date Example: 2020-08-05 07:41:10 |
recurring_init_trans_id | String | Optional | Reference to the first transaction that initializes the recurring (provided if recurring was initialized) It is available only for purchase operation Example: dc66cdd8-d702-11ea-9a2f-0242c0a87099 |
recurring_token | String | Optional | Recurring token (provided if recurring was initialized) Example: e5f60b35485e |
schedule_id | String | Optional | It is available if schedule is used for recurring sale It is available only for purchase operation |
exchange_rate | Decimal | Optional | Rate used to make exchange. It returns if the currency exchange has been applied for the payment. |
exchange_rate_base | Decimal | Optional | The rate used in the double conversion to convert the original currency to the base currency. It returns if the currency exchange has been applied for the payment. |
exchange_currency | Dictionary | Optional | Original currency. It returns if the currency exchange has been applied for the payment. |
exchange_amount | Integer | Optional | Original amount. It returns if the currency exchange has been applied for the payment. |
vat_amount | Float | Optional Format: XX.XX, without leading zeroes | Product VAT Returns if VAT has been calculated for the payment. It is available only for purchase operation Example: 0.09 |
digital_wallet | String | Optional | Wallet provider: googlepay, applepay. It is returned if digital wallets were used for card payment creation. Example: googlepay |
pan_type | String | Optional | It refers to digital payments, such as Apple Pay and Google Pay, and the card numbers returned as a result of payment token decryption: DPAN (Digital Primary Account Number) and FPAN (Funding Primary Account Number). Possible values: dpan, fpan. It is returned if digital wallets were used in card payment creation. Example: dpan |
custom_data | Object | Optional | Custom data This block duplicates the arbitrary parameters that were passed in the payment request Example: “custom_data”: {“param1”:”value1”, “param2”:”value2”, “param3”:”value3”} |
hash | String | Required | Special signature, used to validate callback Addition in Signature section. Example: Must be SHA1 of MD5 encoded string (uppercased): payment_public_id + order.number + order.amount + order.currency + order.description + merchant.pass |
* The parameters are included if the appropriate setup is configured in the admin panel (see “Add Extended Data to Callback” block in the Configurations -> Protocol Mappings section).
Examples
Callback examples
Merchant successful sale callback
id=f0a51dfa-fc43-11ec-8128-0242ac120004&
order_number=order-1234&
order_amount=3.01&
order_currency=USD&
order_description=bloodline&
order_status=settled&
type=sale&
status=success&
card=411111****1111&
card_expiration_date=12/2022&
connector_name=MyPaymentConnector&
rrn=789012345678&
approval_code=123456&
schedule_id=4e46866c-f84b-11ec-8b4c-0242ac120007&
recurring_init_trans_id=f0a51dfa-fc43-11ec-8128-0242ac120004&
recurring_token=f0e24964-fc43-11ec-a7e0-0242ac120004&
date=2022-07-05 09:22:09&
hash=6d8d440e25bdfc5288616ce567496948d2562852&
gateway_id=123-456-789&
extra_gateway_id=abc123&
merchant_name=TESTMerchantName&
mid_name=TESTMIDName&
issuer_country=DE&
issuer_bank=Deutsche Bank&
customer_name=D D&
[email protected]&
customer_country=US&
customer_state=California&
customer_city=Los Angeles&
customer_address=Moor Building 35274 State ST Fremont. U.S.A&
customer_ip=10.10.10.2&
exchange_rate_base=26.19&
exchange_rate=6.47&
exchange_currency=UAH&
exchange_amount=100.00
Merchant successful debit callback
id=f0a51dfa-fc43-11ec-8128-0242ac120004&
order_number=order-1234&
order_amount=3.01&
order_currency=USD&
order_description=bloodline&
order_status=settled&
type=debit&
status=success&
card=411111****1111&
card_expiration_date=12/2022&
date=2022-07-05+09:22:09&
hash=6d8d440e25bdfc5288616ce567496948d2562852&
customer_name=D D&
[email protected]&
customer_country=US&
customer_state=California&
customer_city=Los Angeles&
customer_address=Moor Building 35274 State ST Fremont. U.S.A&
customer_ip=10.10.10.2
Merchant successful refund callback
id=f0a51dfa-fc43-11ec-8128-0242ac120004&
order_number=order-1234&
order_amount=3.01&
order_currency=USD&
order_description=bloodline&
order_status=settled&
type=refund&
status=success&
card=411111****1111&
card_expiration_date=12/2022&
schedule_id=4e46866c-f84b-11ec-8b4c-0242ac120007&
date=2022-07-05+09:28:01&
hash=6d8d440e25bdfc5288616ce567496948d2562852&
customer_name=D D&
[email protected]&
customer_country=US&
customer_state=California&
customer_city=Los Angeles&
customer_address=Moor Building 35274 State ST Fremont. U.S.A&
customer_ip=10.10.10.2
Merchant successful transfer callback
id=f0a51dfa-fc43-11ec-8128-0242ac120004&
order_number=order-1234&
order_amount=3.01&
order_currency=USD&
order_description=bloodline&
order_status=settled&
type=transfer&
status=success&card=411111****1111&
card_expiration_date=12/2022&
payee_card=422222****2222&
date=2022-07-05+09:22:09&
hash=6d8d440e25bdfc5288616ce567496948d2562852&
customer_name=D D&
[email protected]&
customer_country=US&
customer_state=California&
customer_city=Los Angeles&
customer_address=Moor Building 35275&
customer_ip=10.10.10.2&
payee_name=D D&
[email protected]&
payee_country=US&
payee_state=California&
payee_city=Los Angeles&payee_address=Moor Building 35274 State ST Fremont. U.S.A
Merchant unsuccessful sale callback
id=1f34f446-fc45-11ec-a50f-0242ac120004&
order_number=order-1234&
order_amount=3.01&
order_currency=USD&
order_description=bloodline&
order_status=decline&
type=sale&
status=fail&
card=411111****1111&
card_expiration_date=12/2022&
reason=Declined by processing.&
date=2022-07-05+09:30:35&
hash=7f15d178e9b2c8507dea57f8ed1efddb9573fa6b&
customer_name=D D&
[email protected]&
customer_country=US&
customer_state=California&
customer_city=Los Angeles&
customer_address=Moor Building 35274 State ST Fremont. U.S.A&
customer_ip=10.10.10.2
Merchant unsuccessful debit callback
id=1f34f446-fc45-11ec-a50f-0242ac120004&
order_number=order-1234&
order_amount=3.01&
order_currency=USD&
order_description=bloodline&
order_status=decline&
type=debit&status=fail&
card=411111****1111&
card_expiration_date=12/2022&
reason=Declined by processing.&
date=2022-07-05+09:30:35&
hash=7f15d178e9b2c8507dea57f8ed1efddb9573fa6b&
customer_name=D D&
[email protected]&
customer_country=US&
customer_state=California&
customer_city=Los Angeles&
customer_address=Moor Building 35274 State ST Fremont. U.S.A&
customer_ip=10.10.10.2
Merchant unsuccessful refund callback
id=ba290c62-fc45-11ec-9e91-0242ac120004&
order_number=order-1234&
order_amount=3.01&
order_currency=USD&
order_description=bloodline&
order_status=decline&
type=refund&
status=fail&
card=411111****1111&
card_expiration_date=12/2022&
reason=Declined by processing.&
schedule_id=4e46866c-f84b-11ec-8b4c-0242ac120007&recurring_init_trans_id=ba290c62-fc45-11ec-9e91-0242ac120004&recurring_token=ba51844e-fc45-11ec-932c-0242ac120004&
date=2022-07-05+09:38:00&
hash=bcd78ff8b8e6b75aa1743910641217be6edc3a43&
customer_name=D D&
[email protected]&customer_country=US&
customer_state=California&
customer_city=Los Angeles&
customer_address=Moor Building 35274 State ST Fremont. U.S.A&
customer_ip=10.10.10.2
Merchant unsuccessful transfer callback
id=1f34f446-fc45-11ec-a50f-0242ac120004&
order_number=order-1234&
order_amount=3.01&
order_currency=USD&
order_description=bloodline&
order_status=decline&
type=transfer&
status=fail&
card=411111****1111&
card_expiration_date=12/2022&
payee_card=422222****2222&
date=2022-07-05+09:22:09&
hash=6d8d440e25bdfc5288616ce567496948d2562852&
customer_name=D D&
[email protected]&
customer_country=US&
customer_state=California&
customer_city=Los Angeles&
customer_address=Moor Building 35275&
customer_ip=10.10.10.2&
payee_name=D D&
[email protected]&
payee_country=US&
payee_state=California&
payee_city=Los Angeles&
payee_address=Moor Building 35274 State ST Fremont. U.S.A&
vat_amount=0.3
Merchant successful crypto callback
id=ac60a7e6-9abf-11ef-a549-0242ac120002&
order_number=order-1234&
order_amount=0.00000001&
order_currency=BTC&
order_description=Important+gift&order_status=pending&
type=init&status=success&
date=2024-11-04+15%3A15%3A49&
hash=871a243619e4fd04db377cfbabe9fe07505febf5&
crypto_network=ERC20&
crypto_address=bc1ABIJKL1234abfjkmoPQRTVXY5678prsx&
customer_name=John+Doe&
customer_email=success%40gmail.com&
customer_country=US&
customer_state=California&
customer_city=Los+Angeles&
customer_address=Moor+Building+35274+State+ST+Fremont.+U.S.A&
customer_ip=10.10.10.2
Recurring
Recurring payments are commonly used to create new transactions based on already stored cardholder information from previous operations. This request is sent by POST in JSON format.
RECURRING request
/api/v1/payment/recurring
Request Parameters
Parameter | Type | Mandatory, Limitations | Description |
---|---|---|---|
merchant_key | String | Required | Key for Merchant identification Example: xxxxx-xxxxx-xxxxx |
recurring_init_trans_id | String | Required | Transaction ID of the primary transaction in the Payment Platform Example: dc66cdd8-d702-11ea-9a2f-0242c0a87002 |
recurring_token | String | Required | Recurring token Example: 9a2f-0242c0a87002 |
schedule_id | String | Optional | Schedule ID for recurring payments |
hash | String | Required | Special signature to validate your request to Payment Platform Addition in Signature section Must be SHA1 of MD5 encoded string (uppercased): recurring_init_trans_id + recurring_token + order.number + order.amount + order.description + merchant_pass |
order | Object | ||
number | String | Required Not blank max: 255 [a-zA-Z0-9-] | Order ID Example: order-1234 |
amount | Float | Required Not blank Greater then 0 0-9 max: 255 | Format depends on currency. Send Integer type value for currencies with zero-exponent. Example: 1000 Send Float type value for currencies with exponents 2, 3, 4. Format for 2-exponent currencies: XX.XX Example: 100.99 Pay attention that currencies 'UGX', 'JPY', 'KRW', 'CLP' must be send in the format XX.XX, with the zeros after comma. Example: 100.00 Format for 3-exponent currencies: XXX.XXX Example: 100.999. Format for 4-exponent currencies: XXX.XXXX Example: 100.9999 |
description | String | Required min: 2 max: 1024 [a-zA-Z0-9!"#$%&'()*+,./:;&@] | Product name Example: Very important gift - # 9 |
Response Parameters
Parameter | Type | Mandatory, Limitations | Description |
---|---|---|---|
status | String | Required | Payment status Example: SETTLED, PENDING, DECLINE |
reason | String | Optional | Decline reason translation for unsuccessful payment. It displays only if the transaction is unsuccessful Example: The operation was rejected. Please contact the site support |
payment_id | String | Required Up to 255 characters | Transaction ID (public) Example: dc66cdd8-d702-11ea-9a2f-0242c0a87002 |
date | String | Required Format: YYYY-MM-DD hh:mm:ss | Transaction date Example: 2020-08-05 07:41:10 |
schedule_id | String | Optional | Schedule ID for recurring payments |
order | Object | ||
number | String | Required max: 255 | Order ID Example: order-1234 |
amount | String | Required Format: XX.XX | Product price (currency will be defined by the first payment) Example: 0.19 |
currency | String | Required 3 characters | Currency Example: USD |
description | String | Required max: 1024 | Product name Example: Very important gift - # 9 |
Example Request
Recurring (settled)
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/payment/recurring' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key":"xxxxx-xxxxx-xxxxx",
"order":{
"number":"order-1234",
"amount": "0.19",
"description":"very important gift"
},
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"recurring_init_trans_id":"dc66cdd8-d702-11ea-9a2f-0242c0a87002",
"recurring_token":"9a2f-0242c0a87002",
"schedule_id":"57fddecf-17b9-4d38-9320-a670f0c29ec0",
"hash":"{{session_hash}}"
}'
Recurring (declined)
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/payment/recurring' \
--header 'Content-Type: application/json' \
--data-raw '{
"payment_id": "1f34f446-fc45-11ec-a50f-0242ac120004",
"date": "2022-07-05 09:30:34",
"status": "decline",
"reason": "Declined by processing.",
"order": {
"number": "order-1234",
"amount": "3.01",
"currency": "USD",
"description": "bloodline"
},
"customer": {
"name": "John Doe",
"email": "[email protected]"
}
}'
Example Response
Status Settled
{
"status": "settled",
"payment_id": "dc66cdd8-d702-11ea-9a2f-0242c0a87002",
"date": "2020-08-05 07:41:10",
"schedule_id":"57fddecf-17b9-4d38-9320-a670f0c29ec0",
"order": {
"number": "order-1234",
"amount": "0.19",
"currency": "USD",
"description": "very important gift"
}
}
Status Declined
{
"status": "declined",
"reason": "declined by processing",
"payment_id": "dc66cdd8-d702-11ea-9a2f-0242c0a87002",
"schedule_id":"57fddecf-17b9-4d38-9320-a670f0c29ec0",
"date": "2020-08-05 07:41:10",
"order": {
"number": "order-1234",
"amount": "0.19",
"currency": "USD",
"description": "very important gift"
}
}
Retry
RETRY request is used to retry funds charging for secondary recurring payments in case of soft decline.
This action creates RETRY transaction and can cause payment final status changing.
This request is sent by POST in JSON format.
RETRY request
/api/v1/payment/retry
Request parameters
Parameter | Type | Mandatory, Limitations | Description |
---|---|---|---|
merchant_key | String | Required | Key for Merchant identification Example: xxxxx-xxxxx-xxxxx |
payment_id | String | Required Up to 255 characters | Payment ID (public) Example: dc66cdd8-d702-11ea-9a2f-0242c0a87002 |
hash | String | Required | Special signature to validate your request to Payment Platform Addition in Signature section. Must be SHA1 of MD5 encoded string (uppercased): payment_id + merchant_pass |
Request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/payment/retry' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key":"xxxxx-xxxxx-xxxxx",
"payment_id":"63c781cc-de3d-11eb-a1f1-0242ac130006",
"hash":"{{operation_hash}}"
}'
Response Parameters
Parameter | Type | Mandatory, Limitations | Description |
---|---|---|---|
payment_id | String | Required Up to 255 characters | Payment ID (public) Example: dc66cdd8-d702-11ea-9a2f-0242c0a87002 |
result | String | Required | Retry request result Example: accepted |
Response example
{
"payment_id": "63c781cc-de3d-11eb-a1f1-0242ac130006",
"result": "accepted"
}
Get transaction status
This request is sent by POST in JSON format.
To get order status you can use one the identifiers:
• payment_id
– transaction ID in the Payment Platform
• order_id
– merchant’s transaction ID
/api/v1/payment/status
GET_TRANS_STATUS by payment_id
Note: The response logic for a status request depends on the Cascading Context for Get Status setting in Cofiguration --> Protocol Mappings section. If enabled, the system returns the status of the most recently created payment within the cascade (i.e., the payment with the latest creation date), rather than the payment specified in the request.
Request Parameters by payment_id
Parameter | Type | Mandatory, Limitations | Description |
---|---|---|---|
merchant_key | String | Required | Key for Merchant identification Example: xxxxx-xxxxx-xxxxx |
payment_id | String | Required Up to 255 characters | Payment ID (public) Example: dc66cdd8-d702-11ea-9a2f-0242c0a87002 |
hash | String | Required | Special signature to validate your request to Payment Platform Addition in Signature section. Must be SHA1 of MD5 encoded string (uppercased): payment_id + merchant_pass |
Response Parameters by payment_id
Parameter | Type | Mandatory, Limitations | Description |
---|---|---|---|
payment_id | String | Required Up to 255 characters | Payment ID (public) Example: dc66cdd8-d702-11ea-9a2f-0242c0a87002 |
date | String | Required Format: YYYY-MM-DD hh:mm:ss | Transaction date Example: 2020-08-05 07:41:10 |
status | String | Required | Payment status: prepare, settled, pending, 3ds, redirect, decline, refund, reversal, void, chargeback Example: settled |
reason | String | Optional | Decline reason translation for unsuccessful payment. It displays only if the transaction is unsuccessful Example: The operation was rejected. Please contact the site support |
recurring_token | String | Optional | Recurring token (provided if recurring was initialized) Example: e5f60b35485e |
shedule_id | String | Optional | Schedule ID for recurring payments. Only for purchase operation Example: 57fddecf-17b9-4d38-9320-a670f0c29ec0 |
order | Object | ||
number | String | Required Up to 255 characters | Order ID Example: order-1234 |
amount | String | Required Format: XX.XX | Product price Example: 0.19 |
currency | String | Required Up to 3 characters | Currency Example: USD |
description | String | Required Up to 1024 characters | Product name Example: Very important gift |
customer | Object | ||
name | String | Required | Customer's name Example: John Doe |
email | String | Required | Customer's email address Example: [email protected] |
digital_wallet | String | Optional | Wallet provider: googlepay, applepay. It returns if digital wallets were used for card payment creation. Example: googlepay |
Example Request
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/payment/status' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key":"xxxxx-xxxxx-xxxxx",
"payment_id":"63c781cc-de3d-11eb-a1f1-0242ac130006",
"hash":"{{operation_hash}}"
}
'
Example Response
Status Settled
{
"payment_id": "24f7401c-fc47-11ec-8d07-0242ac120015",
"date": "2022-07-05 09:45:03",
"status": "settled",
"recurring_token": "e5f60b35485e",
"shedule_id ": "57fddecf-17b9-4d38-9320-a670f0c29ec0",
"digital_wallet": "googlepay",
"order": {
"number": "f0a51dfa-fc43-11ec-8128-0242ac120004-1",
"amount": "3.01",
"currency": "USD",
"description": "bloodline"
},
"customer": {
"name": "John Doe",
"email": "[email protected]"
}
}
Status Decline
{
"payment_id": "03e46e96-de42-11eb-aea7-0242ac140002",
"date": "2021-07-06 10:07:47",
"status": "decline",
"reason": "Declined by processing",
"digital_wallet": "googlepay",
"order": {
"number": "order-1234",
"amount": "0.19",
"currency": "USD",
"description": "Important gift"
},
"customer": {
"name": "John Doe",
"email": "[email protected]"
}
}
GET_TRANS_STATUS by order_id
Use this request to get the status of the most recent transaction in the order's transaction subsequence.
It is recommended to send an unique order number (the order.number
parameter) in the Authorization request. That way, it will be easier to uniquely identify the payment by order_id
. This is especially important if cascading is configured. In this case, several intermediate transactions could be created within one payment.
Request Parameters by order_id
Parameter | Type | Mandatory, Limitations | Description |
---|---|---|---|
merchant_key | String | Required | Key for Merchant identification Example: xxxxx-xxxxx-xxxxx |
order_id | String | Required Up to 255 characters | Merchant’s Order Number Example: dc66cdd8-d702-11ea-9a2f-0242c0a87002 |
hash | String | Required | Special signature to validate your request to Payment Platform Addition in Signature section. Must be SHA1 of MD5 encoded string (uppercased): order_id + merchant_pass |
Response Parameters by order_id
Parameter | Type | Mandatory, Limitations | Description |
---|---|---|---|
payment_id | String | Required Up to 255 characters | Transaction ID in Payment Platform Example: dc66cdd8-d702-11ea-9a2f-0242c0a87002 |
date | String | Required Format: YYYY-MM-DD hh:mm:ss | Transaction date Example: 2020-08-05 07:41:10 |
status | String | Required Up to 20 characters | Payment status: prepare, settled, pending, 3ds, redirect, decline, refund, reversal, void, chargeback Example: settled |
reason | String | Optional Up to 1024 characters | Decline reason translation for unsuccessful payment. It displays only if the transaction is unsuccessful Example: The operation was rejected. Please contact the site support |
recurring_token | String | Optional | Recurring token (provided if recurring was initialized) Example: e5f60b35485e |
shedule_id | String | Optional | Schedule ID for recurring payments. Only for purchase operation Example: 57fddecf-17b9-4d38-9320-a670f0c29ec0 |
order | Object | ||
number | String | Required Up to 255 characters | Merchant’s Order ID Example: order-1234 |
amount | String | Required Format: XX.XX | Product price (currency will be defined by the first payment) Example: 0.19 |
currency | String | Required Up to 3 characters | Currency Example: USD |
description | String | Required Up to 1024 characters | Product name or other additional information Example: Very important gift |
customer | Object | ||
name | String | Required | Customer's name Example: John Doe |
email | String | Required | Customer's email address Example: [email protected] |
digital_wallet | String | Optional | Wallet provider: googlepay, applepay. It is returned if digital wallets were used for card payment Example: googlepay |
Example Request
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/payment/status' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key":"xxxxx-xxxxx-xxxxx",
"order_id":"63c781cc-de3d-11eb-a1f1-0242ac130006",
"hash":"{{operation_hash}}"
}
'
Example Response
Status Settled
{
"payment_id": "24f7401c-fc47-11ec-8d07-0242ac120015",
"date": "2022-07-05 09:45:03",
"status": "settled",
"recurring_token": "e5f60b35485e",
"shedule_id ": "57fddecf-17b9-4d38-9320-a670f0c29ec0",
"digital_wallet": "googlepay",
"order": {
"number": "f0a51dfa-fc43-11ec-8128-0242ac120004-1",
"amount": "3.01",
"currency": "USD",
"description": "bloodline"
},
"customer": {
"name": "John Doe",
"email": "[email protected]"
}
}
Status Decline
{
"payment_id": "03e46e96-de42-11eb-aea7-0242ac140002",
"date": "2021-07-06 10:07:47",
"status": "decline",
"reason": "Declined by processing",
"digital_wallet": "googlepay",
"order": {
"number": "order-1234",
"amount": "0.19",
"currency": "USD",
"description": "Important gift"
},
"customer": {
"name": "John Doe",
"email": "[email protected]"
}
}
Refund
To make refund you can use Refund request. Use payment public ID from Payment Platform in the request.
This request is sent by POST in JSON format.
Refund request
/api/v1/payment/refund
Request Parameters
Parameter | Type | Mandatory, Limitations | Description |
---|---|---|---|
merchant_key | String | Required | Key for Merchant identification Example: xxxxx-xxxxx-xxxxx |
payment_id | String | Required Up to 255 characters | Payment ID (public) Example: dc66cdd8-d702-11ea-9a2f-0242c0a87002 |
amount | String | Required Format: XX.XX, without leading zeroes | Amount to refund. It is required for particular refund. Example: 0.19 |
hash | String | Required | Special signature to validate your request to Payment Platform Addition in Signature section. Must be SHA1 of MD5 encoded string (uppercased): payment.id + amount + merchant.pass |
Response Parameters
Parameter | Type | Mandatory, Limitations | Description |
---|---|---|---|
payment_id | String | Required Up to 255 characters | Transaction ID (public) Example: dc66cdd8-d702-11ea-9a2f-0242c0a87002 |
result | String | Required | Refund request result Example: accepted |
Example Request
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/payment/refund' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key":"xxxxx-xxxxx-xxxxx",
"payment_id":"63c781cc-de3d-11eb-a1f1-0242ac130006",
"amount":"0.10",
"hash":"{{operation_hash}}"
}
'
Example Response: Refund request accepted
{
"payment_id": "63c781cc-de3d-11eb-a1f1-0242ac130006",
"result": "accepted"
}
Void
To make a void for an operation which was performed the same financial day you can use Void request.
The Void request is allowed for the payments in SETTLED status only.
Use payment public ID from Payment Platform in the request.
Void request
/api/v1/payment/void
Request Parameters
Parameter | Type | Mandatory, Limitations | Description |
---|---|---|---|
merchant_key | String | Required | Key for Merchant identification Example: xxxxx-xxxxx-xxxxx |
payment_id | String | Required Up to 255 characters | Payment ID (public) Example: dc66cdd8-d702-11ea-9a2f-0242c0a87002 |
hash | String | Required | Special signature to validate your request to Payment Platform Addition in Signature section. Must be SHA1 of MD5 encoded string (uppercased): payment.id + merchant.pass |
Response Parameters
Parameter | Type | Mandatory, Limitations | Description |
---|---|---|---|
status | String | Required | Payment status Example: VOID / SETTLED |
payment_id | String | Required Up to 255 characters | Transaction ID (public) Example: dc66cdd8-d702-11ea-9a2f-0242c0a87002 |
date | String | Required Format: YYYY-MM-DD hh:mm:ss | Transaction date Example: 2020-08-05 07:41:10 |
reason | String | Optional | Decline or error reason (for "sale", "void "and "refund" operation types). It displays only if the transaction has FAIL status Example: The operation was rejected. Please contact the site support |
order | Object | ||
number | String | Required | Order ID Example: order-1234 |
amount | String | Required | Product price Example: 0.19 |
currency | String | Required Up to 3 characters | Currency Example: USD |
description | String | Required Up to 1024 characters | Product name Example: Very important gift |
Example Request
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/payment/void' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key":"xxxxx-xxxxx-xxxxx",
"payment_id":"63c781cc-de3d-11eb-a1f1-0242ac130006",
"hash":"{{operation_hash}}"
}
'
Example Response: Void successful
{
"status": "SUCCESS",
"payment_status": "void",
"payment_id": "dc66cdd8-d702-11ea-9a2f-0242c0a87002",
"date": "2020-08-05 07:41:10",
"order": {
"number": "order-1234",
"amount": "0.19",
"currency": "USD",
"description": "very important gift"
}
}
Example Response: Void failed
{
"status": "FAIL",
"payment_status": "settled",
"payment_id": "dc66cdd8-d702-11ea-9a2f-0242c0a87002",
"date": "2020-08-05 07:41:10",
"reason": "Declined by processing",
"order": {
"number": "order-1234",
"amount": "0.19",
"currency": "USD",
"description": "very important gift"
}
}
Signature
Sign is signature rule used either to validate your requests to payment platform or to validate callback from payment platform to your system.
Authentication Signature
It must be SHA1 of MD5 encoded string and calculated by the formula below:
*sha1(md5(strtoupper(id.order.amount.currency.description.PASSWORD)))
// Use the CryptoJSvar
Example for JS
var to_md5 = order.number + order.amount + order.currency + order.description + merchant.pass;
// Use the CryptoJS
var hash = CryptoJS.SHA1(CryptoJS.MD5(to_md5.toUpperCase()).toString());
var result = CryptoJS.enc.Hex.stringify(hash);
Get Transaction Status Signature (by payment_id
)
It must be SHA1 of MD5 encoded string and calculated by the formula below:
hash = CryptoJS.SHA1(CryptoJS.MD5(to_md5.toUpperCase()).toString());
*sha1(md5(strtoupper))
// Use the CryptoJSvar
Example for JS
var to_md5 = payment.id + merchant.pass;
// Use the CryptoJS
var hash = CryptoJS.SHA1(CryptoJS.MD5(to_md5.toUpperCase()).toString());
var result = CryptoJS.enc.Hex.stringify(hash);
Get Transaction Status Signature (by order_id
)
It must be SHA1 of MD5 encoded string and calculated by the formula below:
hash = CryptoJS.SHA1(CryptoJS.MD5(to_md5.toUpperCase()).toString());
*sha1(md5(strtoupper))
// Use the CryptoJSvar
Example for JS
var to_md5 = order.id + merchant.pass;
// Use the CryptoJS
var hash = CryptoJS.SHA1(CryptoJS.MD5(to_md5.toUpperCase()).toString());
var result = CryptoJS.enc.Hex.stringify(hash);
Refund Signature
It must be SHA1 of MD5 encoded string and calculated by the formula below:
hash = CryptoJS.SHA1(CryptoJS.MD5(to_md5.toUpperCase()).toString()); *sha1(md5(strtoupper))
// Use the CryptoJSvar
Example for JS
var to_md5 = payment.id + amount + merchant.pass;
// Use the CryptoJS
var hash = CryptoJS.SHA1(CryptoJS.MD5(to_md5.toUpperCase()).toString());
var result = CryptoJS.enc.Hex.stringify(hash);
Void Signature
It must be SHA1 of MD5 encoded string and calculated by the formula below:
hash = CryptoJS.SHA1(CryptoJS.MD5(to_md5.toUpperCase()).toString()); *sha1(md5(strtoupper))
// Use the CryptoJSvar
Example for JS
var to_md5 = payment.id + merchant.pass;
// Use the CryptoJS
var hash = CryptoJS.SHA1(CryptoJS.MD5(to_md5.toUpperCase()).toString());
var result = CryptoJS.enc.Hex.stringify(hash);
Recurring Signature
It must be SHA1 of MD5 encoded string and calculated by the formula below:
*sha1(md5(strtoupper(recurring_init_trans_id.recurring_token.order_id.amount.description.merchant.pass)))
// Use the CryptoJS
Example for JS
var to_md5 = recurring_init_trans_id + recurring_token + order.number + order.amount + order.description + merchant.pass;
// Use the CryptoJS
var hash = CryptoJS.SHA1(CryptoJS.MD5(to_md5.toUpperCase()).toString());
var result = CryptoJS.enc.Hex.stringify(hash);
Signature for return
It must be SHA1 of MD5 encoded string and calculated by the formula below:
hash = CryptoJS.SHA1(CryptoJS.MD5(to_md5.toUpperCase()).toString()); *sha1(md5(strtoupper(payment_public_id.order_id.amount.currency.description.PASSWORD)))
Example for JS
var to_md5 = payment_public_id + order.number + order.amount + order.currency + order.description + merchant.pass;
// Use the CryptoJS
var hash = CryptoJS.SHA1(CryptoJS.MD5(to_md5.toUpperCase()).toString());
var result = CryptoJS.enc.Hex.stringify(hash);
Callback Signature
It must be SHA1 of MD5 encoded string and calculated by the formula below:
hash = CryptoJS.SHA1(CryptoJS.MD5(to_md5.toUpperCase()).toString()); *sha1(md5(strtoupper(payment_public_id.order_id.amount.currency.description.PASSWORD)))
Example for JS
var to_md5 = payment_public_id + order.number + order.amount + order.currency + order.description + merchant.pass;
// Use the CryptoJS
var hash = CryptoJS.SHA1(CryptoJS.MD5(to_md5.toUpperCase()).toString());
var result = CryptoJS.enc.Hex.stringify(hash);
Testing
You can test your integration. To do the test you need to perform the actions with the API using (in test mode). For instance, send the request and receive the response with a link on the Checkout page.
To mark your transactions as test in the system, you should use Merchant Test Key as value of the merchant_key
parameter. You can contact your administrator to make sure that you have the necessary settings to work with test transactions.
Use the following test data to emulate the different scenarios.
Scenario: SUCCESS payment
Card data:
Card number
4111 1111 1111 1111
Expiry Date
01/38
CVV2
any 3 digits
⚠️ Use that card data to create recurring payments and get a recurring token for the initial recurring. Testing recurring payments does not work with other test cards.
Result: customer is redirected to the "success_URL"
Scenario: FAILED payment (decline)
Card data:
Card number
4111 1111 1111 1111
Expiry Date
02/38
CVV2
any 3 digits
Result: customer gets an error message: Declined by processing.
Scenario: SUCCESS 3DS payment
Card data:
Card number
4111 1111 1111 1111
Expiry Date
05/38
CVV2
any 3 digits
Result: customer is redirected to the "success_URL" after 3DS verification
Scenario: FAILED 3DS payment
Card data:
Card number
4111 1111 1111 1111
Expiry Date
06/38
CVV2
any 3 digits
Result: customer gets unsuccessful sale after 3DS verification
Scenario: FAILED payment (Luhn algorithm)
Card data:
Card number
1111 2222 3333 4444
Expiry Date
01/38
CVV2
any 3 digits
Result: customer gets an error message: Bad Request. Brand of card does not support.
Payment methods
You can choose the payment methods that you want to display on the payment form.
Use methods
array in the Authentication request and specify the values that correspond to the payment methods.
As well, you can use the value of the payment method to add specific parameters to the Authentification request for the paramaters
object. These parameters will be sent to the acquirer to pass the necessary data for successful payment.
card
If the payer chooses the card
payment method, fields with card data will be displayed on the Checkout page.
For some connector services, it is necessary to send additional parameters in the Authenticaion request for the paramaters
object (for more information, contact your manager).
Additional parameters - Set 1 (BNG)
Parameter | Type | Mandatory | Description |
---|---|---|---|
bnrg_installm_def | Numeric justified to 2 digits | Required | Indicates the number of months that will elapse from the purchase until the total or partial charge is made to the cardholder's account (initial deferral). Possible values: 01 - one month 00 - no delay initial |
bnrg_installm_months | Numeric justified to 2 digits | Required | Indicates the number of monthly payments in which the total amount of the transaction will be divided. Example: 03 - 3 months |
bnrg_installm_plan | Numeric justified to 2 digits | Required | Indicates if the promotion It will be ́ with interest or without interest. Possible values: 03 - no interest05 - with interest07 - defer only initial. |
Authentication request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"card"
],
"parameters": {
"card": {
"bnrg_installm_def": "03",
"bnrg_installm_months": "03",
"bnrg_installm_plan": "03"
}
},
"order": {
"number": "order-1234",
"amount": "1000.19",
"currency": "MXN",
"description": "Important gift"
},
"cancel_url": "https://example.com/cancel",
"success_url": "https://example.com/success",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "US",
"state": "CA",
"city": "Los Angeles",
"address": "Moor Building 35274",
"zip": "123456",
"phone": "347771112233"
},
"hash": "{{session_hash}}",
}
'
Additional parameters - Set 2 (FCP)
Parameter | Type | Mandatory | Description |
---|---|---|---|
document_type | String | Required | Type of the document number specified above. Possibe values: cpf |
document_number | String | Required | Client’s document number |
social_name | String | Required | Client's social name |
fiscal_country | String | Required | An alpha-2 country code of the customer’s tax country |
Authentication request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"card"
],
"parameters": {
"card": {
"document_type": "cpf",
"document_number": "231.002.999-00",
"social_name": "Harry Potter",
"fiscal_country": "BR",
"toBankAccountId": "a1a1134a-32c6-442c-90c9-66b587d5be00"
}
},
"order": {
"number": "order-1234",
"amount": "1000.19",
"currency": "BRL",
"description": "Important gift"
},
"cancel_url": "https://example.com/cancel",
"success_url": "https://example.com/success",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "US",
"state": "CA",
"city": "Los Angeles",
"address": "Moor Building 35274",
"zip": "123456",
"phone": "347771112233"
},
"hash": "{{session_hash}}",
}'
Additional parameters - Set 3 (LBP)
Parameter | Type | Mandatory | Description |
---|---|---|---|
descriptor | String (20 characters) | Optional | Transaction descriptor |
Authentication request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"card"
],
"parameters": {
"card": {
"descriptor": "Testy International LTD"
}
},
"order": {
"number": "order-1234",
"amount": "1000.19",
"currency": "BRL",
"description": "Important gift"
},
"cancel_url": "https://example.com/cancel",
"success_url": "https://example.com/success",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "US",
"state": "CA",
"city": "Los Angeles",
"address": "Moor Building 35274",
"zip": "123456",
"phone": "347771112233"
},
"hash": "{{session_hash}}",
}
'
Additional parameters - set 4 TWD
Parameter | Type | Mandatory | Description |
---|---|---|---|
customer_phone | String | Optional | Phone number of the customer. |
customer_telnocc | String | Optional | Country phone code of the customer. |
shipping_street1 | String | Optional | Building name, and/or street name of the customer's shipping address. |
shipping_city | String | Optional | City of the customer's shipping address. |
shipping_state | String | Optional | State or region of the customer's shipping address. |
shipping_postcode | String | Optional | Postal code/ Zip code of the customer's shipping address. Max – 9 digits. |
shipping_country | String | Optional | Country of the shipping address. 3-digits code |
Authentication request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"card"
],
"parameters": {
"card": {
"customer_phone": "1234567890",
"customer_telnocc ": "123",
"shipping_street1": " Moor Building 35274",
"shipping_ city": "Los Angeles",
"shipping_state": "CA",
"shipping_postcode": "809654321",
"shipping_ country": "US"
}
},
"order": {
"number": "order-1234",
"amount": "1000.19",
"currency": "USD",
"description": "Important gift"
},
"cancel_url": "https://example.com/cancel",
"success_url": "https://example.com/success",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "US",
"state": "CA",
"city": "Los Angeles",
"address": "Moor Building 35274",
"zip": "123456",
"phone": "347771112233"
},
"hash": "{{session_hash}}"
}
'
Additional parameters - Set 5 (ERS)
This set should be used for debit operation.
Parameter | Type | Mandatory | Description |
---|---|---|---|
payer_identity_type | String | Optional | The type of Senders identification document |
payer_identity_id | String | Optional | The number of Senders identification document |
payer_identity_country | String | Optional | The country of issuance of the Senders identification document |
payer_identity_exp_date | String | Optional | The expiration date of the Senders identification document |
payer_nationality | String | Optional | Senders nationality |
payer_country_of_birth | String | Optional | Senders country of birth |
payee_first_name | String | Optional | Receivers first name |
payer_last_name | String | Optional | Receivers last name |
payee_middle_name | String | Optional | Receivers middle name |
payee_address | String | Optional | Receivers street |
payee_city | String | Optional | Receivers city |
payee_state | String | Optional | Receivers state |
payee_country | String | Optional | Receivers country |
payee_zip | String | Optional | Receivers postal code |
payee_phone | String | Optional | Receivers phone number |
payee_birth_date | String | Optional | Receivers date of birth |
payee_identity_type | String | Optional | The type of Receivers identification document |
payee_identity_id | String | Optional | The number of Receivers identification document |
payee_identity_country | String | Optional | The country of issuance of Receivers identification document |
payee_identity_exp_date | String | Optional | The expiration date of Receivers identification document |
payee_nationality | String | Optional | Receivers nationality |
payee_country_of_birth | String | Optional | Receivers country of birth |
Authentication request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"card"
],
"parameters": {
"card": {
"payer_identity_type": "Passport",
"payer_identity_id": "ABC123456",
"payer_identity_country": "KZ",
"payer_identity_exp_date": "2026-05-15",
"payer_nationality": "Kazakhstani",
"payer_country_of_birth": "Kazakhstan",
"payee_first_name": "John",
"payer_last_name": "Doe",
"payee_middle_name": "Smith",
"payee_address": "123 Main Street",
"payee_city": "Almaty",
"payee_state": "Almaty Province",
"payee_country": "Kazakhstan",
"payee_zip": "050000",
"payee_phone": "77123456789",
"payee_birth_date": "1990-01-01",
"payee_identity_type": "National ID",
"payee_identity_id": "XYZ987654",
"payee_identity_country": "Kazakhstan",
"payee_identity_exp_date": "2030-12-31",
"payee_nationality": "Kazakhstani",
"payee_country_of_birth": "Kazakhstan"
}
},
"order": {
"number": "order-1234",
"amount": "1000.19",
"currency": "USD",
"description": "Important gift"
},
"cancel_url": "https://example.com/cancel",
"success_url": "https://example.com/success",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "US",
"state": "CA",
"city": "Los Angeles",
"address": "Moor Building 35274",
"zip": "123456",
"phone": "347771112233"
},
"hash": "{{session_hash}}"
}
'
afsbenefit
payment_method = afsbenefit
airtel
payment_method = airtel
paydefi
If the payer chooses the allpay
payment method, the customer’s confirmation via app may be necessary to finish the payment.
Apple Pay
To use the applepay
payment method, configure the Wallets setting in the admin dashboard. Ensure that the payment provider has confirmed the Apple Pay certificates and verified your domain in the Apple Pay account.
To enable payers to make Apple Pay payments, you can either connect to the Checkout page or work directly via the S2S protocol:
Checkout Page: No additional development is required on your side.
S2S Protocol: You must be able to obtain the Apple Pay payment token and include it in the SALE request.
Regardless of the protocol you have to make settings in the admin panel and set the following configurations:
- Merchant Identifier, Country and Shop Name – according to the merchant’s data from Apple Pay Developer account
- Certificate and Private Key – generated Apple Pay certificate and private key
- Merchant Capabilities and Supported Networks – configurations for Apple Pay payments
- Processing Private Key – private key that uses for payment token decryption (requires if payment provider supports).
We also recommend checking out the demo provided by Apple for Apple Pay: https://applepaydemo.apple.com/
Set up Apple Pay
If you are using the Checkout protocol for Apple Pay payments, you will need to configure your Apple Developer account. Follow these steps to set up Apple Pay in your Apple Developer account:
1. Create a Merchant ID in the "Certificates, Identifiers & Profiles" section.
2. Register and verify the domains involved in the interaction with Apple Pay (e.g., the checkout page URL where the Apple Pay button is placed) in the "Merchant Domains" section. Download the verification file and provide it to support to complete the domain verification.
3. Create a Merchant Identity Certificate in the "Merchant Identity Certificate" section:
- Generate a pair of certificates (*.csr and *.key) and upload the *.csr file in the "Merchant Identity Certificate" section.
- Create a Merchant Identity Certificate based on the generated CSR file.
- Download the *.pem file from the portal.
⚠️ Note
The *.csr file can be obtained from the payment provider that processes Apple Pay, and the *.pem file should be uploaded to your payment provider's dashboard, following their instructions.
4. Create a Processing Private Key in the "Apple Pay Payment Processing Certificate" section:
- Generate a pair of certificates (*.csr and *.key) and upload the *.csr file.
- Create a Payment Processing Certificate based on the generated CSR file.
For more detailed instructions on setting up Apple Pay, refer to the following resource: Learn more about setting up Apple Pay
Next, enter the data from your Apple Pay developer account into the platform's admin panel: Go to the "Merchants" section, initiate editing, open the "Wallets" tab, navigate to the Apple Pay settings, and fill in the following fields:
- Merchant Identifier: Enter the Merchant ID.
- Certificate: Upload the *.pem file downloaded from the "Merchant Identity Certificate" section.
- Private Key: Upload the *.key file from the certificate pair generated for the Merchant Identity Certificate.
- Processing Private Key (required for token decryption): Paste the text from the Processing Private Key file. Ensure it is a single line of text (without spaces or breaks) placed between "BEGIN" and "END."
Apple Pay Payment Flow
By default, all Apple Pay payments on the platform are classified as virtual. As a result:
- Card details are not stored for these transactions.
- Functionality is limited for DMS payments and the creation of recurring transactions.
You can maximize the benefits of Apple Pay payments by leveraging card flow for digital wallets:
- Access to post-transaction operations, such as capture in DMS mode
- Support for recurring payments (MIT) – scheduled or on-demand
- Smart routing for optimized payment processing
- Payment cascading for improved success rates
Note! Ensure your provider supports these operations.
To access the card flow for Apple Pay payments, you need to:
- Set up the Processing Private Key in the admin panel settings ("Merchants" section → "Wallets" tab) to enable token decryption.
- Verify that your payment provider supports card flow processing (ask your support if available).
How It Works:
- If both requirements are met, the system will always decrypt the Apple Pay token during payment and store the decrypted card data for future transactions.
- You can view decrypted card details in the Transaction Details section of the admin panel.
- If any requirement is not met, the payment will be processed using the virtual flow instead.
- If your provider supports card flow but does not accept decrypted data, platform can still store the card details for processing. However, some features (e.g., smart routing and cascading) will not be available.
araka
payment_method = araka
astropay
If the payer chooses the astropay
payment method, the redirection to another page will happen to finish the payment.
awcc
You can add to the Authentication request a specific list of parameters which are possible for the awcc
payment method.
Parameter | Type | Mandatory | Description |
---|---|---|---|
network_type | String | Optional | Network Type of cryptoType, if applicable. Currently, only the symbol USDT have different network types. The following network types are available for USDT: eth (default) or tron |
bech32 | Boolean | Optional | Defaults to false. If set to true, it will return bech32 segwit address for BTC address, or BCH cash address for BCH. |
Authentication request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"awcc"
],
"parameters": {
"awcc": {
"network_type": "eth",
"bech32": "false"
}
},
"order": {
"number": "order-1234",
"amount": "1000.19",
"currency": "BRL",
"description": "Important gift"
},
"cancel_url": "https://example.com/cancel",
"success_url": "https://example.com/success",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "US",
"state": "CA",
"city": "Los Angeles",
"address": "Moor Building 35274",
"zip": "123456",
"phone": "347771112233"
},
"hash": "{{session_hash}}",
}
'
axxi-cash
If the payer chooses the axxi-cash
payment method, the ID document field will be additionally displayed on the Checkout page.
After the Pay button is clicked, the payer will be redirected to the page with the PDF payment ticket.
axxi-transfer
If the payer chooses the axxi-transfer
payment method, the additional fields will be displayed on the Checkout page. The set of the fields depends on the payer's billing country.
There is a list of possible additional fields on the Checkout page:
- Choose your bank ;
- Person Type ;
- Document Type ;
- ID document .
A list of the fields depends on payer's country.
After the fields are filled, the payer will be redirected to the bank's site to complete the transfer.
However, for some billing countries (for example, Mexico), redirection does not happen. Instead, the payment details will be displayed on the Checkout page. The payer needs to use them in order to complete the transfer directly at the bank.
axxi-pin
If the payer chooses the axxi-pin
payment method, the PIN voucher field will be displayed on the Checkout page. The payer should fill in the field to redeem the voucher and see the message with the result of the operation.
a2a_transfer
payment_method = a2a_transfer
beeline
If the payer chooses the beeline
payment method, it needs to be specified the phone numbers of payer and (optionally) of receiver. The OTP code will be sent to the payer to confirm the payment.
billplz
If the payer chooses the billplz
payment method, the customer’s confirmation via app may be necessary to finish the payment.
You can add to the Authentication request a specific list of parameters which are possible for the billplz
payment method.
Parameter | Type | Mandatory | Description |
---|---|---|---|
bank_code | String | Required | SWIFT Bank Code that represents bank. |
bank_account_number | String | Required | Bank account number. |
Authentication request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"billplz"
],
"parameters": {
"billplz": {
"bank_code": "DUMMYBANKVERIFIED",
"bank_account_number ": "232673199763"
}
},
"order": {
"number": "order-1234",
"amount": "1000.19",
"currency": "MYR",
"description": "Important gift"
},
"cancel_url": "https://example.com/cancel",
"success_url": "https://example.com/success",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "US",
"state": "CA",
"city": "Los Angeles",
"address": "Moor Building 35274",
"zip": "123456",
"phone": "347771112233"
},
"hash": "{{session_hash}}"
}
'
bitolo-inr
payment_method = bitolo-inr
bitolo-brl
payment_method = bitolo-brl
bpwallet
If the payer chooses the bpwallet
payment method, the redirection to another page will happen to finish the payment.
cardpaymentz
If the payer chooses the cardpaymentz
payment method, the redirection to another page will happen to finish the payment.
citizen
payment_method = citizen
cnfmo
If the payer chooses the cnfmo
payment method, the redirection to another page will happen to finish the payment.
coinspaid
payment_method = coinspaid
cup-on
payment_method = cup-on
crypto-btg
Use the crypto-btg
payment method to perform cryptocurrency payments without specifying a fixed amount. If the payer selects the crypto-btg
payment method, a crypto wallet address will be generated and displayed at checkout.
cybersource
payment_method = cybersource
dcp
If the payer chooses the dcp
payment method, the redirection to another page will happen to finish the payment.
dl
If the payer chooses the dl
payment method, the redirection to another page will happen to finish the payment.
The following parameter is required:
Parameter | Type | Mandatory | Description |
---|---|---|---|
document_number | String | Conditional | Customer's ID. Condition: If the parameter is NOT specified in the request, then it will be collected on the Checkout page |
Authentication request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"dl"
],
"parameters": {
"dl": {
"document_number": "document_number"
}
},
"order": {
"number": "order-1234",
"amount": "100",
"currency": "USD",
"description": "Important gift"
},
"cancel_url": "https://example.domain.com/cancel",
"success_url": "https://example.domain.com/success",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "BR",
"city": "city",
"address": "address",
"house_number": "17/2",
"zip": "123456",
"phone": "347771112233"
},
"hash": "{{session_hash}}"
}'
dlocal
If the payer chooses the dlocal
payment method, the redirection to another page will happen to finish the payment.
The following parameter is required:
Parameter | Type | Mandatory | Description |
---|---|---|---|
document_number | String | Conditional | Customer's ID. Condition: If the parameter is NOT specified in the request, then it will be collected on the Checkout page |
Authentication request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"dlocal"
],
"parameters": {
"dlocal": {
"document_number": "document_number"
}
},
"order": {
"number": "order-1234",
"amount": "100",
"currency": "USD",
"description": "Important gift"
},
"cancel_url": "https://example.domain.com/cancel",
"success_url": "https://example.domain.com/success",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "BR",
"city": "city",
"address": "address",
"house_number": "17/2",
"zip": "123456",
"phone": "347771112233"
},
"hash": "{{session_hash}}"
}'
doku-hpp
If the payer chooses the doku-hpp
payment method, the redirection to another page will happen to finish the payment.
You can add to the Authentication request a specific list of parameters which may be required for the doku-hpp
payment method.
Parameter | Type | Mandatory | Description |
---|---|---|---|
product_reference_id | String | Conditional | SKU/item ID of the item in this transaction. This parameter is mandatory if you want to use Akulaku, Kredivo and Indodana. Allowed chars: alphabetic, numeric, special chars. Max Length: 64. |
product_name | String | Conditional | Name of the product item. This parameter is mandatory if you want to use Kredivo, Jenius and Indodana. Allowed chars: alphabetic, numeric, special chars. Max Length: 255 |
product_quantity | Number | Conditional | Quantity of the product item. This paramater mandatory if you want to use Kredivo, Akulaku, Indodana and Jenius. Allowed chars: numeric. Max Length: 4 |
product_sku | String | Conditional | SKU of the product item. This paramater mandatory if you want to use Kredivo, Akulaku and Indodana. |
product_category | String | Conditional | Category of the product item. This paramater mandatory if you want to use Kredivo, Akulaku and Indodana. |
product_url | String | Conditional | URL to the product item on merchant site. This paramater mandatory if you want to use Kredivo and Indodana. |
product_image_url | String | Conditional | URL (image) of the product item on merchant site. This paramater mandatory if you want to use Indodana. |
product_type | String | Conditional | Type of the item in this transaction. This paramater mandatory if you want to use Indodana |
Authentication request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"doku-hpp"
],
"parameters": {
"doku-hpp`": {
"product_reference_id": "1",
"product_name": "Fresh flowers",
"product_quantity": "1",
"product_sku": "FF01",
"product_category": "gift-and-flowers",
"product_url": "http://example.com/",
"product_image_url": "http://example.com/",
"product_type": "ABC"
}
},
"order": {
"number": "order-1234",
"amount": "1000",
"currency": "IDR",
"description": "Important gift"
},
"cancel_url": "https://example.com/cancel",
"success_url": "https://example.com/success",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "US",
"state": "CA",
"city": "Los Angeles",
"address": "Moor Building 35274",
"zip": "123456",
"phone": "347771112233"
},
"hash": "{{session_hash}}"
}
'
dpbanktransfer
If the payer chooses the dpbanktransfer
payment method, the additional information must be provided by the payer on the Checkout page.
The payer should enter the details about the beneficiary and select an account from the list of accounts available for transfer.
The confirmation code can be requested at any stage of the transfer.
e-xezine
payment_method = e-xezine
fairpay
If the payer chooses the fairpay
payment method, the set of the fields on the Checkout page depends on the payer's billing country.
Personal Identification Number is required if payer specifies one of the following countries: Brazil, Chile, and Colombia.
fawry
If the payer chooses the fawry
payment method, the customer’s confirmation via app may be necessary to finish the payment.
fxmb-india
payment_method = fxmb-india
fxmb-netbanking
payment_method = fxmb-netbanking
gigadat
If the payer chooses the gigadat
payment method, the redirection to another page will happen to finish the payment.
Google Pay
To provide the payers with the possibility of Google Pay™ payment you can connect to the Checkout or work directly via S2S protocol.
If you are using Checkout integration to work with googlepay
payment method, it requires no additional code implementation.
If you are using S2S integration to work with googlepay
payment method, you must be able to obtain the Google Pay payment token and include it in the SALE request.
To work with Google Pay™ payments through gateway, you need to make settings in the admin panel. You can set the following configurations:
• choose the environment: TEST
or PRODUCTION
• specify "Allowed Auth Method" - PAN_ONLY
or CRYPTOGRAM_3DS
• determine "Supported Networks" - MASTERCARD, VISA, AMEX, DISCOVER, JCB
These configuration will be applied and used when platform interacts with Google Pay.
⚠️ Pay attention
in the case of PAN_ONLY, the responsibility for passing 3ds is transferred to the acquirer, through which the payment is processed
Set up Google Pay
To set up Google Pay, you first need to determine who acts as the gateway when processing payments: the platform or the payment provider. This depends on which side decrypts the Google Pay payment token.
- If the platform decrypts the token and then sends the decrypted payment data to the payment provider, the platform acts as the gateway.
- If the payment provider decrypts the token (i.e., expects to receive an encrypted payment token in the payment request), the payment provider is the gateway.
The gateway (whether it is the platform or the payment provider processing Google Pay) must provide the following information:
- Gateway: The name of the gateway.
- Gateway Merchant ID: The merchant identifier in the gateway's system.
⚠️ Note
If the payment provider is the gateway, it is important to clarify whether they expect the token to include additional information, such as the payer's address or phone number.
The next step is to enter the data into the admin panel.
Go to the "Merchants" section, initiate editing, open the "Wallets" tab, navigate to the Google Pay settings, and fill in the following fields:
- Merchant Identifier: Enter the identifier from the Google Business Console. If the platform is the gateway, you can duplicate the Gateway Merchant ID here.
- Gateway: The gateway for interaction with Google Pay.
- Gateway Merchant ID: The merchant identifier in the Google gateway.
- Private Key (required for decrypted token): The key for decrypting the payment token. If the platform is the gateway, the key should be provided by the platform. If the payment provider is the gateway, the key is not required.
- Include Additional Parameters to Google Token: Depending on the payment provider's requirements.
Additionally, to work with Google Pay payments, you must verify the checkout domains from which Google Pay is processed in the Google Business Console. For domain verification, you may need to contact support.
Google Pay Payment Flow
By default, all Google Pay payments on the platform are classified as virtual. As a result:
- Card details are not stored for these transactions.
- Functionality is limited for DMS payments and the creation of recurring transactions.
You can maximize the benefits of Google Pay payments by leveraging card flow for digital wallets:
- Access to post-transaction operations, such as capture in DMS mode
- Support for recurring payments (MIT) – scheduled or on-demand
- Smart routing for optimized payment processing
- Payment cascading for improved success rates
Note! Ensure your provider supports these operations.
To access the card flow for Google Pay payments, you need to:
- Set up the Private Key in the admin panel settings ("Merchants" section → "Wallets" tab) to enable token decryption.
- Verify that your payment provider supports card flow processing (ask your support if available).
How It Works:
- If both requirements are met, the system will always decrypt the Google Pay token during payment and store the decrypted card data for future transactions.
- You can view decrypted card details in the Transaction Details section of the admin panel.
- If any requirement is not met, the payment will be processed using the virtual flow instead.
- If your provider supports card flow but does not accept decrypted data, platform can still store the card details for processing. However, some features (e.g., smart routing and cascading) will not be available.
hayvn
If the payer chooses the hayvn
payment method, it needs to be specified the crypto currency for payment. After creating a payment, the payer will be shown the data necessary to complete the transaction.
helio
If the payer chooses the helio
payment method, the redirection to widget page will happen to finish the payment.
help2pay
payment_method = help2pay
ideal_crdz
If the payer chooses the ideal_crdz payment method, the redirection to another page will happen to finish the payment.
instant-bills-pay
If the payer chooses the instant-bills-pay
payment method, the redirection to another page will happen to finish the payment.
ipasspay
payment_method = ipasspay
jvz
If the payer chooses the jvz
payment method, the confirmation necessary to finish the payment via APP.
kashahpp
If the payer chooses the kashahpp
payment method, the redirection to another page will happen to finish the payment.
m2p-debit
You should add to the Authentication request a specific list of parameters in the “parameters” object that are needed for the
m2p-debit
payment method.
Parameter | Type | Mandatory | Description |
---|---|---|---|
paymentGatewayName | String | Required | Name of payment gateway that will be used for deposit |
paymentCurrency | String | Required | CRYPTO currency Symbol of currency that will be deposited |
tradingAccountLogin | String | Optional | Depositor’s trading account id |
Authentication request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"m2p-debit"
],
"parameters": {
"m2p-debit": {
"paymentGatewayName": "gateway",
"paymentCurrency": "BTC",
"tradingAccountLogin": "login"
}
},
"order": {
"number": "order-1234",
"amount": "1000.19",
"currency": "BRL",
"description": "Important gift"
},
"cancel_url": "https://example.com/cancel",
"success_url": "https://example.com/success",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "US",
"state": "CA",
"city": "Los Angeles",
"address": "Moor Building 35274",
"zip": "123456",
"phone": "347771112233"
},
"hash": "{{session_hash}}",
}
'
m2p-withdrawal
You should add to the Authentication request a specific list of parameters in the “parameters” object that are needed for the m2p-withdrawal
payment method.
Parameter | Type | Mandatory | Description |
---|---|---|---|
withdrawCurrency | String | Required | CRYPTO currency Cryptocurrency to which currency is converted |
address | String | Required | User cryptocurrency wallet address to withdraw |
tradingAccountLogin | String | Optional | Trading account ID of a user requesting a withdrawal |
Authentication request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"m2p-withdrawal"
],
"parameters": {
"m2p-withdrawal": {
"withdrawCurrency": "BTC",
"address": "mkzePZfMeoYsoGcavSJFT7UKSjsU2BEgzt",
"tradingAccountLogin": "login"
}
},
"order": {
"number": "order-1234",
"amount": "1000.19",
"currency": "BRL",
"description": "Important gift"
},
"cancel_url": "https://example.com/cancel",
"success_url": "https://example.com/success",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "US",
"state": "CA",
"city": "Los Angeles",
"address": "Moor Building 35274",
"zip": "123456",
"phone": "347771112233"
},
"hash": "{{session_hash}}",
}
'
mcpayhpp
If the payer chooses the mcpayhpp
payment method, the redirection to another page will happen to finish the payment.
mcpayment
If the payer chooses the mcpayment
payment method, the QR-code will be swown additionally. The customer needs to scan the QR-code to finish the payment.
moov-money
This method is used for mobile numbers in Benin. If the payer chooses moov-money
payment method, confirmation is required through a mobile device.
moov-togo
This method is used for mobile numbers in Togo. If the payer chooses moov-togo
payment method, confirmation is required through a mobile device.
mpesa
If the payer chooses the mpesa
payment method, the QR-code will be swown additionally. The customer needs to scan the QR-code to finish the payment.
mtn-mobile-money
This method is used for mobile numbers in Benin. If the payer chooses mtn-mobile-money
payment method, confirmation is required through a mobile device.
naps
payment_method = naps
netbanking-upi
payment_method = netbanking-upi
next-level-finance
If the payer chooses the next-level-finance
payment method, the redirection to another page will happen to finish the payment.
nimbbl
If the payer chooses the nimbbl
payment method, the confirmation necessary to finish the payment via APP.
nv-apm
If the payer chooses the nv-apm
payment method, the redirection to another page will happen to finish the payment.
om-wallet
If the payer chooses the om-wallet
payment method, the field for entering the phone number in international format will be additionally displayed on the Checkout page.
one-collection
If the payer chooses the one-collection
payment method, the additional fields will be required on the Checkout page.
The payer needs to specify Bank name, Bank Code, Branch Name, Branch Code, and Account Number.
After clicking the Pay button, the information required to complete the payment will be displayed.
pagsmile
If the payer chooses the pagsmile
payment method, the redirection to another page will happen to finish the payment. The following parameters are required, except for transactions in Guatemala, Panama, or Costa Rica:
Parameter | Type | Mandatory | Description |
---|---|---|---|
document_number | String | Conditional | Customer's ID. Condition: If the parameter is NOT specified in the request, then it will be collected on the Checkout page |
document_type | String | Conditional | Customer's identification type. Condition: If the parameter is NOT specified in the request, then it will be collected on the Checkout page |
Authentication request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"pagsmile"
],
"parameters": {
"pagsmile": {
"document_number": "document_number",
"document_type": "document_type"
}
},
"order": {
"number": "order-1234",
"amount": "100",
"currency": "BRL",
"description": "Important gift"
},
"cancel_url": "https://example.domain.com/cancel",
"success_url": "https://example.domain.com/success",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "BR",
"city": "city",
"address": "address",
"house_number": "17/2",
"zip": "123456",
"phone": "347771112233"
},
"hash": "{{session_hash}}"
}'
panapay-netbanking
If the payer chooses the panapay-netbanking
payment method, the payer will be shown the data necessary to complete the payment.
panapay-upi
If the payer chooses the panapay-upi
payment method, the payer will be shown the data necessary to complete the payment.
papara
If the payer chooses the papara
payment method, the redirection to another page will happen to finish the payment. You have to specify in your request the next parameter:
Parameter | Type | Mandatory | Description |
---|---|---|---|
memberId | String | Conditional | Customer ID. Condition: If the parameter is NOT specified in the request, then it will be collected on the Checkout page |
Authentication request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"papara"
],
"parameters": {
"papara": {
"memberId": "member Id"
},
"session_expiry": 60,
"order": {
"number": "order-1234",
"amount": "100",
"currency": "TRY",
"description": "Important gift"
},
"cancel_url": "https://example.domain.com/cancel",
"success_url": "https://example.domain.com/success",
"expiry_url": "https://example.domain.com/expiry",
"url_target": "_blank",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "TR",
"city": "Ankara",
"address": "Moor Building 35274",
"house_number": "17/2",
"zip": "123456",
"phone": "347771112233"
},
"hash": "{{session_hash}}"
}
payablhpp
If the payer chooses the payablhpp
payment method, the redirection to another page will happen to finish the payment.
paydefi
If the payer chooses the allpay
payment method, the customer’s confirmation via app may be necessary to finish the payment.
payftr-in
If the payer chooses the payftr-in
payment method, the redirection to another page will happen to finish the payment.
payneteasyhpp
If the payer chooses the payneteasyhpp
payment method, the redirection to to widget page happen to finish the payment.
payok-promptpay
If the payer chooses the payok-promptpay
payment method, the QR-code will be displayed to the payer. The payer should use the code to finish the payment.
payok-upi
If the payer chooses the payok-upi
payment method, the customer’s confirmation necessary to finish the payment.
You can add to the Authentication request a specific list of parameters which are possible for the payok-upi
payment method.
Parameter | Type | Mandatory | Description |
---|---|---|---|
personal_id | String | Conditional | Payer's Identity ID. Condition: If the parameter is NOT specified in the request for India, then it will be collected on the Checkout page |
Authentication request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"payok-upi"
],
"parameters": {
"payok-upi": {
"personal_id": "personal id"
}
},
"order": {
"number": "order-1234",
"amount": "1000.19",
"currency": "MYR",
"description": "Important gift"
},
"cancel_url": "https://example.com/cancel",
"success_url": "https://example.com/success",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "US",
"state": "CA",
"city": "Los Angeles",
"address": "Moor Building 35274",
"zip": "123456",
"phone": "347771112233"
},
"hash": "{{session_hash}}"
}
'
paypal
payment_method = paypal
paythrough-upi
You should add to the Authentication request a specific list of parameters in the “parameters” object that are needed for the paythrough-upi
payment method.
Parameter | Type | Mandatory | Description |
---|---|---|---|
upi_id | String | Required | Upi Id |
Authentication request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"paythrough-upi"
],
"parameters": {
"paythrough-upi": {
"upi_id": "joyoberoihrl@okaxis"
}
},
"order": {
"number": "order-1234",
"amount": "1000.19",
"currency": "INR",
"description": "Important gift"
},
"cancel_url": "https://example.com/cancel",
"success_url": "https://example.com/success",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "IN",
"state": "Maharashtra",
"city": "Mumbai",
"address": " Shop No.12, Rendezvous, Raviraj Oberoi Cmplx",
"zip": "400053",
"phone": "9818218660"
},
"hash": "{{session_hash}}"
}
'
paytota
payment_method = paytota
phone-pe
If the payer chooses the phone-pe
payment method, the customer’s confirmation via app may be necessary to finish the payment.
pix
If the payer chooses the pix
payment method, the field for entering the document number will be additionally displayed on the Checkout page.
After the Pay button is clicked, the QR-code could be displayed to the payer. The payer should use the code to finish the payment.
ppro-alipay
payment_method = ppro-alipay
ppro-bitpay
payment_method = ppro-bitpay
ppro-dragonpay
payment_method = ppro-dragonpay
ppro-fpx
payment_method = ppro-fpx
ppro-ideal
payment_method = ppro-ideal
ppro-klarna
payment_method = ppro-klarna
ppro-przelewy24
payment_method = ppro-przelewy24
ppro-safetypay
payment_method = ppro-safetypay
ppro-skrill
payment_method = ppro-skrill
ppro-sofort
payment_method = ppro-sofort
ppro-trustly
payment_method = ppro-trustly
ppro-unionpay
payment_method = ppro-unionpay
ppro-wechat5
payment_method = ppro-wechat5
ppro-wechatonline
payment_method = ppro-wechatonline
pr-cash
payment_method = pr-cash
pr-creditcard
payment_method = pr-creditcard
pr-cryptocurrency
payment_method = pr-cryptocurrency
pr-online
payment_method = pr-online
ptbs
If the payer chooses the ptbs
payment method, the redirection to another page will happen to finish the payment.
ptn-email
If the payer chooses the ptn-email
payment method, the email will be sent to the Payer with the link to payment page.
You can send additional parameters for this payment method:
Parameter | Type | Mandatory | Description |
---|---|---|---|
SecurityQuestion | String | Optional | The security question. |
SecurityQuestionAnswer | String | Optional | SecurityQuestionAnswer standards: - No spaces. - Length must be between 3 and 25 characters long. |
ptn-inapp
If the payer chooses the ptn-inapp
payment method, the redirection to another page will happen to finish the payment.
ptn-sms
If the payer chooses the ptn-sms
payment method, the sms will be sent to the Payer with the link to payment page.
You can send additional parameters for this payment method:
Parameter | Type | Mandatory | Description |
---|---|---|---|
SecurityQuestion | String | Optional | The security question. |
SecurityQuestionAnswer | String | Optional | SecurityQuestionAnswer standards: - No spaces. - Length must be between 3 and 25 characters long. |
pyk-bkmexpress
If you set the value pyk-bkmexpress
for the brand parameter you have to specify in your request the next parameter required for Turkey:
Parameter | Type | Mandatory | Description |
---|---|---|---|
orgCode | String | Conditional | Payer's Institution (Bank) Code. Condition: If the parameter is NOT specified in the request for Turkey, then it will be collected on the Checkout page |
accountName | String | Conditional | Payer's name, length 1~64 characters; Example: Colin Ford. Must be exactly the same as the actual payer's name. Condition: If the parameter is NOT specified in the request for Turkey, then it will be collected on the Checkout page |
accountNumber | String | Conditional | Payer's Institution (Bank) account number. Must be exactly the same as the account number of the actual payment. Condition: If the parameter is NOT specified in the request for Turkey, then it will be collected on the Checkout page |
pyk-momo
If you set the value pyk-momo
for the brand parameter you have to specify in your request the next parameter required for Vietnam:
Parameter | Type | Mandatory | Description |
---|---|---|---|
personal_id | String | Conditional | Payer's Identity ID. Condition: If the parameter is NOT specified in the request for Vietnam, then it will be collected on the Checkout page |
pyk-nequipush
If you set the value pyk-nequipush
for the brand parameter you have to specify in your request the next parameter required for Colombia:
Parameter | Type | Mandatory | Description |
---|---|---|---|
personal_id | String | Conditional | Payer's Identity ID. Condition: If the parameter is NOT specified in the request for Colombia, then it will be collected on the Checkout page |
pyk-paparawallet
If you set the value pyk-paparawallet
for the brand parameter you have to specify in your request the next parameter required for Turkey:
Parameter | Type | Mandatory | Description |
---|---|---|---|
orgCode | String | Conditional | Payer's Institution (Bank) Code. Condition: If the parameter is NOT specified in the request for Turkey, then it will be collected on the Checkout page |
accountName | String | Conditional | Payer's name, length 1~64 characters; Example: Colin Ford. Must be exactly the same as the actual payer's name. Condition: If the parameter is NOT specified in the request for Turkey, then it will be collected on the Checkout page |
accountNumber | String | Conditional | Payer's Institution (Bank) account number. Must be exactly the same as the account number of the actual payment. Condition: If the parameter is NOT specified in the request for Turkey, then it will be collected on the Checkout page |
pyk-promptpay
If the payer chooses the pyk-promptpay
payment method, the QR-code will be displayed to the payer. The payer should use the code to finish the payment.
If you set the value pyk-promptpay
for the brand parameter you have to specify in your request the next parameter required for Thailand:
Parameter | Type | Mandatory | Description |
---|---|---|---|
orgCode | String | Conditional | Payer's Institution (Bank) Code. Condition: If the parameter is NOT specified in the request for Thailand, then it will be collected on the Checkout page |
accountName | String | Conditional | Payer's name, length 1~64 characters; Example: Colin Ford. Must be exactly the same as the actual payer's name. Condition: If the parameter is NOT specified in the request for Thailand, then it will be collected on the Checkout page |
accountNumber | String | Conditional | Payer's Institution (Bank) account number. Must be exactly the same as the account number of the actual payment. Condition: If the parameter is NOT specified in the request for Thailand, then it will be collected on the Checkout page |
pyk-truemoney
If you set the value pyk-truemoney
for the brand parameter you have to specify in your request the next parameter required for Thailand:
Parameter | Type | Mandatory | Description |
---|---|---|---|
orgCode | String | Conditional | Payer's Institution (Bank) Code. Condition: If the parameter is NOT specified in the request for Thailand, then it will be collected on the Checkout page |
accountName | String | Conditional | Payer's name, length 1~64 characters; Example: Colin Ford. Must be exactly the same as the actual payer's name. Condition: If the parameter is NOT specified in the request for Thailand, then it will be collected on the Checkout page |
accountNumber | String | Conditional | Payer's Institution (Bank) account number. Must be exactly the same as the account number of the actual payment. Condition: If the parameter is NOT specified in the request for Thailand, then it will be collected on the Checkout page |
pyk-upi
If the payer chooses the pyk-upi
payment method, the customer’s confirmation necessary to finish the payment.
You can add to the Authentication request a specific list of parameters which are possible for the pyk-upi
payment method.
Parameter | Type | Mandatory | Description |
---|---|---|---|
personal_id | String | Conditional | Payer's Identity ID. Condition: If the parameter is NOT specified in the request for India, then it will be collected on the Checkout page |
Authentication request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"pyk-upi"
],
"parameters": {
"pyk-upi": {
"personal_id": "personal id"
}
},
"order": {
"number": "order-1234",
"amount": "1000.19",
"currency": "MYR",
"description": "Important gift"
},
"cancel_url": "https://example.com/cancel",
"success_url": "https://example.com/success",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "US",
"state": "CA",
"city": "Los Angeles",
"address": "Moor Building 35274",
"zip": "123456",
"phone": "347771112233"
},
"hash": "{{session_hash}}"
}
'
pyk-viettelpay
If you set the value pyk-viettelpay
for the brand parameter you have to specify in your request the next parameter required for Vietnam:
Parameter | Type | Mandatory | Description |
---|---|---|---|
personal_id | String | Conditional | Payer's Identity ID. Condition: If the parameter is NOT specified in the request for Vietnam, then it will be collected on the Checkout page |
pyk-zalopay
If you set the value pyk-zalopay
for the brand parameter you have to specify in your request the next parameter required for Vietnam:
Parameter | Type | Mandatory | Description |
---|---|---|---|
personal_id | String | Conditional | Payer's Identity ID. Condition: If the parameter is NOT specified in the request for Vietnam, then it will be collected on the Checkout page |
paypal
payment_method = paypal
paythrough-upi
You should add to the Authentication request a specific list of parameters in the “parameters” object that are needed for the paythrough-upi
payment method.
Parameter | Type | Mandatory | Description |
---|---|---|---|
upi_id | String | Required | Upi Id |
Authentication request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"paythrough-upi"
],
"parameters": {
"paythrough-upi": {
"upi_id": "joyoberoihrl@okaxis"
}
},
"order": {
"number": "order-1234",
"amount": "1000.19",
"currency": "INR",
"description": "Important gift"
},
"cancel_url": "https://example.com/cancel",
"success_url": "https://example.com/success",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "IN",
"state": "Maharashtra",
"city": "Mumbai",
"address": " Shop No.12, Rendezvous, Raviraj Oberoi Cmplx",
"zip": "400053",
"phone": "9818218660"
},
"hash": "{{session_hash}}"
}
'
saopayments
payment_method = saopayments
securepaycard
payment_method = securepaycard
sepa
If the payer chooses the sepa
payment method, the redirection to another page will happen to finish the payment.
skrill
If the payer chooses the skrill
payment method, the redirection to another page will happen to finish the payment.
sofortuber
If the payer chooses the sofortuber
payment method, the payer will be shown the data necessary to complete the payment.
stcpay
payment_method = stcpay
stripe-js
If the payer chooses the stripe-js
payment method, the redirection to another page will happen to finish the payment.
swifipay-deposit
If the payer chooses the swifipay-deposit
payment method, the redirection to another page will happen to finish the payment.
sz-in-imps
If the payer chooses the sz-in-imps
payment method, the redirection to another page will happen to finish the payment.
sz-in-paytm
If the payer chooses the sz-in-paytm
payment method, the redirection to another page will happen to finish the payment.
sz-in-upi
You should add to the Authentication request a specific list of parameters in the “parameters” object that are needed for the sz-in-upi
payment method.
Parameter | Type | Mandatory | Description |
---|---|---|---|
upiAddress | String | Required | Payer's UPI address |
Authentication request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"sz-in-upi"
],
"parameters": {
"sz-in-upi": {
"upiAddress: "address@upi"
}
},
"order": {
"number": "order-1234",
"amount": "1000.19",
"currency": "INR",
"description": "Important gift"
},
"cancel_url": "https://example.com/cancel",
"success_url": "https://example.com/success",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "US",
"state": "CA",
"city": "Los Angeles",
"address": "Moor Building 35274",
"zip": "123456",
"phone": "347771112233"
},
"hash": "{{session_hash}}",
}
'
sz-jp-p2p
If the payer chooses the sz-jp-p2p
payment method, the redirection to another page will happen to finish the payment.
sz-kr-p2p
If the payer chooses the sz-kr-p2p
payment method, the redirection to another page will happen to finish the payment.
sz-my-ob
If the payer chooses the sz-my-ob
payment method, the redirection to another page will happen to finish the payment.
sz-th-ob
If the payer chooses the sz-th-ob
payment method, the redirection to another page will happen to finish the payment.
sz-th-qr
If the payer chooses the sz-th-qr
payment method, the redirection to another page will happen to finish the payment.
sz-vn-ob
If the payer chooses the sz-vn-ob
payment method, the redirection to another page will happen to finish the payment.
sz-vn-p2p
If the payer chooses the sz-vn-p2p
payment method, the redirection to another page will happen to finish the payment.
trustgate
If the payer chooses the trustgate
payment method, the redirection to another page will happen to finish the payment.
tabby
You should add to the Authentication request a specific list of parameters in the “parameters” object that are needed for the tabby
payment method.
Parameter | Type | Mandatory | Description |
---|---|---|---|
category | String | Required | Required as name of high-level category (Clothes, Electronics,etc.); or a tree of category-subcategory1-subcategory2; or id of the category and table with category-ids data mapped provided. |
buyer_registered_since | String | Required | Time the customer got registred with you, in UTC, and displayed in ISO 8601 datetime format. |
buyer_loyalty_level | Number | Required | Default: 0 Customer's loyalty level within your store, should be sent as a number of successfully placed orders in the store with any payment methods. |
Authentication request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"tabby"
],
"parameters": {
"tabby": {
"category": " Clothes ",
"buyer_registered_since": " 2019-08-2414:15:22",
"buyer_loyalty_level": 0
}
},
"order": {
"number": "order-1234",
"amount": "1000.19",
"currency": "SAR",
"description": "Important gift"
},
"cancel_url": "https://example.com/cancel",
"success_url": "https://example.com/success",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "US",
"state": "CA",
"city": "Los Angeles",
"address": "Moor Building 35274",
"zip": "123456",
"phone": "347771112233"
},
"hash": "{{session_hash}}"
}
'
tamara
You should add to the Authentication request a specific list of parameters in the “parameters” object that are needed for the tamara
payment method.
Parameter | Type | Mandatory | Description |
---|---|---|---|
shipping_amount | Number | Required | Shipping amount |
tax_amount | Number | Required | Tax amount |
product_reference_id | String | Required | The unique id of the item from merchant's side |
product_type | String | Required | Product type |
product_sku | String | Required | Product sku |
product_amount | Number | Required | Product amount |
Authentication request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"tamara"
],
"parameters": {
"tamara": {
" shipping_amount ": 1.01,
"tax_amount": 1.01,
"product_reference_id": "item54321",
"product_type": "Clothes",
"product_sku": "ABC-12345-S-BL",
"product_amount": 998.17
}
},
"order": {
"number": "order-1234",
"amount": "1000.19",
"currency": "SAR",
"description": "Important gift"
},
"cancel_url": "https://example.com/cancel",
"success_url": "https://example.com/success",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "US",
"state": "CA",
"city": "Los Angeles",
"address": "Moor Building 35274",
"zip": "123456",
"phone": "347771112233"
},
"hash": "{{session_hash}}"
}
'
togocom
This method is used for mobile numbers in Togo. If the payer chooses togocom
payment method, confirmation is required through a mobile device.
unipay
payment_method = unipay
unipayment
If the payer chooses the unipaymentpayment
method, the redirection to another page will happen to finish the payment.
vcard
payment_method = vcard
vouchstar
If the payer chooses the vouchstar
method, the redirection to another page will happen to finish the payment.
vp-wallet
payment_method = vp-wallet
vpayapp_upi
If the payer chooses the vpayapp_upi
payment method, the UPI address will be requested additionally on the Checkout page. After the Pay button is clicked, the payer will be redirected to another page to finish the payment.
webpaygate
If the payer chooses the webpaygate
payment method, the payer will be shown the data necessary to complete the payment.
winnerpay
If the payer chooses the winnerpay
payment method, the payer will be shown the data necessary to complete the payment.
xprowirelatam-ted
If the payer chooses the xprowirelatam-ted
payment method, the customer’s confirmation via app may be necessary to finish the payment.
xprowirelatam-cash
If the payer chooses the xprowirelatam-cash
payment method, the customer’s confirmation via app may be necessary to finish the payment.
xprowirelatam-bank-transfer
If the payer chooses the xprowirelatam-bank-transfer
payment method, the customer’s confirmation via app may be necessary to finish the payment.
xprowirelatam-bank-slip
If the payer chooses the xprowirelatam-bank-slip
payment method, the customer’s confirmation via app may be necessary to finish the payment.
xprowirelatam-picpay
If the payer chooses the xprowirelatam-picpay
payment method, the customer’s confirmation via app may be necessary to finish the payment.
xprowirelatam-pix
If the payer chooses the xprowirelatam-pix
payment method, the customer’s confirmation via app may be necessary to finish the payment.
xswitfly
If the payer chooses the xswitfly
payment method, the redirection to another page will happen to finish the payment.
yapily
If the payer chooses the yapily
payment method, the redirection to another page will happen to finish the payment.
As well, the customer could be asked to enter additional data on Checkout.
Payment flow and list of the required parameters depend on specific region and payment providers rules.
Parameter | Type | Mandatory | Description |
---|---|---|---|
payee_name | String | Required | Provide here the account provider code of the institution holding the account indicated in the Account parameter. |
payee_country | String | Required | This parameter enables you to attach a file to the transaction. This is useful, for example, in the case where you may want to attach a scanned receipt, or a scanned payment authorization, depending on your internally established business rules. This parameter requires you to provide the name of the file you are attaching, as a string, for example “receipt.doc” or “receipt.pdf”. Note that the contents of this parameter are ignored if you have not provided the contents of the file using NarrativeFileBase64 below. |
payee_identifications | Array | Required | The account identifications that identify the Payer bank account. Array should contain the objects with the Identifications combinations: type and identification parameters. |
type | String | Required | Used to describe the format of the account. Possible values: - SORT_CODE - ACCOUNT_NUMBER - IBAN - BBAN - BIC - PAN - MASKED_PAN - MSISDN - BSB - NCC - ABA - ABA_WIRE - ABA_ACH - ROLL_NUMBER - BLZ - IFS - CLABE - CTN - BRANCH_CODE - VIRTUAL_ACCOUNT_ID |
identification | String | Required | Account Identification. The value associated with the account identification type. |
Authentication request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"yapily"
],
"parameters": {
"yapily": {
"payee_name": "Payee Name",
"payee_country": "GB",
"payee_identifications": [
{
"type": "SORT_CODE",
"identification": "123456"
},
{
"type": "ACCOUNT_NUMBER",
"identification": "12345678"
}
]
}
},
"order": {
"number": "order-1234",
"amount": "1000.19",
"currency": "UGX",
"description": "Important gift"
},
"cancel_url": "https://example.com/cancel",
"success_url": "https://example.com/success",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "US",
"state": "CA",
"city": "Los Angeles",
"address": "Moor Building 35274",
"zip": "123456",
"phone": "347771112233"
},
"hash": "{{session_hash}}"
}
'
yo-uganda-limited
You can add to the Authentication request a specific list of parameters in the “parameters” object that are needed for the
yo-uganda-limited
payment method.
Parameter | Type | Mandatory | Description |
---|---|---|---|
AccountProviderCode | String | Optional | Provide here the account provider code of the institution holding the account indicated in the Account parameter. |
NarrativeFileName | String | Optional | This parameter enables you to attach a file to the transaction. This is useful, for example, in the case where you may want to attach a scanned receipt, or a scanned payment authorization, depending on your internally established business rules. This parameter requires you to provide the name of the file you are attaching, as a string, for example “receipt.doc” or “receipt.pdf”. Note that the contents of this parameter are ignored if you have not provided the contents of the file using NarrativeFileBase64 below. |
NarrativeFileBase64 | String | Optional | This parameter enables you to attach a file to the transaction. This is useful, for example, in the case where you may want to attached a scanned receipt, or a scanned payment authorization, depending on your business rules. This parameter requires you to provide the contents of the file you are attaching, encoded in base-64 encoding. Note that the contents of this parameter are ignored if you have not provided a file name using NarrativeFileName above. |
ProviderReferenceText | String | Optional | In this field, enter text you wish to be present in any confirmation message which the mobile money provider network sends to the subscriber upon successful completion of the transaction. Some mobile money providers automatically send a confirmatory text message to the subscriber upon completion of transactions. This parameter allows you to provide some text which will be appended to any such confirmatory message sent to the subscriber. |
Authentication request example
curl --location -g --request POST '{{CHECKOUT_HOST}}/api/v1/session' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant_key": "xxxxx-xxxxx-xxxxx",
"operation": "purchase",
"methods": [
"yo-uganda-limited"
],
"parameters": {
"yo-uganda-limited": {
"AccountProviderCode": "89128734651234",
"NarrativeFileName": "file.img",
"NarrativeFileBase64": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAZ25vbWUtc2NyZWVuc2hvdO8Dvz4AAAA1aVRYdENyZWF0aW9uIFRpbWUAAAAAANGB0YAsIDEwLdGC0YDQsC0yMDIzIDEyOjA4OjQ3ICswMzAwEHyhlwAAABdJREFUCJlj+P///38mBgYGBiYGBgYGADH7BAGR0RGuAAAAAElFTkSuQmCC",
"ProviderReferenceText"”: "thank you",
"AccountProviderCode": "provider1234"
}
},
"order": {
"number": "order-1234",
"amount": "1000.19",
"currency": "UGX",
"description": "Important gift"
},
"cancel_url": "https://example.com/cancel",
"success_url": "https://example.com/success",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"billing_address": {
"country": "US",
"state": "CA",
"city": "Los Angeles",
"address": "Moor Building 35274",
"zip": "123456",
"phone": "347771112233"
},
"hash": "{{session_hash}}",
}
'
zeropay
payment_method = zeropay