Skip to main content

Transactions

Transaction Statuses

ParameterComment
CreatedThe transaction stays in this status until the backend responds to the webhook notification. Used for pre-payment webhooks
PendingThe transaction is being processed and the status is being requested from the bank
PaidTransaction processing completed successfully
DeclinedTransaction processing completed with an error

Getting a Transaction by UUID

GET /api/h2h/transactions/:id

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

ParameterTypeComment
idUUIDTransaction 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

ParameterTypeComment
idUUIDTransaction identifier in the WATA system. This is not the payment link identifier
terminalNameStringMerchant terminal name
terminalPublicIdUUIDPublic identifier of the merchant terminal
typeStringTransaction 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
kindStringTransaction kind: Payment for payment, Refund for refund
originalTransactionIdUUIDUsed for refunds. Identifier of the original transaction for which a partial or full refund is made
amountNumberPayment amount. Up to 2 digits after the decimal point are allowed for kopecks or cents. Example: 1188.00
currencyStringPayment currency (RUB, EUR, USD)
statusStringTransaction status (Created, Pending, Paid, Declined). See Transaction Statuses
errorCodeStringError code for an unsuccessful request. See the error code reference
errorDescriptionStringError description for an unsuccessful request
orderIdStringUnique order identifier in the merchant system
orderDescriptionStringOrder description
creationTimeDateDate and time when the transaction was created, in UTC
paymentTimeDateThe time the transaction transitioned to a final status (Paid or Declined) in UTC.
totalCommissionNumberTransaction commission
paymentLinkIdUUIDPayment link identifier
subscriptionIdUUIDSubscription identifier
payerDataObjectContains payer information
payerData.payerIdStringMasked 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

ParameterTypeComment
orderIdStringOrder identifier in the merchant system
creationTimeFromDateCreation date from
creationTimeToDateCreation date to
amountFromNumberPayment amount from
amountToNumberPayment amount to
currenciesStringCurrency
PaymentLinkIdsObjectArray 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)
statusesStringTransaction statuses (Created, Pending, Paid, Declined). See Transaction Statuses
sortingStringField used to sort the transaction list in the response. Available values: amount, creationTime. Add the desc suffix to the field name for descending sort
maxResultCountNumberNumber of records to return. Default: 10, maximum: 1000
cursorIdUUIDPagination identifier received in the nextCursorId response field. Used for the second and subsequent requests
cursorAmountNumberWhen sorting transaction search by amount, pass the value from the nextCursorAmount response field. Used for the second and subsequent requests
cursorDateDateUsed 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, or cursorAmount in 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

ParameterTypeComment
originalTransactionIdUUIDIdentifier 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}
amountNumberThe 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

ParameterTypeComment
originalTransactionIdUUIDIdentifier of the original transaction for which the refund was initiated
transactionIdUUIDIdentifier of the created refund transaction in the WATA system
transactionStatusStringCurrent refund status: Created, Pending, Paid, Declined. The final status (Paid or Declined) can be assigned asynchronously. Use webhook notifications for tracking
kindStringOperation kind. For refunds, it is always Refund
errorCodeStringError code if the refund is declined. See the error code reference
errorDescriptionStringDescription of the refund decline reason

Technical Documentation