Перейти к основному содержимому

Единый реестр субъектов малого и среднего предпринимательства

ПризнакЗначение
Уровень и охватФедеральный полный срез Единого реестра субъектов МСП: юридические лица, ИП и главы КФХ, состоящие в реестре на дату среза
Тип доступаПаспорт открытых данных ФНС со ссылкой на ZIP и архивом предыдущих срезов; программный API для этого набора не заявлен
Основные форматыZIP с XML в UTF-8; отдельные XSD и DOCX-описание формата
ОператорФНС России
Режим доступаОткрытое скачивание по типовым условиям использования открытых данных

Коротко: набор 7707329152-rsmp — машиночитаемый снимок реестра принадлежности к МСП. Для каждой записи он даёт категорию (микро/малое/среднее), идентификаторы ЮЛ или ИП, дату включения, код региона и виды деятельности. Это источник для обогащения контрагентов по ИНН, а не выписка ЕГРЮЛ/ЕГРИП и не реестр получателей мер поддержки.

Качество и верификация​

Проверка выполнена 2026-07-19 по паспорту ФНС, актуальным ZIP/XSD и DOCX-описанию формата, приложенному к паспорту.

ИзмерениеЗначение для этой карточки
Дата проверки (last_verified)2026-07-19
Полнота (data_completeness)Полная выгрузка реестра на дату среза: в XML один Документ представляет одного включённого субъекта МСП; для истории нужны соседние архивные срезы.
Машиночитаемость (machine_readability)ZIP с 7 347 XML по опубликованной XSD; схема и описание формата доступны отдельно.
Юридическая значимость (legal_significance)Официальная публикация ФНС. Состав сведений в паспорте отсылает к ч. 3 ст. 4.1 закона № 209-ФЗ.
Задержка обновления (update_lag)Паспорт не публикует отдельную величину лага; дата актуальности текущей выгрузки — 10.08.2026 при срезе 10.07.2026.
Глубина архива (archive_depth)На паспорте доступны ежемесячные ZIP с 10.08.2016 по 10.06.2026 плюс текущий срез 10.07.2026; старые версии XSD также перечислены.
Лицензия (license_or_terms)Типовые условия использования общедоступной информации в форме открытых данных: допускается коммерческое и некоммерческое использование без специальной лицензии; нужно указывать источник и не искажать сведения об обновлении.

Описание​

Паспорт идентифицирует набор как «Единый реестр субъектов малого и среднего предпринимательства», идентификатор — 7707329152-rsmp. Он содержит сведения о юридических лицах и индивидуальных предпринимателях, внесённых в реестр; состав сведений определён законом № 209-ФЗ. В примечании паспорта отдельно указано: сведения о среднесписочной численности с 10 января по 10 июня относятся к календарному году, предшествующему предыдущему, а в срезах с 10 июля по 10 декабря — к предыдущему календарному году.

Каждый ZIP — снимок состояния реестра: все проверенные XML-файлы текущего выпуска имеют в Документ/@ДатаСост значение 10.07.2026. Изменения состава между датами не помечаются отдельными событиями «включён» или «исключён»; их восстанавливают сравнением архивных срезов по ИНН/ОГРН(ИП).

В объём карточки не входят интерактивный поиск на rmsp.nalog.ru, выписки ЕГРЮЛ/ЕГРИП и реестр получателей поддержки МСП — это отдельный набор 7707329152-rsmppp.

Оператор​

Федеральная налоговая служба — каталог открытых данных.

URL и точки доступа​

Тип доступаURLФормат
Паспорт: метаданные, актуальный ZIP и архивhttps://www.nalog.gov.ru/opendata/7707329152-rsmpHTML
Текущий срез на 10.07.2026https://file.nalog.ru/opendata/7707329152-rsmp/data-10072026-structure-12052026.zipZIP, 2 111 054 656 байт (1,97 GiB)
XSD текущей структурыhttps://file.nalog.ru/opendata/7707329152-rsmp/structure-12052026.xsdXSD, 32 641 байт, UTF-8
Описание формата версии 4.06https://file.nalog.ru/opendata/7707329152-rsmp/VO_RRMSPSV_2_213_04_04_06.zipZIP: DOCX и XSD, 68 779 байт
Каталог всех наборов ФНСhttps://www.nalog.gov.ru/rn77/opendata/HTML

