Как мы автоматизировали проверку контрагентов: должная осмотрительность за секунды

От ручной проверки каждого контрагента — к автоматическому мониторингу сотен компаний. История создания сервиса должной осмотрительности: интеграция с ВОК API, парсинг PDF-отчётов, 30-дневный кэш и ежедневный мониторинг по данным 1С.

Как мы автоматизировали проверку контрагентов: должная осмотрительность за секунды

Вы участвуете в тендере. Подготовили документы, рассчитали цену, заполнили заявку. Осталось проверить заказчика: не банкрот ли он, нет ли судебных дел, платит ли по контрактам. И организатора торгов — тоже проверить.

Что делает менеджер? Открывает сайт налоговой — проверяет ИНН. Идёт на сайт арбитражных судов — ищет дела. Заходит в СБИС — смотрит надёжность. Скачивает выписку из ЕГРЮЛ. Проверяет учредителей. Смотрит залоги, лицензии, проверки контролирующих органов. На одного контрагента — 20–30 минут.

А если контрагентов двадцать? А если нужно проверять всех, с кем работает компания, — сотни ИНН из бухгалтерии?

Мы решили: машина может собирать эти данные автоматически. Человек должен принимать решение — работать с контрагентом или нет. А не тратить полдня на сбор информации.

Откуда берутся данные: ВОК API

В России есть система «Всё о компаниях» (ВОК) — часть СБИС. Это агрегатор данных из десятков государственных источников: налоговая, арбитражные суды, Росреестр, ФССП, реестр банкротств и другие.

Один запрос по ИНН — и вы получаете:

  • Основные реквизиты — название, адрес, ОКВЭД, статус, директор
  • Индекс надёжности — числовая оценка от 0 до 100
  • Судебные дела — арбитражные процессы с суммами и статусами
  • Госконтракты — история участия в закупках
  • Учредители — структура владения
  • Банкротство — текущие процедуры, если есть
  • Залоги, лицензии, проверки — дополнительные сведения

Кроме JSON-данных, API отдаёт PDF-отчёты: заключение о надёжности, финансовый отчёт, бизнес-справка и выписка из ЕГРЮЛ. Четыре документа на каждого контрагента — готовые к распечатке и подшивке в дело.

Автоматика для тендеров: проверяем заказчика и организатора

В нашей системе управления тендерами каждый тендер имеет статус. Когда тендер переходит в стадию «Расчёт» — значит, менеджер начал готовить предложение. В этот момент ему нужны данные о заказчике и организаторе торгов.

Мы сделали так: фоновая задача запускается каждые 10 минут. Она находит все тендеры в статусе «Расчёт» и выше, у которых ещё нет проверки контрагентов. И запускает проверку автоматически.

Менеджер ничего не делает. Открывает тендер — а данные уже там: индекс надёжности заказчика, судебные дела, финансовое состояние. Зелёный индикатор — всё в порядке. Красный — стоит задуматься.

Если данные загрузились некорректно или нужно обновить — кнопка «Перепроверить» запускает повторную загрузку. Три попытки с интервалом в 60 секунд — на случай временных сбоев API.

Ключевое решение

30-дневный кэш для экономии квоты API. Данные о контрагенте меняются редко — нет смысла запрашивать одного и того же поставщика каждый день. При повторном запросе в течение 30 дней система отдаёт данные из кэша мгновенно.

Мониторинг по данным 1С: проверяем всех, с кем работаем

Тендеры — это одно. Но у компании есть текущие контрагенты: поставщики, подрядчики, клиенты. Их тоже нужно проверять — это требование налогового законодательства о должной осмотрительности.

Мы подключили данные из 1С. Из кассовых операций (cashflow) система автоматически собирает уникальные ИНН контрагентов. Только юридические лица — 10-значные ИНН.

Ежедневная фоновая задача проходит по этому списку:

  1. Собирает ИНН из данных 1С
  2. Фильтрует: убирает тех, кого проверяли менее 30 дней назад
  3. Пакетом до 30 ИНН за один запуск — чтобы не перегрузить API
  4. Загружает данные из ВОК: реквизиты, надёжность, суды, финансы
  5. Скачивает 4 PDF-отчёта на каждого контрагента
  6. Парсит PDF: извлекает плюсы и минусы из заключения о надёжности
  7. Сохраняет всё в базу с историей

Результат: дашборд, на котором видны все контрагенты компании с актуальными данными о надёжности. Изменился индекс надёжности — видно в ленте изменений. Появилось судебное дело — сразу заметно.

Парсинг PDF: извлекаем суть из отчётов

ВОК API отдаёт PDF-отчёт о надёжности. Внутри — структурированное заключение: факторы «за» и факторы «против» с числовыми оценками.

