Skip to main content

Integration flow

Version: 3.6.2
Released: 2025/02/26

Introduction


This document describes integration procedures and VIRTUAL PAYMENT GATEWAY protocol usage for e-commerce merchants.

VIRTUAL PAYMENT GATEWAY protocol implements acquiring payments (purchases) with using specific API interaction.

Integration Process


Integration process

With all Payment Platform POST requests at Notification URL the Merchant must return the string OK if he/she successfully received data or return ERROR.

⚠️ 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, you will receive callbacks for the first payment attempt, where the decline occurred and which caused the cascading, as well as for the last payment attempt, where the final status of the order (settled or declined) is determined. Additionally, for the last attempt, the callback will include only the final status. That is, callbacks regarding 3DS or redirects will not be sent. Callbacks for intermediate attempts (between the first decline and the last payment attempt) are not sent.

⚠️ Pay attention

If the required method is GET and the redirect_url contains query parameters, such as:
redirect_url=https://example.domain.com/?parameter=1

There are two possible approaches for implementing the redirect:

Option 1: Redirecting the customer by sending query parameters within the form inputs
Parse the query parameters from the redirect_url and pass them as input elements in an HTML form:

Example:

<form action="https://example.domain.com" method="GET">
<input name="parameter" value="1">
<input type="submit" value="Go">
</form>

Option 2: Redirect Using JavaScript
Use JavaScript to redirect the customer to the specified redirect_url with the query parameters:

Example:

document.location = 'https://example.domain.com/?parameter=1';

Client Registration

Before you get an account to access Payment Platform, you must provide the following data to the Payment Platform administrator.