Не привязывайте обработчик к URL из второй строки: при новом срезе ФНС меняет имя ZIP. Актуальную ссылку надо получать из поля «Гиперссылка (URL) на набор» в паспорте; код ниже делает это автоматически.

Объекты данных и показатели​

  • Одна запись — элемент Документ: один субъект МСП на дату @ДатаСост; субъект — ЮЛ, ИП или глава КФХ.
  • Ключи субъекта — ИНН и ОГРН для ЮЛ либо ИНН и ОГРНИП для ИП/главы КФХ. Они передаются строками, чтобы не потерять ведущие нули и не выйти за безопасную точность числовых типов.
  • Классификация — категория МСП, признак вновь созданного субъекта, социального предприятия, среднесписочная численность для ЮЛ, регион и ОКВЭД.
  • Не публикуются: КПП, ОКТМО, полный почтовый адрес, выручка/доход, данные об участниках и явный признак исключения из реестра. В XSD объявлен общий тип КППТип, но в структуре Файл/Документ нет элемента или атрибута КПП.

Структура файла (XML-схема)​

  • Кодировка: XML-декларация фактических файлов — UTF-8; текущая XSD также имеет кодировку UTF-8.
  • Корневой элемент: Файл; обязательные атрибуты ИдФайл, ВерсФорм="4.06", ТипИнф="РЕЕСТРМСП", КолДок; ВерсПрог необязателен.
  • Повторяющаяся запись: Документ — один включённый в реестр субъект МСП. В текущем ZIP каждый проверенный XML-файл содержит КолДок="900" и 900 элементов Документ.
  • Вложенные группы: один из ОргВклМСП или ИПВклМСП; обязательный СведМН; необязательные ОКВЭД, лицензии, продукция и программы партнёрства.
  • XSD: structure-12052026.xsd — опубликована ФНС, не реконструирована.

Компактный скелет актуального формата:

<?xml version="1.0" encoding="UTF-8"?>
<Файл ИдФайл="VO_RRMSPSV_0000_9965_20260710_<GUID>"
ВерсФорм="4.06" ТипИнф="РЕЕСТРМСП" КолДок="900">
<ИдОтпр>
<ФИООтв Фамилия="-" Имя="-"/>
</ИдОтпр>
<Документ ИдДок="<GUID>" ДатаСост="10.07.2026" ДатаВклМСП="01.08.2016"
ВидСубМСП="1" КатСубМСП="1" ПризНовМСП="2" СведСоцПред="2" ССЧР="0">
<ОргВклМСП НаимОрг="..." НаимОргСокр="..." ИННЮЛ="4305070828" ОГРН="1054301505840"/>
<!-- либо для ИП/главы КФХ: <ИПВклМСП ИННФЛ="..." ОГРНИП="..."><ФИОИП .../></ИПВклМСП> -->
<СведМН КодРегион="43"><Регион Тип="обл." Наим="Кировская"/></СведМН>
<СвОКВЭД><СвОКВЭДОсн КодОКВЭД="47.2" НаимОКВЭД="..." ВерсОКВЭД="2014"/></СвОКВЭД>
<СвЛиценз НомЛиценз="..." ДатаЛиценз="...">...</СвЛиценз>
<СвПрод КодПрод="69.1" НаимПрод="Услуги юридические" ПрОтнПрод="2"/>
</Документ>
</Файл>

Проверенный ZIP содержит 7 347 XML-членов с именами вида VO_RRMSPSV_0000_9965_20260710_<GUID>.xml. Центральный каталог ZIP сообщает суммарный распакованный размер 22 282 684 594 байта (20,75 GiB). По первому, последнему и восьми распределённым XML-файлам КолДок=900; ориентир объёма — около 6,6 млн записей (7 347 × 900). Точное число при производственном импорте считайте итерацией, а не только умножением или доверием к атрибуту.

Поля набора​

