Т‑Касса: Списать по сохраненным реквизитам

Сценарий из mcp-everything. Актуально на 2026-10-12.

Подходит для подписки или повторной оплаты без повторного ввода реквизитов. Сначала покупатель подтверждает родительский платеж, затем магазин использует полученный RebillId для дочерних платежей.

  1. Подключи платежи по сохраненным реквизитам: на DEMO-терминале через acq_help@tbank.ru, на боевом — через персонального менеджера.
  2. Создай родительский платеж через POST /v2/Init, передав Recurrent=Y, CustomerKey и DATA.OperationInitiatorType=1; перенаправь покупателя на PaymentURL.
  3. После успешной авторизации возьми RebillId из проверенного уведомления.
  4. Для дочернего платежа вызови POST /v2/Init с новой суммой и новым OrderId; для регулярного списания передай DATA.OperationInitiatorType=R.
  5. Не открывая полученный PaymentURL, вызови POST /v2/Charge с новым PaymentId и сохраненным RebillId.
  6. Проверь уведомление или вызови 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>"
  }'

Базовые URL

Авторизация

Тип: Другое

Для каждого подписываемого запроса передавай TerminalKey и Token в корневом JSON-объекте. TerminalKey и секретный Password находятся в личном кабинете интернет-эквайринга; Password в запрос не передается.

Чтобы получить Token, собери корневые параметры запроса, добавь к ним Password, исключи Token, вложенные объекты и массивы, отсортируй пары по имени ключа, склей только значения и вычисли SHA-256 в UTF‑8. Полученную шестнадцатеричную строку передай в Token.

Методы сценария

POST /v2/Init — Инициировать платеж

Создает платеж в статусе 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"
}

POST /v2/Charge — Провести платеж по сохраненным реквизитам

Проводит дочернюю 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

POST /v2/GetState — Получить статус платежа

Возвращает сумму, заказ и текущий статус конкретного платежа.

Документация: 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 нет Запросить номер телефона

Нюансы

Другие сценарии


Если этого недостаточно — официальная документация: https://developer.tbank.ru/eacq/intro/ Вся интеграция одним документом: https://mcp-everything.ru/integrations/t-kassa-api.md