Этап 1 и этап 2 — это разные задачи
Этап 1 (Generation, формирование) требовал структурированного электронного счёта-фактуры с QR-кодом и фиксированным набором реквизитов. Ему удовлетворяла любая система выставления счетов, способная сформировать соответствующий документ, и никакие данные не покидали Вашу компанию. Этап 2 (Integration, интеграция) — работа совсем другого рода: теперь Ваша система обращается к платформе ZATCA по каждому выставленному счёту, и налоговый орган отвечает.
Именно это изменение и застаёт команды врасплох. Реализация этапа 1 — это формат документа. Реализация этапа 2 — это интеграция, от доступности которой зависит бизнес: криптографические ключи, сертификаты с ограниченным сроком действия и внешняя зависимость, которая стоит между Вашим кассиром и напечатанным счётом.
Клиринг и передача сведений — это разные процессы
Стандартные налоговые счета-фактуры — документы между компаниями (B2B) — проходят клиринг (clearance). Вы направляете счёт в ZATCA до того, как передаёте его покупателю, и юридически действительным налоговым счётом-фактурой он становится только после того, как ZATCA его подтвердит и вернёт подписанную копию. Если клиринг не пройден, счёта у Вас пока нет.
Упрощённые налоговые счета-фактуры — как правило, кассовые чеки в продажах конечным потребителям (B2C) — проходят через передачу сведений (reporting). Вы сразу оформляете и выдаёте чек, а затем сообщаете о нём в ZATCA в пределах установленного срока. Покупатель никогда не ждёт ответа сети.
Практический вывод: Ваша касса и Ваше выставление счетов B2B должны по-разному вести себя при сбоях. Касса в магазине обязана продолжать продавать, когда связь пропала, и сверяться позже. Счёт B2B нельзя считать выставленным, пока он не прошёл клиринг.
Криптографические элементы — по порядку
Интеграция — это по большей части последовательность учётных данных. Каждый шаг зависит от предыдущего, и на каждом внедрение может застрять:
- Пара ключей и запрос на подпись сертификата (CSR), формируемые для каждого устройства или каждой единицы выставления счетов, с регистрационными данными плательщика НДС именно в тех полях, которые ожидает ZATCA.
- Сертификат соответствия (compliance certificate), который получают, направив этот CSR вместе с одноразовым паролем из портала ZATCA. Именно этот шаг срывается чаще всего, потому что одноразовый пароль действует недолго.
- Проверки соответствия: образцы счетов-фактур, кредит-нот и дебет-нот каждого типа, который Вы собираетесь выставлять, — все они должны быть приняты, прежде чем Вам разрешат двигаться дальше.
- Рабочий сертификат (production certificate), которым и подписываются реальные документы. У него есть срок действия, и за ним должен следить конкретный ответственный задолго до того, как этот срок наступит.
Что должен содержать сам счёт
Документ, который Вы направляете, — это XML в формате UBL 2.1, а не PDF. В нём находятся элементы, делающие счёт проверяемым: криптографический хеш предыдущего счёта, который связывает Ваши документы в цепочку, так что удалённый или вставленный счёт можно обнаружить; цифровая подпись; и QR-код с наименованием продавца, номером плательщика НДС, отметкой времени, итоговой суммой, суммой НДС и данными подписи в установленной двоичной кодировке.
Читаемый человеком документ по-прежнему важен — покупателю нужен документ, который можно подшить в дело, — поэтому большинство реализаций формирует PDF/A-3 со встроенным подписанным XML: один файл, который одновременно читается человеком и проверяется машиной.
Сбои, которые стоит предусмотреть заранее
Любая система, работавшая с этим в реальной эксплуатации, сталкивалась с одним и тем же коротким списком, и каждый пункт в нём — это проектное решение, а не ошибка, которую исправят потом:
- ZATCA недоступна или отвечает медленно. Упрощённые счета должны вставать в очередь и передаваться позже; стандартный счёт нельзя просто выставить в обход. Решите заранее, что в этот момент увидит кассир.
- Истекает срок действия сертификата. Продление — это плановая эксплуатационная задача, а не инцидент: с просроченным рабочим сертификатом выставление счетов полностью останавливается.
- Счёт отклонён из-за поля, которое Ваша ERP допускает, а ZATCA — нет: нестандартные единицы измерения, скидки или строки доставки, оформленные так, что сопоставление с XML не может их выразить.
- Цепочка хешей разрывается после восстановления из резервной копии или ручной правки базы данных, и каждый следующий счёт наследует эту проблему.
Что спросить у поставщика
Заявления о соответствии ничего не стоят. Полезные вопросы конкретны: какие типы документов прошли у Вас клиринг и передачу сведений в реальной эксплуатации, а не в тестовой среде? Что происходит с продажей, если ZATCA не отвечает? Кто продлевает сертификат и что его об этом предупреждает? Смогу ли я выгрузить подписанные XML и цепочку хешей, если уйду? У поставщика, который действительно работал с этапом 2, найдутся конкретные ответы, потому что каждый из этих пунктов однажды стоил ему целого дня.
Частые вопросы
Чем этап 1 ZATCA отличается от этапа 2?
Этап 1 (Generation) требовал структурированного электронного счёта-фактуры с QR-кодом и фиксированным набором реквизитов, и никакие данные не покидали Вашу компанию. Этап 2 (Integration) — работа другого рода: Ваша система обращается к платформе ZATCA по каждому выставленному счёту, и налоговый орган отвечает. Этап 1 — это формат документа, а этап 2 — интеграция, от доступности которой зависит бизнес, с криптографическими ключами, сертификатами с ограниченным сроком действия и внешней зависимостью между кассиром и напечатанным счётом.
Чем клиринг отличается от передачи сведений на этапе 2?
Стандартные налоговые счета-фактуры — документы B2B — проходят клиринг: Вы направляете счёт в ZATCA до передачи покупателю, и юридически действительным он становится только после подтверждения ZATCA и получения подписанной копии. Упрощённые налоговые счета-фактуры — как правило, кассовые чеки — проходят передачу сведений: Вы сразу оформляете и выдаёте чек, а затем сообщаете о нём в ZATCA в пределах установленного срока. Покупатель никогда не ждёт ответа сети.
Что происходит на кассе, если ZATCA недоступна или отвечает медленно?
Два процесса требуют разного поведения при сбоях, и это проектное решение, а не ошибка, которую исправят потом. Упрощённые счета должны вставать в очередь и передаваться позже, чтобы касса продолжала продавать при потере связи и сверялась впоследствии. Стандартный счёт нельзя просто выставить в обход, поэтому заранее решите, что увидит кассир.
Что на самом деле должен содержать счёт на этапе 2?
Направляемый документ — это XML в формате UBL 2.1, а не PDF. В нём содержатся криптографический хеш предыдущего счёта, который связывает документы в цепочку и позволяет обнаружить удалённый или вставленный счёт, цифровая подпись и QR-код с наименованием продавца, номером плательщика НДС, отметкой времени, итоговой суммой, суммой НДС и данными подписи в установленной двоичной кодировке. Поскольку покупателю по-прежнему нужен документ для архива, большинство реализаций формирует PDF/A-3 со встроенным подписанным XML.
Что спросить у поставщика об интеграции по этапу 2?
Заявления о соответствии ничего не стоят, поэтому задавайте конкретные вопросы. Какие типы документов прошли клиринг и передачу сведений в реальной эксплуатации, а не в тестовой среде? Что происходит с продажей, если ZATCA не отвечает? Кто продлевает рабочий сертификат и что предупреждает его до истечения срока? Смогу ли я выгрузить подписанные XML и цепочку хешей, если уйду?
Это руководство носит общий информационный характер и не является налоговой, бухгалтерской или юридической консультацией. Правила различаются в разных странах и со временем меняются; прежде чем действовать, уточните актуальное положение в своём налоговом органе или у квалифицированного консультанта.
Готовы вести бизнес в едином рабочем пространстве?