Тип и обязательность — по XSD и DOCX «Описание формата предоставления сведений» версии 4.06; примеры — из выборочных XML текущего среза 10.07.2026. Обозначения: «обяз.» — обязателен, «опц.» — может отсутствовать, 0..N — повторяющаяся необязательная группа.

Путь/элементТипОбяз.СемантикаПримерИсточник значения / справочник
Файл/@ИдФайлстрока T(1-255)обяз.Имя XML-файла без расширенияVO_RRMSPSV_0000_9965_20260710_ff5129a4-...Формат ФНС; имя XML должно совпадать с атрибутом
Файл/@ВерсФормenum-строкаобяз.Версия логического формата4.06Константа XSD текущей версии
Файл/@ТипИнфenum-строкаобяз.Тип передаваемой информацииРЕЕСТРМСПКонстанта XSD
Файл/@ВерсПрогстрока T(1-40)опц.Версия программы формированияне присутствует в проверенных XMLПоле XSD; ТРЕБУЕТ ПРОВЕРКИ при появлении значения
Файл/@КолДокцелое N(9)обяз.Число Документ в конкретном XML-члене900Заголовок XML; подтверждать реальным подсчётом при импорте
Документ/@ИдДокстрока T(1-36)обяз.Технический идентификатор записи; формат рекомендует GUID7308286e-4005-48f9-b190-9f8b54a59985Технический ключ, не внешний идентификатор организации
Документ/@ДатаСостстрока ДД.ММ.ГГГГобяз.Дата состояния реестра, на которую сформирован срез10.07.2026Дата среза
Документ/@ДатаВклМСПстрока ДД.ММ.ГГГГобяз.Дата включения субъекта в реестр01.08.2016Реестр МСП
Документ/@ВидСубМСПenum-строка T(=1)обяз.Тип субъекта: 1 — ЮЛ, 2 — ИП, 3 — глава КФХ1Коды XSD / описание формата
Документ/@КатСубМСПenum-строка T(=1)обяз.Категория: 1 — микро, 2 — малое, 3 — среднее предприятие2Коды XSD / описание формата
Документ/@ПризНовМСПenum-строка T(=1)обяз.Вновь созданное ЮЛ / вновь зарегистрированный ИП: 1 — да, 2 — нет1Коды XSD / описание формата
Документ/@СведСоцПредenum-строка T(=1)обяз.Социальное предприятие: 1 — да, 2 — нет2Коды XSD / описание формата
Документ/@ССЧРцелое N(9)опц.; требуется для ЮЛСреднесписочная численность работников16Реестр МСП; см. примечание паспорта о годе данных
Документ/ОргВклМСП/@НаимОргстрока T(1-1000)обяз. для ЮЛПолное русское наименование ЮЛОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ "ВЛАД"ЕГРЮЛ / реестр МСП
.../ОргВклМСП/@НаимОргСокрстрока T(1-500)опц.Сокращённое русское наименование ЮЛООО "ВЛАД"ЕГРЮЛ / реестр МСП
.../ОргВклМСП/@ИННЮЛстрока из 10 цифробяз. для ЮЛИНН юридического лица4305070828ИНН; основной ключ склейки
.../ОргВклМСП/@ОГРНстрока из 13 цифробяз. для ЮЛОсновной государственный регистрационный номер ЮЛ1054301505840ОГРН
Документ/ИПВклМСП/@ИННФЛстрока из 12 цифробяз. для ИП/главы КФХИНН индивидуального предпринимателя504809811204ИНН; основной ключ склейки
.../ИПВклМСП/@ОГРНИПстрока из 15 цифробяз. для ИП/главы КФХОГРНИП субъекта314504826700015ОГРН
.../ИПВклМСП/ФИОИП/@Фамилия, @Имя, @Отчествостроки до 60 символовгруппа опц.ФИО ИП; отчество опциональноМАКСИМЕНКО, АЛЕКСАНДР, СЕРГЕЕВИЧРеестр МСП
Документ/СведМН/@КодРегионстрока из 2 цифробяз.Код субъекта РФ43Справочник субъектов РФ, не ОКТМО
.../СведМН/(Регион|Район|Город|НаселПункт)/@Тип, @Наимстроки до 50 / 255 символовопц.Наименование и тип части адреса; это не полный адресРегион Тип="обл." Наим="Кировская"Реестр МСП
Документ/СвОКВЭД/СвОКВЭДОсн/@КодОКВЭДстрока T(2-8)опц.Основной действующий ОКВЭД заявительного типа47.2ОКВЭД
.../СвОКВЭД/(СвОКВЭДОсн|СвОКВЭДДоп)/@НаимОКВЭДстрока T(0-1000)опц.Наименование основного или дополнительного ОКВЭДТорговля розничная пищевыми продуктами...ОКВЭД
.../СвОКВЭД/(СвОКВЭДОсн|СвОКВЭДДоп)/@ВерсОКВЭДenum-строкаобяз. в элементе ОКВЭДВерсия классификатора: 2001 или 20142014ОК 029-2001 / ОК 029-2014
Документ/СвОКВЭДотч/...та же структура, что СвОКВЭДопц.Действующие ОКВЭД отчётного типаСвОКВЭДОсн КодОКВЭД="93.29" ... ВерсОКВЭД="2014"ОКВЭД
Документ/СвЛицензсложный элемент, 0..Nопц.Действующая или приостановленная лицензия субъектаНомЛиценз="Л041-01162-50/00654518"Реестр МСП
.../СвЛиценз/@СерЛиценз, @НомЛиценз, @ВидЛицензстроки до 10 / 100 / 10 символовопц.Серия, номер и вид лицензииномер Л041-01162-50/00654518Реестр МСП
.../СвЛиценз/@ДатаЛиценз, @ДатаНачЛиценз, @ДатаКонЛиценз, @ДатаОстЛицензстроки ДД.ММ.ГГГГопц.Выдача, начало, окончание и приостановление лицензии31.05.2023, 31.05.2023Реестр МСП
.../СвЛиценз/@ОргВыдЛиценз, @ОргОстЛицензстроки до 500 символовопц.Орган, выдавший или приостановивший лицензиюМИНИСТЕРСТВО ЗДРАВООХРАНЕНИЯ МОСКОВСКОЙ ОБЛАСТИРеестр МСП
.../СвЛиценз/НаимЛицВДтекст T(0-1000), 0..Nопц.Лицензируемый вид деятельностиМедицинская деятельность ...Реестр МСП
Документ/СвПрод/@КодПродстрока T(1-18)обяз. в группеКод вида продукции69.1ОКПД 2, ОК 034-2014 (КПЕС 2008)
.../СвПрод/@НаимПродстрока T(1-1000)обяз. в группеНаименование вида продукцииУслуги юридическиеОКПД 2
.../СвПрод/@ПрОтнПродenum-строка T(=1)обяз. в группеОтнесение продукции: 1 — инновационная/высокотехнологичная, 2 — нет2Коды XSD / описание формата
Документ/СвПрогПарт/@НаимЮЛ_ПП, @ИННЮЛ_ПП, @НомДог, @ДатаДогстроки; ИНН 10 цифр, дата ДД.ММ.ГГГГгруппа 0..N; ИНН и дата обяз. в группеЗаказчик программы партнёрства, его ИНН, номер и дата договора о присоединенииТРЕБУЕТ ПРОВЕРКИ: группа не встретилась в девяти выборочных XML; поля подтверждены опубликованной XSDСправочник программ партнёрства / реестр МСП

