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

Каталог идентификаторов

Когда пригодится — когда нужен технический идентификатор, который должен выглядеть настоящим и пройти проверку формата: UUID, e-mail, IBAN, номер платёжной карты, налоговый номер или номер документа с контрольной суммой — и всё это без ручного выдумывания и без копирования настоящего. Каждый адрес на этой странице — значение для type="template"; атрибут value — это адрес через точку, выбирающий конкретный идентификатор.

Это полный справочник. Обзорную экскурсию по тому же генератору — данные о людях, даты, локализация — см. в генераторе template. Для семейств «человек/имя/дата» лучше начинать именно с той страницы; здесь же — исчерпывающий каталог технических идентификаторов.

Значения приведены для примера

Каждое значение ниже получено с фиксированным seed, поэтому воспроизводимо, но точная строка может отличаться между версиями ядра. Читайте их как примеры формы, а не как гарантии.

Как вызвать

Каталог делится по двум правилам именования:

  • Глобальные идентификаторы имеют префикс common.common.id.uuid, common.finance.iban, common.payment.card.pan, common.phone.e164.
  • Страновые начинаются с названия страны — russia.tax.inn_org, russia.docs.snils, usa.docs.ssn, poland.docs.pesel.
<gen type="template" value="common.id.uuid"/>
<gen type="template" value="russia.tax.inn_org"/>

Неизвестный адрес — это жёсткая ошибка, а не молчаливо пустое значение:

./run bad.tdc
error[TDC071]: unknown template path "russia.tax.nope"
--> bad.tdc:2:48
|
2 | <gen type="template" value="russia.tax.nope"/>
|                             ^^^^^^^^^^^^^^^

Почему они проходят проверку

Большинство «номеров-идентификаторов» несут контрольную цифру, вычисленную из остального номера (Luhn, mod-11, ISO 7064, GS1 mod-10, …). Случайные десять цифр забракует первая же проверка формата — и тест на таких данных бесполезен. Эти шаблоны выдают значения, которые проходят свою контрольную сумму, но при этом заведомо ненастоящие — зарезервированные тестовые диапазоны, вымышленные префиксы, зарезервированные IANA домены верхнего уровня, — поэтому их безопасно класть в демо, фикстуры и CI. Как определяется каждая контрольная цифра, рассказано ниже.

Параметры

Многие идентификаторы принимают параметры — передавайте их обычными атрибутами на <gen>. Любой не заданный параметр берётся случайным; заданный фиксируется во всех строках, а контрольная цифра всегда пересчитывается, чтобы остаться корректной.

Например, зафиксируем код налоговой в каждом ИНН юрлица:

<gen type="template" value="russia.tax.inn_org" tax_office="7712"/>
./run inn.tdc
7712702700
7712682927
7712220601
7712277421
7712165950

Каждое значение начинается с 7712, и все они остаются корректными ИНН. Используйте параметр, когда часть идентификатора должна быть постоянной — фиксированный эмитент, фиксированная налоговая, фиксированный домен, — а остальное меняется.

Как узнать параметры адреса

Параметр — это просто локальная <sequence name="…"> внутри пакета данных за этим адресом; вызывающий переопределяет её константой. Поэтому параметры, которые принимает адрес, — это ровно имена локальных <sequence> в его пакете. Неверный параметр — понятная ошибка (TDC072), а не молчаливое игнорирование:

./run bad-param.tdc
error[TDC072]: "bogus" is not a parameter of "russia.tax.inn_org" — it would be ignored
--> bad-param.tdc:2:53
|
2 | <gen type="template" value="russia.tax.inn_org" bogus="1"/>
|                                                 ^^^^^

Несколько типичных адресов и параметры, которые они принимают:

АдресПараметры
common.internet.emaillocal, domain
common.internet.urlscheme, domain, slug
common.internet.domainword, token, suffix
common.finance.ibanbban
common.payment.card.panbase
russia.tax.inn_orgtax_office
Упрощённые варианты

При переезде этих генераторов в редактируемые пакеты часть редко используемых параметров и «форматированные» варианты (со скобками или дефисами) были сведены к основному виду. Контрольные суммы и основной формат сохранены; убрана только косметическая обёртка.

Идентификаторы и интернет