DataDescription
Callback URLURL which will be receiving the notifications of the processing results of your request to Payment Platform
Contact e-mailClient`s contact email
IP ListList of your IP addresses, from which requests to Payment Platform will be sent.

With all Payment Platform POST requests at Callback URL the Client must return the string "OK" if he/she successfully received data or return "ERROR".

You should get the following information from administrator to begin working with the Payment Platform.

ParameterDescription
CLIENT_KEYUnique key to identify the account in Payment Platform (used as request parameter). In the administration platform this parameter corresponds to the "Merchant key" field
PASSWORDPassword for Client authentication in Payment Platform (used for calculating hash parameter). In the administration platform this parameter corresponds to the "Password" field
PAYMENT_URLURL to request the Payment

Protocol Mapping

It is necessary to check the existence of the protocol mapping before using the S2S integration. Merchants can’t make payments if the S2S APM protocol is not mapped.

Payment Platform Interaction

For the transaction you must send the server to server HTTPS POST request to the Payment Platform URL (PAYMENT_URL). In response Payment Platform will return the JSON (http://json.org/)) encoded string.

⚠️ Pay attention

The S2S (Server-to-Server) protocol requires requests to be sent with the following content type: Header:
Content-Type: application/x-www-form-urlencoded

List of possible actions in Payment Platform

When you make request to Payment Platform, you need to specify action that needs to be done. Possible actions are:

ActionDescription
SALECreates SALE transaction
CREDITVOIDCreates REFUND transaction
VOIDCreates VOID transaction
CREDIT2VIRTUALCreates CREDIT2VIRTUAL transaction
CREDIT2CRYPTOCreates CREDIT transaction
DEBIT2VIRTUALCreates DEBIT transaction as a part of transfer flow
GET_TRANS_STATUSGets status of transaction in Payment Platform

List of possible transaction results and statuses

Result - value that system returns on request. Possible results are:

ResultDescription
SUCCESSAction was successfully completed in Payment Platform
DECLINEDResult of unsuccessful action in Payment Platform
REDIRECTAdditional action required from requester
ACCEPTEDAction was accepted by Payment Platform, but will be completed later
INITAdditional action required from customer, final status will be sent in callback
ERRORRequest has errors and was not validated by Payment Platform

Status - actual status of transaction in Payment Platform. Possible statuses are:

StatusDescription
PREPAREStatus is undetermined, final status will be sent in callback
REDIRECTThe transaction awaits SALE
SETTLEDSuccessful transaction
VOIDTransaction for which void was made
REFUNDTransaction for which refund was made
PENDINGThe payment has been initiated and additional actions are required from customer
DECLINEDNot successful transaction

Callback Events

Merchants receive callbacks when creating transactions with the following statuses:

TransactionStatus
SALE, CREDITVOID, DEBITSUCCESS, FAIL, WAITING, UNDEFINED
VOID, CREDIT2VIRTUALSUCCESS, FAIL, UNDEFINED

Transactions requests

SALE request


Use SALE request to create a payment in the Payment Platform.

If you want to send a payment for the specific sub-account (channel), you need to use channel_id that specified in your Payment Platform account settings.

This request is sent by POST in the background (e.g. through PHP CURL).

Request Parameters

ParameterDescriptionLimitationsRequired
actionAction to perform (=SALE)= SALE+
client_keyUnique client key (CLIENT_KEY)+
channel_idPayment channel (Sub-account)String up to 16 characters-
crypto_networkBlockchain networkString up to 50 characters.
You can use an arbitrary value or choose one of the following:
• ERC20
• TRC20
• BEP20
• BEP2
• OMNI
• solana
• polygon
-
brandBrand through which the transaction is performedString up to 36 characters(Appendix B)+
order_idTransaction ID in the Clients systemString up to 255 characters+
order_amountThe amount of the transaction.

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.
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.
+
order_currencyCurrency3 characters for fiat currencies and from 3 to 6 characters for crypto currencies+
order_descriptionDescription of the transaction (product name)String up to 1024 characters+
identifierExtra parameter for transaction. It could be token, account information, additional descriptor etc.
This is optional if crypto currency is used
String up to 255 characters+
payer_first_nameCustomer's nameString up to 32 characters-
payer_last_nameCustomer's surnameString up to 32 characters-
payer_addressCustomer's addressString up to 255 characters-
payer_house_numberCustomer's house or building numberString up to 9 characters-
payer_countryCustomer's country2-letter code-
payer_stateCustomer's stateString up to 32 characters-
payer_cityCustomer's cityString up to 40 characters-
payer_districtCustomer's district of cityString up to 32 characters-
payer_zip ZIP-code of the CustomerString up to 32 characters-
payer_emailCustomer's emailString up to 256 characters-
payer_phoneCustomer's phoneString up to 32 characters-
payer_birth_dateCustomer's birthdayDate format is "YYYY-MM-DD"-
payer_ipIP-address of the Customer. Both versions, IPv4 and IPv6, can be used. If you are sending IPv6, make sure the payment provider that processes the payments supports it.XXX.XXX.XXX.XXX+
return_url_targetName of, or keyword for a browsing context where Customer should be returned according to HTML specification.String up to 1024 characters
Possible values: _blank, _self, _parent, _top or custom iframe name (default _top).
Find the result of applying the values in the HTML standard description (Browsing context names)
-
return_urlURL to which Customer should be returned after operation in third-party systemString up to 1024 characters+
parametersArray of the parameters for specific brand(Appendix B)+
custom_dataArray with the custom data
This block duplicates the arbitrary parameters that were passed in the payment request
Format:
custom_data [param1]: value1
custom_data [param2]: value2
custom_data [paramN]: valueN
-
hashSpecial signature to validate your request to Payment PlatformSee Appendix A, Sale signature.+

Response Parameters

You will get JSON encoded string with transaction result.

INIT transaction response (for crypto flow)

ParameterDescription
actionSALE
resultSUCCESS
statusPENDING
order_idTransaction ID in the Client's system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
descriptorThis is a string which the owner of the credit card will see in the statement from the bank. In most cases, this is the Customer's support web-site
amountOrder amount
currencyCurrency
crypto_addressPublic address of a cryptocurrency wallet
crypto_networkBlockchain network where the transaction is taking place

Successful sale response

ParameterDescription
actionSALE
resultSUCCESS
statusSETTLED
order_idTransaction ID in the Client's system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
descriptorThis is a string which the owner of the credit card will see in the statement from the bank. In most cases, this is the Customers support web-site
amountOrder amount
currencyCurrency

Unsuccessful sale response

ParameterDescription
actionSALE
resultDECLINED
statusDECLINED
order_idTransaction ID in the Client's system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
decline_reasonThe reason why the transaction was declined
amountOrder amount
currencyCurrency

Redirect transaction response

ParameterDescription
actionSALE
resultREDIRECT
statusREDIRECT
order_idTransaction ID in the Client's system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
redirect_urlURL to which the Client should redirect the Customer
redirect_paramsArray of specific parameters
redirect_methodThe method of transferring parameters (POST or GET)
amountOrder
currencyCurrency

Undefined sale response

ParameterDescription
actionSALE
resultUNDEFINED
statusREDIRECT / PREPARE
order_idTransaction ID in the Merchant's system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
descriptorThis is a string which the owner of the credit card will see in the statement from the bank. In most cases, this is the Customers support web-site
amountOrder amount
currencyCurrency

Callback parameters

INIT transaction response (for crypto flow)

ParameterDescription
actionSALE
resultINIT
statusPENDING
order_idOrder ID in the Client's system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
descriptorThis is a string which the owner of the credit card will see in the statement from the bank. In most cases, this is the Customer's support web-site
amountOrder amount
currencyCurrency

Successful sale response

ParameterDescription
actionSALE
resultSUCCESS
statusSETTLED
order_idTransaction ID in the Client's system
trans_idTransaction ID in the Client's system
trans_dateTransaction date in the Payment Platform
descriptorThis is a string which the owner of the credit card will see in the statement from the bank.In most cases, this is the Customers support web-site
exchange_rateRate used to make exchange
exchange_rate_baseThe rate used in the double conversion to convert the original currency to the base currency
exchange_currencyOriginal currency
exchange_amountOriginal amount
hashSpecial signature to validate callback. See Appendix A, Callback signature.
amountOrder amount
currencyCurrency
custom_dataObject with the custom data.
This block duplicates the arbitrary parameters that were passed in the payment request
connector_name *Connector's name (Payment Gateway)
rrn *Retrieval Reference Number value from the acquirer system
approval_code *Approval code value from the acquirer system
gateway_id *Gateway ID – transaction identifier provided by payment gateway
extra_gateway_id *Extra Gateway ID – additional transaction identifier provided by payment gateway.
merchant_name *Merchant Name
mid_name *MID Name
issuer_country *Issuer Country
issuer_bank *Issuer Bank

* 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).

Unsuccessful sale response

ParameterDescription
actionSALE
resultDECLINED
statusDECLINED
order_idTransaction ID in the Client's system
trans_idTransaction ID in the Client's system
trans_dateTransaction date in the Payment Platform
descriptorTransaction date in the Payment Platform
decline_reasonDescription of the cancellation of the transaction
hashSpecial signature to validate callback. See Appendix A, Callback signature.
amountOrder amount
currencyCurrency
custom_dataObject with the custom data.
This block duplicates the arbitrary parameters that were passed in the payment request

Redirect transaction response

ParameterDescription
actionSALE
resultREDIRECT
statusREDIRECT
order_idTransaction ID in the Client's system
trans_idTransaction ID in the Client's system
trans_dateTransaction date in the Payment Platform
redirect_urlURL to which the Client should redirect the Customer
redirect_paramsArray parameters
redirect_methodThe method of transferring parameters (POST or GET)
hashSpecial signature to validate callback. See Appendix A, Callback signature.
amountOrder amount
currencyCurrency
custom_dataObject with the custom data.
This block duplicates the arbitrary parameters that were passed in the payment request

Undefined sale response

ParameterDescription
actionSALE
resultUNDEFINED
statusREDIRECT / PREPARE
order_idTransaction ID in the Merchant's system system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
descriptorTDescriptor from the bank, the same as cardholder will see in the bank statement
amountOrder amount
currencyOrder currency
custom_dataObject with the custom data.
This block duplicates the arbitrary parameters that were passed in the payment request
hashSpecial signature, used to validate callback, see Appendix A, Formula 2

CREDIT2VIRTUAL request


CREDIT2VIRTUAL request is used to create CREDIT2VIRTUAL transaction in Payment Platform.

This operation transfers money from merchants account to customer account.

If you want to send a payout for the specific sub-account (channel), you need to use channel_id that specified in your Payment Platform account settings.

This request is sent by POST in the background (e.g., through PHP CURL).

Request Parameters

ParameterDescriptionValuesRequired
actionCREDIT2VIRTUALCREDIT2VIRTUAL+
client_keyUnique client key (CLIENT_KEY)+
channel_idPayment channel (Sub-account)String up to 16 characters-
brandBrand through which the transaction is performedString up to 36 characters+
order_idOrder ID in the Clients systemString up to 255 characters+
order_amountThe amount of the transactionFormat 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
+
order_currencyCurrency3-letter code+
order_descriptionDescription of the transaction (product name)String up to 1024 characters+
parametersArray of the parameters for specific brand(Appendix C)+
hashSpecial signature to validate your request to Payment PlatformSee Appendix A, Credit2Virtual signature.+

Response Parameters

You will get JSON encoded string with transaction result.

Successful response

ParameterDescription
actionCREDIT2VIRTUAL
resultSUCCESS
statusSETTLED
order_idOrder ID in the Client’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
amountOrder amount
currencyCurrency
Response Example (Successful result)
{
"action": "CREDIT2VIRTUAL",
"result": "SUCCESS",
"status": "SETTLED",
"order_id": "1613117050",
"trans_id": "e5098d62-6d08-11eb-9da3-0242ac120013",
"trans_date": "2021-02-12 08:04:15",
"amount": "0.19",
"currency": "USD"
}

Unsuccessful response

ParameterDescription
actionCREDIT2VIRTUAL
resultDECLINED
statusDECLINED
order_idOrder ID in the Client’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
decline_reasonThe reason why the transaction was declined
amountOrder amount
currencyCurrency
Response Example (Unsuccessful result)
{
"action": "CREDIT2VIRTUAL",
"result": "DECLINED",
"status": "DECLINED",
"order_id": "1613117050",
"trans_id": "e5098d62-6d08-11eb-9da3-0242ac120013",
"trans_date": "2021-02-12 08:04:15",
"decline_reason": "Declined by procesing",
"amount": "0.19",
"currency": "USD"
}

Undefined response

ParameterDescription
actionCREDIT2VIRTUAL
resultUNDEFINED
statusPREPARE
order_idOrder ID in the Client’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
amountOrder amount
currencyCurrency
Response Example (Undefined result)
{
"action": "CREDIT2VIRTUAL",
"result": "UNDEFINED",
"status": "PREPARE",
"order_id": "1613117050",
"trans_id": "e5098d62-6d08-11eb-9da3-0242ac120013",
"trans_date": "2021-02-12 08:04:15",
"amount": "0.19",
"currency": "USD"
}

Callback parameters

Successful response

ParameterDescription
actionCREDIT2VIRTUAL
resultSUCCESS
statusSETTLED
order_idOrder ID in the Client’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
amountOrder amount
currencyCurrency
connector_name *Connector's name (Payment Gateway)
rrn *Retrieval Reference Number value from the acquirer system
approval_code *Approval code value from the acquirer system
gateway_id *Gateway ID – transaction identifier provided by payment gateway
extra_gateway_id *Extra Gateway ID – additional transaction identifier provided by payment gateway.
merchant_name *Merchant Name
mid_name *MID Name
issuer_country *Issuer Country
issuer_bank *Issuer Bank
hashSpecial signature to validate callback. See Appendix A, Credit2Virtual callback signature

* 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).

Response Example (Successful result)
action=CREDIT2VIRTUAL&result=SUCCESS&status=SETTLED&order_id=64401210&trans_id=2732359c-3b21-11ef-8a36-ca7f64825086&hash=73a796d264052625286faf12245b8489&trans_date=2024-07-05+22%3A51%3A46&amount=0.19&currency=USD

Unsuccessful response

ParameterDescription
actionCREDIT2VIRTUAL
resultDECLINED
statusDECLINED
order_idOrder ID in the Client’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction ID in the Payment Platform
decline_reasonDescription of the cancellation of the transaction
hashSpecial signature to validate callback. See Appendix A, Credit2Virtual callback signature
amountOrder amount
currencyCurrency
Response Example (Unsuccessful result)
action=CREDIT2VIRTUAL&result=DECLINED&status=DECLINED&order_id=64401210&trans_id=2732359c-3b21-11ef-8a36-ca7f64825086&hash=73a796d264052625286faf12245b8489&trans_date=2024-07-05+22%3A51%3A46&amount=0.19&currency=USD&decline_reason=reason

Undefined response

ParameterDescription
actionCREDIT2VIRTUAL
resultUNDEFINED
statusPREPARE
order_idOrder ID in the Client’s system
trans_idTransaction ID in the Payment Platform
trans_dateDate of CREDIT2CARD action
hashSpecial signature to validate callback. See Appendix A, Formula 6
amountOrder amount
currencyCurrency
Response Example (Undefined result)
action=CREDIT2VIRTUAL&result=UNDEFINED&status=PREPARE&order_id=64401210&trans_id=2732359c-3b21-11ef-8a36-ca7f64825086&hash=73a796d264052625286faf12245b8489&trans_date=2024-07-05+22%3A51%3A46&amount=0.19&currency=USD

CREDIT2CRYPTO request


CREDIT2CRYPTO request is used to create CREDIT transaction in Payment Platform.

This operation transfers funds from merchant`s crypto wallet to customer.

