{"name":"Т‑Касса","vendor":"АО «ТБанк»","industry":"finance","summary":"API интернет-эквайринга Т‑Бизнеса для приема онлайн-платежей, двухстадийного списания, возвратов и платежей по сохраненным реквизитам. Основной поток строится вокруг платежа: `POST /v2/Init` создает его, покупатель оплачивает на форме Т‑Банка, а магазин получает результат через HTTP(S)-уведомление или `POST /v2/GetState`.","docsUrl":"https://developer.tbank.ru/eacq/intro/","coverage":{"included":["Прием одностадийной оплаты на платежной форме Т‑Банка","Двухстадийная оплата с подтверждением списания","Полная и частичная отмена или возврат","Платеж по сохраненным реквизитам","Получение статуса платежа и истории платежей заказа"],"excluded":["Своя платежная форма, карточные данные и 3‑D Secure","Отдельные сценарии СБП, T‑Pay, SberPay, Mir Pay, Alfa Pay и цифрового рубля","Привязка карт, покупателей и счетов","Полная схема фискализации, закрывающие чеки и маркировка","Маркетплейсы, рассрочка и «Долями»","Справки по операциям, реестры и готовые CMS-модули"]},"scenarios":[{"id":"prinyat-odnostadiynuyu-oplatu","title":"Принять одностадийную оплату","summary":"Подходит для заказа, деньги за который нужно списать сразу после оплаты покупателем. Результат — платеж в статусе `CONFIRMED`, сверенный с суммой заказа.","steps":["Подключи интернет-эквайринг, создай магазин и терминал в личном кабинете Т‑Бизнеса; возьми `TerminalKey` и `Password`.","Сформируй `Token` и вызови `POST /v2/Init` с `Amount` в копейках, уникальным `OrderId` и при необходимости `PayType`=`O`.","Перенаправь покупателя на `PaymentURL` из ответа `POST /v2/Init`.","Прими POST-уведомление на `NotificationURL`, проверь его `Token`, `PaymentId`, `Amount` и статус; при успешной обработке ответь HTTP 200 с телом `OK`.","Если уведомление не получено, вызови `POST /v2/GetState`; выдавай товар только после сверки `Amount` и статуса `CONFIRMED`."],"code":"curl --request POST 'https://securepay.tinkoff.ru/v2/Init' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n    \"TerminalKey\": \"<TerminalKey>\",\n    \"Amount\": 140000,\n    \"OrderId\": \"21090\",\n    \"Token\": \"<Token>\",\n    \"PayType\": \"O\",\n    \"DATA\": {\"OperationInitiatorType\": \"0\"}\n  }'","language":"bash","methods":["POST /v2/Init","POST /v2/GetState"]},{"id":"provesti-dvuhstadiynuyu-oplatu","title":"Провести двухстадийную оплату","summary":"Нужна, когда сначала следует заблокировать деньги, а списать их после проверки наличия или оказания услуги. Результат — перевод платежа из `AUTHORIZED` в `CONFIRMED` полностью или на меньшую сумму.","steps":["Вызови `POST /v2/Init` с `PayType`=`T` и перенаправь покупателя на `PaymentURL`.","Дождись уведомления или вызови `POST /v2/GetState`; продолжай только для платежа в статусе `AUTHORIZED`.","В течение 7 дней, включая день авторизации, вызови `POST /v2/Confirm`. Для частичного списания передай `Amount`; если подключена онлайн-касса, передай `Receipt`.","Дождись уведомления или проверь `POST /v2/GetState`: успешное списание имеет статус `CONFIRMED`."],"code":"curl --request POST 'https://securepay.tinkoff.ru/v2/Confirm' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n    \"TerminalKey\": \"<TerminalKey>\",\n    \"PaymentId\": \"2304882\",\n    \"Token\": \"<Token>\",\n    \"Amount\": 19200\n  }'","language":"bash","methods":["POST /v2/Init","POST /v2/Confirm","POST /v2/GetState"]},{"id":"otmenit-platezh-ili-vernut-dengi","title":"Отменить платеж или вернуть деньги","summary":"Один метод снимает холд у платежа в `AUTHORIZED` и возвращает уже списанные деньги у платежа в `CONFIRMED`. Результирующий статус зависит от исходного состояния и полноты операции.","steps":["Вызови `POST /v2/GetState` и определи текущий статус платежа.","Для полной операции вызови `POST /v2/Cancel` без `Amount`; для частичной передай сумму возврата в `Amount`.","Если при частичной операции подключена онлайн-касса, передай в `Receipt` возвращаемые позиции; при полной операции `Receipt` не передавай.","Проверь результат через уведомление или `POST /v2/GetState`: `PARTIAL_REVERSED`/`REVERSED` означают отмену холда, `PARTIAL_REFUNDED`/`REFUNDED` — возврат списанных денег."],"code":"curl --request POST 'https://securepay.tinkoff.ru/v2/Cancel' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n    \"TerminalKey\": \"<TerminalKey>\",\n    \"PaymentId\": \"2304882\",\n    \"Token\": \"<Token>\"\n  }'","language":"bash","methods":["POST /v2/Cancel","POST /v2/GetState"]},{"id":"spisat-po-sohranennym-rekvizitam","title":"Списать по сохраненным реквизитам","summary":"Подходит для подписки или повторной оплаты без повторного ввода реквизитов. Сначала покупатель подтверждает родительский платеж, затем магазин использует полученный `RebillId` для дочерних платежей.","steps":["Подключи платежи по сохраненным реквизитам: на DEMO-терминале через `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`."],"code":"curl --request POST 'https://securepay.tinkoff.ru/v2/Charge' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n    \"TerminalKey\": \"<TerminalKey>\",\n    \"PaymentId\": \"700001702044\",\n    \"RebillId\": \"145919\",\n    \"Token\": \"<Token>\"\n  }'","language":"bash","methods":["POST /v2/Init","POST /v2/Charge","POST /v2/GetState"]},{"id":"vosstanovit-status-platezha-ili-zakaza","title":"Восстановить статус платежа или заказа","summary":"Используй этот сценарий после таймаута, потери ответа или уведомления. Результат — состояние конкретного платежа либо список всех платежей, созданных для заказа.","steps":["Если известен `PaymentId`, вызови `POST /v2/GetState` и сверь `Amount`, `OrderId`, `Success`, `ErrorCode` и `Status`.","Если известен только `OrderId` или для заказа создавались повторные платежи, вызови `POST /v2/CheckOrder`.","Выбери нужную запись из `Payments` ответа `POST /v2/CheckOrder` по `PaymentId` и обрабатывай ее текущий `Status`, не полагаясь только на редирект `SuccessURL`."],"code":"curl --request POST 'https://securepay.tinkoff.ru/v2/CheckOrder' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n    \"TerminalKey\": \"<TerminalKey>\",\n    \"OrderId\": \"21057\",\n    \"Token\": \"<Token>\"\n  }'","language":"bash","methods":["POST /v2/GetState","POST /v2/CheckOrder"]}],"baseUrls":[{"label":"Боевой","url":"https://securepay.tinkoff.ru/v2"},{"label":"Тестовый","url":"https://rest-api-test.tinkoff.ru/v2"}],"auth":{"type":"other","description":"Для каждого подписываемого запроса передавай `TerminalKey` и `Token` в корневом JSON-объекте. `TerminalKey` и секретный `Password` находятся в личном кабинете интернет-эквайринга; `Password` в запрос не передается.\n\nЧтобы получить `Token`, собери корневые параметры запроса, добавь к ним `Password`, исключи `Token`, вложенные объекты и массивы, отсортируй пары по имени ключа, склей только значения и вычисли SHA-256 в UTF‑8. Полученную шестнадцатеричную строку передай в `Token`.","example":""},"methods":[{"id":"POST /v2/Init","title":"Инициировать платеж","httpMethod":"POST","path":"/v2/Init","description":"Создает платеж в статусе `NEW` и возвращает `PaymentId`; при использовании формы Т‑Банка также возвращает `PaymentURL`.","params":[{"name":"TerminalKey","in":"body","type":"string","required":true,"description":"Идентификатор терминала, до 64 символов"},{"name":"Amount","in":"body","type":"integer<int64>","required":true,"description":"Сумма в копейках"},{"name":"OrderId","in":"body","type":"string","required":true,"description":"Уникальный для каждой операции идентификатор заказа, до 50 символов"},{"name":"Token","in":"body","type":"string","required":true,"description":"Подпись запроса"},{"name":"Description","in":"body","type":"string","required":false,"description":"Описание заказа на платежной форме"},{"name":"CustomerKey","in":"body","type":"string","required":false,"description":"Идентификатор покупателя; обязателен для карточного платежа с Recurrent=Y"},{"name":"Recurrent","in":"body","type":"string","required":false,"description":"Y для родительского платежа с сохранением реквизитов"},{"name":"PayType","in":"body","type":"string","required":false,"description":"O — одностадийная, T — двухстадийная оплата"},{"name":"NotificationURL","in":"body","type":"string<uri>","required":false,"description":"URL для POST-уведомлений"},{"name":"SuccessURL","in":"body","type":"string<uri>","required":false,"description":"URL возврата покупателя после успешной оплаты"},{"name":"FailURL","in":"body","type":"string<uri>","required":false,"description":"URL возврата покупателя после неуспешной оплаты"},{"name":"RedirectDueDate","in":"body","type":"string<date-time>","required":false,"description":"Срок жизни платежной ссылки"},{"name":"DATA.OperationInitiatorType","in":"body","type":"string","required":false,"description":"Инициатор операции: 0, 1, 2, R, I, D или N"},{"name":"Receipt","in":"body","type":"object","required":false,"description":"Данные чека; обязателен при подключенной онлайн-кассе"}],"requestExample":"","responseExample":"{\n  \"Success\": true,\n  \"ErrorCode\": \"0\",\n  \"TerminalKey\": \"TBankTest\",\n  \"Status\": \"NEW\",\n  \"PaymentId\": \"3093639567\",\n  \"OrderId\": \"21090\",\n  \"Amount\": 140000,\n  \"PaymentURL\": \"https://pay.tbank.ru/new/fU1ppgqa\"\n}","docsUrl":"https://developer.tbank.ru/eacq/api/init"},{"id":"POST /v2/Confirm","title":"Подтвердить списание","httpMethod":"POST","path":"/v2/Confirm","description":"Списывает всю или часть заблокированной суммы двухстадийного платежа. Метод применим только к платежу в статусе `AUTHORIZED`.","params":[{"name":"TerminalKey","in":"body","type":"string","required":true,"description":"Идентификатор терминала, до 64 символов"},{"name":"PaymentId","in":"body","type":"string","required":true,"description":"Идентификатор платежа, до 20 символов"},{"name":"Token","in":"body","type":"string","required":true,"description":"Подпись запроса"},{"name":"IP","in":"body","type":"string","required":false,"description":"IP-адрес покупателя"},{"name":"Amount","in":"body","type":"integer<int64>","required":false,"description":"Сумма списания в копейках; без поля используется исходная сумма"},{"name":"Receipt","in":"body","type":"object","required":false,"description":"Данные чека; обязателен при подключенной онлайн-кассе"}],"requestExample":"","responseExample":"","docsUrl":"https://developer.tbank.ru/eacq/api/confirm"},{"id":"POST /v2/Cancel","title":"Отменить платеж","httpMethod":"POST","path":"/v2/Cancel","description":"Отменяет авторизованный платеж либо возвращает подтвержденный платеж. Без `Amount` выполняется полная операция; в статусе `NEW` значение `Amount` игнорируется.","params":[{"name":"TerminalKey","in":"body","type":"string","required":true,"description":"Идентификатор терминала, до 64 символов"},{"name":"PaymentId","in":"body","type":"string","required":true,"description":"Идентификатор платежа"},{"name":"Token","in":"body","type":"string","required":true,"description":"Подпись запроса"},{"name":"IP","in":"body","type":"string","required":false,"description":"IP-адрес покупателя"},{"name":"Amount","in":"body","type":"integer<int64>","required":false,"description":"Сумма частичной отмены или возврата в копейках"},{"name":"Receipt","in":"body","type":"object","required":false,"description":"Возвращаемые позиции; обязателен при частичной операции с онлайн-кассой"},{"name":"QrMemberId","in":"body","type":"string","required":false,"description":"Код банка СБП для возврата в другой банк"},{"name":"ExternalRequestId","in":"body","type":"string","required":false,"description":"Ключ идемпотентности; обязателен для «Долями» и рассрочки"}],"requestExample":"","responseExample":"","docsUrl":"https://developer.tbank.ru/eacq/api/cancel"},{"id":"POST /v2/Charge","title":"Провести платеж по сохраненным реквизитам","httpMethod":"POST","path":"/v2/Charge","description":"Проводит дочернюю COF-операцию по ранее полученному `RebillId`. Перед вызовом нужно создать новый платеж через `POST /v2/Init` и использовать его `PaymentId`.","params":[{"name":"TerminalKey","in":"body","type":"string","required":true,"description":"Идентификатор терминала, до 64 символов"},{"name":"PaymentId","in":"body","type":"string","required":true,"description":"Идентификатор нового платежа, до 20 символов"},{"name":"RebillId","in":"body","type":"string","required":true,"description":"Идентификатор сохраненных платежных реквизитов из уведомления"},{"name":"Token","in":"body","type":"string","required":true,"description":"Подпись запроса"},{"name":"IP","in":"body","type":"string","required":false,"description":"IP-адрес покупателя"},{"name":"SendEmail","in":"body","type":"boolean","required":false,"description":"Отправлять уведомление об оплате на почту"},{"name":"InfoEmail","in":"body","type":"string<email>","required":false,"description":"Почта покупателя; обязательна при SendEmail=true"}],"requestExample":"","responseExample":"","docsUrl":"https://developer.tbank.ru/eacq/api/charge"},{"id":"POST /v2/GetState","title":"Получить статус платежа","httpMethod":"POST","path":"/v2/GetState","description":"Возвращает сумму, заказ и текущий статус конкретного платежа.","params":[{"name":"TerminalKey","in":"body","type":"string","required":true,"description":"Идентификатор терминала, до 64 символов"},{"name":"PaymentId","in":"body","type":"string","required":true,"description":"Идентификатор платежа, до 20 символов"},{"name":"Token","in":"body","type":"string","required":true,"description":"Подпись запроса"},{"name":"IP","in":"body","type":"string","required":false,"description":"IP-адрес покупателя"},{"name":"GetPhone","in":"body","type":"boolean","required":false,"description":"Запросить номер телефона"}],"requestExample":"","responseExample":"","docsUrl":"https://developer.tbank.ru/eacq/api/get-state"},{"id":"POST /v2/CheckOrder","title":"Получить статус заказа","httpMethod":"POST","path":"/v2/CheckOrder","description":"Возвращает массив `Payments` с историей и текущими статусами платежей для одного заказа.","params":[{"name":"TerminalKey","in":"body","type":"string","required":true,"description":"Идентификатор терминала, до 64 символов"},{"name":"OrderId","in":"body","type":"string","required":true,"description":"Идентификатор заказа, до 50 символов"},{"name":"Token","in":"body","type":"string","required":true,"description":"Подпись запроса"}],"requestExample":"","responseExample":"","docsUrl":"https://developer.tbank.ru/eacq/api/check-order"}],"codeExamples":[],"errors":[{"code":"0","description":"None"},{"code":"2","description":"Отсутствуют обязательные параметры"},{"code":"20","description":"Ошибка повторного идентификатора заказа"},{"code":"50","description":"Ошибка отправки нотификации"},{"code":"202","description":"Терминал заблокирован"},{"code":"204","description":"Неверный токен. Проверьте пару TerminalKeySecretKey"},{"code":"251","description":"Неверная сумма. Сумма должна быть больше или равна {value} копеек"},{"code":"255","description":"Платеж не найден"},{"code":"3002","description":"Недостаточный баланс счета для отмены"},{"code":"9999","description":"Внутренняя ошибка системы"}],"limits":"- `RedirectDueDate`: от 1 минуты до 90 дней; если срок не задан настройками терминала, значение по умолчанию — 1440 минут.\n- `DATA`: не больше 20 пар; ключ — до 20 знаков, значение — до 100 знаков.\n- `OrderId`: до 50 символов и уникален для каждой операции; при оплате цифровым рублем — до 35 знаков.\n- `TerminalKey`: до 64 символов; `PaymentId`: до 20 символов.\n- Минимальная сумма оплаты картой — 1 рубль, через СБП — 10 рублей.","gotchas":["Все методы используют POST с JSON; имена методов и параметров чувствительны к регистру. Передавай `Content-Type: application/json` и используй TLS 1.2 или выше.","Суммы передаются в копейках, интернет-эквайринг принимает оплату только в рублях. В `POST /v2/Init` сумма `Amount` должна совпадать с суммой `Receipt.Items.Amount`.","HTTP 200 не гарантирует успех операции: проверяй `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` нужно брать только из проверенного уведомления родительского платежа.","Тестовая среда требует добавления IP в белый список. Для нее используется боевой терминал без приставки `DEMO`; тест-кейсы с DEMO-терминалом, наоборот, отправляются на боевой URL."],"slug":"t-kassa-api","version":1,"updatedAt":"2026-10-12T15:40:03.474Z","sources":[{"title":"OpenAPI-спецификация интернет-эквайринга","url":"https://developer.tbank.ru/schemas/eacq/openapi.yaml","kind":"research","addedAt":"2026-10-12T15:39:57.644Z"},{"title":"Начало работы","url":"https://developer.tbank.ru/eacq/intro/","kind":"research","addedAt":"2026-10-12T15:39:57.644Z"},{"title":"Платежная форма банка","url":"https://developer.tbank.ru/eacq/scenarios/payments/nonPCI","kind":"research","addedAt":"2026-10-12T15:39:57.644Z"},{"title":"Оплата картой","url":"https://developer.tbank.ru/eacq/scenarios/payments/nonPCI/card/","kind":"research","addedAt":"2026-10-12T15:39:57.644Z"},{"title":"Отмена и возврат платежа","url":"https://developer.tbank.ru/eacq/scenarios/cancel_confirm/","kind":"research","addedAt":"2026-10-12T15:39:57.644Z"},{"title":"Платежи по сохраненным реквизитам","url":"https://developer.tbank.ru/eacq/scenarios/payments/nonPCI/autopay/","kind":"research","addedAt":"2026-10-12T15:39:57.644Z"},{"title":"Получение данных о платеже","url":"https://developer.tbank.ru/eacq/scenarios/notification/","kind":"research","addedAt":"2026-10-12T15:39:57.644Z"},{"title":"Токен","url":"https://developer.tbank.ru/eacq/intro/developer/token","kind":"research","addedAt":"2026-10-12T15:39:57.644Z"},{"title":"Уведомления","url":"https://developer.tbank.ru/eacq/intro/developer/notification","kind":"research","addedAt":"2026-10-12T15:39:57.644Z"},{"title":"Тестовая среда","url":"https://developer.tbank.ru/eacq/intro/errors/test","kind":"research","addedAt":"2026-10-12T15:39:57.644Z"},{"title":"Коды ошибок платежей","url":"https://developer.tbank.ru/eacq/intro/errors/error-codes","kind":"research","addedAt":"2026-10-12T15:39:57.644Z"},{"title":"Вставленный текст","url":"","kind":"import","addedAt":"2026-10-12T15:39:57.644Z"}],"logoUrl":null}