Непрозрачные ID (UUID, ULID, Nano ID, ObjectId), хеши коммитов и безопасные веб-значения. Используйте их, когда записи нужен первичный ключ, фейковый e-mail или адрес-заглушка URL, который никогда не столкнётся с настоящим.

<gen type="template" value="common.id.uuid"/>
<gen type="template" value="common.id.ulid"/>
<gen type="template" value="common.id.nanoid"/>
<gen type="template" value="common.git.sha"/>
./run ids.tdc
common.id.uuid        63af26a7-9997-4aa8-8883-bec8f2a5c541
common.id.ulid        5GQ9BM9G731XA1KW1KMYM9EGAK
common.id.nanoid      LKCYPokQsGREjVYrZvJjz
common.id.object_id   3ed9c528008a4cc46dbb53b2
common.git.sha        efffc5bd4c321932277f4ff77cc01993344ecd2e
common.system.semver  8.13.7

E-mail и домены используют зарезервированные IANA домены верхнего уровня (.test, .invalid, .example), а IP-адреса лежат в приватных / документационных диапазонах, поэтому ничто здесь не может достучаться до настоящего адреса:

./run internet.tdc
common.internet.email     qjoasyc4yx@sandbox-8s2332.test
common.internet.domain    test-26vh9o.test
common.internet.url       https://fixture-vaqpcg.example/atlas-sandbox-sandbox
common.internet.ipv4      10.251.85.160
common.internet.ipv6      2001:db8:c43:28eb:f2c:ee5:e:8d5
common.internet.mac       c5:62:b8:e2:af:d3
common.internet.username  lfmln1e_b
АдресЧто генерируетПример
common.git.shaGit commit SHA-1 (40 строчных hex-символов)efffc5bd4c321932277f4ff77cc01993344ecd2e
common.id.nanoidNano ID (21 символ, URL-safe алфавит A–Za–z0–9_-)LKCYPokQsGREjVYrZvJjz
common.id.object_idMongoDB ObjectId (24 строчных hex-символа)3ed9c528008a4cc46dbb53b2
common.id.ulidULID (26 символов, Crockford base32; первый символ 0–7)5GQ9BM9G731XA1KW1KMYM9EGAK
common.id.uuidUUID v4 (RFC 4122 — версия 4, вариант 8/9/a/b)63af26a7-9997-4aa8-8883-bec8f2a5c541
common.internet.domainБезопасный фейковый домен — token.suffix (зарезервированные TLD по RFC 2606)test-26vh9o.test
common.internet.emailБезопасный email — локальная часть из 10 символов @ безопасный фейковый доменqjoasyc4yx@sandbox-8s2332.test
common.internet.ipv4IPv4 в приватных диапазонах (10/8, 172.16/12, 192.168/16)10.251.85.160
common.internet.ipv6IPv6 в документационном диапазоне 2001:db8::/322001:db8:c43:28eb:f2c:ee5:e:8d5
common.internet.macMAC-адрес — шесть строчных hex-октетов через двоеточиеc5:62:b8:e2:af:d3
common.internet.slugURL-слаг — от 2 до 4 строчных слов через дефисtest-atlas-sandbox
common.internet.urlБезопасный URL — scheme://safe-domain/slug (схема по умолчанию — https)https://fixture-vaqpcg.example/atlas-sandbox-sandbox
common.internet.usernameИмя пользователя — начальная буква, далее 7–13 символов из a–z0–9_lfmln1e_b
common.system.semverСемантическая версия — major 0–9, minor 0–19, patch 0–998.13.7

Финансы и платежи

IBAN, коды SWIFT/BIC, номера платёжных карт (PAN) и американский маршрутный номер ABA — у каждого встроена настоящая проверка. Используйте их, когда фикстура должна пройти банковскую проверку формата или проверку Luhn.

<gen type="template" value="common.finance.iban"/>
<gen type="template" value="common.finance.bic"/>
<gen type="template" value="common.payment.card.pan"/>
<gen type="template" value="usa.finance.aba_routing"/>
./run finance.tdc
common.finance.iban       DE60077427668812994595
common.finance.bic        VROLFR00F1Y
common.payment.card.pan   4111111726740445
usa.finance.aba_routing   649946910

IBAN несёт корректную контрольную сумму ISO 7064 mod-97, PAN — корректную сумму Luhn в тестовом диапазоне Visa (4111…), а маршрутный номер — корректную проверку mod-10 [3,7,1].

