Transactions
Transaction Statuses
| Parameter | Comment |
|---|---|
| Created | The transaction stays in this status until the backend responds to the webhook notification. Used for pre-payment webhooks |
| Pending | The transaction is being processed and the status is being requested from the bank |
| Paid | Transaction processing completed successfully |
| Declined | Transaction processing completed with an error |
Getting a Transaction by UUID
The system only initiates a transaction after the customer submits the payment form. Then, an API call to the gateway creates a transaction. A single payment link can generate multiple transactions. If payment attempts are unsuccessful due to insufficient funds, incorrect 3DS, etc., declined transactions will be created.
Request parameters
| Parameter | Type | Comment |
|---|---|---|
| id | UUID | Transaction identifier. It is sent to the merchant in the transactionId field of the webhook notification. It can also be received through the transaction search method |
Response parameters
| Parameter | Type | Comment |
|---|---|---|
| id | UUID | Transaction identifier in the WATA system. This is not the payment link identifier |
| terminalName | String | Merchant terminal name |
| terminalPublicId | UUID | Public identifier of the merchant terminal |
| type | String | Transaction type: CardCrypto for ruble and foreign-currency cards, SBP for the Faster Payments System, TPay for the T-Bank method, SberPay for the Sberbank method |
| kind | String | Transaction kind: Payment for payment, Refund for refund |
| originalTransactionId | UUID | Used for refunds. Identifier of the original transaction for which a partial or full refund is made |
| 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, EUR, USD) |
| status | String | Transaction status (Created, Pending, Paid, Declined). See Transaction Statuses |
| errorCode | String | Error code for an unsuccessful request. See the error code reference |
| errorDescription | String | Error description for an unsuccessful request |
| orderId | String | Unique order identifier in the merchant system |
| orderDescription | String | Order description |
| creationTime | Date | Date and time when the transaction was created, in UTC |
| paymentTime | Date | The time the transaction transitioned to a final status (Paid or Declined) in UTC. |
| totalCommission | Number | Transaction commission |
| paymentLinkId | UUID | Payment link identifier |
| subscriptionId | UUID | Subscription identifier |
| payerData | Object | Contains payer information |
| payerData.payerId | String | Masked payer phone number for SBP |
Request and response example for getting a transaction
Searching Transactions
GET /api/h2h/v2/transactions/?{conditions}
If no payment attempt was made using a payment link, no transaction will be found. Several transactions may be found if a payment fails, for example if the customer has insufficient funds and makes another payment attempt. In the case of reusable payment links, the complete series of transactions is also returned.
Request parameters
| Parameter | Type | Comment |
|---|---|---|
| orderId | String | Order identifier in the merchant system |
| creationTimeFrom | Date | Creation date from |
| creationTimeTo | Date | Creation date to |
| amountFrom | Number | Payment amount from |
| amountTo | Number | Payment amount to |
| currencies | String | Currency |
| PaymentLinkIds | Object | Array of payment link UUID strings. Example: ["3fa85f64-5717-4562-b3fc-2c963f66afa6","3fa73c74-5997-2262-b4fa-2c9b3f961da0"]. Transactions will not be found if the payment link lifetime has expired (expirationDateTime) |
| statuses | String | Transaction statuses (Created, Pending, Paid, Declined). See Transaction Statuses |
| sorting | String | Field used to sort the transaction list in the response. Available values: amount, creationTime. Add the desc suffix to the field name for descending sort |
| maxResultCount | Number | Number of records to return. Default: 10, maximum: 1000 |
| cursorId | UUID | Pagination identifier received in the nextCursorId response field. Used for the second and subsequent requests |
| cursorAmount | Number | When sorting transaction search by amount, pass the value from the nextCursorAmount response field. Used for the second and subsequent requests |
| cursorDate | Date | Used when sorting search results by date. The value is received in the nextCursorDate response field. Used for the second and subsequent requests |
Request and response example for searching transactions
Pagination Example When Sorting by Date
Important: Do not pass
cursorId,cursorDate, orcursorAmountin the first request.
GET api/h2h/transactions?sorting=creationtime&skipCount=0&maxResultCount=20
Response
{
"hasNextPage": true,
"nextCursorId": "3f8b2c4a-9d1e-4f7a-b6c2-8e5a1d9b3c7f",
"nextCursorDate": "2026-03-15T14:22:31Z",
"items": [ /* 20 transactions */ ]
}
To request the next page, pass the pagination cursor data received in the previous response.
GET /api/h2h/v2/transactions?
sorting=creationtime&maxResultCount=20&cursorId=3f8b2c4a-9d1e-4f7a-b6c2-
8e5a1d9b3c7f&cursorDate=2026-03-15T14:22:31Z
Response
{
"hasNextPage": true,
"nextCursorId": "7a1d5e8b-2c4f-4a9d-8b3e-1f6c9a2d4e7b",
"nextCursorDate": "2026-03-15T14:18:05Z",
"items": [ /* next 20 */ ]
}
Refund
Creating a Refund
POST /api/h2h/transactions/refunds
This method performs a full or partial refund for a successful payment transaction. Refunds are only available for transactions with a Paid status that belong to the same terminal from which the transaction originated. The terminal must have the 'Acquiring' product type; refunds are disabled for other types, such as 'Digital Goods + Acquiring'. A refund is only possible if there are enough funds in the terminal balance. Allowing a negative balance is possible only upon request to Support.
Important: In order to process a refund, there must be sufficient funds in the terminal's balance. Unprocessed refunds with a 'Pending' status will draw on reserve funds from the balance. This reserve is a temporary freeze, not a deduction from the terminal balance. A peculiar situation can arise where, despite having made a number of refunds that have not yet been processed and despite having sufficient funds in your personal account, you are unable to create a new refund.
There are situations where an automatic payment has just been made and the terminal balance is minimal. You wish to make a refund but have not yet received payments totalling a sufficient amount. In such a situation, the refund will also be declined. To resolve this issue, please contact technical Support.
Request parameters
| Parameter | Type | Comment |
|---|---|---|
| originalTransactionId | UUID | Identifier of the original payment transaction. The transaction must belong to the current terminal and have the Paid status. You can get the value from the webhook received when accepting a payment, or through transaction details methods: GET /api/h2h/transactions, GET /api/h2h/transactions/{id} |
| amount | Number | The refund amount must be in the currency of the original transaction. It must be greater than or equal to 0 and no greater than the amount of the payment transaction. In the case of partial refunds, it must not exceed the available balance for the original transaction. A maximum of 2 decimal places is allowed. Example: 100.01 |
Response parameters
| Parameter | Type | Comment |
|---|---|---|
| originalTransactionId | UUID | Identifier of the original transaction for which the refund was initiated |
| transactionId | UUID | Identifier of the created refund transaction in the WATA system |
| transactionStatus | String | Current refund status: Created, Pending, Paid, Declined. The final status (Paid or Declined) can be assigned asynchronously. Use webhook notifications for tracking |
| kind | String | Operation kind. For refunds, it is always Refund |
| errorCode | String | Error code if the refund is declined. See the error code reference |
| errorDescription | String | Description of the refund decline reason |