Я собрал чат-бота по налогу у источника в Казахстане. Где он помогает, а где ему нельзя верить
Практика · Искусственный интеллект в налоговой функции

Я собрал чат-бота по налогу у источника в Казахстане. Где он помогает, а где ему нельзя верить

BEPS AcademyПубликация подготовлена Аналитическим центром Академии BEPS
Рустам Вахитов
Рустам Вахитовавтор статьи, специалист по международному налогообложению, сооснователь Академии BEPS
Бухгалтер платит иностранной компании за услуги, роялти или проценты. Перед оплатой нужно ответить на три вопроса: облагается ли выплата налогом у источника в Казахстане, по какой ставке и можно ли её снизить по соглашению об избежании двойного налогообложения. С 1 января 2026 года действует новый Налоговый кодекс, и привычные ответы приходится перепроверять.

Эти вопросы приходят постоянно и почти всегда однотипны. Поэтому я решил собрать чат-бота, который отвечает на них по закону, соглашению и практике и ссылается на источники.

У меня уже был такой бот для выплат из России. Его я собрал примерно за полтора часа. Казахстанского бота мы собирали в июле 2026 года вместе с коллегами, налоговыми специалистами из Казахстана и России, на четырёх практических занятиях по ИИ. Каждый шаг делали в прямом эфире, вместе с ошибками.

Что умеет бот

У бота два режима.

Калькулятор. Пользователь выбирает категорию получателя и вид дохода. Бот показывает ставку по Налоговому кодексу РК и отдельно режим по соглашению Казахстана с Россией. Пример: российская компания оказывает услуги на территории Казахстана. Такой доход относится к доходам из казахстанских источников (ст. 679 НК РК) и по общему правилу облагается по ставке 20% (ст. 682). Ответ появляется сразу: бот ничего не ищет, а берёт значение из заранее подготовленной таблицы.

Чат. Можно задать вопрос своими словами. Бот отвечает по загруженной базе и называет источник. На тестовый вопрос о постоянном учреждении (нужно ли включать в доход казахстанского ПУ выручку, которую головной офис в России получил от казахстанских клиентов за те же услуги) бот ответил правильно и сослался на казахстанское судебное дело иностранной IT-компании.

Охват сейчас узкий: казахстанский налоговый агент, получатель – юридическое лицо, соглашение – только Казахстан–Россия. Физлица и ИПН сознательно исключены.

В июле доступ к боту участникам занятий давали для теста на пару дней из-за расходов на запросы.

Как мы его собирали

Сначала таблицы, потом бот. Если просто загрузить в модель кодекс на тысячу страниц и задавать вопросы, вероятность ошибки растёт с объёмом текста. Поэтому сначала мы сделали три компактные таблицы:

  • матрица налога у источника по НК РК: виды доходов, категории получателей, ставки, статьи, освобождения;
  • матрица по соглашению Казахстан–Россия с учётом Многосторонней конвенции (MLI);
  • таблица судебной практики Казахстана.

Как появилась первая матрица. Я надиктовал задачу голосом. ChatGPT превратил её в техническое задание, а затем провёл по нему глубокое исследование (deep research) с загруженным текстом кодекса. Вместо тысячи страниц получился отчёт примерно на 19 страниц. По этому отчёту и кодексу Claude собрал матрицу в CSV. Затем её проверил Codex от OpenAI. Об этой проверке – ниже.

Платформа и модель. Бота собирали параллельно три ИИ-агента для программирования: Antigravity от Google, Claude Code и Kimi. Все работали по одним материалам. Готовые версии развернули в Google Cloud. Калькулятор работает детерминированно, по таблице. Чат отвечает с помощью модели Gemini 2.5 через Vertex AI.

На каждый вопрос бот сначала находит в базе подходящие фрагменты (поиск по словам запроса), а модель отвечает только по ним. Версия Claude Code находила ответ среди 195 таких фрагментов. Kimi до конца занятия так и не успел развернуть своего бота.

База знаний (версия Claude Code):

  • 44 статьи НК РК о налоге у источника, дословно;
  • матрица ставок после перекрёстной проверки;
  • консолидированный текст СИДН Казахстан–Россия с положениями MLI;
  • 9 судебных дел Казахстана по применению соглашений.