This request is sent by POST in the background (e.g., through PHP CURL).

Request parameters

ParameterDescriptionValuesRequired
actionCREDIT2CRYPTOCREDIT2CRYPTO+
client_keyUnique client key (CLIENT_KEY)+
channel_idPayment channel (Sub-account)String up to 16 characters-
brandBrand through which the transaction is performedString up to 36 characters+
order_idOrder ID in the Clients systemString up to 255 characters+
order_amountThe amount of the transactionFormat depends on currency+
order_currencyCrypto currencyalpha code, from 3 to 6 characters+
order_descriptionDescription of the transaction (product name)String up to 1024 characters+
crypto_networkBlockchain networkString up to 50 characters

You can use an arbitrary value or choose one of the following:
• ERC20
• TRC20
• BEP20
• BEP2
• OMNI
• solana
• polygon
-
parametersArray of the parameters for specific brand(Appendix C)-
hashSpecial signature to validate your request to Payment PlatformSee Appendix A, Credit2Virtual signature.+

Response Parameters

You will get JSON encoded string with transaction result.

Synchronous - INIT transaction response (for crypto flow)

ParameterDescription
actionCREDIT2CRYPTO
resultINIT / UNDEFINED / DECLINED
statusPENDING if success
PREPARE if undefined status
DECLINED if fail
order_idOrder ID in the Client’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
descriptorAdditional payment description
amountOrder amount
currencyCurrency