ОргВклМСП и ИПВклМСП — взаимоисключающий выбор в Документ; не пытайтесь ожидать оба. У СвОКВЭД могут быть один основной и много дополнительных кодов; при выгрузке в плоскую таблицу вынесите их в дочернюю таблицу, иначе строка субъекта будет дублироваться.

Ключи связки с другими данными​

КлючЧем являетсяС чем соединятьПримечание
ОргВклМСП/@ИННЮЛ или ИПВклМСП/@ИННФЛИНН субъекта МСПпоставщик/заказчик после нормализации ИНН в XML-выгрузках ЕИС; получатель в реестре субсидий; получатель поддержки в 7707329152-rsmpppХраните строкой. ЮЛ имеют 10 цифр, ИП — 12; внешнее поле нужно приводить к тому же виду и проверять его семантику.
ОргВклМСП/@ОГРНОГРН юридического лицаЕГРЮЛ и корпоративные раскрытияПолезен как альтернативный ключ и для контроля совпадений; только для ЮЛ.
ИПВклМСП/@ОГРНИПОГРНИП ИП / главы КФХЕГРИП и наборы, в которых он раскрытТолько для ИП и глав КФХ; не заменяет ИНН при смешанном реестре.
СвОКВЭД.../@КодОКВЭДКод вида деятельностиОКВЭД, отраслевые группы в закупках и статистикеУчитывайте @ВерсОКВЭД: в текущих выборках встречается 2014, XSD допускает также 2001.
СведМН/@КодРегионДвухзначный код субъекта РФрегиональные срезы и справочник субъектов РФЭто не ОКТМО: для муниципального уровня нужна внешняя геокодировка.

Объёмы и версионирование​

  • Текущий ZIP: data-10072026-structure-12052026.zip, 2 111 054 656 байт; заголовок HTTP Last-Modified — 10.07.2026 13:25:52 GMT.
  • Состав ZIP: 7 347 XML-файлов, суммарно 22 282 684 594 байта после распаковки. В девяти проверенных файлах — по 900 Документ; ориентир — около 6,6 млн записей.
  • Имена: ZIP — data-DDMMYYYY-structure-DDMMYYYY.zip; XML — VO_RRMSPSV_0000_9965_YYYYMMDD_<GUID>.xml. В имени текущего ZIP первая дата — дата среза, вторая — дата версии структуры; не преобразуйте их автоматически в ISO, не разобрав порядок DDMMYYYY.
  • Версия формата: 4.06; актуальная XSD названа structure-12052026.xsd. Паспорт также сохраняет XSD 10062025, 10062023, 10032022, 10082021, 10102019, 08012016.
  • Архив: доступен прямо на паспорте: предыдущие ZIP с 10.08.2016 по 10.06.2026, плюс актуальная ссылка 10.07.2026. Это архив срезов, а не журнал изменений.

Периодичность обновления​

Паспорт не выводит отдельное текстовое поле «периодичность». Наблюдаемая по списку архивов периодичность — ежемесячный срез на 10-е число: data-10082016, data-10092016, …, data-10062026, текущий data-10072026. Для текущего выпуска паспорт фиксирует дату последнего изменения 10.07.2026, содержание «Обновление набора» и дату актуальности 10.08.2026.

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

Ограничения и особенности​

  • Не загружайте ZIP целиком в память: один актуальный архив занимает ~2,11 ГБ, XML после распаковки — ~22,28 ГБ. Обрабатывайте XML-члены последовательно и используйте iterparse.
  • Актуальный ZIP поддерживает HTTP Range (Accept-Ranges: bytes); это позволило проверить центральный каталог и отдельные XML-члены без скачивания 2,11 ГБ. Для полного импорта всё равно потребуется место на диске под ZIP либо собственная потоковая загрузка с сохранением архива.
  • В наборе нет КПП, ОКТМО и явной даты исключения. Отсутствие субъекта в новом срезе можно трактовать только после сравнения снимков, с учётом возможных реорганизаций и качества ключей.
  • Не путайте КодРегион со значением ОКТМО: это двухзначный код субъекта РФ, а не муниципальное образование.
  • ОКВЭД заявительного и отчётного типов находятся в разных ветках (СвОКВЭД и СвОКВЭДотч); не объединяйте их без поля-источника.

Примеры доступа​

1. Найти актуальный ZIP в паспорте и скачать на диск​

Проверено 2026-07-19: запрос к паспорту выбрал data-10072026-structure-12052026.zip; его HTTP-заголовок подтвердил размер 2 111 054 656 байт. Сам полный ZIP в рамках проверки не скачивался: ниже код делает это потоково на диск и требует около 2,1 ГБ свободного места.

from pathlib import Path
from urllib.parse import urljoin
from urllib.request import Request, urlopen

from lxml import html

PASSPORT = "https://www.nalog.gov.ru/opendata/7707329152-rsmp"
HEADERS = {"User-Agent": "Mozilla/5.0 (compatible; rsmp-downloader/1.0)"}

with urlopen(Request(PASSPORT, headers=HEADERS), timeout=60) as response:
page = html.fromstring(response.read())

# Первая ссылка data-*.zip в паспорте — поле «Гиперссылка (URL) на набор».
zip_hrefs = page.xpath(
"//a[contains(@href, '/opendata/7707329152-rsmp/data-') "
"and contains(@href, '.zip')]/@href"
)
if not zip_hrefs:
raise RuntimeError("ФНС не отдала актуальную ссылку data-*.zip в паспорте")

zip_url = urljoin(PASSPORT, zip_hrefs[0])
target = Path(zip_url.rsplit("/", 1)[-1])

with urlopen(Request(zip_url, headers=HEADERS), timeout=600) as response, target.open("wb") as output:
while chunk := response.read(1024 * 1024): # 1 MiB; весь ZIP не держится в RAM
output.write(chunk)

print(f"saved {target} ({target.stat().st_size:,} bytes) from {zip_url}")

2. Потоково разобрать все XML внутри ZIP​

Проверено 2026-07-19 на XML-члене VO_RRMSPSV_0000_9965_20260710_ff5129a4-bef7-4837-a344-eea98946edb8.xml актуального ZIP: XML валиден против structure-12052026.xsd; lxml.etree.iterparse извлёк ИНН, ОГРН(ИП), дату среза, категорию, регион и основной ОКВЭД. Функция ниже не строит DOM всего файла и освобождает обработанные элементы.

import json
from pathlib import Path
from zipfile import ZipFile

from lxml import etree


def get_attr(element, name):
return element.get(name) if element is not None else None


def flatten_document(document):
company = document.find("ОргВклМСП")
entrepreneur = document.find("ИПВклМСП") # также используется для главы КФХ
address = document.find("СведМН")
primary_okved = document.find("./СвОКВЭД/СвОКВЭДОсн")
fio = entrepreneur.find("ФИОИП") if entrepreneur is not None else None

return {
"record_id": document.get("ИдДок"),
"as_of": document.get("ДатаСост"),
"included_at": document.get("ДатаВклМСП"),
"subject_kind": document.get("ВидСубМСП"),
"msp_category": document.get("КатСубМСП"),
"is_new": document.get("ПризНовМСП"),
"is_social_enterprise": document.get("СведСоцПред"),
"employee_count": document.get("ССЧР"),
"inn": get_attr(company, "ИННЮЛ") or get_attr(entrepreneur, "ИННФЛ"),
"ogrn_or_ogrnip": get_attr(company, "ОГРН") or get_attr(entrepreneur, "ОГРНИП"),
"name": get_attr(company, "НаимОрг") or " ".join(
part for part in (get_attr(fio, "Фамилия"), get_attr(fio, "Имя"), get_attr(fio, "Отчество")) if part
),
"region_code": get_attr(address, "КодРегион"),
"okved_primary": get_attr(primary_okved, "КодОКВЭД"),
"okved_version": get_attr(primary_okved, "ВерсОКВЭД"),
}


def stream_records(zip_path):
with ZipFile(zip_path) as archive:
for member in archive.namelist():
if not member.endswith(".xml"):
continue
with archive.open(member) as source:
for _, document in etree.iterparse(
source, events=("end",), tag="Документ", huge_tree=True
):
row = flatten_document(document)
document.clear()
while document.getprevious() is not None:
del document.getparent()[0]
yield row


for number, row in enumerate(stream_records(Path("data-10072026-structure-12052026.zip")), 1):
print(json.dumps(row, ensure_ascii=False))
if number == 10:
break

3. Соединить нормализованный срез МСП с внешней таблицей по ИНН​

Проверено 2026-07-19: операция pandas.merge выполнена на двух строках, извлечённых из проверенного XML-среза, и тестовой внешней таблице. В примере contracts.csv — локально подготовленный контракт внешнего набора с колонкой supplier_inn; конкретное имя поля в сырой выгрузке ЕИС или другом источнике ТРЕБУЕТ ПРОВЕРКИ до нормализации. ИНН нельзя приводить к числу.

