Погашения (1.0)

Download OpenAPI specification:Download

История изменений

Описание изменений Дата
Создан документ 26.05.2023

Общая информация

Описание продукта

Погашения C2A - это решение, позволяющее принимать переводы от физических лиц. Данные переводы совершаются для погашения займов и кредитов, пополнения инвестиционного или брокерского счета. Продукт актуален для ломбардов, банков и МФО, управляющих и инвестиционных компаний, а также брокеров. В продукте отсутствует возможность возврата/отмены операции.

Merchant API

Merchant API - один из инструментов Тинькофф Кассы для приема переводов от физических лиц. С помощью Merchant API (далее MAPI) Мерчанты могут настроить прием переводов на своих сайтах.

Инструкция по использованию MAPI написана для разработчиков и тех, кто хочет самостоятельно настроить вызов платежной формы Тинькофф или реализовать прием погашений по API на своих ресурсах.

При подключении по схеме AFT/комиссия снизу вы можете настроить прием погашений в своём мобильном приложении с помощью SDK.

Какими терминами пользуемся в документации?

Термин Определение
Клиент Физлицо, производящее перевод с использованием банковской карты на сайте Мерчанта
Мерчант Бизнес, принимающий и осуществляющий переводы по банковским картам на своем сайте
Тинькофф Касса Сервис, помогающий проводить выплату клиенту-физлицу
Эмитент Банк, выпустивший карту клиента-физлица
PCI DSS Международный стандарт безопасности, созданный для защиты данных банковских карт
3-DSecure Протокол, который используется как дополнительный уровень безопасности для онлайн-кредитных и дебетовых карт. 3-D Secure добавляет ещё один шаг аутентификации для онлайн-переводов
Терминал Точка приема переводов Мерчанта (в общем случае привязывается к сайту, на котором осуществляется прием переводов) Далее в этой документации описан протокол для терминала мерчанта

Существующие схемы и их особенности

  • Down Fee (AFT/комиссия снизу) - тип подключения, при котором комиссия Тинькофф Кассы берется из возмещения Мерчанту
  • Side Fee (AFT/комиссия сбоку) - тип подключения, при котором комиссия Тинькофф Кассы берется из отдельного счета, а возмещения Мерчанту отправляются на специальный брокерский счет
  • Up Fee (ATOP/комиссия сверху) - тип подключения, при котором возмещение Мерчанту выплачивается в полном объеме, а комиссию эквайера оплачивает клиент Мерчанта

Обработка карточных данных

Платежные системы разработали требования к безопасности карточных данных клиентов - Payment Card Industry Data Security Standard (PCI DSS). Компания должна пройти сертификацию, чтобы подтвердить надежность управления карточной информацией.

Если у вас нет сертификации PCI DSS, вы можете использовать платежную форму Тинькофф Кассы. В этом случае, все операции, связанные с обработкой критичных данных производятся на стороне Тинькофф Кассы. Мерчанту достаточно настроить интеграцию с MerchantAPI и инициализировать перевод. Клиент будет перенаправлен на платежную форму, в которую он сможет ввести данные карты. Когда перевод завершится, клиент снова увидит сайт Мерчанта. Подключение по этому типу возможно с использованием методов, описанных в данной документации без пометки «Для Мерчантов с PCI DSS».

Если ваш ресурс соответствует требованиям PCI DSS, то вы можете собирать и хранить карточные данные клиентов. В таком случае, MerchantAPI получает зашифрованные карточные данные от Мерчанта. Подключение по этому типу возможно с использованием методов, описанных в данной документации с пометкой «Для Мерчантов с PCI DSS».

Передача признака инициатора операции

Платежные системы хотят понимать, кем была инициирована карточная операция. Особенно остро эта необходимость проявляется в случае проведения операций без 3ds и по сохраненным реквизитам.

Для выполнения требования регулятора мы добавили в метод /Init новый атрибут OperationInitiatorType. В значении этого атрибута ожидаем получать признак того, кем была инициирована операция и какой способ предоставления реквизитов был использован.

Подробное описание сценариев проведения операций, значений OperationInitiatorType, взаимосвязь с другими атрибутами и типами терминалов:

Тип операции и инициатор Описание Сценарий карточной операции OperationInitiatorType RebillId в /Charge Recurrent в /Init AFT терминал ECOM терминал
Сustomer Initiated Credential-Not-Captured (CIT CNC) Инициированная покупателем оплата без сохранения реквизитов карты для последующего использования Стандартный платеж 0 null N Разрешено Разрешено
Сustomer Initiated Credential-Captured (CIT CC) Инициированная покупателем оплата c сохранением реквизитов карты для последующего использования Стандартный платеж с созданием родительского рекуррентного платежа 1 null Y Разрешено Разрешено
Сustomer Initiated Credential-on-File (CIT COF) Инициированная покупателем оплата по сохраненным реквизитам карты (ранее была проведена операция с сохранением реквизитов CIT CC) Рекуррентный платеж, инициированный покупателем 2 not null N Запрещено Разрешено
Merchant Initiated Credential-on-File, Recurring (CIT COF R) Инициированные торговым предприятием повторяющиеся платежи без графика (ранее была проведена операция с сохранением реквизитов CIT CC). Применяются для оплаты коммунальных услуг, платежей за услуги связи, кабельное/спутниковое телевидение и т.п. Сумма может быть определена заранее или становится известна непосредственно перед оплатой Рекуррентный платеж, инициированный торговым предприятием R not null N Запрещено Разрешено
Merchant Credential-on-File, Installment (CIT COF I) Инициированные торговым предприятием повторяющиеся платежи по графику (ранее была проведена операция с сохранением реквизитов CIT CC). Применяется для платежей в рассрочку по товарному кредиту, для оплаты страховки в рассрочку, для погашения кредита в соответствии с графиком платежей. График платежей может быть изменен по соглашению сторон, т.е. суммы и даты платежей должны быть известны плательщику (держателю карты) до момента проведения операции. Рекуррентный платеж, инициированный торговым предприятием I not null N Разрешено Запрещено

Подпись запроса

Перед выполнением запроса MAPI проверяет, можно ли доверять его инициатору. Для этого сервер проверяет подпись запроса. В MAPI используется механизм подписи с помощью токена. Мерчант должен добавлять токен к каждому запросу, где это требуется.

В описании входных параметров для каждого метода мы указали, нужно подписывать запрос или нет.

Токен в MAPI - это строка, в которой Мерчант зашифровал данные своего запроса с помощью пароля из Личного кабинета мерчанта.

Подпись запроса формируется индивидуально для каждого запроса на основе передаваемых в нем параметров в виде пар Ключ-Значение. В формировании запроса не участвуют объекты и массивы, а также передаваемые в них параметры.

Рассмотрим на примере процесс шифрования тела запроса:

{
    "TerminalKey": "TinkoffBankTest",
    "PaymentId": "2304882",
    "Amount": 19200
}

Чтобы зашифровать данные запроса Мерчант должен выполнить следующие шаги:

  1. Собрать массив передаваемых данных в виде пар Ключ-Значения. В массив нужно добавить только параметры корневого объекта. Вложенные объекты и массивы не участвуют в расчете токена. В примере ниже в массив включены параметры TerminalKey, PaymentId, Amount.

    [{"TerminalKey": "TinkoffBankTest"},{"PaymentId": "2304882"},{"Amount": "19200"}]
    
  2. Добавить в массив пару {Password, Значение пароля}. Пароль можно найти в личном кабинете Мерчанта

    [{"TerminalKey": "TinkoffBankTest"},{"PaymentId": "2304882"},{"Amount": "19200"},{"Password": "usaf8fw8fsw21g"}]
    
  3. Отсортировать массив по алфавиту по ключу.

    [{"Amount": "19200"},{"Password": "usaf8fw8fsw21g"},{"PaymentId": "2304882"},{"TerminalKey": "TinkoffBankTest"}]
    
  4. Конкатенировать только значения пар в одну строку

    "19200usaf8fw8fsw21g2304882TinkoffBankTest"
    
  5. Применить к строке хеш-функцию SHA-256

    "d20308febb1c333c26d6b1e138d71d0be922475a97e69f41ee3eb0c525fa0f1c"
    
  6. Добавить получившийся результат в значение параметра Token в тело запроса и отправить запрос

    {
     "TerminalKey": "TinkoffBankTest",
     "PaymentId": "2304882",
     "Amount": 19200,
     "Token":"d20308febb1c333c26d6b1e138d71d0be922475a97e69f41ee3eb0c525fa0f1c"
    }
    

Сценарии переводов

Правила работы

Прием переводов осуществляется вызовом методов с передачей параметров методом POST в формате JSON. Все методы и передаваемые параметры являются чувствительными к регистру.

Для POST-запроса в заголовке должен присутствовать Content Type: application/json. URL: https://securepay.tinkoff.ru/v2/

Сценарии перевода

Основная сущность в Погашениях от Тинькофф Кассы - это перевод. В зависимости от настроек терминала перевод может идти по разным сценариям.

Стандартный перевод

Инициализация перевода

Для того, чтобы создать перевод, Мерчант должен инициировать перевод методом Init, в котором передается сумма перевода и номер заказа.

При создании перевода (вызов метода /Init), в объекте DATA в атрибуте OperationInitiatorType необходимо передавать признак инициатора операции. См. метод /Init Инициализация перевода без PCI DSS и Инициализация перевода с PCI DSS

В ответ MAPI создаст новый перевод в статусе NEW и вернёт обратно его идентификатор в параметре PaymentId.

На следующем этапе Мерчант вызвает метод Check3DSVersion, в котором передает зашифрованные карточные данные клиента и PaymentId. Это нужно для проверки версии протокола 3D-Secure по карте. Она может быть либо версии 1.0, либо 2.0.

Если в ответе метода Check3DSVersion есть параметр ThreeDSMethodURL, то браузер клиента должен вызывать ресурс, адрес которого пришел в параметре >ThreeDSMethodURL. В запросе нужно передать строковый параметр threeDSMethodData. Эта строка - закодированный в формате base64 JSON-объект с параметрами:

Название параметра Тип данных Описание
threeDSMethodNotificationURL string Обратный адрес, на который будет >отправлен запрос после прохождения 3DS Method
threeDSServerTransID string Идентификатор транзакции из ответа метода Check3DSVersion

Браузер должен вызвать 3DS Method в скрытом iframe и передать данные в формате x-www-form-urlencoded.

Пример запроса на ThreeDSMethodURL:

<body onload="document.form.submit()">
<form name="form" action="{ThreeDSMethodURL}" method="post" >
<input type="hidden" name="threeDSMethodData" value="eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjU2ZTcxMmE1LTE5MGEtNDU4OC05MWJjLWUwODYyNmU3N2M0NCIsInRocmVlRFNNZXRob2ROb3RpZmljYXRpb25VUkwiOiJodHRwczovL3Jlc3QtYXBpLXRlc3QudGlua29mZi5ydS92Mi9Db21wbGV0ZTNEU01ldGhvZHYyIn0">
</form>
</body>

Пример декодированного значения threeDSMethodData:

{

"threeDSServerTransID":"56e712a5-190a-4588-91bc-e08626e77c44",
"threeDSMethodNotificationURL":"https://rest-api-test.tinkoff.ru/v2/>Complete3DSMethodv2"

}

Стандартный перевод

За проведение перевода отвечает метод - FinishAuthorize. Через него Мерчант передает в MAPI карточные данные клиента, таким образом продолжая обработку перевода.

В ответ MAPI вернет один из возможных статусов:

Статус Описание Доступные действия
AUTH_FAIL Неуспешная авторизация Провести перевод заново
REJECTED Перевод отклонен Провести перевод заново
CONFIRMED Успешное подтверждение перевода -
AUTHORIZED Авторизация прошла успешно Подтвердить перевод
3DS_CHECKING Требуется подтверждение перевода по 3D-Secure Пройти подтверждение (действие доступно для клиента)

Оплата всегда проводится только по одностадийной схеме (списание автоматически подтверждается).

Без 3DS-подтверждения

Если по переводу не требуется проходить подтверждение 3DS, то MAPI в ответе FinishAuthorize вернет один из двух конечных статусов перевода:

  • CONFIRMED (при успешном сценарии);

  • REJECTED (при неуспешном сценарии).

C 3DS-подтверждением

Если в ответе метода FinishAuthorize вернулся статус перевода 3DS_CHECKING, то это означает, что требуется пройти проверку 3D-Secure. Для этого Мерчант должен сформировать запрос в сервис аутентификации банка, выпустившего карту. Адрес сервиса возвращается в ответе FinishAuthorize в параметре ACSUrl. Вместе с этим требуется перенаправить клиента на эту же страницу ACSUrl для прохождения 3DS.

В заголовке запроса требуется передать параметр Content-Type со значением application/x-www-form-urlencoded. Набор параметров в теле запроса зависит от версии протокола 3DS по карте.

Завершение перевода

Если перевод завершился успешно, то клиент будет перенаправлен на страницу Success URL из настроек терминала.

Рекуррентные переводы

Мерчант может сохранять платежные данные клиента и использовать их для повторных списаний. Такие переводы называются рекуррентными. В этом случае клиент должен совершить хотя бы один перевод, который был настроен как рекуррентный. Для этого Мерчант должен передать параметр Recurrent в методе Init.

После успешного перевода MAPI отправит Мерчанту уведомление об изменении статуса перевода на AUTHORIZED или CONFIRMED и передаст параметр RebillId. Следующие переводы этого клиента будут рекуррентными, если Мерчант вызовет метод Init, а затем без переадресации на PaymentURL вызовет метод Charge и передаст параметр RebillId.

Платежи в 1 клик

Опция не предусмотрена для терминалов с комиссией сверху (ATOP).

Получение данных о переводе

Мерчант может получить информацию об основных параметрах перевода в любой момент.

Если требуется получить данные по конкретному переводу, то Мерчант должен вызвать метод GetState и передать в запросе PaymentId.

Если по одному заказу было несколько, то получить историю переводов и их текущий статус можно с помощью метода CheckOrder. Мерчант должен передать в запросе OrderId.

Статусная модель переводов

В процессе обработки перевод меняет свое состояние. В таблице ниже описаны основные статусы, а также условия перехода в них.

Статус Правило перехода
NEW MAPI получил запрос Init. После этого, он создает новый перевод в статусе NEW и возвращает обратно его идентификатор в параметре PaymentId и ссылку на платежную форму в параметре PaymentURL.
FORM_SHOWED Мерчант перенаправил клиента на страницу платежной формы PaymentURL, и страница загрузилась у клиента в браузере
AUTHORIZING Перевод обрабатывается MAPI и платежной системой
3DS_CHECKING Перевод проходит проверку 3D-Secure
3DS_CHECKED Перевод успешно прошел проверку 3D-Secure
AUTHORIZED Перевод авторизован, деньги заблокированы на карте клиента
CONFIRMING Подтверждение перевода обрабатывается MAPI и платежной системой
CONFIRMED Перевод подтвержден, деньги списаны с карты клиента
DEADLINE_EXPIRED 1. Клиент не завершил перевод в срок жизни ссылки на платежную форму PaymentURL. Этот срок Мерчант передает в параметре RedirectDueDate при вызове метода Init
2. Перевод не прошел проверку 3D-Secure в срок
REJECTED Банк отклонил перевод
AUTH_FAIL Перевод завершился ошибкой или не прошел проверку 3D-Secure
PAY_CHECKING Перевод обрабатывается

Прием переводов для Мерчантов с PCI DSS

Схема проведения переводов

На схеме ниже - полный жизненный цикл перевода scheme

3DS 1.0

Если версия 3DS 1.0, то в запросе передаются параметры:

Название параметра Описание
MD Информация для идентификации перевода на стороне торговой точки. Придет в ответе метода FinishAuthorize
PaReq Запрос на аутентификацию плательщика, который содержит разные детали транзакции. Придет в ответе метода FinishAuthorize
TermURL Адрес перенаправления после аутентификации 3DS. Должен содержать ссылку на обработчик на стороне Мерчанта, принимающий результаты прохождения 3-D Secure
3DS 2.0

Если версия 3DS 2.0, то в запросе передаются параметры, в зависимости от типа устройства клиента. Тип устройства передается в запросе FinishAuthorize в параметре deviceChannel. Возможны два варианта - браузер (BRW, код 02) и приложение (APP, код 01).

Параметры для браузера:

Название параметра Тип данных Описание
creq string JSON с параметрами threeDSServerTransID, acsTransID,challengeWindowSize, messageType, messageVersion закодированный в формат base64

Строка creq для браузера формируется из следующих параметров:

Название параметра Тип данных Описание
threeDSServerTransID string Идентификатор транзакции из ответа метода FinishAuthorize
acsTransID string Идентификатор транзакции, присвоенный ACS, полученный в ответе на FinishAuthorize
challengeWindowSize string Размер экрана, на котором открыта страница ACS.Допустимые значения:
  • 01 = 250 x 400
  • 02 = 390 x 400
  • 03 = 500 x 600
  • 04 = 600 x 400
  • 05 = Full screen
  • messageType string Передается фиксированное значение «CReq»
    messageVersion string Версия 3DS, полученная из ответа метода Check3dsVersion

    Параметры для приложения:

    Название параметра Тип данных Описание
    creq string JWE object с параметрами threeDSServerTransID, acsTransID, messageType, messageVersion, sdkTransID, sdkCounterStoA закодированный в формат PS256

    Строка creq для приложения формируется из следующих параметров:

    Название параметра Тип данных Описание
    threeDSServerTransID string Идентификатор транзакции из ответа метода FinishAuthorize
    acsTransID string Идентификатор транзакции, присвоенный ACS, полученный в ответе на FinishAuthorize
    messageType string Передается фиксированное значение «CReq»
    messageVersion string Версия 3DS, полученная из ответа метода Check3dsVersion
    sdkTransID string Уникальный идентификатор транзакции, назначенный 3DS SDK для идентификации одной транзакции, полученный в ответе на FinishAuthorize
    sdkCounterStoA string Внутренний счетчик 3DS SDK внутри ACS. Поддерживаемые значения:
    000-255

    Подтверждение прохождения 3DS

    После того, как сервис аутентификации банка, выпустившего карту, прислал результат прохождения 3D-Secure, Мерчант должен передать эту информацию в MAPI. В зависимости от версии протокола 3DS для этого нужно вызвать один из методов:

    • Для 3DS 1.0 - Submit3DSAuthorization
    • Для 3DS 2.0 - Submit3DSAuthorizationV2

    Инициализация перевода

    Метод инициирует перевод

    Request Body schema: application/json
    One of
    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала. Выдается Мерчанту Тинькофф Кассой при заведении терминала

    Amount
    required
    number <= 10 characters
    • Сумма в копейках. Например, сумма 3руб. 12коп. - это число 312
    • Параметр должен быть равен сумме всех параметров Amount, переданных в объекте Items
    OrderId
    required
    string <= 36 characters

    Идентификатор заказа в системе Мерчанта

    Token
    string

    Подпись запроса.

    • Обязательность подписи запроса (token) задается отдельно через настройки терминала. Описание алгоритма формирования подписи доступно в Подпись запроса
    Description
    string <= 250 characters

    Описание заказа

    CustomerKey
    string <= 36 characters

    Идентификатор клиента в системе Мерчанта.

    • Обязателен, если передан атрибут Recurrent.
    • Если был передан в запросе, в нотификации будет указан CustomerKey и его CardId. См. метод GetCardList.
    • Необходим для сохранения карт на платежной форме (платежи в один клик).
    Recurrent
    string <= 1 characters

    Признак родительского рекуррентного платежа.

    • Для регистрации автоплатежа - обязателен. Если передается и установлен в Y, то регистрирует платеж как рекуррентный. В этом случае после оплаты в нотификации на AUTHORIZED будет передан параметр RebillId для использования в методе Charge. Для осуществления привязки и одновременной оплаты по CБП необходимо передавать 'Y'.

    Значение зависимо от атрибутов:

    Language
    string <= 2 characters

    Язык платежной формы.

    • ru — русский
    • en — английский. Если не передан, форма откроется на русском языке
    NotificationURL
    string <uri>

    URL на веб-сайте Мерчанта, куда будет отправлен POST запрос о статусе выполнения вызываемых методов (для настройки нужно обратиться на acq_help@tinkoff.ru):

    • Если параметр передан – используется его значение.
    • Если нет – значение в настройках терминала.
    SuccessURL
    string <uri>

    URL на веб-сайте Мерчанта, куда будет переведен клиент в случае успешного перевода (для настройки нужно обратиться на acq_help@tinkoff.ru):

    • Если параметр передан – используется его значение.
    • Если нет – значение в настройках терминала.
    FailURL
    string <uri>

    URL на веб-сайте Мерчанта, куда будет переведен клиент в случае неуспешного перевода (для настройки нужно обратиться на acq_help@tinkoff.ru):

    • Если параметр передан – используется его значение.
    • Если нет – значение в настройках терминала.
    RedirectDueDate
    any <date-time>

    Cрок жизни ссылки. Если текущая дата превышает дату, переданную в данном параметре, ссылка для перевода становится недоступной и перевод выполнить нельзя.

    • Максимальное значение: 90 дней от текущей даты.
    • Минимальное значение: 1 минута от текущей даты.
    • Формат даты: YYYY-MM-DDTHH24:MI:SS+GMT
    • Пример даты: 2016-08-31T12:28:00+03:00
      Если не передан, принимает значение 24 часа для перевода и 30 дней для счета

    В случае, если параметр RedirectDueDate не был передан, проверяется настроечный параметр платежного терминала REDIRECT_TIMEOUT, который может содержать значение срока жизни ссылки в часах. Если его значение больше нуля, то оно будет установлено в качестве срока жизни ссылки. Иначе, устанавливается значение «по умолчанию» - 1440 мин.(1 сутки)

    object

    JSON-объект, который позволяет передавать дополнительные параметры по операции и задавать определенные настройки в формате "ключ":"значение".

    Максимальная длина для каждого передаваемого параметра:

    • Ключ - 20 знаков
    • Значение - 100 знаков.

    Максимальное количество пар "ключ":"значение" - 20.

    1. Для использования комиссии сверху обязательна передача в "DATA" {"mfoAgreement":"номер договора займа на стороне клиента"}. Например, DATA:{"mfoAgreement":"1234"}.

    2. Если у терминала включена опция привязки клиента после успешного перевода и передается параметр CustomerKey, то в передаваемых параметрах DATA могут присутствовать параметры метода AddCustomer. Если они присутствуют, то автоматически привязываются к клиенту. Например, если указать:

      "DATA":{"Phone":"+71234567890", "Email":"a@test.com"}
      

      к клиенту автоматически будут привязаны данные Email и телефон, и они будут возвращаться при вызове метода GetCustomer.

      Для МСС 4814 обязательно передать значение в параметре Phone. Требования по заполнению:

      • минимум 7 символов
      • максимум 20 символов
      • разрешены только цифры, исключение - первый символ может быть «+»

      Для МСС 6051 и 6050 обязательно передать параметр account (номер электронного кошелька, не должен превышать 30 символов). Пример:

      "DATA": {"account":"123456789"}
      
    3. Если используется функционал сохранения карт на платежной форме, то при помощи опционального параметра DefaultCard можно задать какая карта будет выбираться по умолчанию. Возможные варианты:

    • Оставить платежную форму пустой. Пример:
      "DATA":{"DefaultCard":"none"}
      
    • Заполнить данными передаваемой карты. В этом случае передается CardId. Пример:
       "DATA":{"DefaultCard":"894952"}
      
    • Заполнить данными последней сохраненной карты. Применяется, если параметр DefaultCard не передан, передан с некорректным значением или в значении null. По умолчанию возможность сохранение карт на платежной форме может быть отключена. Для активации обратитесь в службу технической поддержки.
    1. При передаче в объекте DATA атрибута OperationInitiatorType учитывать взаимосвязь его значений с:
      • Значением атрибута Reccurent в методе /Init
      • Значением атрибута RebillId в методе /Charge
      • Типом терминала, используемом для проведения операций (ECOM/AFT)

    Подробную таблицу см. в разделе Передача признака инициатора операции

    В случае передачи значений атрибутов не соответствующих таблице - MAPI вернет ошибку 1126 (Несопоставимые значения rebillId или Recurrent с переданным значением OperationInitiatorType)

    PayForm
    string
    Value: "mfo"

    Для использования комиссии сверху необходимо передать значение «mfo»

    Descriptor
    string

    Динамический дескриптор точки

    Responses

    Request samples

    Content type
    application/json
    Example
    {
    • "TerminalKey": "TinkoffBankTest",
    • "Amount": 140000,
    • "OrderId": "21050",
    • "Token": "7241ac8307f349afb7bb9dda760717721bbb45950b97c67289f23d8c69cc7b96",
    • "Description": "Подарочная карта на 1400.00 рублей",
    • "CustomerKey": "string",
    • "Recurrent": "Y",
    • "Language": "ru",
    • "NotificationURL": "http://example.com",
    • "SuccessURL": "http://example.com",
    • "FailURL": "http://example.com",
    • "RedirectDueDate": null,
    • "DATA": {
      },
    • "PayForm": "mfo",
    • "Descriptor": "678451"
    }

    Response samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "Amount": 100000,
    • "OrderId": "21050",
    • "Success": true,
    • "Status": "NEW",
    • "PaymentId": "13660",
    • "ErrorCode": "0",
    • "Message": "Неверные параметры",
    • "Details": "0"
    }

    Расчет суммы комиссии

    Метод используется для комиссии сверху (ATOP) с PCI DSS
    Метод используется для подсчета суммы комиссии. Его необходимо вызывать после метода Init и до FinishAuthorize

    Request Body schema: application/json
    PaymentId
    required
    string

    Уникальный идентификатор транзакции в системе Тинькофф Кассы

    SourceCard
    required
    string
    Enum: "CardNumber" "CardId"

    Источник карты:

    • Для несохраненных карт необходимо передавать значение CardNumber
    • Для сохраненных карт необходимо передавать значение CardId
    required
    object (FeeCardDataForGetFee)

    Объект с данными для проведения платежа в зависимости от способа оплаты.
    В объекте FeeCardData должен быть обязателен для передачи один из параметров: PAN/CardId в зависимости от значения, переданного в параметре SourceCard.
    Пример: если SourceCard="CardId", то на вход в объект FeeCardData обязательно должен быть передан параметр CardId с идентификатором карты.

    Responses

    Request samples

    Content type
    application/json
    {
    • "PaymentId": "89453681",
    • "SourceCard": "CardNumber",
    • "FeeCardData": {
      }
    }

    Response samples

    Content type
    application/json
    {
    • "AmountIncludingFee": 16450934,
    • "ErrorCode": "0",
    • "FeeAmount": 327469,
    • "Success": true
    }

    Проверка версии 3DS

    Для Мерчантов с PCI DSS
    Проверяет поддерживаемую версию 3DS протокола по карточным данным из входящих параметров.

    При определении второй версии, возможно в ответе получение данных для прохождения дополнительного метода 3DS Method, который позволяет эмитенту собрать данные браузера клиента – это может быть полезно при принятии решения в пользу Frictionless Flow (аутентификация клиента без редиректа на страницу ACS)

    Request Body schema: application/json
    PaymentId
    required
    number <= 20 characters

    Идентификатор перевода в системе Тинькофф Кассы

    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала, выдается Мерчанту Тинькофф Кассой

    CardData
    required
    any

    Зашифрованные данные карты в формате:

    PAN=4300000000000777;ExpDate=0519;CardHolder=IVAN PETROV;CVV=111
    

    type: string

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    Content type
    application/json
    {
    • "PaymentId": 13660,
    • "TerminalKey": "TinkoffBankTest",
    • "CardData": "U5jDbwqOVx+2vDApxe/rfACMt+rfWXzPdJ8ZXxNFVIiZaLZrOW72bGe9cKZdIDnekW0nqm88YxRD↵jyfa5Ru0kY5cQV alU+juS1u1zpamSDtaGFeb8sRZfhj72yGw+io+qHGSBeorcfgoKStyKGuBPWfG↵d0PLHuyBE6QgZyIAM1XfdmNlV0UAxOnkTGDsskL pIt3AWhw2e8KOar0vwbgCTDjznDB1/DLgOW01↵Aj/bXyLJoG1BkOrPBm9JURs+f+uyFae0hkRicNKNgXoN5pJTSQxOEauOi6ylsVJ B3WK5MNYXtj6x↵GlxcmTk/LD9kvHcjTeojcAlDzRZ87GdWeY8wgg==",
    • "Token": "30797e66108934dfa3d841b856fdad227c6b9c46d6a39296e02dc800d86d181e"
    }

    Response samples

    Content type
    application/json
    {
    • "Version": "2.1.0",
    • "TdsServerTransID": "17d3791b-5cfa-4318-bc23-3d949e8c4b7e",
    • "PaymentSystem": "mir",
    • "Success": true,
    • "ErrorCode": "0",
    • "Message": "None",
    • "Details": "None"
    }

    Подтверждение перевода

    Для Мерчантов с PCI DSS
    Подтверждает перевод передачей реквизитов, а также списывает денежные средства с карты клиента. Используется, если у площадки есть сертификация PCI DSS и собственная платежная форма

    Request Body schema: application/json
    One of
    TerminalKey
    required
    string

    Идентификатор терминала. Выдается Мерчанту Тинькофф Кассой при заведении терминала

    PaymentId
    required
    number

    Уникальный идентификатор транзакции в системе Тинькофф Кассы

    Token
    required
    string

    Подпись запроса

    IP
    string

    IP-адрес клиента.

    Обязательный параметр для 3DS второй версии. DS платежной системы требует передавать данный адрес в полном формате, без какихлибо сокращений (8 групп по 4 символа).

    Данный формат регламентируется на уровне спецификации EMVCo.

    Пример правильного адреса: 2011:0db8:85a3:0101:0101:8a2e:0370:7334
    Пример неправильного адреса: 2a00:1fa1:c7da:9285:0:51:838b:1001

    3DSv2 (object) or object

    JSON объект, содержащий дополнительные параметры в виде ключ:значение. Данные параметры будут переданы на страницу оплаты (в случае ее кастомизации). Максимальная длина для каждого передаваемого параметра:

    • Ключ - 20 знаков;
    • Значение - 100 знаков. Максимальное количество пар ключ:значение не может превышать 20.
    CardData
    required
    string

    Объект CardData собирается в виде списка ключ=значение c разделителем ;. Объект зашифровывается открытым ключом (X509 RSA 2048), получившееся бинарное значение кодируется в Base64. Открытый ключ генерируется Тинькофф Кассой и выдается при регистрации терминала. Все поля обязательны.

    Наименование Тип данных Обязательность Описание
    PAN Number ДА Номер карты
    ExpDate Number Да Месяц и год срока действия карты в формате MMYY
    CardHolder String Нет Имя и фамилия держателя карты (как на карте)
    CVV String Нет Код защиты (с обратной стороны карты).
    ECI String Нет Electronic Commerce Indicator. Индикатор, показывающий степень защиты, применяемую при предоставлении клиентом своих данных ТСП.
    CAVV String Нет Cardholder Authentication Verification Value или Accountholder Authentication Value

    Пример значения элемента формы CardData:

    PAN=4300000000000777;ExpDate=0519;CardHolder=IVAN PETROV;CVV=111
    

    В случае получения CAVV в CardData перевод будет проводиться как оплата токеном, иначе прохождение 3DS будет регулироваться стандартными настройками терминала/перевода.

    Amount
    number <= 10 characters

    Сумма в копейках

    deviceChannel
    string

    Канал устройства. Поддерживается следующий канал устройства:

    • 01 = Application (APP)
    • 02 = Browser (BRW)

    Responses

    Request samples

    Content type
    application/json
    Example
    {
    • "TerminalKey": "TinkoffBankTest",
    • "PaymentId": 700001702044,
    • "Token": "f5a3be479324a6d3a4d9efa0d02880b77d04a91758deddcbd9e752a6df97cab5",
    • "IP": "2011:0db8:85a3:0101:0101:8a2e:0370:7334",
    • "DATA": {
      },
    • "CardData": "eyJzaWduYXR1cmUiOiJNRVVDSVFEdjNJS1A5WG9nWml4RytUUm9zZWFDK0RGd3RKd2FtMHVEcm91RUVGZVB6Z0lnYXBFbHhxQ3AwQWtZcVVmTFVMaVNhUjBKWkVQNmg 4THFqYks5YkJKQnM5d1x1MDAzZCIsInByb3RvY29sVmVyc2lvbiI6IkVDdjEiLCJzaWduZWRNZXNzYWdlIjoie1wiZW5jcnlwdGVkTWVzc2FnZVwiOlwiQW11dm5OYUIralBsa3VKTitrMUZLSDZFcm1VK2lTY052 L05rR3FFaXIxOHZmSWxkVFJ5L2U4cW5zMXkyanFtcm1acU1JSWNYMUhyTHBxRURpaXkvS3B6SUhNZFllcXRkSVVNOU1tRjNpejU2d2NTZUVVaXU2ODI3QThGcitaYm8xRWtWRjY1TUxRYVY3NlBOUFRndH UvQ1BodW5HUk0rN25KdVhDczVtbkVvOHFma0RNVk8xWktGWDQ4TnVEL2FKcDJQdVVIY2puSnBTZ0pTSDB4U21YSnAzU1MreXFDNm54N254WUEwN2h4YjYvSnp2R2s3ZExDU2hWWGU1Z2haUjNDaFQyV W8rRnpXTWJRRGZtSjBLQW9kc2VlR0xaaitqMzVqOUlKMkhJRFhIUUZZMWNuTW9YVUVoTjgvdEkvRkpqRnJiYVdFRkIzRDZwOFUzT2tkUmVaNHAyYi8yYURNZXVxR1ozSUtjc3R0R2lKMFhQQVhhZXYyQU8 o1M3RRQXVqQXRYdFlaekNTVjVBVXdXZS85T1VcXHUwMDNkXCJ9In0=",
    • "Amount": 10000,
    • "deviceChannel": "BRW"
    }

    Response samples

    Content type
    application/json
    Example
    {
    • "TerminalKey": "TinkoffBankTest",
    • "Amount": 100000,
    • "OrderId": "21050",
    • "Success": true,
    • "Status": "NEW",
    • "PaymentId": "13660",
    • "ErrorCode": "0",
    • "Message": "Неверные параметры",
    • "Details": "0",
    • "RebillId": "21813157",
    • "CardId": "string"
    }

    Подтверждение прохождения 3DS v1.0

    Для Мерчантов с PCI DSS
    Осуществляет проверку результатов прохождения 3-D Secure и при успешном результате прохождения 3-D Secure подтверждает инициированный перевод и осуществляет списание денежных средств с карты клиента
    Статус при успешном сценарии: CONFIRMED
    Статус при неуспешном сценарии: REJECTED"
    Формат запроса: x-www-form-urlencoded

    После получения на TermUrl мерчанта ответа ACS с результатами прохождения 3-D Secure необходимо сформировать запрос к методу Submit3DSAuthorization

    Request Body schema: application/x-www-form-urlencoded
    MD
    required
    string

    Уникальный идентификатор транзакции в системе Тинькофф Кассы (возвращается в ответе от ACS)

    PaRes
    required
    string

    Шифрованная строка, содержащая результаты 3-D Secure аутентификации (возвращается в ответе от ACS)

    PaymentId
    required
    string

    Уникальный идентификатор транзакции в системе Тинькофф Кассы

    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала, выдается Мерчанту Тинькофф Кассой

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    <body onload="document.form.submit()">
    <form name="form" action="https://securepay.tinkoff.ru/v2/Submit3DSAuthorization" method="post">
      <input type="hidden" name="MD" value="2561504">
      <input type="hidden" name="PaRes" value="eJxVUttygjAU/BWG1w4mXKXOMY5WOrVTrOOtl7cAqeJI1AAO+vVNFKrlaffkZM9mD9Crsq12ZCJPd7yrmy2sa4zHuyTlq66+mD8bvt4jMF8LxoYzFpeCEQhZntMV09JE3vC8Hx9j27A8LzEcN7aNCPu24VIrihKXetiPdAKT/pQdCNSDiJzTsgA1VCqKeE15QYDGh8FoTBy73fZtQDWFjInRkFi4+Uz82JbH1zJwmjEyHcwAXRDEu5IX4kQ8R/Y0BEqxJeui2HcQOlGesKolSkCqCuhmYFIqlEuVKk3IDL8uPwI3jDaBGZ4XeLxZVeFw5I7nX11AqgMSWjDpzPSxb/ma6XRct4Pl4y51oJkar5zLx1wx7NWI/t3BfQFkxkKuoHHfMGDVfseZugLoDwO6+X16UfHFhUyk/32OMH3vZ5+nYBu/2d4xcMTDsn04j19VqJcmpZjKYKT3q6QigJQMqveF6lVL9O8X+AWMIbbt">
      <input type="hidden" name="PaymentId" value="10063">
      <input type="hidden" name="TerminalKey" value="TinkoffBankTest">
      <input type="hidden" name="Token" value="871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6" >
    </form>
    

    Response samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "OrderId": "21050",
    • "Success": true,
    • "Status": "CONFIRMED",
    • "PaymentId": "10063",
    • "ErrorCode": "0",
    • "Message": "string",
    • "Details": "string"
    }

    Подтверждение прохождения 3DS v2.1

    Для Мерчантов с PCI DSS
    Осуществляет проверку результатов прохождения 3-D Secure v2 и при успешном результате прохождения 3-D Secure v2 подтверждает инициированный перевод и осуществляет списание денежных средств с карты клиента
    Статус при успешном сценарии: CONFIRMED
    Статус при неуспешном сценарии: REJECTED"
    Формат запроса: x-www-form-urlencoded

    После получения на TermUrl Мерчанта ответа ACS с результатами прохождения 3-D Secure необходимо сформировать запрос к методу Submit3DSAuthorization

    Request Body schema: application/x-www-form-urlencoded
    PaymentId
    required
    string

    Уникальный идентификатор транзакции в системе Тинькофф Кассы

    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала, выдается Мерчанту Тинькофф Кассой

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    <body onload="document.form.submit()">
    <form name="form" action="https://securepay.tinkoff.ru/v2/Submit3DSAuthorizationV2" method="post">
      <input type="hidden" name="PaymentId" value="10063">
      <input type="hidden" name="TerminalKey" value="TinkoffBankTest">
      <input type="hidden" name="Token" value="871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6" >
    </form>
    

    Response samples

    Content type
    application/json
    {
    • "OrderId": "21050",
    • "TerminalKey": "TinkoffBankTest",
    • "Status": "CONFIRMED",
    • "PaymentId": "10063",
    • "Success": true,
    • "ErrorCode": "0",
    • "Message": "string",
    • "Details": "string"
    }

    Получение статуса перевода

    Мерчант может получить информацию об основных параметрах перевода в любой момент.
    Если требуется получить данные по конкретному переводу, то Мерчант должен вызвать метод GetState и передать в запросе PaymentId.
    Если по одному заказу было несколько, то получить историю переводов и их текущий статус можно с помощью метода CheckOrder. Мерчант должен передать в запросе OrderId.

    Request Body schema: application/json
    One of
    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала. Выдается Мерчанту Тинькофф Кассой при заведении терминала

    PaymentId
    required
    number <= 20 characters

    Идентификатор перевода в системе Тинькофф Кассы

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    Content type
    application/json
    Example
    {
    • "TerminalKey": "TinkoffBankTest",
    • "PaymentId": 13660,
    • "Token": "7241ac8307f349afb7bb9dda760717721bbb45950b97c67289f23d8c69cc7b96"
    }

    Response samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "Amount": 100000,
    • "OrderId": "21050",
    • "Success": true,
    • "Status": "NEW",
    • "PaymentId": 13660,
    • "ErrorCode": "0",
    • "Message": "OK",
    • "Details": "0"
    }

    Получение статуса заказа

    Мерчант может получить информацию об основных параметрах перевода в любой момент.
    Если требуется получить данные по конкретному переводу, то Мерчант должен вызвать метод GetState и передать в запросе PaymentId.
    Если по одному заказу было несколько, то получить историю переводов и их текущий статус можно с помощью метода CheckOrder. Мерчант должен передать в запросе OrderId.

    Request Body schema: application/json
    TerminalKey
    required
    string

    Идентификатор терминала выдается Мерчанту Тинькофф Кассой

    OrderId
    required
    string

    Номер заказа в системе Мерчанта

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "OrderId": "21057",
    • "Token": "string"
    }

    Response samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "OrderId": "21057",
    • "Success": true,
    • "ErrorCode": "0",
    • "Message": "OK",
    • "Details": "None",
    • "Payments": {
      }
    }

    Получение справки по операции

    Справку по конкретной операции можно получить на:
    1. URL-сервиса, развернутого на своей стороне
    2. Электронную почту

    Request Body schema: application/json
    One of
    TerminalKey
    required
    string

    Идентификатор терминала, выдается Мерчанту Тинькофф Кассой

    CallbackUrl
    required
    string

    URL сервиса получения справок

    PaymentIdList
    required
    Array of numbers

    Json-массив, содержащий в себе перечень paymentID (уникальных идентификаторов в системе Тинькофф Кассы) c типом Number

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    Content type
    application/json
    Example
    {
    • "TerminalKey": "TinkoffBankTest",
    • "CallbackUrl": "https://www.tinkoff.ru",
    • "PaymentIdList": [
      ],
    • "Token": "f2fdd7fec8225872590e1558b7ea258c75df8f300d808006c41ab540dd7514d9"
    }

    Response samples

    Content type
    application/json
    Example
    {
    • "Success": true,
    • "ErrorCode": 0,
    • "Message": "OK",
    • "Details": "None",
    • "PaymentIdList": {
      }
    }

    Прием переводов для Мерчантов без PCI DSS

    Методы Authorize и FinishAuthorize вызываются системами Тинькофф Кассы при переадресации клиента на PaymentURL (возвращается в ответе на метод Init). Актуально для Мерчантов, использующих платежную форму Банка.

    Метод Authorize

    Вызов происходит автоматически при переадресации клиента на страницу PaymentURL, указанную в ответе на Init. Статус перевода выставляется в FORMSHOWED.

    Метод FinishAuthorize

    Подтверждает инициированный перевод передачей карточных данных и осуществляет списание денежных средств с карты клиента.

    Осуществление перевода на платежной форме Тинькофф Кассы

    Вызывается формой оплаты, доступной по адресу PaymentURL, при заполнении клиентом карточных данных и нажатии кнопки «Оплатить».

    Статус перевода:

    • при успешном сценарии: CONFIRMED;
    • при неуспешном: REJECTED.

    Переадресация клиента:

    • в случае успешного перевода на Success URL;
    • в случае неуспешного перевода на Fail URL.

    Инициализация перевода

    Метод инициирует перевод

    Request Body schema: application/json
    One of
    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала. Выдается Мерчанту Тинькофф Кассой при заведении терминала

    Amount
    required
    number <= 10 characters
    • Сумма в копейках. Например, сумма 3руб. 12коп. - это число 312
    • Параметр должен быть равен сумме всех параметров Amount, переданных в объекте Items
    OrderId
    required
    string <= 36 characters

    Идентификатор заказа в системе Мерчанта

    Token
    string

    Подпись запроса.

    • Обязательность подписи запроса (token) задается отдельно через настройки терминала. Описание алгоритма формирования подписи доступно в Подпись запроса
    Description
    string <= 250 characters

    Описание заказа

    CustomerKey
    string <= 36 characters

    Идентификатор клиента в системе Мерчанта.

    • Обязателен, если передан атрибут Recurrent.
    • Если был передан в запросе, в нотификации будет указан CustomerKey и его CardId. См. метод GetCardList.
    • Необходим для сохранения карт на платежной форме (платежи в один клик).
    Recurrent
    string <= 1 characters

    Признак родительского рекуррентного платежа.

    • Для регистрации автоплатежа - обязателен. Если передается и установлен в Y, то регистрирует платеж как рекуррентный. В этом случае после оплаты в нотификации на AUTHORIZED будет передан параметр RebillId для использования в методе Charge. Для осуществления привязки и одновременной оплаты по CБП необходимо передавать 'Y'.

    Значение зависимо от атрибутов:

    Language
    string <= 2 characters

    Язык платежной формы.

    • ru — русский
    • en — английский. Если не передан, форма откроется на русском языке
    NotificationURL
    string <uri>

    URL на веб-сайте Мерчанта, куда будет отправлен POST запрос о статусе выполнения вызываемых методов (для настройки нужно обратиться на acq_help@tinkoff.ru):

    • Если параметр передан – используется его значение.
    • Если нет – значение в настройках терминала.
    SuccessURL
    string <uri>

    URL на веб-сайте Мерчанта, куда будет переведен клиент в случае успешного перевода (для настройки нужно обратиться на acq_help@tinkoff.ru):

    • Если параметр передан – используется его значение.
    • Если нет – значение в настройках терминала.
    FailURL
    string <uri>

    URL на веб-сайте Мерчанта, куда будет переведен клиент в случае неуспешного перевода (для настройки нужно обратиться на acq_help@tinkoff.ru):

    • Если параметр передан – используется его значение.
    • Если нет – значение в настройках терминала.
    RedirectDueDate
    any <date-time>

    Cрок жизни ссылки. Если текущая дата превышает дату, переданную в данном параметре, ссылка для перевода становится недоступной и перевод выполнить нельзя.

    • Максимальное значение: 90 дней от текущей даты.
    • Минимальное значение: 1 минута от текущей даты.
    • Формат даты: YYYY-MM-DDTHH24:MI:SS+GMT
    • Пример даты: 2016-08-31T12:28:00+03:00
      Если не передан, принимает значение 24 часа для перевода и 30 дней для счета

    В случае, если параметр RedirectDueDate не был передан, проверяется настроечный параметр платежного терминала REDIRECT_TIMEOUT, который может содержать значение срока жизни ссылки в часах. Если его значение больше нуля, то оно будет установлено в качестве срока жизни ссылки. Иначе, устанавливается значение «по умолчанию» - 1440 мин.(1 сутки)

    object

    JSON-объект, который позволяет передавать дополнительные параметры по операции и задавать определенные настройки в формате "ключ":"значение".

    Максимальная длина для каждого передаваемого параметра:

    • Ключ - 20 знаков
    • Значение - 100 знаков.

    Максимальное количество пар "ключ":"значение" - 20.

    1. Для использования комиссии сверху обязательна передача в "DATA" {"mfoAgreement":"номер договора займа на стороне клиента"}. Например, DATA:{"mfoAgreement":"1234"}.

    2. Если у терминала включена опция привязки клиента после успешного перевода и передается параметр CustomerKey, то в передаваемых параметрах DATA могут присутствовать параметры метода AddCustomer. Если они присутствуют, то автоматически привязываются к клиенту. Например, если указать:

      "DATA":{"Phone":"+71234567890", "Email":"a@test.com"}
      

      к клиенту автоматически будут привязаны данные Email и телефон, и они будут возвращаться при вызове метода GetCustomer.

      Для МСС 4814 обязательно передать значение в параметре Phone. Требования по заполнению:

      • минимум 7 символов
      • максимум 20 символов
      • разрешены только цифры, исключение - первый символ может быть «+»

      Для МСС 6051 и 6050 обязательно передать параметр account (номер электронного кошелька, не должен превышать 30 символов). Пример:

      "DATA": {"account":"123456789"}
      
    3. Если используется функционал сохранения карт на платежной форме, то при помощи опционального параметра DefaultCard можно задать какая карта будет выбираться по умолчанию. Возможные варианты:

    • Оставить платежную форму пустой. Пример:
      "DATA":{"DefaultCard":"none"}
      
    • Заполнить данными передаваемой карты. В этом случае передается CardId. Пример:
       "DATA":{"DefaultCard":"894952"}
      
    • Заполнить данными последней сохраненной карты. Применяется, если параметр DefaultCard не передан, передан с некорректным значением или в значении null. По умолчанию возможность сохранение карт на платежной форме может быть отключена. Для активации обратитесь в службу технической поддержки.
    1. При передаче в объекте DATA атрибута OperationInitiatorType учитывать взаимосвязь его значений с:
      • Значением атрибута Reccurent в методе /Init
      • Значением атрибута RebillId в методе /Charge
      • Типом терминала, используемом для проведения операций (ECOM/AFT)

    Подробную таблицу см. в разделе Передача признака инициатора операции

    В случае передачи значений атрибутов не соответствующих таблице - MAPI вернет ошибку 1126 (Несопоставимые значения rebillId или Recurrent с переданным значением OperationInitiatorType)

    PayForm
    string
    Value: "mfo"

    Для использования комиссии сверху необходимо передать значение «mfo»

    Descriptor
    string

    Динамический дескриптор точки

    Responses

    Request samples

    Content type
    application/json
    Example
    {
    • "TerminalKey": "TinkoffBankTest",
    • "Amount": 140000,
    • "OrderId": "21050",
    • "Token": "7241ac8307f349afb7bb9dda760717721bbb45950b97c67289f23d8c69cc7b96",
    • "Description": "Подарочная карта на 1400.00 рублей",
    • "CustomerKey": "string",
    • "Recurrent": "Y",
    • "Language": "ru",
    • "NotificationURL": "http://example.com",
    • "SuccessURL": "http://example.com",
    • "FailURL": "http://example.com",
    • "RedirectDueDate": null,
    • "DATA": {
      },
    • "PayForm": "mfo",
    • "Descriptor": "678451"
    }

    Response samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "Amount": 100000,
    • "OrderId": "21050",
    • "Success": true,
    • "Status": "NEW",
    • "PaymentId": "13660",
    • "ErrorCode": "0",
    • "Message": "Неверные параметры",
    • "Details": "0"
    }

    Получение статуса перевода

    Мерчант может получить информацию об основных параметрах перевода в любой момент.
    Если требуется получить данные по конкретному переводу, то Мерчант должен вызвать метод GetState и передать в запросе PaymentId.
    Если по одному заказу было несколько, то получить историю переводов и их текущий статус можно с помощью метода CheckOrder. Мерчант должен передать в запросе OrderId.

    Request Body schema: application/json
    One of
    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала. Выдается Мерчанту Тинькофф Кассой при заведении терминала

    PaymentId
    required
    number <= 20 characters

    Идентификатор перевода в системе Тинькофф Кассы

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    Content type
    application/json
    Example
    {
    • "TerminalKey": "TinkoffBankTest",
    • "PaymentId": 13660,
    • "Token": "7241ac8307f349afb7bb9dda760717721bbb45950b97c67289f23d8c69cc7b96"
    }

    Response samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "Amount": 100000,
    • "OrderId": "21050",
    • "Success": true,
    • "Status": "NEW",
    • "PaymentId": 13660,
    • "ErrorCode": "0",
    • "Message": "OK",
    • "Details": "0"
    }

    Получение справки по операции

    Справку по конкретной операции можно получить на:
    1. URL-сервиса, развернутого на своей стороне
    2. Электронную почту

    Request Body schema: application/json
    One of
    TerminalKey
    required
    string

    Идентификатор терминала, выдается Мерчанту Тинькофф Кассой

    CallbackUrl
    required
    string

    URL сервиса получения справок

    PaymentIdList
    required
    Array of numbers

    Json-массив, содержащий в себе перечень paymentID (уникальных идентификаторов в системе Тинькофф Кассы) c типом Number

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    Content type
    application/json
    Example
    {
    • "TerminalKey": "TinkoffBankTest",
    • "CallbackUrl": "https://www.tinkoff.ru",
    • "PaymentIdList": [
      ],
    • "Token": "f2fdd7fec8225872590e1558b7ea258c75df8f300d808006c41ab540dd7514d9"
    }

    Response samples

    Content type
    application/json
    Example
    {
    • "Success": true,
    • "ErrorCode": 0,
    • "Message": "OK",
    • "Details": "None",
    • "PaymentIdList": {
      }
    }

    Рекуррентные переводы

    Автоперевод

    Схема проведения рекуррентного перевода

    Описание

    Осуществляет рекуррентный (повторный) перевод — безакцептное списание денежных средств со счета банковской карты клиента. Для возможности его использования клиент должен совершить хотя бы один перевод в пользу Мерчанта, который должен быть указан как рекуррентный (см. параметр Recurrent методе Init), фактически являющийся первичным. По завершении перевода в нотификации на AUTHORIZED или CONFIRMED будет передан параметр RebillId. В дальнейшем для совершения рекуррентного перевода Мерчант должен вызвать метод Init, а затем без переадресации на PaymentURL вызвать метод Charge для перевода по тем же самым реквизитам и передать параметр RebillId, полученный при совершении первичного перевода.

    При проведении рекуррентного платежа учитывать взаимосвязь атрибута RebillId в методе /Charge с:

    • Значением атрибута OperationInitiatorType в методе /Init
    • Значением атрибута Reccurent в методе /Init
    • Типом терминала, используемом для проведения операций (ECOM/AFT)

    Наглядно допустимые сценарии взаимосвязи описаны в таблице:

    CIT/MIT Тип операции OperationInitiator в /Init RebillId в /Charge Recurrent в /Init AFT терминал ECOM терминал
    CIT Credential-Not-Captured 0 null N Разрешено Разрешено
    CIT Credential-Captured 1 null Y Разрешено Разрешено
    CIT Credential-on-File 2 not null N Запрещено Разрешено
    MIT Credential-on-File, Recurring R not null N Запрещено Разрешено
    MIT Credential-on-File, Installment I not null N Разрешено Запрещено

    В случае передачи значений атрибутов не соответствующих таблице - MAPI вернет ошибку 1126 (Несопоставимые значения rebillId или Recurrent с переданным значением OperationInitiatorType)

    Одностадийный перевод

    1. Совершить родительский перевод путем вызова Init с указанием дополнительных параметров Recurrent=Y и CustomerKey.
    2. Переадресовать клиента на PaymentUrl (только для Мерчантов без PCI DSS).
    3. После проведения перевода клиентом в нотификации на статус AUTHORIZED или CONFIRMED будет передан параметр RebillId, который необходимо сохранить.
    4. Спустя некоторое время для совершения рекуррентного перевода необходимо вызвать метод Init со стандартным набором параметров (параметры Recurrent и CustomerKey здесь не нужны).
    5. Получить в ответ на Init параметр PaymentId, (для Мерчантов без PCI DSS: дополнительно сделать переадресацию клиента на PaymentUrl, для Мерчантов с PCI DSS: переадресацию производить не надо).
    6. Вызвать метод Charge с параметром RebillId, полученным в п.3, и параметром PaymentId, полученным в п.5.
    Request Body schema: application/json
    One of
    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала. Выдается Мерчанту Тинькофф Кассой при заведении терминала

    PaymentId
    required
    number

    Уникальный идентификатор транзакции в системе Тинькофф Кассы

    RebillId
    required
    string

    Идентификатор рекуррентного платежа. Значение зависимо от атрибутов:

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    Content type
    application/json
    Example
    {
    • "TerminalKey": "TinkoffBankTest",
    • "PaymentId": 700001702044,
    • "RebillId": "145919",
    • "Token": "f5a3be479324a6d3a4d9efa0d02880b77d04a91758deddcbd9e752a6df97cab5"
    }

    Response samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "Amount": 100000,
    • "OrderId": "21050",
    • "Success": true,
    • "Status": "NEW",
    • "PaymentId": 13660,
    • "ErrorCode": "0",
    • "Message": "string",
    • "Details": "string"
    }

    Сценарии привязки карты

    Общая информация

    Мерчант может сохранить платежные данные клиента, чтобы при последующих переводах ему не приходилось заполнять платежную форму. Для этого клиент привязывается к терминалу, через который будут проходить перевод. Мерчант может выбрать способ привязки клиента - с проверкой 3D-Secure или без.

    Если выбрана опция с проверкой, то клиент должен будет подтвердить операцию уже на этом этапе. Все дальнейшие переводы будут проходить по схеме рекуррентного перевода, то есть подтверждать каждое списание не нужно.

    Если Мерчант выбрал опцию привязки без проверки 3D-Secure, то клиент и его карты будут сохранены без подтверждения. Однако, оно потребуется при первом переводе по привязанной карте.

    Для корректной работы методов Тинькофф Касса должна разрешить Мерчанту привязывать карты и клиентов к терминалу. В результате привязки карты к параметру CustomerKey будет привязана CardId.

    Для сохранения идентификатора клиента CustomerKey Мерчант должен вызвать метод AddCustomer и передать в запросе параметр CustomerKey.

    Для удаления клиента из списка привязанных к терминалу Мерчант должен вызвать метод RemoveCustomerпередать в запросе параметр CustomerKey.

    Для получения сохраненных данных клиента Мерчант должен вызвать метод GetCustomer и передать в запросе параметр CustomerKey.

    Методы работы с клиентами

    Регистрация клиента

    Регистрирует клиента в связке с терминалом. Возможна автоматическая привязка клиента и карты, по которой был совершен перевод, при передаче параметра CustomerKey в методе Init. Это можно использовать для сохранения и последующего отображения клиенту замаскированного номера карты, по которой будет совершен рекуррентный перевод

    Request Body schema: application/json
    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала, выдается Мерчанту Тинькофф Кассой

    CustomerKey
    required
    string <= 36 characters

    Идентификатор клиента в системе Мерчанта

    Token
    required
    string

    Подпись запроса

    Email
    string <email> <= 64 characters

    Email клиента

    Phone
    string <= 64 characters

    Телефон клиента в формате +{Ц}

    Responses

    Request samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "CustomerKey": "4387c647-a693-449d-bc35-91faecfc50de",
    • "Token": "30797e66108934dfa3d841b856fdad227c6b9c46d6a39296e02dc800d86d181e",
    • "Email": "username@test.ru",
    • "Phone": "+79031234567"
    }

    Response samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "CustomerKey": "05d65baa-9718-445e-8212-76fa0dd4c1d2",
    • "ErrorCode": "0",
    • "Success": true,
    • "Message": "Неверные параметры",
    • "Details": "Терминал не найден"
    }

    Получение данных клиента

    Возвращает данные клиента, сохраненные в связке с терминалом

    Request Body schema: application/json
    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала, выдается Мерчанту Тинькофф Кассой

    CustomerKey
    required
    string <= 36 characters

    Идентификатор клиента в системе Мерчанта

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "CustomerKey": "string",
    • "Token": "30797e66108934dfa3d841b856fdad227c6b9c46d6a39296e02dc800d86d181e"
    }

    Response samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "CustomerKey": "4264aa7b-08ab-4429-ab5a-2a171d841ced",
    • "ErrorCode": "0",
    • "Success": true,
    • "Message": "Неверный статус клиента",
    • "Details": "Клиент не найден.",
    • "Email": "a@test.ru",
    • "Phone": "+79031234567"
    }

    Удаление данных клиента

    Удаляет сохраненные данные клиента

    Request Body schema: application/json
    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала, выдается Мерчанту Тинькофф Кассой

    CustomerKey
    required
    string <= 36 characters

    Идентификатор клиента в системе Мерчанта

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "CustomerKey": "string",
    • "Token": "30797e66108934dfa3d841b856fdad227c6b9c46d6a39296e02dc800d86d181e"
    }

    Response samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "CustomerKey": "string",
    • "ErrorCode": "0",
    • "Success": true,
    • "Message": "Неверные параметры",
    • "Details": "string"
    }

    Методы работы с картами

    Получение списка карт клиента

    Валидно для карт, привязанных на терминалах Выплат A2C
    Возвращает список всех привязанных карт клиента, включая удаленные

    Request Body schema: application/json
    One of
    TerminalKey
    required
    string

    Идентификатор терминала, выдается Мерчанту Тинькофф Кассой

    CustomerKey
    required
    string

    Идентификатор клиента в системе Мерчанта

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    Content type
    application/json
    Example
    {
    • "TerminalKey": "TinkoffBankTest",
    • "CustomerKey": "testCustomer1234",
    • "Token": "30797e66108934dfa3d841b856fdad227c6b9c46d6a39296e02dc800d86d181e"
    }

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Удаление привязанной карты клиента

    Валидно для карт, привязанных на терминалах Выплат A2C
    Метод удаляет привязанную карту клиента

    Request Body schema: application/json
    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала, выдается Мерчанту Тинькофф Кассой

    CustomerKey
    required
    string <= 36 characters

    Идентификатор клиента в системе Мерчанта

    CardId
    required
    string <= 40 characters

    Идентификатор карты в системе Тинькофф Кассы

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "CustomerKey": "testCustomer1234",
    • "CardId": "156516516",
    • "Token": "30797e66108934dfa3d841b856fdad227c6b9c46d6a39296e02dc800d86d181e"
    }

    Response samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "Status": "D",
    • "CustomerKey": "testCustomer1234",
    • "CardId": "156516516",
    • "CardType": 0,
    • "Success": true,
    • "ErrorCode": "0",
    • "Message": "Неверные параметры",
    • "Details": "Не удалось удалить карту клиента, для данного клиента такая карта не существует."
    }

    Нотификации Мерчанта об операциях

    Нотификации – это уведомления магазину о статусе выполнения переводов.

    Нотификации по E-mail

    Тинькофф Касса может присылать письма с уведомлениями об успешных переводах (статус CONFIRMED). Настроить нотификации на электронную почту можно через acq_help@tinkoff.ru. Уведомления на почту можно комбинировать с уведомлениями, отправляемыми по http(s).

    Нотификации по HTTP(s)

    При совершении операций Authorize, FinishAuthorize, Confirm на адрес Notification URL высылается уведомление POST-запросом с информацией об операции. При обращении к методу FinishAuthorize нотификация отправляется на сайт Мерчанта на адрес Notification URL синхронно и ожидает ответа в течение 10 секунд.

    После получения ответа или неполучения его за заданное время сервис переадресует клиента на Success URL или Fail URL в зависимости от результата перевода.

    В случае успешной обработки нотификации Мерчант должен вернуть ответ c HTTP-кодом сообщения 200 с телом сообщения: OK (без тегов и заглавными английскими буквами). Если тело сообщения отлично от OK, любая нотификация считается неуспешной, и сервис будет повторно отправлять нотификацию раз в час в течение 24 часов. Если нотификация за это время так и не доставлена, она складывается в дамп.

    Вышесказанное так же действительно и при вызове метода Charge за исключением того, что данный метод не осуществляет переадресации клиента.

    Если в NotificationURL используются порты, допустимо использование порта 443 (HTTPS). Актуальный список внешних сетей*, используемых Тинькофф Касса, для отправки нотификаций:

    • 91.194.226.0/23
    • 91.218.132.0/24
    • 91.218.133.0/24
    • 91.218.134.0/24
    • 91.218.135.0/24
    • 212.233.80.0/24
    • 212.233.81.0/24
    • 212.233.82.0/24
    • 212.233.83.0/24
    • 91.194.226.181 (тестовая среда)

    Чтобы нотификации работали корректно, добавьте эти сети в исключения сетевых фильтров или других видов защиты, которыми пользуетесь.

    URL: Notification URL

    Параметры нотификаций:

    Наименование Тип Описание
    TerminalKey String Идентификатор терминала, выдается Мерчанту Тинькофф Кассой
    Amount Number Сумма в копейках
    OrderId String Идентификатор перевода в системе Мерчанта
    Success Boolean Успешность запроса
    CustomerKey String Идентификатор клиента в системе Мерчанта
    RequestKey String Идентификатор запроса на привязку карты
    Status String Статус перевода
    PaymentId String Уникальный идентификатор транзакции в системе Тинькофф Кассы
    ErrorCode String Код ошибки. «0» в случае успеха
    PaymentURL String Ссылка на платежную форму
    Message String Краткое описание ошибки
    Details String Подробное описание ошибки
    RebillId String Идентификатор рекуррентного перевода
    CardId Number Идентификатор карты в системе Тинькофф Кассы
    Pan String Маскированный номер карты
    ExpDate String Срок действия карты в формате MMYY, где YY — две последние цифры года
    Token String Подпись запроса. Формируется по такому же принципу, как и в случае запросов в Тинькофф Кассу

    Укажите в настройках терминала URL, чтобы получать на него POST-запросы со статусами:

    Статус Описание
    AUTHORIZED Деньги захолдированы на карте клиента. Ожидается подтверждение операции *
    CONFIRMED Операция подтверждена
    REJECTED Списание денежных средств закончилась ошибкой
    3DS_CHECKING ** Автоматическое закрытие сессии, которая превысила срок пребывания в статусе 3DS_CHECKING (более 36 часов)

    * Операция может быть подтверждена:

    • Запросом Confirm;
    • Автоматически
    • По неподтвержденным операциям возмещение не производится. Узнать статус перевода можно с помощью вызова метода GetState.

    ** Напишите на почту acq_help@tinkoff.ru c просьбой включить отправку нотификаций об автозакрытии сессий в статусе 3DS_CHECKING

    Ответ на HTTP(s)-нотификацию

    В случае успешной обработки нотификации Мерчанту необходимо вернуть ответ HTTP CODE = 200 с телом сообщения: OK (без тегов и заглавными английскими буквами).

    PHP. Пример ответа на http(s)-нотификацию

    <?php
    echo «OK»;
    ?>
    

    Java. Пример ответа на http(s)-нотификацию

    @POST
    @Path("/ok")
    public Response NotifyResponse() {
    return Response.status(200).entity("OK").build();
    }
    

    Если ответ «OK» не получен, нотификация считается неуспешной, и сервис будет повторно отправлять данную нотификацию раз в час в течение 24 часов. Если нотификация за это время не доставлена, она будет сложена в архив.

    При получении нотификации и перед её обработкой настоятельно рекомендуем проверить подпись запроса.

    Проверка токенов

    Для формирования подписи запроса для нотификации небходимо:

    1. Собрать массив всех передаваемых параметров в виде пар Ключ-Значение (кроме параметра Token). Например:

      [["TerminalKey": "TinkoffBankTest"],["OrderId": "201709"],["Success": "true"],["Status": "AUTHORIZED"],["PaymentId": "8742591"],["ErrorCode": "0"],["Amount": "9855"],["CardId": "322264"],["Pan": "430000******0777"],["ExpDate": "1122"],["RebillId": "101709"]]
      
    2. Добавить в массив пару (Password, значение). Password – пароль для терминала, указан в Личном кабинете https://www.tinkoff.ru/kassa/:

      [["TerminalKey": "TinkoffBankTest"],["OrderId": "201709"],["Success": "true"],["Status": "AUTHORIZED"],["PaymentId": "8742591"],["ErrorCode": "0"],["Amount": "9855"],["CardId": "322264"],["Pan": "430000******0777"],["ExpDate": "1122"],["RebillId": "101709"],["Password": "Dfsfh56dgKl"]]
      
    3. Отсортировать массив по Ключам по алфавиту:

      [["Amount": "9855"],["CardId": "322264"],["ErrorCode": "0"],["ExpDate": "1122"],["OrderId": "201709"],["Pan": "430000******0777"],["Password": "Dfsfh56dgKl"],["PaymentId": "8742591"],["RebillId": "101709"],["Status": "AUTHORIZED"],["Success": "true"],["TerminalKey": "TinkoffBankTest"]]
      
    4. Конкатенировать значения всех пар:

      985532226401122201709430000******0777Dfsfh56dgKl8742591101709AUTHORIZEDtrue1321054611234DEMO
      
    5. Вычислить SHA-256 от полученного в п.4. значения:

      b906d28e76c6428e37b25fcf86c0adc52c63d503013fdd632e300593d165766b
      

    Коды ошибок

    CODE MESSAGE DETAILS (опционально)
    0 None
    1 Параметры не сопоставлены
    2 Отсутствуют обязательные параметры
    3 Внутренняя ошибка системы интернет эквайринга
    4 Не получится изменить статус платежа
    5 Обратитесь в поддержку, чтобы уточнить детали
    6 Не получилось привязать карту покупателя. Обратитесь в поддержку, чтобы уточнить детали
    7 Неверный статус покупателя
    8 Неверный статус транзакции
    9 Переадресовываемый url пуст
    11 Невозможно выполнить платеж
    12 Неверный параметр RedirectDueDate
    13 Оплата с мобильного телефона недоступна
    13 Оплата через WebMoney недоступна
    14 Платеж неверный.
    15 Не удалось осуществить платеж через EINV.
    16 Счет был отклонен.
    17 Неверные введенные данные.
    18 Не удалось осуществить платеж через MC.
    19 Не удалось осуществить платеж через WebMoney.
    20 Ошибка повторного идентификатора заказа.
    21 Внутренняя ошибка вызова сервиса ACQAPI.
    50 Ошибка отправки нотификации.
    51 Ошибка отправки Email.
    52 Ошибка отправки Sms.
    53 Обратитесь к продавцу
    54 Повторное прохождение 3DS авторизации не допустимо.
    55 Повторите попытку позже Не найдено оплаченных назначений платежа
    60 Запрещено получение документов по url для текущего терминала Запрещено получение документов по url для текущего терминала
    61 Должен быть заполнен один из параметров: emailList или Url Должен быть заполнен один из параметров: emailList или Url
    62 Запрещено получение документов по url для текущего systemId Запрещено получение документов по url для текущего systemId
    63 Не найдена операция Не найдена операция
    64 Невалидные данные в запросе Невалидные данные в запросе
    65 Не удалось сформировать документ. Обратитесь в службу поддержки Не удалось сформировать документ. Повторите операцию позднее
    66 Не удалось сформировать документ. Повторите операцию позднее Запрещено получение документов по url для текущего терминала
    67 Не удалось сформировать документ. Повторите операцию позднее Не удалось сформировать документ. Повторите операцию позднее
    68 Не удалось сформировать документ. Обратитесь в службу поддержки Стороний сервис не доступен.
    76 Операция по иностранной карте недоступна. Операция по иностранной карте недоступна. Воспользуйтесь картой российского банка
    78 Выплата на иностранную карту недоступна. Выплата на иностранную карту недоступна. Воспользуйтесь картой российского банка
    96 Ошибка Iris.
    97 Ошибка Jasper.
    98 Ошибка SubExt.
    99 Попробуйте повторить попытку позже Банк, выпустивший карту, отклонил операцию
    100 • Попробуйте еще раз. Если ошибка повторится — обратитесь в поддержку
    • Платеж не получится отменить, потому что деньги покупателя не были зарезервированы
    • Платеж уже отменен
    • Не получилось отменить платеж. Укажите сумму не больше, чем зарезервировано
    • Покупатель опротестовал платеж в банке. Обратитесь в поддержку,чтобы уточнить детали
    • Платеж уже подтвержден
    • Нужно настроить подтверждение платежа через СМС (3DS) — для этого обратитесь в поддержку
    • Карта покупателя неактивна
    101 Не пройдена идентификация 3DS. Ошибка прохождения 3-D Secure
    102 • Обратитесь в поддержку, чтобы уточнить детали
    • Сообщите покупателю, чтобы попробовал оплатить еще раз. Если ошибка повторится — обратитесь в поддержку
    102 Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой. Заказ не может быть оплачен, обратитесь службу поддержки
    102 Превышен лимит на сумму выплат в месяц. Для решения вопроса обратитесь к персональному менеджеру
    102 Отказ. Более двух успешных оплат с одного email в неделю по проекту dolyame.ru
    102 Отказ. Более двух успешных оплат с одного phone в неделю по проекту dolyame.ru.
    102 Отказ. Более двух успешных оплат с одной карты в неделю по проекту dolyame.ru.
    102 Отказ. Более двух успешных оплат с одной карты в сутки по проекту dolyame.ru.
    102 Отказ. Более двух успешных оплат с одного устройства в сутки по проекту dolyame.ru.
    102 Отказ. Более двух успешных оплат с одного устройства в неделю по проекту dolyame.ru.
    102 Отказ. Более двух успешных оплат с одного куки/идентификатора клиентского агента в сутки по проекту dolyame.ru.
    102 Отказ. Более двух успешных оплат с одного куки/идентификатора клиентского агента в неделю по проекту dolyame.ru.
    102 Отказ. Попытка оплаты с виртуальных или мошеннических бинов по проекту dolyame.ru.
    103 Недостаточно средств на счете
    105 Нужно настроить автоплатежи по Maestro — для этого обратитесь в поддержку
    106 Карта не поддерживает 3DS проверку. Попробуйте другую карту.
    107 Неверно введен CardId. Проверьте, что такая карта была ранее привязана.
    109 Не найден dsTranId для сессии
    110 Не передан cres
    111 Передан некорректный cres
    119 Превышено допустимое количество запросов авторизации операции
    120 Попробуйте повторить попытку позже
    123 Попробуйте повторить попытку позже
    125 Попробуйте повторить попытку позже
    191 Некорректный статус договора, обратитесь к вашему менеджеру
    201 Поле PaymentId не должно быть пустым.
    202 Терминал заблокирован.
    203 Параметры запроса не должны быть пустыми.
    204 Неверный токен. Проверьте пару TerminalKey/SecretKey.
    205 Неверный токен. Проверьте пару TerminalKey/SecretKey. Указанный терминал не найден
    206 Email не может быть пустым.
    207 Параметр DATA превышает максимально допустимый размер.
    208 Наименование ключа из параметра DATA превышает максимально допустимый размер.
    209 Значение ключа из параметра DATA превышает максимально допустимый размер.
    210 Размер поля TerminalKey должен быть от {min} до {max}.
    211 Неверный формат IP.
    212 Размер поля OrderId должен быть от {min} до {max}.
    213 Размер поля Description должен быть от {min} до {max}.
    214 Поле Currency должно быть меньше или равно {value}.
    215 Размер поля PayForm должен быть от {min} до {max}.
    216 Размер поля CustomerKey должен быть от {min} до {max}.
    217 Поле PaymentId числовое значение должно укладываться в формат (<{integer} цифр>.<{fraction} цифр>).
    218 Значение PAN не является числовым.
    219 Неверный срок действия карты.
    220 Размер поля CardHolder должен быть от {min} до {max}.
    221 Значение CVV не является числовым.
    222 Поле CardId числовое значение должно укладываться в формат (<{integer} цифр>.<{fraction} цифр>).
    223 Поле RebillId числовое значение должно укладываться в формат (<{integer} цифр>.<{fraction} цифр>).
    224 Неверный формат Email.
    225 Неверный формат Email.
    226 Размер поля Email должен быть от {min} до {max}.
    227 Размер поля Phone должен быть от {min} до {max}.
    228 Размер поля MD должен быть от {min} до {max}.
    229 Размер поля PaRes должен быть от {min} до {max}.
    230 Размер поля Code должен быть от {min} до {max}.
    231 Не найден идентификатор карты.
    233 Размер поля CardId должен быть от {min} до {max}.
    234 Размер поля PAN должен быть от {min} до {max}.
    235 Размер поля RebillId должен быть от {min} до {max}.
    236 Размер поля Token должен быть от {min} до {max}.
    237 Размер поля PaymentId должен быть от {min} до {max}.
    238 Размер поля ExpDate должен быть от {min} до {max}.
    239 Размер поля CVV должен быть от {min} до {max}.
    240 Поле Amount числовое значение должно укладываться в формат (<{integer} цифр>.<{fraction} цифр>).
    241 Поле Currency должно быть больше или равно {value}.
    242 Размер поля InfoEmail должен быть от {min} до {max}.
    243 Ошибка шифрования карточных данных.
    244 Ошибка сопоставления карточных данных.
    245 Параметр AddCard не сопоставлен.
    246 Параметр SendEmail не сопоставлен.
    247 Параметр Amount не сопоставлен.
    248 Параметр CVV не сопоставлен.
    249 Параметр Currency не сопоставлен.
    250 Параметр DATA не сопоставлен.
    251 Неверная сумма. Сумма должна быть больше или равна {value} копеек.
    252 Срок действия карты истек.
    253 Валюта {value} не разрешена для данного терминала
    254 Дополнительные возможности отключены
    255 Платеж не найден
    257 Некорректное значение признака последней выплаты. Используйте значения true или false Некорректное значение признака последней выплаты. Используйте значения true или false
    259 Параметр EncryptedPaymentData не сопоставлен
    260 Максимальная длина номера телефона 30 символов
    261 Параметр Source не сопоставлен
    305 Ошибка проверки поля.
    309 Поле Receipt не должно быть пустым.
    316 Максимальная длина номера телефона 19 символов.
    322 Передана некорректная подпись
    323 Amount не совпадают
    325 Транзакция не найдена.
    326 Неверный amount.
    327 "Терминал не поддерживает C2C переводы или не передан Route=""C2C"" для C2C терминала"
    328 Должны присутствовать данные для списания и данные для пополнения.
    330 Сумма в запросе больше чем в оригинальной транзакции
    331 Неверный терминал
    335 OrderId {value} не найден для TerminalKey {value}
    381 Возможна привязка только резидентных карт
    382 Возможна привязка только нерезидентных карт
    401 Внутренняя ошибка системы.
    402 Повторите попытку позже.
    403 Превышен лимит на количество пополнений в месяц.
    404 Превышен лимит на сумму пополнения через бесконтактные сервисы.
    405 Превышен лимит на сумму пополнения по виртуальной карте.
    406 Превышен лимит на сумму пополнения в месяц через мобильное приложение.
    407 Не найдено
    410 Данный тип перевода для терминала не доступен
    411 Сертификат не найден
    412 Истек срок действия сертификата
    413 Сертификат заблокирован
    414 Сертификат уже сохранен для данного терминала
    415 Дата начала срока действия сертификата еще не наступила
    416 Некорректное значение параметра SetStatus
    417 Ошибка обработки сертификата
    419 Параметр account объекта DATA должен быть заполнен корректно для MCC: 6050/6051
    500 Добавление карты к данному терминалу запрещено.
    501 Терминал не найден.
    502 Карта по requestKey не найдена.
    503 CustomerKey не найден.
    504 Не удалось провести платеж при привязке карты.
    505 Не удалось привязать карту. Внутренняя ошибка.
    506 Карта добавлена в черный список.
    507 Карта не поддерживает 3DS проверку. Попробуйте другую карту.
    508 Неверный номер карты.
    509 Не удалось выполнить отмену при привязке карты.
    510 Карта уже привязана к переданному CustomerKey.
    511 Проверка 3DS не пройдена.
    512 Не удалось выполнить запрос на проверку 3DS.
    513 Не удалось выполнить платеж после прохождения 3DS.
    514 Введена неверная сумма холдирования.
    515 Внутренняя ошибка.
    600 Карта добавлена в черный список
    600 Интернет-магазин отклонил операцию по данной карте. Обратитесь в интернет-магазин для выяснения причин отказа в платеже.
    601 Разрешены операции только по MasterCard
    603 Превышено количество попыток оплаты с данной карты
    604 Обратитесь в поддержку, чтобы уточнить детали
    619 Отсутствуют обязательные данные отправителя Не переданы персональные данные отправителя для операции emoney2card более 15000 руб.
    620 Проверьте сумму — она не может быть равна 0 Сумма операции не может быть равна 0
    623 Выплата по этому заказу уже прошла Запрещено проводить платеж с OrderId для которого уже есть успешный платеж.
    632 Превышен лимит на сумму операции Лимит на сумму пополнения emoney2card. См. лимиты
    633 Превышен лимит на количество переводов в день по иностранным картам Лимит на кол-во пополнений emoney2card для карт эмитированных нерезидентами РФ за 1 отчетный день
    634 Превышен лимит на сумму переводов по номеру карты в месяц Лимит на сумму пополнения emoney2card по номеру карты одного получателя в отчетный месяц
    637 Не хватает данных получателя или отправителя для выплаты на иностранную карту. Проверьте заполнение Отсутствуют персональные данные получателя/отправителя при переводе на иностранную карту
    642 Проверьте номер карты Карта не прошла проверку по алгоритму Луна
    648 Магазин заблокирован или еще не активирован. Обратитесь в поддержку, чтобы уточнить детали
    650 Сообщите покупателю, чтобы попробовал оплатить еще раз. Если ошибка повторится — обратитесь в поддержку
    651 Не получилось совершить платеж. Свяжитесь с поддержкой Передаваемый Request_Id не найден.
    700 Список карт Masterpass недоступен для данного магазина.
    701 Сервис MasterPass недоступен.
    702 Поле maid и saav должно быть задано в настройках терминала.
    703 Обратитесь в поддержку, чтобы уточнить детали
    800 Комиссия не найдена
    903 Повторите попытку позже
    914 Платеж не найден
    991 Для использования 3dsType необходимо установить 3ds терминал Для использования TDS роутинга необходимо пользоваться ТДС терминалом
    999 Попробуйте повторить попытку позже
    1001 Свяжитесь с банком Свяжитесь с банком, выпустившим карту, чтобы провести платеж
    1003 Неверный магазин Неверный номер магазина. Идентификатор магазина недействителен.
    1004 Банк, который выпустил карту, считает платеж подозрительным
    1005 Платеж отклонен банком, выпустившим карту Платеж отклонен банком, выпустившим карту
    1006 Платеж не прошел Свяжитесь с банком, выпустившим карту, чтобы провести платеж
    1007 Банк, который выпустил карту, считает платеж подозрительным
    1008 Банк, который выпустил карту, отклонил платеж
    1012 Банк, который выпустил карту, отклонил платеж
    1013 Банк, который выпустил карту, отклонил платеж — сумма превышает лимит по карте Сумма превышает лимит платежа вашего банка. Воспользуйтесь другой картой или обратитесь в банк
    1014 Карта недействительна Неправильные реквизиты — проверьте их или воспользуйтесь другой картой
    1015 Неверный номер карты Неверный номер карты
    1017 Попробуйте снова или свяжитесь с банком, выпустившим карту Попробуйте снова или свяжитесь с банком, выпустившим карту
    1018 Неизвестный статус платежа
    1019 Банк, который выпустил карту, отклонил платеж — сумма превышает лимит по карте
    1030 Повторите попытку позже. Не получилось оплатить. Попробуйте еще раз
    1033 Истек срок действия карты
    1034 Попробуйте повторить попытку позже Не получилось оплатить. Воспользуйтесь другой картой или обратитесь в банк, выпустивший карту
    1038 Превышено количество попыток ввода ПИН-кода — попробуйте снова или обратитесь в банк, выпустивший карту
    1039 Платеж отклонен — счет не найден
    1041 Карта утеряна Карта утеряна. Свяжитесь с банком, выпустившим карту
    1043 Банк, который выпустил карту, считает платеж подозрительным
    1051 Недостаточно средств на карте. Не получилось оплатить. На карте недостаточно средств
    1053 Платеж отклонен — счет не найден
    1054 Истек срок действия карты Неправильные реквизиты — проверьте их или воспользуйтесь другой картой
    1055 Неверный ПИН
    1057 Покупатель запретил такие операции для своей карты
    1058 Покупатель запретил такие операции для своей карты
    1059 Банк, который выпустил карту, считает платеж подозрительным
    1061 Покупатель превысил лимит платежей по своей карте
    1062 Банк, который выпустил карту, отклонил платеж
    1063 Банк, который выпустил карту, считает платеж подозрительным
    1064 Проверьте сумму
    1065 Покупатель превысил лимит платежей по своей карте
    1071 Токен просрочен Токен просрочен
    1075 Покупатель оплатил максимум раз по своей карте за день
    1076 Не получилось отменить резервирование. Обратитесь в поддержку, чтобы уточнить детали
    1077 Коды не совпадают — попробуйте снова
    1078 Данный тип операции не поддерживается картой
    1080 Плательщик ввел неверный срок действия карты
    1082 Неверный CVV Неправильные реквизиты — проверьте их или воспользуйтесь другой картой
    1085 Операция успешна Успех
    1086 Платеж отклонен — не получилось подтвердить ПИН-код
    1088 Банк, который выпустил карту, отклонил платеж
    1089 Попробуйте повторить попытку позже Не получилось оплатить. Попробуйте еще раз или обратитесь в банк, выпустивший карту
    1091 Технические работы в банке, который выпустил карту
    1092 Банк, который выпустил карту, отклонил платеж
    1093 Банк, который выпустил карту, считает платеж подозрительным
    1094 Банк, который выпустил карту, считает платеж подозрительным
    1096 Системная ошибка Системная ошибка
    1116 Некорректная сумма выдачи Сумма баланса меньше суммы переданной в операции выдачи
    1119 Параметр account объекта DATA должен быть заполнен корректно для MCC: 6050/6051 Передан некорректный номер кошелька
    1125 Некорректное значение OperationInitiatorType. Должно быть одно из списка
    1126 Несопоставимые значения rebillId или Recurrent с переданным значением OperationInitiatorType
    1201 Обратитесь в поддержку, чтобы уточнить детали
    1202 Сумма платежа превышает лимит по разовой операции в этом магазине. Обратитесь в поддержку, чтобы уточнить детали Для решения вопроса обратитесь к персональному менеджеру
    1203 Сумма платежа превышает лимит по разовой операции или количеству операций в этом магазине. Обратитесь в поддержку, чтобы уточнить детали Для решения вопроса обратитесь к персональному менеджеру
    1204 Достигнут лимит по суточному обороту. Чтобы изменить лимит, обратитесь в поддержку Для решения вопроса обратитесь к персональному менеджеру
    1205 Магазин не принимает карты этой страны. Обратитесь в поддержку, чтобы уточнить детали Для решения вопроса обратитесь к персональному менеджеру
    1207 Сообщите покупателю, чтобы попробовал оплатить еще раз. Если ошибка повторится — обратитесь в поддержку Для решения вопроса обратитесь к персональному менеджеру
    1217 Воспользуйтесь другой картой или обратитесь к продавцу Воспользуйтесь другой картой или обратитесь к продавцу
    1218 Воспользуйтесь другой картой или обратитесь к продавцу Воспользуйтесь другой картой или обратитесь к продавцу
    1235 Для карт «Мир» нужно настроить подтверждение платежей по СМС 3DS 2.0. Обратитесь в поддержку, чтобы уточнить детали
    1316 Запрещено проведение авторизации Запрещено проведение авторизации с использованием 3DS
    1502 Недостаточно средств на счете компании Insufficient funds
    1503 Некорректный статус счета, обратитесь в поддержку Invalid account status
    2014 Не пройдена идентификация 3DS
    2015 Mерчант с таким именем и паролем не найден.
    2200 Превышено допустимое количество запросов авторизации операции
    8002 Tinkoff Credit Broker недоступен. Повторите попытку позже.
    8003 Операция запрещена для покупки долями.
    8004 BNPL недоступен. Повторите попытку позже.
    9001 Попробуйте повторить попытку позже
    9999 Внутренняя ошибка системы.

    Тестовые карты

    Карта используется для тестирования терминалов AFTDEMO и ATOPDEMO, обращение к методам проводится в домене https://securepay.tinkoff.ru/v2/."

    Поведение карты PAN
    Успешный перевод 4300000000000777
    expDate: любая действующая дата в формате 11/24
    cvv: любой набор из 3 цифр
    Неуспешный перевод 5000000000000009
    expDate: любая действующая дата в формате 11/24
    cvv: любой набор из 3 цифр
    Успешный перевод
    (подходит для рекуррентных платежей)
    4000000000000333
    expDate: любая действующая дата в формате 11/24
    cvv: любой набор из 3 цифр

    Обратная связь

    По техническим вопросам обратитесь на почту acq_help@tinkoff.ru.
    Для предоставления обратной связи и по вопросам улучшения обслуживания и предоставляемого сервиса обратитесь к вашему личному менеджеру