Host-to-Host Integration for a Merchant-Owned Payment Form
If you require direct H2H integration, please contact your manager to discuss the terms
Host-to-host integration is used when the payment form is located on the merchant's website. The checkout script may be connected to the form in order to generate a cryptogram and collect payer data
https:/checkout.js
Subscriptions
You can only create a subscription through the API. Currently, getting subscription information is only available in the "Subscriptions" section of the merchant account.
Use subscription functionality responsibly, especially for promotional periods. Ensure that the post-promo price is stated explicitly. Changing the subscription price can lead to chargebacks. If the terms are hidden deep within the Terms and conditions, or if other dark patterns are used, the customer may have grounds to dispute the transaction.
Merchants are not refunded the commission for chargebacks, and penalties may also be imposed. If there are a high number of disputed transactions, the terminal may be disconnected and the merchant's funds frozen for up to 180 days.
Bank Card Payment
POST /api/h2h/payments/card-crypto
This method is used to create a bank card payment transaction.
Request Parameters
Contact your manager to find out how to activate the subscription feature
| Parameter | Type | Comment |
|---|---|---|
| amount | Number | Payment amount. Up to 2 digits after the decimal point are allowed for kopecks or cents. Example: 1188.00 |
| currency | String | Payment currency (RUB, USD, EUR) |
| orderId | String | Unique order identifier in the merchant system |
| description | String | Order description |
| ip | String | Payer IP address |
| returnUrl | String | Page address where the payer is returned after payment |
| String | Payer email address. Required for an international terminal and subscriptions | |
| subscription | Object | Used only for subscription functionality, which must be enabled on the terminal |
| subscription.period | Number | Charge frequency. For example, 2 week means once every two weeks, and 3 month means quarterly |
| subscription.interval | String | Interval between charges. Week means weekly, month means monthly |
| subscription.maxPeriods | Number | Number of subsequent charge periods, excluding the first one. For example, if you sold an annual subscription with monthly billing, specify 11 periods because the first one is covered by the current payment |
| subscription.amount | Number | Charge amount. If omitted, the amount from the request is used. Fill this field when using a promo period. For example, the first month is 39 RUB and subsequent months are 99 RUB |
| subscription.startDate | Date | Subscription charge date. It must be in the future. For example, if the customer first paid on January 9 and your regular charges always occur on the 1st day of the month, specify February 1. Another example: a short promo period, such as 3 days for 1 RUB, followed by 1000 RUB per month |
| deviceData | Object | Payer device data. You can collect it by connecting checkout.js to the payment page |
| deviceData.browserAcceptHeader | String | Value of the HTTP Accept header |
| deviceData.browserLanguage | String | Browser locale |
| deviceData.browserJavaEnabled | Boolean | Whether Java is available |
| deviceData.browserJavaScriptEnabled | Boolean | Whether JavaScript is available |
| deviceData.browserColorDepth | Number | Browser color depth |
| deviceData.browserScreenHeight | Number | Screen height in pixels |
| deviceData.browserScreenWidth | Number | Screen width in pixels |
| deviceData.challengeWindowWidth | Number | Browser window width in pixels |
| deviceData.challengeWindowHeight | Number | Browser window height in pixels |
| deviceData.browserTZ | Number | User time zone offset from UTC, for example 3 |
| deviceData.browserTZName | String | User time zone as a string, for example UTC+3 |
| deviceData.browserIp | String | Payer IP address |
| deviceData.browserUserAgent | String | Value of the HTTP User-Agent header |
| cardCrypto | String | Payer card cryptogram. You can collect it by connecting checkout.js to the payment page |
Response parameters
| Parameter | Type | Comment |
|---|---|---|
| transactionId | UUID | Transaction identifier in the WATA system |
| transactionStatus | String | Transaction status (Pending, Paid, Declined) |
| kind | String | Transaction kind: Payment for payment, Refund for refund |
| errorCode | String | Error code for an unsuccessful request. See the error code reference |
| errorDescription | String | Error description for an unsuccessful request |
| threeDsData | Object | Data for 3DS authentication. See the explanation below |
| threeDsData.url | String | Address where the payer must be sent to enter the 3DS authentication code |
| threeDsData.method | String | HTTP method used to send the form |
| threeDsData.parameters | Object | 3DS parameters |
| threeDsData.parameters.propertyName | String | 3DS parameter value |
threeDsData Parameters
Depending on the values received in this object, either redirect the payer browser to the url value if method is GET, or create a hidden HTML form on the merchant page with parameters from the parameters object and automatically submit it to url using method if the method is not GET. The parameters object can contain different values, so it is recommended to create an input element for each value in a loop.
HTML form example
<html>
<head>
<title></title>
</head>
<body onload="setTimeout(document.forms['form'].submit(), 10000)">
<form name='form' action='{url}' method='{method}'>
<input type='hidden' name='creq' value='{creq}'>
<input type='hidden' name='threeDSSessionData' value='{threeDsSessionData}'>
</form>
</body>
</html>
SBP Payment
This method is used to create a payment transaction through the Bank of Russia Faster Payments System (SBP).
Request Parameters
Contact your manager to find out how to activate the subscription feature
| Parameter | Type | Comment |
|---|---|---|
| amount | Number | Payment amount. Up to 2 digits after the decimal point are allowed for kopecks. Payments are accepted only in Russian rubles. Example: 1188.00 |
| orderId | String | Unique order identifier in the merchant system |
| description | String | Order description |
| ip | String | Payer IP address |
| returnUrl | String | Page address where the payer is returned after payment |
| String | Payer email address. Required for subscriptions | |
| firstName | String | Payer first name |
| lastName | String | Payer last name |
| subscription | Object | Used only for subscription functionality, which must be enabled on the terminal |
| subscription.period | Number | Charge frequency. For example, 2 week means once every two weeks, and 3 month means quarterly |
| subscription.interval | String | Interval between charges. Week means weekly, month means monthly |
| subscription.maxPeriods | Number | Number of subsequent charge periods, excluding the first one. For example, if you sold an annual subscription with monthly billing, specify 11 periods because the first one is covered by the current payment |
| subscription.amount | Number | Charge amount. If omitted, the amount from the request is used. Fill this field when using a promo period. For example, the first month is 39 RUB and subsequent months are 99 RUB |
| subscription.startDate | Date | Subscription charge date. It must be in the future. For example, if the customer first paid on January 9 and your regular charges always occur on the 1st day of the month, specify February 1. Another example: a short promo period, such as 3 days for 1 RUB, followed by 1000 RUB per month |
| deviceData | Object | Payer device data. You can collect it by connecting checkout.js to the payment page |
| deviceData.browserAcceptHeader | String | Value of the HTTP Accept header |
| deviceData.browserLanguage | String | Browser locale |
| deviceData.browserJavaEnabled | Boolean | Whether Java is available |
| deviceData.browserJavaScriptEnabled | Boolean | Whether JavaScript is available |
| deviceData.browserColorDepth | Number | Browser color depth |
| deviceData.browserScreenHeight | Number | Screen height in pixels |
| deviceData.browserScreenWidth | Number | Screen width in pixels |
| deviceData.challengeWindowWidth | Number | Browser window width in pixels |
| deviceData.challengeWindowHeight | Number | Browser window height in pixels |
| deviceData.browserTZ | Number | User time zone offset from UTC, for example 3 |
| deviceData.browserTZName | String | User time zone as a string, for example UTC+3 |
| deviceData.browserIp | String | Payer IP address |
| deviceData.browserUserAgent | String | Value of the HTTP User-Agent header |
Response parameters
| Parameter | Type | Comment |
|---|---|---|
| transactionId | UUID | Transaction identifier in the WATA system |
| transactionStatus | String | Transaction status (Created, Pending, Paid, Declined) |
| kind | String | Transaction kind: Payment for payment, Refund for refund |
| sbpLink | String | SBP payment link |
| errorCode | String | Error code for an unsuccessful request. See the error code reference |
| errorDescription | String | Error description for an unsuccessful request |
T-Pay Payment
This method is used to create a payment transaction through T-Pay by T-Bank.
Request Parameters
| Parameter | Type | Comment |
|---|---|---|
| amount | Number | Payment amount. Up to 2 digits after the decimal point are allowed for kopecks. Payments are accepted only in Russian rubles. Example: 1188.00 |
| orderId | String | Unique order identifier in the merchant system |
| description | String | Order description |
| ip | String | Payer IP address |
| returnUrl | String | Page address where the payer is returned after payment |
| String | Payer email address | |
| subscription | Object | Used only for subscription functionality, which must be enabled on the terminal |
| subscription.period | Number | Charge frequency. For example, 2 week means once every two weeks, and 3 month means quarterly |
| subscription.interval | String | Interval between charges. Week means weekly, month means monthly |
| subscription.maxPeriods | Number | Number of subsequent charge periods, excluding the first one. For example, if you sold an annual subscription with monthly billing, specify 11 periods because the first one is covered by the current payment |
| subscription.amount | Number | Charge amount. If omitted, the amount from the request is used. Fill this field when using a promo period. For example, the first month is 39 RUB and subsequent months are 99 RUB |
| subscription.startDate | Date | Subscription charge date. It must be in the future. For example, if the customer first paid on January 9 and your regular charges always occur on the 1st day of the month, specify February 1. Another example: a short promo period, such as 3 days for 1 RUB, followed by 1000 RUB per month |
| deviceData | Object | Payer device data. You can collect it by connecting checkout.js to the payment page |
| deviceData.browserAcceptHeader | String | Value of the HTTP Accept header |
| deviceData.browserLanguage | String | Browser locale |
| deviceData.browserJavaEnabled | Boolean | Whether Java is available |
| deviceData.browserJavaScriptEnabled | Boolean | Whether JavaScript is available |
| deviceData.browserColorDepth | Number | Browser color depth |
| deviceData.browserScreenHeight | Number | Screen height in pixels |
| deviceData.browserScreenWidth | Number | Screen width in pixels |
| deviceData.challengeWindowWidth | Number | Browser window width in pixels |
| deviceData.challengeWindowHeight | Number | Browser window height in pixels |
| deviceData.browserTZ | Number | User time zone offset from UTC, for example 3 |
| deviceData.browserTZName | String | User time zone as a string, for example UTC+3 |
| deviceData.browserIp | String | Payer IP address |
| deviceData.browserUserAgent | String | Value of the HTTP User-Agent header |
Response parameters
| Parameter | Type | Comment |
|---|---|---|
| transactionId | UUID | Transaction identifier in the WATA system |
| transactionStatus | String | Transaction status (Created, Pending, Paid, Declined) |
| kind | String | Transaction kind: Payment for payment, Refund for refund |
| tPayLink | String | T-Pay payment link |
| errorCode | String | Error code for an unsuccessful request. See the error code reference |