Примеры факторов «за»:

  • Компания работает более 10 лет (+15 баллов)
  • Нет судебных дел в качестве ответчика (+10 баллов)
  • Положительная динамика выручки (+8 баллов)

Примеры факторов «против»:

  • Задолженность по налогам (−20 баллов)
  • Массовый адрес регистрации (−12 баллов)
  • Частая смена директоров (−8 баллов)

Мы парсим PDF через pdfplumber и извлекаем эти данные в структурированный формат. На странице контрагента менеджер видит не абстрактное число 77.5, а конкретные причины: почему надёжность именно такая, какие риски, какие плюсы.

Кэширование: экономим квоту, ускоряем ответ

ВОК API — платный. Каждый запрос стоит денег, и у каждой компании есть квота. Запрашивать одного и того же контрагента каждый раз заново — расточительно.

Мы реализовали двухуровневый кэш:

  • Кэш поиска — результаты поиска по ИНН/ОГРН/названию хранятся 30 дней. Повторный поиск того же контрагента — мгновенный ответ из базы.
  • Кэш данных — полные данные ВОК (JSON + PDF) хранятся 30 дней. Если контрагент уже проверен — данные отдаются из кэша.

При этом всегда есть возможность принудительно обновить данные — кнопка «Обновить» игнорирует кэш и делает свежий запрос к API.

Автоматическая очистка удаляет устаревшие записи. Статистика кэша показывает: сколько запросов обслужено из кэша, сколько — из API, какой процент попаданий.

Интерфейс: три экрана для работы с контрагентами

Дашборд — общая картина: статистика проверок, последние изменения надёжности, недавние проверки. Поисковая строка для быстрой проверки нового контрагента по ИНН или названию.

Список контрагентов — все контрагенты компании с индексами надёжности, датами последней проверки, суммами по кассовым операциям. Фильтрация, сортировка, пагинация.

Карточка контрагента — полная информация: реквизиты, индекс надёжности с расшифровкой (плюсы/минусы), судебные дела, учредители, госконтракты. Кнопки для скачивания PDF-отчётов. История всех проверок с датами.

Обработка ошибок: когда API недоступен

Внешние API ненадёжны. СБИС может быть недоступен, токен авторизации — протухнуть, квота — закончиться. Каждый из этих сценариев обработан.

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

Повторные попытки. Фоновые задачи настроены на 3 попытки с интервалом 60 секунд. Временный сбой API не приводит к потере данных.

Валидация результатов. Функция is_legal_check_passed() проверяет: данные загружены, хотя бы один контрагент имеет статус «success», ответ ВОК содержит полные реквизиты. Только после всех проверок — зелёная галочка.

Что получилось в итоге

Автоматическая проверка контрагентов по данным из 10+ государственных источников. Фоновая загрузка данных для тендеров — менеджер открывает карточку, а информация уже там. Ежедневный мониторинг контрагентов из 1С — до 30 проверок в день без участия человека. 4 PDF-отчёта на каждого контрагента: надёжность, финансы, бизнес-справка, выписка ЕГРЮЛ. Парсинг факторов надёжности из PDF — конкретные причины оценки, а не абстрактное число. 30-дневный кэш для экономии квоты API. Три экрана: дашборд, список контрагентов, детальная карточка.

Принципы, на которых мы строили сервис

  1. 1
    Проверка должна быть незаметной

    Менеджер не должен нажимать кнопку «Проверить контрагента». Данные загружаются автоматически, когда они нужны — при переходе тендера в стадию расчёта.

  2. 2
    Экономия API-квоты — архитектурное решение

    30-дневный кэш, пакетная обработка по 30 ИНН, фильтрация уже проверенных — каждый запрос к внешнему API должен быть оправдан.

  3. 3
    Данные должны быть объяснимы

    Индекс надёжности 77.5 ничего не значит без контекста. Парсинг PDF-отчётов даёт конкретику: какие факторы повысили оценку, какие — понизили.

  4. 4
    История важнее текущего состояния

    Каждая проверка сохраняется в историю. Можно посмотреть, как менялась надёжность контрагента: когда появились суды, когда изменился директор, когда упала оценка.

Должная осмотрительность — это не бюрократия. Это защита бизнеса от рисков: недобросовестных контрагентов, налоговых претензий, убытков по контрактам.

Мы не заменили юриста и не отменили ручную проверку в сложных случаях. Но типовая проверка — та, что занимала 20–30 минут — теперь происходит автоматически. Человек смотрит на результат и принимает решение.

Сотни контрагентов. Ежедневный мониторинг. Ноль ручной работы.

Использованные технологии

Хотите применить это в своём бизнесе?

Обсудим вашу задачу и предложим решение — бесплатная консультация 30 минут