API. Проверка чека

Использование API для проверки банковского чека

Отправка чека

POST /api/proofs

Headers

Name
Value

Content-Type

multipart/form-data (либо application/json)

Authorization

Bearer <token>

Body

Name
Type
Description

attachments * для multipart/form-data используйте attachments[] для указания имени поля формы для каждого элемента массива

array[file|string]

Массив из файлов или ссылок на чеки одной транзакции. Массив удобно использовать для проверки одной выплаты осуществленной разными чеками. Форматы: pdf, png, jpg/jpeg, webp

Макс размер: 3МБ + Поддерживаются ссылки на Cash-In Т-Банка.

transaction_id *

string

Уникальный id транзакции

requisite *

string

Номер карты/счета/телефона

payment_method *

string

Метод оплаты: card sbp – присутствует проверка по названию банка-получателя account_number

bank_full_name (* при СБП, либо validation_scope)

string

Название банка, который должен быть в качестве банка-получателя (для sbp). Например: Альфа-Банк, Т-Банк (не Тинькофф), Сбербанк и тд.

sender_bank_full_name

string

Если вы хотите провалидировать банк отправителя, передайте это поле

fiat_amount (* если указан в validation_scope)

float

Сумма в чеке

ignore_exist

boolean

Игнорировать ошибку PROOF_EXISTS. Данная ошибка определяет существует ли документ с такой чексуммой, но другим ID транзакции.

callback_url

string

Если вы планируете работать через callbacks, то можете передавать URL для ответного POST-запроса. В Headers будет Authorization с

"Bearer ваш-токен". Сообщите данный токен администратору.

validation_scope

array

По умолчанию мы проводим только валидацию реквизитов получателя и банк получателя/отправителя, если указано (получателя – только СБП). Однако, для выплат может быть полезно валидировать сумму в чеке и статус операции.

Перечислите здесь всё, что хотите валидировать в чеке. - fiat_amount (сумма, требуется передавать также поле fiat_amount с суммой в основном теле запроса) - status (будет ошибка, если операция в процессе, либо отклонена)

transaction_timestamp

Integer (время в UNIX виде)

Для валидации чека по времени, передайте дату/время в UNIX виде, когда была создана транзакция. Мы проверим, что чек подходит по дате.

Response

В verdict находится итоговое решение нейросети по данному чеку. Если это пустой массив – то все проверки были пройдены.

Возможные значения type в элементах массива verdict:

  • PROOF_EXISTS – данный чек уже предоставлялся ранее по другой транзакции

  • INCORRECT – не является банковским чеком

  • WRONG_REQUISITES – неверные реквизиты для перевода

  • WRONG_BANK – неверный банк-получатель для перевода (для sbp)

  • WRONG_SENDER_BANK – неверный банк-отправитель

  • WRONG_STATUS – неуспешный перевод, либо в процессе

  • FAKE_PROOF – фейковый PDF-документ

  • WRONG_BYTES – несоответствие байтовой последовательности

  • UNKNOWN_FILE – неизвестный тип файла, либо данный тип не был включен в датасет (слишком минорный банк), либо является подделкой.

  • UNKNOWN_PRODUCER – продьюсер генератора не соответствует продьюсерам из белого списка банков.

  • WRONG_AMOUNT – неверная сумма

  • DATE_NOT_MATCH – неверная дата/время перевода

  • BANNED_PAYER – плательщик внесен в черный список, возможные пересечения по ФИО

{
    "id": 5,
    "available_requests_count": 140,
    "balance": 9.86,
    "transaction_id": "2",
    "json_data": {
        "type": "bank_receipt",
        "date": "11.08.2024 23:42:04",
        "sum": 100000,
        "comission": 0,
        "from_bank": "Сбербанк",
        "from_user": "Данил Алексеевич К.",
        "from_card": "2435",
        "currency": "RUB",
        "to_bank": "Сбербанк",
        "to_user": "Файзиддин Мирзохамадович З.",
        "to_requisite": "0627"
    },
    "attachment": {
        "url": "http://<api-domain>/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTEsInB1ciI6ImJsb2JfaWQifX0=--893477896ef0bc0632b31d638f1517c2f4df9353/4_5940438304401921794.pdf"
    },
    "verdict": [
        {
            "type": "WRONG_REQUISITES",
            "expected": [
                "4211"
            ],
            "got": [
                "0627"
            ]
        },
        {
            "type": "FAKE_PROOF",
            "expected": [],
            "got": [
                "WRONG_METADATA",
                "MODIFIED",
                "FONTS_NOT_MATCH",
                "WRONG_LOGO_POSITION"
            ]
        }
    ]
}

Last updated