Тестирование. Я задавал боту вопросы, правильные ответы на которые знал заранее. Найденные ошибки вместе со скриншотом отправлял агенту и просил его пересобрать бота, самому проверить исправление и только потом отчитаться.

Где ИИ ошибался

Случай 1. В матрице пропал целый вид дохода

Codex проверил матрицу Claude по тексту кодекса и нашёл пропуск: в ней не было подпункта 34 п. 1 ст. 679 НК РК. Это доход в виде безвозмездно полученного имущества, работ и услуг.

Ошибка пришла из глубокого исследования. Там подпункт 34 отнесли к доходам физических лиц, хотя исключение внутри него касается только имущества, которое физлицо-нерезидент безвозмездно получило от физлица-резидента. К юридическим лицам норма применяется, ставка – 20%. Claude унаследовал ошибку от первоисточника.

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

Случай 2. Сертификата резидентства «достаточно»

На занятии я проверял бота, которого собрал Antigravity. По ставке он ответил верно, но в условиях применения соглашения указал только сертификат налогового резидентства. Это ошибка с дорогими последствиями.

В соглашение Казахстан–Россия через MLI встроены упрощённое положение об ограничении льгот (sLOB) и тест основной цели (PPT). По sLOB льгота доступна квалифицированному лицу: например, компании, не менее 50% акций которой принадлежит резидентам того же государства. Есть и запасные тесты: активная предпринимательская деятельность, эквивалентные бенефициары. Тест основной цели отдельно отсекает схемы, созданные ради льготы. Бухгалтер, который поверил бы такому ответу, применил бы пониженную ставку там, где оснований нет.

Вторая проблема всплыла там же: чат на сложный вопрос выдал техническую ошибку. Я отправил агенту оба замечания со скриншотом. После пересборки чат заработал и ответил на вопрос о ПУ правильно.

Случай 3. Соглашение, о котором модель не знает

На демонстрации российского бота я спросил о ставке при оплате морской перевозки нидерландской компании. Бот уверенно дал неверный ответ: он не учёл старое советско-нидерландское соглашение по морскому транспорту. Бот знает только то, что лежит в его базе.

Как мы проверяем ответы

  • Таблица вместо памяти модели. Ставку бот берёт из матрицы, а не придумывает. Модель только находит нужную клетку.
  • Одна модель проверяет другую. Матрицу Claude проверял Codex по тексту кодекса. Я прошу каждую модель написать отчёт о своей работе так, чтобы другой было легко его проверить.
  • Проверка самой сборки. Claude Code перед началом работы заметил, что черновой проект использует устаревшую модель Gemini 1.5 и может подгрузить непроверенную версию матрицы. Обе проблемы исправили до запуска.
  • Каждый вывод – со статьёй. Номера статей сверяю с официальным текстом кодекса на adilet.zan.kz, а соглашение – с консолидированным текстом MLI. Сам консолидированный текст прямо оговаривает, что источником права не является.
  • Наводящие вопросы. Спрашиваю модель, смогла ли она прочитать файл. PDF-скан без распознанного текста модель может молча пропустить и выдать ответ так, будто всё прочитала.
  • Контрольные вопросы с известным ответом. Бот не допускается к работе, пока не ответит на них правильно.

Что бот не решает

  • окончательную квалификацию дохода в спорной ситуации;
  • применение льготы по СИДН без проверки документов: сертификата резидентства, статуса фактического получателя дохода, тестов sLOB и PPT;
  • ситуацию, когда агент платит налог за свой счёт, не удерживая его из дохода нерезидента. По п. 3 ст. 698 НК РК соглашение в этом случае не применяется, и такие нюансы бот должен проговаривать, а не угадывать;
  • оценку налогового риска для конкретного бизнеса;
  • ответственность перед клиентом и налоговым органом.

Вывод

Бот не умнее налогового консультанта. Он быстрее находит нужную клетку в таблице, которую мы заранее составили и проверили. Поэтому основная работа не в коде, а в матрице: разбить задачу на части, дать каждую часть проверить второй модели и сверить спорные места с кодексом. А ставку у источника на практике определяют условия и документы, и их по-прежнему проверяет специалист.

Академия BEPS рекомендует: