Если вы отправляете декларацию 3-НДФЛ, то Вы работаете с файлом формата XML. С первого взгляда - это набор символов, но для налоговой — это строгая иерархия. Возможно кому-то информация будет полезна, чтобы понимать, где именно зарыта ошибка и почему не грузится файл xml декларации 3-НДФЛ.
С июля 2025 года, кроме 3-НДФЛ необходимо также загружать файлы xml со справками об оплате услуг. Структура файлов в них похожа на 3-НДФЛ, то есть информацию можно использовать и при ошибках в файлах xml справок об оплате услуг. Если у Вас есть необходимость загрузить справки об оплате услуг в личный кабинет налогоплательщика или на госулуги, то проверяйте также, нет ли ошибок в них.
Уровни в xml-файла декларации 3-НДФЛ
Уровень 0: Имя файла («Нулевая строка»)
Прежде чем открыть файл и прочитать первую строчку кода, система проверяет его название.
- В чем проблема: У налоговой жесткий стандарт наименования (например, NO_NDFL3_7700_7700_770123456789_...).
- Ошибка «Line 0» (строка 0): Если вы переименовали файл в «Декларация_Иванов.xml» или просто добавили лишнюю точку/пробел в название, робот выдает ошибку нулевой строки. Он просто отказывается признавать этот файл своим.
- Решение: Никогда не переименовывайте файл, выгруженный из программы. Его имя — это его первичный идентификатор. Также смотрите, чтобы при копировании и скачивании в название не было добавлено других символов (копия, 2 и т.д.)
Уровень 1: Теги (папки)
Весь XML состоит из тегов. Это слова в угловых скобках, которые работают как папки.
- <Файл> — это самая большая папка, в которой лежит вся декларация.
- <СведДох> — это папка поменьше, где лежат данные о доходах.
- Как это работает: У каждого тега есть начало (<Тег>) и конец (</Тег>). Если вы случайно удалите одну «скобочку», вся конструкция рухнет.
Уровень 2: Атрибуты (Свойства)
Внутри тега (внутри первой скобки) стоят атрибуты. Если «тег» — это папка, то атрибут — это название страницы в ней.
Атрибут уточняет, какая именно информация лежит внутри. Например, в теге <Файл ...> может быть несколько десятков атрибутов.
- Пример: ВерсПрог="5.21"
- Здесь: ВерсПрог — это название атрибута (версия программы).
Уровень 3: Значение атрибута (Данные)
Это то, что написано «на листке». Значение всегда стоит в кавычках сразу после знака «равно».
- Пример: В коде ИННФЛ="770123456789":
- ИННФЛ — это атрибут.
- "770123456789" — это значение атрибута.
Почему это важно для ошибок? Большинство ошибок во «второй строке» (где все данные) связаны именно со значениями атрибутов. Примеры ошибок:
- Лишние знаки: Если в фамилии (значении атрибута Фамилия) стоит лишний пробел в конце или случайная цифра.
- Формат: Если в атрибуте ДатаРожд (дата рождения) вместо точек стоят тире.
- Запрещенные символы: Если в названии компании (значении атрибута) вы использовали кавычки-елочки « », а XML понимает только обычные " ".
Всё это вместе: название файла, теги, атрибуты, значения – называются элементами файла xml
Строки (линии, line) и колонки (column)
Строка №1 (Пролог):
Обычно в 3-НДФЛ она имеет вид <?xml version="1.0" encoding="windows-1251"?> Это как техническая команда. Она всегда начинается с <?xml.... Это команда системе: «Я — файл формата XML, читай меня так-то».
Строка №2 (Корневой элемент):
Это всё содержимое вашей декларации. Она начинается с тега <Файл и тянется вправо на тысячи символов.
Важно: Почему строк всего две? Потому что переносы строк (нажатие Enter) — это лишние байты. Налоговая программа «склеивает» все данные (вашу фамилию, доходы, вычеты) в одну длинную вторую строку.
3. Колонки: Линейка для букв
Когда ошибка пишет "Колонка: 45" (Column Number: 45), то это не колонка в Excel. Это номер символа в строке, если считать слева направо.
- Column 1 — первый символ в строке.
- Column 6 — шестой символ.
Если ошибка говорит Строка 1, колонка 1 (Line 1, Column 1), значит, файл испорчен с самого первого знака. Если Строка 2, колонка 1500 (Line 2, Column 1500) — значит, робот «проехал» существенную часть декларации и где-то споткнулся (например, в фамилии встретил недопустимый символ вроде пробела).
4. Почему ошибки возникают на пустом месте?
Самая коварная вещь в XML — это невидимые символы. Вы открываете файл в Блокноте и видите: 1: <?xml... 2: <Файл...
Всё кажется идеальным. Но робот видит файл иначе. Для него пробел, невидимая метка кодировки или лишний перенос строки — это полноценные препятствия.
- Лишний пробел в начале сдвигает все колонки.
- Лишний Enter в начале сдвигает на одну все строки.
- Лишний Enter в конце создает «пустую строку», на которой робот может выдать ошибку «неожиданный конец документа».
Встречающиеся адреса ошибок:
- Строка 1, колонка 1-5 (Line 1, Col 1-5): Проблема с кодировкой или невидимыми символами (BOM) в начале. Необходимо пересохранить файл в кодировке windows-1251 (UTF-8).
- Строка 2, колонка 1-10 (Line 2, Col 1-10): Ошибка в самом начале данных. Скорее всего, файл поврежден при скачивании или открытии в браузере, возможно открыт в программе, которая автоматически ставит пустую строку вначале. Необходимо скачать файл или выгрузить новый, или удалить в файле лишние символы
- Строка 2, колонка «большое число» – (Line 2, Column «большое число»): Ошибка в данных (ИНН, адрес, ФИО). Где-то внутри текста затесался символ, который XML не понимает (например, знак & или нестандартные кавычки), или знак, не соответствующий xsd-схеме (смотрите ниже). Для решения надо сравнить символы с порядком заполнения (форматом файла обмена).
- Значение Атрибута такого-то недопустимое. Тут надо найти название атрибута в порядке заполнения декларации и сравнить с теми значениями, которые указаны как возможные.
- Недопустимое Значение. Ищем значение, которое выдало ошибку и сравниваем атрибут с форматом файла обмена в порядке заполнения 3-НДФЛ (xsd-схема xml файла)
- Недопустимый атрибут. Ищем атрибут, который недопустим. Возможно он случайно скопирован из предыдущей версии программы, а его отменили. Но в любом случае надо сверить, должен ли он быть в формате файла обмена 3-НДФЛ в порядке заполнения деклараций.
- Значение атрибута не соответствует данным в личном кабинете. Сверяем данные из личного кабинета с теми, что заполнены в декларации (в том числе должны соответствовать большие и маленькие буквы, пробелы и прочие нечитаемые символы)
- Ошибка в строке 0 (Line 0) – это ошибка в названии файла. Возможно он был переименован, добавлены слова «копия» или (2) при скачивании, или что-то другое. Возможно указан неправильный ИНН или код налоговой.
XSD-схема.
Если XML — это сам документ (наполненная декларация), то XSD (XML Schema Definition) — это шаблон или строгий «чертеж», по которому этот документ должен быть построен.
Для налоговой XSD-схема — это «эталонный метр». Когда вы загружаете 3-НДФЛ, сервер сначала берет вашу XML-декларацию и прикладывает её к XSD-схеме. Если хоть одна деталь не совпадает с чертежом, вылетает ошибка.
Зачем нужна XSD-схема?
Представьте, что вы заполняете анкету. XSD-схема — это правила заполнения этой анкеты, которые диктуют:
- Порядок полей: сначала фамилия, потом имя (а не наоборот).
- Обязательность: поле «ИНН» нельзя оставлять пустым.
- Тип данных: в поле «Дата» должны быть только цифры и точки, а не буквы.
- Длина: в ИНН должно быть строго 12 цифр для физлица.
Как это выглядит в коде?
В самом XML-файле может быть ссылка на эту схему в атрибутах первого тега (но не всегда). Она выглядит примерно так: xsi:noNamespaceSchemaLocation="ndfl3_5_02.xsd"
Это технический адрес, по которому программа понимает, с каким именно «чертежом» сравнивать ваш файл. Если вы подаете декларацию за 2025 год, а файл ссылается на схему 2023 года — налоговая его не примет. В последнее время схема в файлах декларации xml не указывается. Вероятно нужная xsd-схема определяется по году, за который предоставляется декларация 3-НДФЛ (или справка об оплате услуг).
Структура схемы: Атрибут и Значение
Имя атрибута - это то, как именно должно называться поле (например, только Фамилия, а не Lastname).
Формат значения - это то, какие данные можно вписать в кавычки.
Пример: В XSD-схеме прописано, что атрибут СумДох (сумма дохода) должен быть числом с двумя знаками после точки.
- Если вы напишете в XML СумДох="100.50" — проверка пройдена.
- Если вы напишете СумДох="Много" — ошибка XSD.
То есть XSD-схема — это как бы цензор. Она знает, как должна выглядеть идеальная декларация. Когда вы нажимаете "Отправить", налоговый робот берет вашу декларацию и сверяет каждый символ с этой схемой. Любое отклонение — и у декларации появляется статус «отклонено».
Что нельзя писать в декларации:
- Кавычки-ёлочки (« »): XML признает только прямые компьютерные кавычки (" "). Если вы скопировали название фирмы из интернета вместе с «ёлочками», файл не пройдет проверку.
- Амперсанд (&): Этот символ — технический код для XML. Если он стоит в названии компании (например, «H&M»), робот решит, что это начало новой команды, не найдет её конца и выдаст ошибку.
- Знаки «больше» и «меньше» (< >): Поскольку на них держится весь каркас файла (теги), их нельзя использовать внутри текста.
Почему парсер «мажет» с номером колонки?
Парсер - это программа (бот), которая читает файл и ищет ошибки.
Если вы случайно поставите пробел в самом начале файла, ошибка часто указывает не на 1-ю колонку, а на 6-ю или 7-ю. Почему? Потому что налоговый робот не ругается на сам пробел. Он читает пробел, затем читает слово <?xml, доходит до конца этого слова и только тогда понимает: «слово xml не может стоять после пробела». Колонка в ошибке — это место, где у робота закончилось «терпение», а не там, где началась опечатка. Поэтому проверяйте символы до указанной колонки (номера символа).
На канале «13 Копеек» я опубликовал несколько статей по конкретным ошибкам в файле xml (а также другим сбоям на сайте и в программах налоговой). Посмотреть их можно здесь:
https://dzen.ru/suite/d6f52d45-04ff-4bff-9b54-5db8e52a63f8
Если есть ещё какие-то ошибки при отправке, то пишите, пожалуйста, комментарии. Попробую найти решение.