Callback Parameters

Callback - INIT transaction response

ParameterDescription
actionCREDIT2CRYPTO
resultINIT
statusPENDING if success
DECLINED if fail
order_idOrder ID in the Client’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction ID in the Client's system
descriptorAdditional payment description
amountOrder amount
currencyCurrency

Callback - Successful response

ParameterDescription
actionCREDIT2CRYPTO
resultSUCCESS
statusSETTLED
order_idOrder ID in the Client’s system
trans_idTransaction ID in the Payment Platform
amountOrder amount
currencyCurrency
trans_dateTransaction date in the Payment Platform

Callback - Unsuccessful response

ParameterDescription
actionCREDIT2CRYPTO
resultDECLINED
statusDECLINED
order_idOrder ID in the Client’s system
trans_idTransaction ID in the Payment Platform
amountOrder amount
currencyCurrency
trans_dateTransaction date in the Payment Platform
decline_reasonThe reason why the transaction was declined

Callback - Undefined response

ParameterDescription
actionCREDIT2CRYPTO
resultUNDEFINED
statusPREPARE / PENDING
order_idOrder ID in the Client’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
amountOrder amount
currencyCurrency

CREDITVOID request


CREDITVOID request is used to complete REFUND transactions.

REFUND transaction is used to return funds to account, previously submitted by SALE transactions.

This request is sent by POST in the background (e.g. through PHP CURL).

Request parameters

ParameterDescriptionLimitationsRequired
actionAction to perform= CREDITVOID+
client_keyUnique client keyCLIENT_KEY
trans_idTransaction ID in the Payment PlatformString up to 255 characters+
amountThe amount for partial refund. Several partial refunds allowed.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
-
hashSpecial signature to validate your request to Payment PlatformSee Appendix A, Creditvoid signature.+

Response parameters

ParameterDescription
actionCREDITVOID
resultACCEPTED
order_idTransaction ID in the Merchant's system
trans_idTransaction ID in the Payment Platform

Callback parameters

Successful refund response

ParameterDescription
actionCREDITVOID
resultSUCCESS
statusREFUND (full refund) / SETTLED (partial refund)
order_idTransaction ID in the Merchant's system
trans_idTransaction ID in the Payment Platform
creditvoid_dateDate of the refund/reversal
amountAmount of refund
connector_name *Connector's name (Payment Gateway)
rrn *Retrieval Reference Number value from the acquirer system
approval_code *Approval code value from the acquirer system
gateway_id *Gateway ID – transaction identifier provided by payment gateway
extra_gateway_id *Extra Gateway ID – additional transaction identifier provided by payment gateway.
merchant_name *Merchant Name
mid_name *MID Name
issuer_country *Issuer Country
issuer_bank *Issuer Bank
hashSpecial signature, used to validate callback. See Appendix A, Creditvoid signature.

* 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).

Unsuccessful refund response

ParameterDescription
actionCREDITVOID
resultDECLINED
statusSETTLED
order_idTransaction ID in the Merchant's system
trans_idTransaction ID in the Payment Platform
decline_reasonDescription of the cancellation of the transaction
hashSpecial signature, used to validate callback. See Appendix A, Creditvoid signature.

Undefined refund response

ParameterDescription
actionCREDITVOID
resultUNDEFINED
statusSETTLED
order_idTransaction ID in the Transaction ID in the Merchant's system
trans_idTransaction ID in the Payment Platform
creditvoid_dateTransaction date in the Payment Platform
amountAmount of refund
hashSpecial signature, used to validate callback, see Appendix A, Formula 2

VOID request


The VOID request is used to cancel the operation which was performed the same financial day.

The cancellation is possible for the SALE operation.

The VOID request is allowed for the payments in SETTLED status only.

This request is sent by POST in the background (e.g. through PHP CURL).

Request parameters

ParameterDescriptionLimitationsRequired
actionAction to perform= VOID+
client_keyUnique client keyCLIENT_KEY+
trans_idTransaction ID in the Payment PlatformString up to 255 characters+
hashSpecial signature to validate your request to Payment PlatformSee Appendix A, Void signature.+

Response parameters

You will get JSON encoded string with transaction result.

Successful void response

ParameterDescription
actionVOID
resultSUCCESS
statusVOID
order_idTransaction ID in the Merchant's system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform

Unsuccessful void response

ParameterDescription
actionVOID
resultDECLINED
statusSETTLED
order_idTransaction ID in the Merchant's system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
decline_reasonThe reason why the transaction was declined

Undefined void response

ParameterDescription
actionVOID
resultUNDEFINED
statusSETTLED
order_idTransaction ID in the Merchant's system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform

Callback parameters

Successful void response

ParameterDescription
actionVOID
resultSUCCESS
statusSETTLED
order_idTransaction ID in the Merchant's system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
connector_name *Connector's name (Payment Gateway)
rrn *Retrieval Reference Number value from the acquirer system
approval_code *Approval code value from the acquirer system
gateway_id *Gateway ID – transaction identifier provided by payment gateway
extra_gateway_id *Extra Gateway ID – additional transaction identifier provided by payment gateway.
merchant_name *Merchant Name
mid_name *MID Name
issuer_country *Issuer Country
issuer_bank *Issuer Bank
hashSpecial signature, used to validate callback, see Appendix A, Formula 2

* 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).

Unsuccessful void response

ParameterDescription
actionVOID
resultDECLINED
statusSETTLED
order_idTransaction ID in the Merchant's system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
decline_reasonThe reason why the transaction was declined
hashSpecial signature, used to validate callback, see Appendix A, Formula 2

Undefined void response

ParameterDescription
actionVOID
resultUNDEFINED
statusSETTLED
order_idTransaction ID in the Merchant's system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
hashSpecial signature, used to validate callback, see Appendix A, Formula 2

DEBIT request

Use debit actions to create debit transactions. When conducting a debit transaction, merchants can utilize commissions for payments by configuring the appropriate settings in the admin panel.

Debit transactions can be executed in two ways:

One-step debit

This option enables payment processing with a single request - DEBIT2VIRTUAL. If commissions are set for debits, they will be applied immediately upon payment. The commission amount can be viewed in the callback (commission parameter).

Two-steps debit

This option involves initiating the debit using the DEBIT2VIRTUAL_CALC request first, followed by confirming the operation through the DEBIT2VIRTUAL_COMPLETE request. In this scenario, if commissions are configured for debits, the commission amount will be returned in the response (commission parameter) after executing the DEBIT2VIRTUAL_CALC request.

DEBIT2VIRTUAL request parameters

Use DEBIT2VIRTUAL action to create debit transaction in one step.

