Отрасль: Платежи и финансы. Актуально на 2026-10-12.
API интернет-эквайринга Т‑Бизнеса для приема онлайн-платежей, двухстадийного списания, возвратов и платежей по сохраненным реквизитам. Основной поток строится вокруг платежа: POST /v2/Init создает его, покупатель оплачивает на форме Т‑Банка, а магазин получает результат через HTTP(S)-уведомление или POST /v2/GetState.
Есть:
Нет — смотри официальную документацию:
Подходит для заказа, деньги за который нужно списать сразу после оплаты покупателем. Результат — платеж в статусе CONFIRMED, сверенный с суммой заказа.
TerminalKey и Password.Token и вызови POST /v2/Init с Amount в копейках, уникальным OrderId и при необходимости PayType=O.PaymentURL из ответа POST /v2/Init.NotificationURL, проверь его Token, PaymentId, Amount и статус; при успешной обработке ответь HTTP 200 с телом OK.POST /v2/GetState; выдавай товар только после сверки Amount и статуса CONFIRMED.curl --request POST 'https://securepay.tinkoff.ru/v2/Init' \
--header 'Content-Type: application/json' \
--data '{
"TerminalKey": "<TerminalKey>",
"Amount": 140000,
"OrderId": "21090",
"Token": "<Token>",
"PayType": "O",
"DATA": {"OperationInitiatorType": "0"}
}'
Нужна, когда сначала следует заблокировать деньги, а списать их после проверки наличия или оказания услуги. Результат — перевод платежа из AUTHORIZED в CONFIRMED полностью или на меньшую сумму.
POST /v2/Init с PayType=T и перенаправь покупателя на PaymentURL.POST /v2/GetState; продолжай только для платежа в статусе AUTHORIZED.POST /v2/Confirm. Для частичного списания передай Amount; если подключена онлайн-касса, передай Receipt.POST /v2/GetState: успешное списание имеет статус CONFIRMED.curl --request POST 'https://securepay.tinkoff.ru/v2/Confirm' \
--header 'Content-Type: application/json' \
--data '{
"TerminalKey": "<TerminalKey>",
"PaymentId": "2304882",
"Token": "<Token>",
"Amount": 19200
}'
Один метод снимает холд у платежа в AUTHORIZED и возвращает уже списанные деньги у платежа в CONFIRMED. Результирующий статус зависит от исходного состояния и полноты операции.
POST /v2/GetState и определи текущий статус платежа.POST /v2/Cancel без Amount; для частичной передай сумму возврата в Amount.Receipt возвращаемые позиции; при полной операции Receipt не передавай.POST /v2/GetState: PARTIAL_REVERSED/REVERSED означают отмену холда, PARTIAL_REFUNDED/REFUNDED — возврат списанных денег.curl --request POST 'https://securepay.tinkoff.ru/v2/Cancel' \
--header 'Content-Type: application/json' \
--data '{
"TerminalKey": "<TerminalKey>",
"PaymentId": "2304882",
"Token": "<Token>"
}'
Подходит для подписки или повторной оплаты без повторного ввода реквизитов. Сначала покупатель подтверждает родительский платеж, затем магазин использует полученный RebillId для дочерних платежей.
acq_help@tbank.ru, на боевом — через персонального менеджера.POST /v2/Init, передав Recurrent=Y, CustomerKey и DATA.OperationInitiatorType=1; перенаправь покупателя на PaymentURL.RebillId из проверенного уведомления.POST /v2/Init с новой суммой и новым OrderId; для регулярного списания передай DATA.OperationInitiatorType=R.PaymentURL, вызови POST /v2/Charge с новым PaymentId и сохраненным RebillId.POST /v2/GetState; успешный одностадийный платеж завершится статусом CONFIRMED.curl --request POST 'https://securepay.tinkoff.ru/v2/Charge' \
--header 'Content-Type: application/json' \
--data '{
"TerminalKey": "<TerminalKey>",
"PaymentId": "700001702044",
"RebillId": "145919",
"Token": "<Token>"
}'
Используй этот сценарий после таймаута, потери ответа или уведомления. Результат — состояние конкретного платежа либо список всех платежей, созданных для заказа.
PaymentId, вызови POST /v2/GetState и сверь Amount, OrderId, Success, ErrorCode и Status.OrderId или для заказа создавались повторные платежи, вызови POST /v2/CheckOrder.Payments ответа POST /v2/CheckOrder по PaymentId и обрабатывай ее текущий Status, не полагаясь только на редирект SuccessURL.curl --request POST 'https://securepay.tinkoff.ru/v2/CheckOrder' \
--header 'Content-Type: application/json' \
--data '{
"TerminalKey": "<TerminalKey>",
"OrderId": "21057",
"Token": "<Token>"
}'
https://securepay.tinkoff.ru/v2https://rest-api-test.tinkoff.ru/v2Тип: Другое
Для каждого подписываемого запроса передавай TerminalKey и Token в корневом JSON-объекте. TerminalKey и секретный Password находятся в личном кабинете интернет-эквайринга; Password в запрос не передается.
Чтобы получить Token, собери корневые параметры запроса, добавь к ним Password, исключи Token, вложенные объекты и массивы, отсортируй пары по имени ключа, склей только значения и вычисли SHA-256 в UTF‑8. Полученную шестнадцатеричную строку передай в Token.
Создает платеж в статусе NEW и возвращает PaymentId; при использовании формы Т‑Банка также возвращает PaymentURL.
Документация: https://developer.tbank.ru/eacq/api/init
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
TerminalKey |
body | string | да | Идентификатор терминала, до 64 символов |
Amount |
body | integer |
да | Сумма в копейках |
OrderId |
body | string | да | Уникальный для каждой операции идентификатор заказа, до 50 символов |
Token |
body | string | да | Подпись запроса |
Description |
body | string | нет | Описание заказа на платежной форме |
CustomerKey |
body | string | нет | Идентификатор покупателя; обязателен для карточного платежа с Recurrent=Y |
Recurrent |
body | string | нет | Y для родительского платежа с сохранением реквизитов |
PayType |
body | string | нет | O — одностадийная, T — двухстадийная оплата |
NotificationURL |
body | string |
нет | URL для POST-уведомлений |
SuccessURL |
body | string |
нет | URL возврата покупателя после успешной оплаты |
FailURL |
body | string |
нет | URL возврата покупателя после неуспешной оплаты |
RedirectDueDate |
body | string |
нет | Срок жизни платежной ссылки |
DATA.OperationInitiatorType |
body | string | нет | Инициатор операции: 0, 1, 2, R, I, D или N |
Receipt |
body | object | нет | Данные чека; обязателен при подключенной онлайн-кассе |
Пример ответа:
{
"Success": true,
"ErrorCode": "0",
"TerminalKey": "TBankTest",
"Status": "NEW",
"PaymentId": "3093639567",
"OrderId": "21090",
"Amount": 140000,
"PaymentURL": "https://pay.tbank.ru/new/fU1ppgqa"
}
Списывает всю или часть заблокированной суммы двухстадийного платежа. Метод применим только к платежу в статусе AUTHORIZED.
Документация: https://developer.tbank.ru/eacq/api/confirm
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
TerminalKey |
body | string | да | Идентификатор терминала, до 64 символов |
PaymentId |
body | string | да | Идентификатор платежа, до 20 символов |
Token |
body | string | да | Подпись запроса |
IP |
body | string | нет | IP-адрес покупателя |
Amount |
body | integer |
нет | Сумма списания в копейках; без поля используется исходная сумма |
Receipt |
body | object | нет | Данные чека; обязателен при подключенной онлайн-кассе |
Отменяет авторизованный платеж либо возвращает подтвержденный платеж. Без Amount выполняется полная операция; в статусе NEW значение Amount игнорируется.
Документация: https://developer.tbank.ru/eacq/api/cancel
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
TerminalKey |
body | string | да | Идентификатор терминала, до 64 символов |
PaymentId |
body | string | да | Идентификатор платежа |
Token |
body | string | да | Подпись запроса |
IP |
body | string | нет | IP-адрес покупателя |
Amount |
body | integer |
нет | Сумма частичной отмены или возврата в копейках |
Receipt |
body | object | нет | Возвращаемые позиции; обязателен при частичной операции с онлайн-кассой |
QrMemberId |
body | string | нет | Код банка СБП для возврата в другой банк |
ExternalRequestId |
body | string | нет | Ключ идемпотентности; обязателен для «Долями» и рассрочки |
Проводит дочернюю COF-операцию по ранее полученному RebillId. Перед вызовом нужно создать новый платеж через POST /v2/Init и использовать его PaymentId.
Документация: https://developer.tbank.ru/eacq/api/charge
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
TerminalKey |
body | string | да | Идентификатор терминала, до 64 символов |
PaymentId |
body | string | да | Идентификатор нового платежа, до 20 символов |
RebillId |
body | string | да | Идентификатор сохраненных платежных реквизитов из уведомления |
Token |
body | string | да | Подпись запроса |
IP |
body | string | нет | IP-адрес покупателя |
SendEmail |
body | boolean | нет | Отправлять уведомление об оплате на почту |
InfoEmail |
body | string |
нет | Почта покупателя; обязательна при SendEmail=true |
Возвращает сумму, заказ и текущий статус конкретного платежа.
Документация: https://developer.tbank.ru/eacq/api/get-state
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
TerminalKey |
body | string | да | Идентификатор терминала, до 64 символов |
PaymentId |
body | string | да | Идентификатор платежа, до 20 символов |
Token |
body | string | да | Подпись запроса |
IP |
body | string | нет | IP-адрес покупателя |
GetPhone |
body | boolean | нет | Запросить номер телефона |
Возвращает массив Payments с историей и текущими статусами платежей для одного заказа.
Документация: https://developer.tbank.ru/eacq/api/check-order
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
TerminalKey |
body | string | да | Идентификатор терминала, до 64 символов |
OrderId |
body | string | да | Идентификатор заказа, до 50 символов |
Token |
body | string | да | Подпись запроса |
Content-Type: application/json и используй TLS 1.2 или выше.POST /v2/Init сумма Amount должна совпадать с суммой Receipt.Items.Amount.Success, ErrorCode и Status. OpenAPI описывает успешный и ошибочный ответ как варианты одного ответа 200.Token вложенные объекты и массивы, в том числе DATA и Receipt. Password добавляется только при расчете подписи и не отправляется.SuccessURL подтверждением оплаты. Проверь уведомление или POST /v2/GetState и обязательно сравни Amount с ожидаемой суммой заказа.Token. Ответ должен быть HTTP 200 с телом OK заглавными английскими буквами; ожидание ответа — 10 секунд.OK не получен, уведомление повторяется раз в час в течение 24 часов, затем раз в сутки в течение месяца. Архив уведомлений хранится 90 дней.POST /v2/Confirm вызывается только в статусе AUTHORIZED; подтвердить карточный платеж нужно в течение 7 дней, включая день авторизации.RebillId нужно брать только из проверенного уведомления родительского платежа.DEMO; тест-кейсы с DEMO-терминалом, наоборот, отправляются на боевой URL.| Код | Описание |
|---|---|
0 |
None |
2 |
Отсутствуют обязательные параметры |
20 |
Ошибка повторного идентификатора заказа |
50 |
Ошибка отправки нотификации |
202 |
Терминал заблокирован |
204 |
Неверный токен. Проверьте пару TerminalKeySecretKey |
251 |
Неверная сумма. Сумма должна быть больше или равна {value} копеек |
255 |
Платеж не найден |
3002 |
Недостаточный баланс счета для отмены |
9999 |
Внутренняя ошибка системы |
RedirectDueDate: от 1 минуты до 90 дней; если срок не задан настройками терминала, значение по умолчанию — 1440 минут.DATA: не больше 20 пар; ключ — до 20 знаков, значение — до 100 знаков.OrderId: до 50 символов и уникален для каждой операции; при оплате цифровым рублем — до 35 знаков.TerminalKey: до 64 символов; PaymentId: до 20 символов.Если этого недостаточно — официальная документация: https://developer.tbank.ru/eacq/intro/ JSON: https://mcp-everything.ru/api/integrations/t-kassa-api. MCP: https://mcp-everything.ru/mcp