Интеграция с «חשבוניות ישראל»: מספר הקצאה в вашей системе

Налоговая Израиля поэтапно снижает порог суммы, выше которого покупатель без номера распределения (מספר הקצאה) не может вычесть входной НДС. Каждое снижение добавляет в модель тысячи новых бизнесов, и у каждого возникает не бухгалтерский, а системный вопрос: откуда в счёте возьмётся номер.

Кратко

Номер распределения нужен, когда одновременно выполнены четыре условия: сумма счёта выше действующего порога, в счёте есть НДС, получатель является עוסק מורשה и он попросил номер. Без номера покупатель теряет вычет входного НДС, поэтому номер требует именно он. Технически номер запрашивается у налоговой через API с авторизацией OAuth2 до того, как счёт окончательно выписан, сохраняется в записи счёта и печатается на нём. Самое частое место отказа не API, а сценарии вокруг него: что делает система, когда налоговая не отвечает, когда номер не выдан, и кто это замечает.

Когда номер нужен, а когда нет

УсловиеЧто это значит для системы
Сумма выше порогаПорог задаётся без НДС и снижается по графику налоговой. Его нельзя зашивать в код: это параметр, который меняет бухгалтерия
В счёте есть НДССчета с нулевой ставкой и освобождённые от НДС номер не получают
Получатель עוסק מורשהНужен проверенный номер плательщика НДС клиента. Ошибка в нём приводит к отказу
Получатель попросил номерПопросить номер можно и для счёта ниже порога. Система должна уметь запрашивать его для любого счёта, а не только для счетов выше порога

Действующий порог и график его снижения публикует налоговая, а технические требования к программам собраны в её руководстве для производителей ПО. Для кассового метода учёта есть отдельное подтверждение на счёт сделки (חשבון עסקה), но вычет входного НДС по нему не делается.

Как это устроено технически

Налоговая предоставляет программный интерфейс с авторизацией OAuth2 в режиме «от имени пользователя». Это значит, что номер запрашивается от имени конкретного бизнеса, и бизнес должен выдать полномочия своим представителям в личном кабинете налоговой. Полномочие действует не дольше года, и его продление лучше поставить в календарь, а не узнавать о нём из сообщения об ошибке.

  • У каждого запроса должен быть уникальный идентификатор счёта. Повторная отправка того же счёта не должна создавать второй запрос.
  • В запросе указывается регистрационный номер учётной программы. Если система собственная и не зарегистрирована, передаётся служебное значение, и это стоит решить заранее.
  • Полученный номер сохраняется в записи счёта, печатается на документе и попадает в отчёт PCN874.
  • Счёт, дата которого старше двух недель, налоговая не примет: дату надо проверять до отправки.
  • Для проверки есть тестовая среда (sandbox) и пакетный запрос для нескольких счетов сразу.

Ошибка приходит как успех. При отказе API отвечает HTTP-кодом 200, а признаком отказа служат нулевой номер подтверждения и список кодов ошибок в теле ответа. Интеграция, которая проверяет только код ответа, запишет отказ как выданный номер. Это первое, что мы проверяем в чужой интеграции.

Когда налоговая не отвечает

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

  1. Бизнес заранее заказывает небольшой запас аварийных номеров. Каждый номер одноразовый.
  2. Использовать аварийный номер можно только после нескольких неудачных попыток получить обычный, и эти попытки надо записывать в журнал.
  3. После восстановления связи каждый счёт с аварийным номером отправляется в налоговую через отдельный адрес API.
  4. Если номер не выдали из-за технического сбоя в системах налоговой, директор вправе разрешить вычет и без него. Журнал неудачных попыток в этом случае и будет доказательством.

Отдельный сценарий: налоговая может отказать в номере, если подозревает незаконный счёт. Тогда приходит уведомление с вариантами: отменить запрос, провести сделку без номера, перенести обязанность по НДС на покупателя или обратиться в контрольный центр. Система должна показать этот отказ человеку, а не молча повторять запрос.

Где обычно встраиваем

СистемаЧто меняется
ERP и учётная программаЗапрос номера при выписке, хранение, печать, отчёт PCN874. Часто достаточно обновить программу у поставщика, если она зарегистрирована
Собственный биллингВесь цикл: авторизация, запрос, журнал, аварийные номера, повторная отправка. Здесь ошибок больше всего
Интернет-магазин B2BПроверка номера плательщика НДС клиента при оформлении, запрос номера до отправки счёта
Связка магазина и ERPНужно решить, кто запрашивает номер. Если это делают обе системы, номера задвоятся, если ни одна, счёт уйдёт без номера

Что мы делаем

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

Вопрос о кредит-нотах (חשבונית זיכוי) решаем вместе с вашим бухгалтером: технический документ налоговой и практические руководства расходятся по этому вопросу, и система должна следовать позиции, которую бухгалтерия готова защищать.

Частые вопросы

Что такое מספר הקצאה?

Девятизначный номер, который налоговая Израиля выдаёт на налоговый счёт. Без него покупатель не может вычесть входной НДС по счёту выше действующего порога.

Какой сейчас порог?

Порог считается без НДС и снижается по графику налоговой. Актуальное значение лучше брать на сайте налоговой, а в системе держать как настраиваемый параметр, а не как число в коде.

Что делать, если API налоговой не работает?

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

Почему интеграция «работает», а номеров нет?

Чаще всего потому, что отказ приходит с HTTP-кодом 200. Признак отказа в теле ответа: нулевой номер подтверждения и коды ошибок. Если система смотрит только на код ответа, она считает отказ успехом.

Нужно ли менять ERP?

Обычно нет. Если программа зарегистрирована и поставщик выпустил обновление, достаточно его. Работа нужна там, где счета выписывает собственная система или где несколько систем выписывают счета одному клиенту.

С чего начать

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

Написать мне

По теме: Интеграции, Аудит систем, созданных с помощью AI

SLAtech LTD