ParameterDescriptionValuesRequired
actionAction that you want to perform. Fixed value.DEBIT2VIRTUAL+
client_keyUnique key (CLIENT_KEY)UUID format value+
order_idTransaction ID in the Merchants systemString up to 255 characters+
order_amountThe amount of the transactionNumbers in the form XXXX.XX+
order_currencyCurrency3-letter code+
order_descriptionDescription of the transaction (product name)String up to 1024 characters+
identifierExtra parameter for transaction.
It could be token, account information, additional descriptor etc.
String up to 255 characters+
brandBrand through which the transaction is performedString up to 36 characters+
payer_first_nameCustomer’s nameString up to 32 characters-
payer_last_nameCustomer’s surnameString up to 32 characters-
payer_middle_nameCustomer’s middle nameString up to 32 characters-
payer_birth_dateCustomer’s birthdayformat yyyy-MM-dd, e.g. 1970-02-17-
payer_addressCustomer’s addressString up to 255 characters-
payer_address2The adjoining road or locality (if required) of the customer’s addressString up to 255 characters-
payer_countryCustomer’s country2-letter code-
payer_stateCustomer’s stateString up to 32 characters-
payer_cityCustomer’s cityString up to 32 characters-
payer_zipZIP-code of the CustomerString up to 10 characters-
payer_emailCustomer’s emailString up to 256 characters-
payer_phoneCustomer’s phoneString up to 32 characters-
payer_ipIP-address of the CustomerXXX.XXX.XXX.XXX+
payer_return_urlCustomer return URLString up to 256 characters+
hashSpecial signature to validate your request to Payment PlatformSee Appendix A, Debit signature+

Response parameters

You will get JSON encoded string with transaction result. If your account supports 3D-Secure, transaction result will be sent to your Notification URL.

Successful response

ParameterDescription
actionDEVIT2VIRTUAL
resultSUCCESS
status3DS / REDIRECT / SETTLED
order_idTransaction ID in the Merchant’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
descriptorDescriptor from the bank, the same as payer will see in the bank statement
amountOrder amount
currencyCurrency
commissionCommission for transaction
total_amountTotal amount for transaction: total_amount = amount + commission

Unsuccessful response

ParameterDescription
actionDEBIT2VIRTUAL
resultDECLINED
statusDECLINED
order_idTransaction ID in the Merchant’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
descriptorDescriptor from the bank, the same as payer will see in the bank statement
amountOrder amount
currencyCurrency
commissionCommission for transaction
total_amountTotal amount for transaction
decline_reasonThe reason why the transaction was declined

Undefined response

ParameterDescription
actionDEVIT2VIRTUAL
resultUNDEFINED
statusREDIRECT / PREPARE
order_idTransaction ID in the Merchant’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
descriptorDescriptor from the bank, the same as payer will see in the bank statement
amountOrder amount
currencyOrder currency
commissionCommission for transaction
total_amountTotal amount for transaction: total_amount = amount + commission

Callback parameters

Successful response

ParameterDescription
actionDEBIT2VIRTUAL
resultSUCCESS
statusREDRIECT / 3DS / SETTLED
order_idTransaction ID in the Merchant’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
descriptorDescriptor from the bank, the same as payer will see in the bank statement
amountOrder amount
currencyCurrency
commissionCommission for transaction
total_amountTotal amount for transaction: total_amount = amount + commission
connector_name *Connector's name (Payment Gateway)
rrn *Retrieval Reference Number value from the acquirer system
approval_code *Approval code value from the acquirer system
gateway_id *Gateway ID – transaction identifier provided by payment gateway
extra_gateway_id *Extra Gateway ID – additional transaction identifier provided by payment gateway.
merchant_name *Merchant Name
mid_name *MID Name
issuer_country *Issuer Country
issuer_bank *Issuer Bank
hashSpecial signature, used to validate callback, see Appendix A, Formula 2

* 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).

Unsuccessful response

ParameterDescription
actionDEBIT2VIRTUAL
resultDECLINED
statusDECLINED
order_idTransaction ID in the Merchant’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
descriptorDescriptor from the bank, the same as payer will see in the bank statement
amountOrder amount
currencyCurrency
commissionCommission for transaction
total_amountTotal amount for transaction: total_amount = amount + commission
decline_reasonDescription of the cancellation of the transaction
hashSpecial signature, used to validate callback, see Appendix A, Formula 2

Undefined response

ParameterDescription
actionDEBIT2VIRTUAL
resultUNDEFINED
statusREDIRECT / PREPARE
order_idTransaction ID in the Merchant’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
descriptorDescriptor from the bank, the same as payer will see in the bank statement
amountOrder amount
currencyOrder currency
commissionCommission for transaction
total_amountTotal amount for transaction: total_amount = amount + commission
hashSpecial signature, used to validate callback, see Appendix A, Formula 2

DEBIT2VIRTUAL_CALC request parameters

Use DEBIT2VIRTUAL_CALC action to initiate DEBIT transaction and to get commission value.

ParameterDescriptionValuesRequired
actionAction that you want to perform. Fixed value.DEBIT2VIRTUAL_CALC+
client_keyUnique key (CLIENT_KEY)UUID format value+
order_idTransaction ID in the Merchants systemString up to 255 characters+
order_amountThe amount of the transactionNumbers in the form XXXX.XX+
order_currencyCurrency3-letter code+
order_descriptionDescription of the transaction (product name)String up to 1024 characters+
identifierExtra parameter for transactionIt could be token, account information, additional descriptor etc.+
brandBrand through which the transaction is performedString up to 36 characters+
payer_first_nameCustomer’s nameString up to 32 characters-
payer_last_nameCustomer’s surnameString up to 32 characters-
payer_middle_nameCustomer’s middle nameString up to 32 characters-
payer_birth_dateCustomer’s birthdayformat yyyy-MM-dd,
e.g. 1970-02-17
-
payer_addressCustomer’s addressString up to 255 characters+
payer_address2The adjoining road or locality (if required) of the customer’s addressString up to 255 character-
payer_countryCustomer’s country2-letter code-
payer_stateCustomer’s stateString up to 32 characters-
payer_cityCustomer’s cityString up to 32 characters-
payer_zipZIP-code of the CustomerString up to 10 characters-
payer_emailCustomer’s emailString up to 256 characters-
payer_phoneCustomer’s phoneString up to 32 characters-
payer_ipIP-address of the CustomerXXX.XXX.XXX.XXX+
payer_return_urlCustomer return URLString up to 256 characters+
hashSpecial signature to validate your request to Payment PlatformSee Appendix A, Debit signature+