АдресЧто генерируетПример
common.finance.bicSWIFT/BIC-11 (4 буквы + страна + 2 символа локации + 3 символа отделения)VROLFR00F1Y
common.finance.ibanIBAN (страна по умолчанию — DE, 18-значный BBAN, контрольная сумма ISO 7064 mod-97)DE60077427668812994595
common.payment.card.panНомер платёжной карты (PAN) (тестовый диапазон Visa, 16 цифр + контрольная сумма Luhn)4111111726740445
usa.finance.aba_routingАмериканский маршрутный номер ABA (8 цифр + контрольная сумма mod-10 [3,7,1])649946910

Товары и устройства

Штрихкоды и идентификаторы товаров и оборудования — ISBN, EAN, UPC, GTIN, IMEI, ICCID, ISSN. Используйте их, когда каталог или складская фикстура должны чисто сканироваться и проходить проверку.

<gen type="template" value="common.book.isbn13"/>
<gen type="template" value="common.product.ean13"/>
<gen type="template" value="common.device.imei"/>
./run products.tdc
common.book.isbn13     9783635567452
common.product.ean13   9418766812071
common.product.upc_a   277703531852
common.product.gtin14  69243931643417
common.device.imei     263236381039942
common.device.iccid    8910106572426433879
common.periodical.issn 23614552
common.vehicle.vin     XJV8TB3B7W5726830
АдресЧто генерируетПример
common.book.isbn10ISBN-10 (9 цифр + контрольная сумма mod-11, 10 → X)1684319684
common.book.isbn13ISBN-13 (префикс 978/979 + 9 цифр + контрольная сумма GS1 mod-10)9783635567452
common.periodical.issnISSN (7-значная база + контрольная сумма mod-11, веса 8..2, 10 → X)23614552
common.product.ean13EAN-13 (12-значная база + контрольная сумма GS1 mod-10)9418766812071
common.product.gtin14GTIN-14 (13-значная база + контрольная сумма GS1 mod-10)69243931643417
common.product.upc_aUPC-A (11-значная база + контрольная сумма GS1 mod-10)277703531852
common.device.iccidICCID (89 + страна + префикс эмитента, 19 цифр + контрольная сумма Luhn)8910106572426433879
common.device.imeiIMEI (14-значная база + контрольная цифра Luhn = 15 цифр)263236381039942

Безопасность и хеши

API-ключи, одноразовые коды, секреты TOTP, JWT и «сырые» дайджесты. Используйте их, когда нужна заглушка в форме учётных данных для сценария авторизации или строки лога — но никогда не настоящий секрет.

<gen type="template" value="common.security.api_key"/>
<gen type="template" value="common.security.otp"/>
<gen type="template" value="common.security.sha256"/>
./run security.tdc
common.security.api_key      tdc_cxmmn0eD60xEB5CLOilveNjDyxBcYaaM
common.security.otp          874846
common.security.md5          db3d24933e41cbafde844af6dddc769f
common.security.sha1         313f20b6a4fb5eedc53cf02ae32e56c2b7ee0d7b
common.security.sha256       f1be92ba089ddaa35e2273dd6c7d66d712c85e313316a2f006786f383e9f686e
common.security.totp_secret  76F7GJ5PYJXYHYY7E5DMY2L6G6XGVSAL
АдресЧто генерируетПример
common.security.api_keyAPI-ключ (префикс по умолчанию tdc_ + 32 буквенно-цифровых символа)tdc_cxmmn0eD60xEB5CLOilveNjDyxBcYaaM
common.security.jwtФейковый JWT (фиксированный base64url-заголовок под каждый alg + случайные payload/подпись)eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.6LKo…
common.security.md5Дайджест MD5 (32 строчных hex-символа)db3d24933e41cbafde844af6dddc769f
common.security.otpЧисловой одноразовый код (по умолчанию 6 цифр)874846
common.security.sha1Дайджест SHA-1 (40 строчных hex-символов)313f20b6a4fb5eedc53cf02ae32e56c2b7ee0d7b
common.security.sha256Дайджест SHA-256 (64 строчных hex-символа)f1be92ba089ddaa35e2273dd6c7d66d712c85e313316a2f006786f383e9f686e
common.security.totp_secretОбщий секрет TOTP (по умолчанию 32 base32-символа, RFC 4648 A–Z2–7)76F7GJ5PYJXYHYY7E5DMY2L6G6XGVSAL