import pandas as pd

# rsmp_current.parquet формируется потоковым разбором выше; это один срез @ДатаСост.
msp = pd.read_parquet(
"rsmp_current.parquet",
columns=["inn", "as_of", "msp_category", "region_code", "okved_primary"],
)
contracts = pd.read_csv("contracts.csv", dtype={"supplier_inn": "string"})

required = {"supplier_inn"}
missing = required - set(contracts.columns)
if missing:
raise ValueError(f"Нормализуйте внешний набор: отсутствуют колонки {sorted(missing)}")

msp["inn"] = msp["inn"].astype("string").str.strip()
contracts["supplier_inn"] = contracts["supplier_inn"].astype("string").str.strip()

# Уникальность — ожидаемое свойство одного среза; fail-fast защищает от ошибочной склейки.
if msp["inn"].duplicated().any():
raise ValueError("В срезе есть повторяющиеся ИНН: разберите дубликаты до join")

joined = contracts.merge(
msp,
how="left",
left_on="supplier_inn",
right_on="inn",
validate="m:1",
indicator=True,
)
joined.to_parquet("contracts_enriched_with_msp.parquet", index=False)
print(joined["_merge"].value_counts(dropna=False))

Сводка для машинной обработки​

primary_url: "https://www.nalog.gov.ru/opendata/7707329152-rsmp"
formats: ["zip", "xml", "xsd", "docx"]
encoding: "UTF-8"
root_element: "Файл"
record_element: "Документ"
update_cadence: "наблюдаемая: ежемесячный срез на 10-е; отдельное расписание не заявлено в паспорте"
join_keys: ["inn", "ogrn", "ogrnip", "okved", "region_code"]
schema_source: "https://file.nalog.ru/opendata/7707329152-rsmp/structure-12052026.xsd (официальная XSD)"
current_release: "data-10072026-structure-12052026.zip"
current_release_date: "2026-07-10"
format_version: "4.06"
archive_members_xml: 7347
sample_size_records: 900
estimated_records: 6612300
file_size_bytes: 2111054656
uncompressed_size_bytes: 22282684594

Связанные страницы wiki​

  • Публичный портал реестра МСП (rmsp.nalog.ru) — интерактивная проверка субъекта и статистика по тому же реестру; не заменяет массовый XML-срез.
  • Единый реестр получателей поддержки МСП — другой реестр: факты полученной поддержки; присоединяется к этому набору по ИНН для региона и ОКВЭД получателя.
  • XML-выгрузки ЕИС закупок — внешний массив для сопоставления поставщиков/заказчиков с принадлежностью к МСП после нормализации ИНН.
  • Реестр субсидий — внешний массив для анализа получателей бюджетных субсидий с признаком МСП по ИНН.
  • ОКВЭД — справочник для интерпретации отраслевых кодов КодОКВЭД.
  • ИНН — основной идентификатор склейки в этом наборе.

Не путать с​

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

В: Можно ли узнать из XML, когда субъект исключён из реестра?

О: Нет. В текущей XSD нет даты или флага исключения. Наличие Документ означает присутствие в срезе на @ДатаСост; исчезновение нужно определять сравнением двух срезов по ИНН и ОГРН/ОГРНИП.

В: Есть ли в наборе КПП, ОКТМО и полный адрес?

О: Нет. У ЮЛ есть ИНН и ОГРН, у ИП — ИНН и ОГРНИП. Территория ограничена СведМН/@КодРегион и необязательными именованными частями адреса; КПП и ОКТМО не передаются.

В: Какой ключ выбрать для склейки с закупками?

О: Основной ключ — строковый ИНН (@ИННЮЛ для ЮЛ, @ИННФЛ для ИП/главы КФХ). ОГРН/ОГРНИП полезны как дополнительная проверка, но применимы только к соответствующему виду субъекта. Перед соединением сохраняйте длину ИНН и проверяйте смысл внешнего поля: поставщик, заказчик и получатель — разные роли.