Response parameters

You will get JSON encoded string with transaction result.

Successful response

ParameterDescription
actionDEBIT2VIRTUAL_CALC
resultSUCCESS
statusPREPARE
order_idTransaction ID in the Merchant’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
descriptorDescriptor from the bank, the same as payer will see in the bank statement
amountOrder amount
currencyCurrency
commissionCommission for transaction
total_amountTotal amount for transaction: total_amount = amount + commission

Unsuccessful response

ParameterDescription
actionDEBIT2VIRTUAL_CALC
resultDECLINED
statusDECLINED
order_idTransaction ID in the Merchant’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
descriptorDescriptor from the bank, the same as payer will see in the bank statement
amountOrder amount
currencyCurrency
commissionCommission for transaction
total_amountTotal amount for transaction
decline_reasonThe reason why the transaction was declined

Callback parameters

Successful response

ParameterDescription
actionDEBIT2VIRTUAL_CALC
resultSUCCESS
statusPREPARE
order_idTransaction ID in the Merchant’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
descriptorDescriptor from the bank, the same as payer will see in the bank statement
amountOrder amount
currencyCurrency
commissionCommission for transaction
total_amountTotal amount for transaction
connector_name *Connector's name (Payment Gateway)
rrn *Retrieval Reference Number value from the acquirer system
approval_code *Approval code value from the acquirer system
gateway_id *Gateway ID – transaction identifier provided by payment gateway
extra_gateway_id *Extra Gateway ID – additional transaction identifier provided by payment gateway.
merchant_name *Merchant Name
mid_name *MID Name
issuer_country *Issuer Country
issuer_bank *Issuer Bank
hashSpecial signature, used to validate callback, see Appendix A, Formula 2

* 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).

Unsuccessful response

ParameterDescription
actionDEBIT2VIRTUAL_CALC
resultDECLINED
statusDECLINED
order_idTransaction ID in the Merchant’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
descriptorDescriptor from the bank, the same as payer will see in the bank statement
amountOrder amount
currencyCurrency
commissionCommission for transaction
total_amountTotal amount for transaction
decline_reasonDescription of the cancellation of the transaction
hashSpecial signature, used to validate callback, see Appendix A, Formula 2

DEBIT2VIRTUAL_COMPLETE request parameters

Use DEBIT2VIRTUAL_COMPLETE action to confirm initiated debit transaction.

ParameterDescriptionValuesRequired field
actionAction that you want to perform. Fixed value.DEBIT2VIRTUAL_COMPLETE+
client_keyUnique key (CLIENT_KEY)UUID format value+
trans_idInitiated transfer transaction ID in the Payment PlatformUUID format value+
hashSpecial signature to validate your request to Payment PlatformSee Appendix A, Complete Debit signature+

Response parameters

You will get JSON encoded string (see an example on Appendix B) with transaction result. If your account supports 3D-Secure, transaction result will be sent to your Notification URL.

Successful response

ParameterDescription
actionDEBIT2VIRTUAL_COMPLETE
resultSUCCESS
status3DS / REDIRECT / SETTLED
order_idTransaction ID in the Merchant’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
descriptorDescriptor from the bank, the same as payer will see in the bank statement
amountOrder amount
currencyCurrency
commissionCommission for transaction
total_amountTotal amount for transaction

Unsuccessful response

ParameterDescription
actionDEBIT2VIRTUAL_COMPLETE
resultDECLINED
statusDECLINED
order_idTransaction ID in the Merchant’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
descriptorDescriptor from the bank, the same as payer will see in the bank statement
amountOrder amount
currencyCurrency
commissionCommission for transaction
total_amountTotal amount for transaction
decline_reasonThe reason why the transaction was declined

Undefined response

ParameterDescription
actionDEBIT2VIRTUAL_COMPLETE
resultUNDEFINED
statusREDIRECT / PREPARE
order_idTransaction ID in the Merchant’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
descriptorDescriptor from the bank, the same as payer will see in the bank statement
amountOrder amount
currencyOrder currency
commissionCommission for transaction
total_amountTotal amount for transaction: total_amount = amount + commission

Callback parameters

Successful response

ParameterDescription
actionDEBIT2VIRTUAL
resultSUCCESS
status3DS / REDIRECT / SETTLED
order_idTransaction ID in the Merchant’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
descriptorDescriptor from the bank, the same as payer will see in the bank statement
amountOrder amount
currencyCurrency
commissionCommission for transaction
total_amountTotal amount for transaction
connector_name *Connector's name (Payment Gateway)
rrn *Retrieval Reference Number value from the acquirer system
approval_code *Approval code value from the acquirer system
gateway_id *Gateway ID – transaction identifier provided by payment gateway
extra_gateway_id *Extra Gateway ID – additional transaction identifier provided by payment gateway.
merchant_name *Merchant Name
mid_name *MID Name
issuer_country *Issuer Country
issuer_bank *Issuer Bank
hashSpecial signature, used to validate callback, see Appendix A, Formula 2