Документы, транспорт, логистика

Машиночитаемые проездные документы (MRZ по ICAO 9303), VIN автомобилей и контейнеры ISO 6346. Используйте их, когда фикстуру сканируют или распознают (OCR) и она должна удовлетворять составным контрольным цифрам формата.

Два адреса MRZ многострочные — удостоверение личности TD1 это три строки по 30 символов, паспорт TD3 — две строки по 44 символа, и каждая несёт составные контрольные цифры ICAO:

./run mrz.tdc
common.docs.mrz.id_td1 (удостоверение личности, три строки по 30 символов):
I<UTOV80Y7XXNC58C1E31V2B6IGCXD
8402079F3111275UTOFP4DCM7IPY95
MILLER<<ADAM<<<<<<<<<<<<<<<<<<

common.docs.mrz.passport_td3 (паспорт, две строки по 44 символа):
P<UTODOE<<JOHN<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
22VVYEM7V0UTO9403280<3703276L73REEFL4AFXU642

Однострочные коды:

./run transport.tdc
common.vehicle.vin                  XJV8TB3B7W5726830
common.logistics.container_iso6346  PQXU6242844
АдресЧто генерируетПример
common.docs.mrz.id_td1MRZ удостоверения личности ICAO 9303 TD1 (три строки по 30 символов) с составными контрольными цифрами(см. выше)
common.docs.mrz.passport_td3MRZ паспорта ICAO 9303 TD3 (две строки по 44 символа) с составными контрольными цифрами(см. выше)
common.logistics.container_iso6346Код контейнера ISO 6346 (владелец + категория + 6-значный серийный номер + контрольная сумма mod-11)PQXU6242844
common.vehicle.vinVIN — идентификационный номер транспортного средства (ISO 3779, 17 символов, взвешенная контрольная сумма mod-11; 10 → X)XJV8TB3B7W5726830

Телефоны

common.phone.e164 выбирает случайную страну; у каждой страны есть и собственный адрес. Все выдают форму E.164. Там, где страна резервирует диапазон под кино и тесты, пакет его и берёт — код зоны 202 в США с добавочным 555, канадский 613 555, британский Ofcom 07700 900xxx. Но у большинства стран такого диапазона нет, и для них номер собирается из настоящих префиксов: он корректен по структуре и годится для хранения и разбора, но звонить по нему не стоит. Используйте их, когда контактная фикстура должна разбираться как корректный международный номер.

<gen type="template" value="russia.phone"/>
<gen type="template" value="common.phone.e164"/>
./run phones.tdc
russia.phone          +79962527739
germany.phone         +4917140038023
france.phone          +33618948981
united_kingdom.phone  +447700900864
common.phone.e164     +34663489915
АдресЧто генерируетПример
argentina.phoneАргентина, мобильный, E.164 (+54 9 11…)+5491185268868
brazil.phoneБразилия, мобильный, E.164 (+55 + DDD + 9…)+5562940038023
canada.phoneКанада, E.164 (код зоны 613, вымышленная АТС 555)+16135558575
common.phone.e164Телефон E.164, случайная страна из набора+34663489915
france.phoneФранция, мобильный, E.164 (+33 6…)+33618948981
germany.phoneГермания, мобильный, E.164 (+49 15x/16x/17x…)+4917140038023
mexico.phoneМексика, E.164 (+52 + LADA, 10 цифр национального номера)+527353382246
poland.phoneПольша, мобильный, E.164 (+48 5…)+48587209191
russia.phoneРоссия, мобильный, E.164 (+7 9…)+79962527739
spain.phoneИспания, мобильный, E.164 (+34 6…)+34631634932
united_kingdom.phoneВеликобритания, мобильный, E.164 (диапазон Ofcom для драм +44 7700 900xxx)+447700900864
usa.phoneСША, E.164 (код зоны 202, вымышленная АТС 555)+12025550883

Национальные налоговые номера и номера документов

У каждой перечисленной страны есть своё семейство налоговых, удостоверяющих и (у некоторых) банковских номеров с контрольной суммой. Одного российского набора хватает на большинство типичных задач:

<gen type="template" value="russia.tax.inn_org"/>
<gen type="template" value="russia.tax.inn_person"/>
<gen type="template" value="russia.docs.snils"/>
./run ru-ids.tdc
russia.tax.inn_org     6840437608
russia.tax.inn_person  860084325267
russia.docs.snils      21804781661
russia.tax.ogrn        1691669019293

Используйте их, когда запись должна нести идентификатор, соответствующий стране, который проходит проверку этой страны — российский ИНН, бразильский CPF, польский PESEL, немецкий VAT-номер, — оставаясь доказуемо ненастоящим. Полный список, по адресам:

АдресЧто генерируетПример
argentina.docs.dniАргентинский DNI (8-значный национальный идентификационный номер, без контрольной цифры)43073935
argentina.tax.cuilАргентинский CUIL (2-значный префикс + 8-значное тело + взвешенная контрольная сумма mod-11)27740275106
argentina.tax.cuitАргентинский CUIT (2-значный префикс + 8-значное тело + взвешенная контрольная сумма mod-11)24574791010
austria.tax.vatАвстрийский VAT / UID (ATU + 7 цифр + контрольная цифра по схеме Луна)ATU55031548
belgium.tax.vatБельгийский VAT (BE + 8-значная база + контрольная сумма mod-97)BE0507916645
bolivia.docs.ciБоливийское удостоверение личности (7-значный номер, без контрольной цифры)3991646
bolivia.tax.nitБоливийский NIT (9-значный налоговый номер, без контрольной цифры)252014061
brazil.tax.cnpjБразильский CNPJ (8-значный корень + 4-значный филиал + две контрольные цифры mod-11)25232116564552
brazil.tax.cpfБразильский CPF (9-значная база + две контрольные цифры mod-11)14806904651
bulgaria.tax.vatБолгарский VAT (BG + 9 или 10 цифр, без контрольной суммы)BG380883064
canada.docs.sinКанадский SIN (8 цифр + контрольная сумма Luhn)585996796
canada.tax.bnКанадский регистрационный номер бизнеса (Business Number, 9 цифр, без контрольной суммы)307343577
canada.tax.program_accountКанадский лицевой счёт программы (Business Number + код программы + 4-значный референс)921050900RP9000
chile.docs.runЧилийский RUN (7–8-значное тело + циклическая взвешенная контрольная сумма mod-11, 10 → K)271951701
chile.tax.rutЧилийский RUT (7–8-значное тело + циклическая взвешенная контрольная сумма mod-11, 10 → K)90529471
colombia.docs.ccКолумбийское удостоверение личности (8–10-значный номер, без контрольной цифры)74407968
colombia.tax.nitКолумбийский NIT (9-значное тело + контрольная сумма mod-11 с весами-простыми числами, справа налево)4444807433
costa_rica.docs.cpfКостариканский id физического лица (10 цифр, начинается с 0, без контрольной цифры)0813694243
costa_rica.tax.cpjКостариканский id юридического лица (цифра класса + тип + 6-значный серийный номер, без контрольной цифры)4000813072
croatia.tax.vatХорватский VAT / OIB (HR + 10-значная база + контрольная сумма ISO 7064 MOD 11,10)HR99570241890
cyprus.tax.vatКипрский VAT (CY + 8 цифр + 1 заглавная буква)CY65642357G
czechia.tax.vatЧешский VAT / DIC (CZ + 8, 9 или 10 цифр, без контрольной суммы)CZ288311951
denmark.tax.vatДатский VAT / CVR (DK + 8 цифр, без контрольной суммы)DK42005491
dominican_republic.docs.cedulaДоминиканское удостоверение личности (10-значное тело + контрольная цифра Luhn)96179414394
dominican_republic.tax.rncДоминиканский RNC (8-значное тело + взвешенная контрольная сумма mod-11)970897251
ecuador.docs.ciЭквадорское удостоверение личности (провинция + 9-значная полезная часть + контрольная сумма mod-10)2144971195
ecuador.tax.rucЭквадорский RUC, форма для частной компании (провинция + 9 + взвешенная контрольная сумма mod-11 + 001)0294486720001
el_salvador.docs.duiСальвадорский DUI (8-значное тело + взвешенная контрольная цифра mod-10)332432757
el_salvador.tax.nitСальвадорский NIT (8-значное тело + взвешенная контрольная цифра mod-10)492719607
estonia.tax.vatЭстонский VAT / KMKR (EE + 9 цифр, без контрольной суммы)EE949727018
europe.tax.vatVAT ЕС (делегирует стране-участнице по умолчанию — Германии)DE193530291
finland.tax.vatФинский VAT / ALV (FI + 7-значная база + взвешенная контрольная сумма mod-11)FI76372425
france.tax.sirenФранцузский SIREN (8 цифр + контрольная сумма Luhn)033948829
france.tax.vatФранцузский VAT (FR + ключ mod-97 + корректный SIREN по Luhn)FR82250352820
germany.tax.vatНемецкий VAT / USt-IdNr (DE + 8 цифр, итеративная контрольная сумма mod-11/10)DE641787309
greece.tax.vatГреческий VAT / AFM (EL + 8-значная база + взвешенная контрольная сумма mod-11, затем mod-10)EL413288496
guatemala.docs.cuiГватемальский CUI (9-значный серийный номер + департамент 01–22 + муниципалитет 01–99, без контрольной цифры)2642014611803
guatemala.tax.nitГватемальский NIT (13-значное тело, та же форма, что у CUI, без контрольной цифры)4436278540509
honduras.docs.idГондурасское национальное удостоверение (департамент + муниципалитет + год + 5-значный серийный номер, без контрольной цифры)1801200568981
honduras.tax.rtnГондурасский RTN (форма гондурасского ID из 13 цифр + 1 завершающая цифра, без контрольной цифры)09281955957643
hungary.tax.vatВенгерский VAT / ANUM (HU + 7-значная база + взвешенная контрольная сумма mod-10)HU27025501
ireland.tax.vatИрландский VAT (IE + 7 цифр + 1 заглавная буква)IE8448267L
italy.tax.vatИтальянский VAT / Partita IVA (IT + 10 цифр + контрольная сумма Luhn)IT12124511358
latvia.tax.vatЛатвийский VAT / PVN (LV + 11 цифр, без контрольной суммы)LV51009639397
lithuania.tax.vatЛитовский VAT / PVM (LT + 9 или 12 цифр, без контрольной суммы)LT117600379
luxembourg.tax.vatЛюксембургский VAT / TVA (LU + 8 цифр, без контрольной суммы)LU96561821
malta.tax.vatМальтийский VAT (MT + 8 цифр, без контрольной суммы)MT07558770
mexico.tax.rfcМексиканский RFC (4 буквы для физлица или 3 буквы для организации + YYMMDD + 2 символа homoclave + контрольный символ mod-11)TLT870426K69
mexico.tax.rfc_orgМексиканский RFC для организации (3 буквы + YYMMDD + 2 символа homoclave + контрольный символ mod-11)ESV970818ZA1
mexico.tax.rfc_personМексиканский RFC для физического лица (4 буквы + YYMMDD + 2 символа homoclave + контрольный символ mod-11)QEHF820406TE1
netherlands.tax.vatГолландский VAT / BTW (NL + 9 цифр + B + 2-значный филиал 01–99, без контрольной суммы)NL430439452B03
nicaragua.docs.cedulaНикарагуанское удостоверение личности (муниципалитет + DDMMYY + 4-значный серийный номер + контрольная буква, без контрольной цифры)0051201752201B
nicaragua.tax.rucНикарагуанский RUC (форма для физлица = форма cedula, без контрольной цифры)0041010962608F
panama.docs.cedulaПанамское удостоверение личности, гражданская форма (провинция 1–13 + две группы 1–9999, без контрольной цифры)13187
panama.tax.rucПанамский RUC, форма для физлица = форма гражданского cedula1221339
paraguay.docs.ciПарагвайское удостоверение личности (7-значный номер, без контрольной цифры)3254657
paraguay.tax.rucПарагвайский RUC (7-значное тело для физлица или 8-значное для организации + циклически взвешенная контрольная сумма mod-11)919747108
peru.docs.dniПеруанский DNI (8-значный национальный идентификационный номер, без контрольной цифры)00124682
peru.tax.rucПеруанский RUC (2-значный префикс + 8-значное тело + взвешенная контрольная цифра mod-11)15278344671
poland.docs.peselПольский PESEL (дата с кодировкой века + серийный номер + цифра пола + взвешенная контрольная сумма mod-10)87212812168
poland.tax.nipПольский NIP (9 цифр + взвешенная контрольная сумма mod-11; отбраковывает результат==10)6047995975
poland.tax.vatПольский VAT (PL + NIP)PL8126284465
portugal.tax.vatПортугальский VAT / NIF (PT + 8-значная база + взвешенная контрольная сумма mod-11)PT909207518
romania.tax.vatРумынский VAT / CIF (RO + от 2 до 10 цифр, без контрольной суммы)RO98311815
russia.bank.accountРоссийский 20-значный банковский счёт с межполевым контрольным ключом mod-10 над хвостом БИК40702810299206214921
russia.bank.bikРоссийский БИК (9 цифр: 04 + регион + РКЦ + участник; без контрольной суммы)047225281
russia.bank.correspondent_accountРоссийский корреспондентский счёт (20 цифр, включает хвост БИК, межполевой ключ mod-10)30101810080720184177
russia.docs.snilsРоссийский СНИЛС (9 цифр + двухзначная контрольная сумма mod-101)21804781661
russia.geo.postalПочтовый индекс России (6 цифр, реальный диапазон 101000–692999)326151
russia.tax.inn_orgИНН юридического лица (10 цифр, взвешенная контрольная сумма mod-11)6840437608
russia.tax.inn_personИНН физического лица (12 цифр, две взвешенные контрольные суммы mod-11)860084325267
russia.tax.kppРоссийский КПП (9 цифр: налоговая инспекция + код причины + серийный номер; без контрольной суммы)976244677
russia.tax.ogrnОГРН юридического лица (13 цифр, контрольная сумма mod-11 по всему числу)1691669019293
russia.tax.ogrnipОГРНИП индивидуального предпринимателя (15 цифр, контрольная сумма mod-13 по всему числу)361197456067674
slovakia.tax.vatСловацкий VAT / IC DPH (SK + 10 цифр, без контрольной суммы)SK2872567116
slovenia.tax.vatСловенский VAT / ID za DDV (SI + 7-значная база + взвешенная контрольная сумма mod-11)SI47349972
spain.docs.dniИспанский DNI (8 цифр + контрольная буква mod-23)73742916V
spain.docs.nieИспанский NIE (X/Y/Z + 7 цифр + контрольная буква mod-23)X3914405N
spain.tax.cifИспанский CIF (буква типа организации + 7 цифр + контрольная цифра в стиле Luhn)A43753219
spain.tax.vatИспанский VAT (ES + CIF)ESH50310499
sweden.tax.vatШведский VAT / Momsnr (SE + 9-значная база + контрольная сумма Luhn + литерал "01")SE977841031701
united_kingdom.docs.ninoБританский номер социального страхования (National Insurance number, 2 буквы + 6 цифр + суффикс A–D; без контрольной суммы)QQ995347B
uruguay.docs.ciУругвайское удостоверение личности (тело до 7 цифр + взвешенная контрольная цифра mod-10)01252600
uruguay.tax.rutУругвайский RUT (11-значное тело + взвешенная контрольная сумма mod-11)218883180011
usa.docs.ssnАмериканский номер социального страхования (зона 001–899, кроме 666, группа 01–99, серийный номер 0001–9999)003060008
usa.finance.aba_routingАмериканский маршрутный номер ABA (8 цифр + контрольная сумма mod-10 [3,7,1])649946910
usa.tax.einАмериканский идентификационный номер работодателя (Employer Identification Number, корректный префикс IRS + 7 цифр; без контрольной суммы)678895040
usa.tax.itinАмериканский ITIN (9 + 2 цифры + корректная группа + 4 цифры; без контрольной суммы)975531718
venezuela.docs.ciВенесуэльское удостоверение личности (префикс V/E + тело из 7–8 цифр, без контрольной цифры)E7831675
venezuela.tax.rifВенесуэльский RIF (префикс V/E/J/P/G + 8-значное тело + взвешенная контрольная цифра mod-11)V919623361

Как устроены контрольные цифры

Логика контрольной суммы не спрятана в скомпилированном коде — каждый пакет вычисляет свою контрольную цифру декларативно тегом <compute>, прямо рядом с данными. Если страна меняет правила, вы правите текстовый файл пакета, а не движок. Тела этих идентификаторов набираются генераторами regex и number, после чего <compute> дописывает контрольную цифру. О том, как устроен пакет, см. Пакеты данных, а как добавить свой — Свой пакет данных.

См. также