* 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).

Unsuccessful response

ParameterDescription
actionDEBIT2VIRTUAL
resultDECLINED
statusDECLINED
order_idTransaction ID in the Merchant’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
descriptorDescriptor from the bank, the same as payer will see in the bank statement
amountOrder amount
currencyCurrency
commissionCommission for transaction
total_amountTotal amount for transaction
decline_reasonDescription of the cancellation of the transaction
hashSpecial signature, used to validate callback, see Appendix A, Formula 2

Undefined response

ParameterDescription
actionDEBIT2VIRTUAL
resultUNDEFINED
statusREDIRECT / PREPARE
order_idTransaction ID in the Merchant’s system
trans_idTransaction ID in the Payment Platform
trans_dateTransaction date in the Payment Platform
descriptorDescriptor from the bank, the same as payer will see in the bank statement
amountOrder amount
currencyOrder currency
commissionCommission for transaction
total_amountTotal amount for transaction: total_amount = amount + commission
hashSpecial signature, used to validate callback, see Appendix A, Formula 2

GET_TRANS_STATUS request


Gets order status from Payment Platform. This request is sent by POST in the background (e.g., through PHP CURL).

Request parameters

ParameterDescriptionValuesRequired
actionGET_TRANS_STATUSGET_TRANS_STATUS+
client_keyUnique client key (CLIENT_KEY)+
trans_idTransaction ID in the Payment PlatformString up to 255 characters+
hashSpecial signature to validate your request to Payment PlatformSee Appendix A, GET_TRANS_STATUS signature+

Response parameters

ParameterDescription
actionGET_TRANS_STATUS
resultSUCCESS
statusREDIRECT / PREPARE / DECLINED / SETTLED / REFUND / VOID
order_idOrder ID in the Client’s system
trans_idTransaction ID in the Payment Platform
decline_reasonReason of transaction decline. It shows for the transactions with the “DECLINED” status

Errors


In case error you get synchronous response from Payment Platform:

ParameterDescription
resultERROR
error_messageError message

Testing


You can make test requests using data below. Please note, that all transactions will be processed using Test engine.

Customer's emailTesting / Result
success@gmail.comThis email must be used for testing successful sale.
Response on successful SALE request:
{action: SALE, result: SUCCESS, status: SETTLED}
fail@gmail.comThis email date must be used for testing unsuccessful sale
Response on unsuccessful SALE request:
{action: SALE, result: DECLINED, status: DECLINED}

Appendix A


Hash is signature rule used either to validate your requests to payment platform or to validate callback from payment platform to your system. It must be md5 encoded string calculated by rules below:

Sale signature

Hash is calculated by the formula:

_md5(strtoupper(strrev(identifier + order_id + order_amount + order_currency + PASSWORD)));_

Creditvoid signature

Hash is calculated by the formula:

_md5(strtoupper(strrev(trans_id + PASSWORD)));_

Void signature

Hash is calculated by the formula:

$hash = md5(strtoupper(strrev($trans_id)) . $ PASSWORD);

Credit2Virtual signature

Hash is calculated by the formula:

$hash = md5(strtoupper(strrev($order_id . $order_amount . $order_currency)) . $PASSWORD);

Debit signature

Hash is calculated by the formula:

_md5(strtoupper(strrev(identifier + order_id + order_amount + order_currency + PASSWORD)));_

Complete Debit signature

Hash is calculated by the formula:

$hash = md5(strtoupper(strrev($trans_id)) . $ PASSWORD);

GET_TRANS_STATUS signature

Hash is calculated by the formula:

$hash = md5(strtoupper(strrev($trans_id)) . $ PASSWORD);

Callback signature

Hash is calculated by the formula:

array_walk_recursive($params, static function (&$value) {
$value = strrev($value);
});
$params['hash'] = md5(strtoupper(convert($params) . PASSWORD));
function convert($params)
{
foreach ($params as &$value) {
if (is_array($value)) {
$value = $this->convert($value);
}
}
ksort($params);
return implode($params);
}

Sale callback signature

Hash calculation for notification in S2S APM based on the next formula:
• All parameter values from the callback are used, except for hash;
• Sort values alphabetically by their parameter names;
• Reverse each value individually;
• Concatenate all reversed values together into a single string;
• Convert this string to uppercase;
• Append the password in uppercase to the end of this string;
• Generate the MD5 hash of the resulting string

For example, for callback like this:

result=SUCCESS
amount=9.22
transactions=[ctrans1 = 123, atrans2 =32, itrans2 =325]

formula will be looking like this:

hash = reverse(action) + reverse(amount) + reverse(result) + reverse(transactions.atrans2) + reverse(transactions.ctrans1) + reverse(transactions.itrans2) + PASSWORD

and string_result:

string_result = ELASSSECCUS22.923321523PASSWORD

and hash:

hash = md5(string_result)

Credit2Virtual callback signature

Hash is calculated by the formula:

$hash = md5(strtoupper(strrev($trans_id . $order_id . $status)) . $ PASSWORD);