西班牙 DNI、NIE、NIF 与校验字母
西班牙的身份号码和税号末尾都带一个校验字符。DNI 和 NIE 的校验字母由数字经一个简单计算得出,计算方法由西班牙内政部公布。本指南介绍三种号码的区别、计算步骤,以及校验字母正确时能说明什么、不能说明什么。
三个相互关联的号码
NIF(número de identificación fiscal)是税务识别号。对大多数人来说,NIF 并不是另一个号码:西班牙公民使用身份证 DNI 的号码,外国居民使用外国人识别号 NIE。两者都没有的个人和机构,由税务局(Agencia Tributaria)分配 NIF。
| 号码 | 适用对象 | 格式 | 示例 |
|---|---|---|---|
| DNI(兼作 NIF) | 西班牙公民 | 8 位数字 + 校验字母 | 12345678Z |
| NIE(兼作 NIF) | 外国人 | X、Y 或 Z + 7 位数字 + 校验字母 | X1234567L |
| K、L、M 开头的 NIF | 没有 DNI 或 NIE 的人(K:居住在西班牙的 14 岁以下公民;L:居住在国外的公民;M:没有 NIE 的外国人) | K、L 或 M + 7 个字符 + 校验字母 | – |
| 实体的 NIF | 公司、协会、公共机构等 | 法律形式字母 + 7 位数字 + 校验字符 | – |
K、L、M 号码由税务通用条例(Real Decreto 1065/2007 第 19、20 条)规定,由一个字母、7 个字母数字字符和一个字母校验字符组成。DNI 条例(Real Decreto 255/2025 第 12 条)只规定证件上印有号码和校验字符,具体算法公布在西班牙内政部网站上。
DNI 校验字母的计算
校验字母就是号码除以 23 的余数,再换成字母:
- 把 DNI 的 8 位数字看作一个整数。
- 除以 23,取余数(0 到 22)。
- 在表中查出余数对应的字母。
| 余数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字母 | T | R | W | A | G | M | Y | F | P | D | X | B |
| 余数 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | |
| 字母 | N | J | Z | S | Q | V | H | L | C | K | E |
计算示例(西班牙内政部的示例):12345678 ÷ 23 = 536,768,余 14(23 × 536,768 = 12,345,664,12,345,678 − 12,345,664 = 14)。余数 14 对应 Z,所以完整的 DNI 是 12345678Z。
写成代码只要一行:字母为 "TRWAGMYFPDXBNJZSQVHLCKE"[号码 % 23]。表中只有 23 个字母,所以 I、Ñ、O、U 永远不会是校验字母。DNI 末尾如果出现这些字母,说明抄写有误。
NIE:先换掉 X、Y、Z
NIE 由 X、Y、Z 中的一个字母、7 位数字和校验字母组成。计算前,先把首字母换成数字:X 换成 0,Y 换成 1,Z 换成 2。这样得到 8 位数字,之后的步骤与 DNI 相同。
计算示例:X1234567 变为 01234567。1,234,567 ÷ 23 余 19(23 × 53,676 = 1,234,548),19 对应 L,所以 NIE 是 X1234567L。同样的数字若以 Y(11234567)或 Z(21234567)开头,字母就会不同,因此首字母也要照抄准确。
校验字母能发现什么,不能证明什么
校验字母用来发现输入错误。23 是比任何一位数都大的质数,改动任意一位数字,余数一定会变,所以写错一位数字必然得到另一个字母。交换相邻两位数字时,号码的变化量是 9 乘以 10 的幂的倍数,23 同样不能整除,所以这种错误也能发现。写错两位或更多时,偶尔可能碰巧得到同一个字母。
校验字母无法证明号码真实存在。每个 8 位数字都有唯一正确的字母,所以数以百万计从未签发过的号码也能通过校验。只有签发机构能确认号码是否存在:DNI 和 NIE 是内政部,其他 NIF 是税务局。
K、L、M 和企业 NIF
税务通用条例只规定了 K、L、M 号码的结构,没有规定校验字母的计算方法。企业和其他实体的 NIF 结构由 Orden EHA/451/2008 规定:表示法律形式的字母、7 位随机数字和一个校验字符。该法令列出了字母,但同样没有公布校验字符的算法。因此 LeedyBox 校验工具会识别这些号码并显示法律形式,但不校验最后一个字符。
| 首字母 | 法律形式(Orden EHA/451/2008) |
|---|---|
| A | Sociedades anónimas(股份有限公司) |
| B | Sociedades de responsabilidad limitada(有限责任公司) |
| C、D | Sociedades colectivas、sociedades comanditarias(普通合伙、有限合伙) |
| E | Comunidades de bienes、herencias yacentes 等无法人资格的实体 |
| F、G、H、J | 合作社、协会、业主共同体、民事合伙 |
| P、Q、R、S | 地方政府、公共机构、宗教团体、国家和自治区行政机关 |
| U、V | 临时企业联合体(UTE)、其他类型 |
| N、W | 外国实体、非居民实体的常设机构 |
书写与存储号码
- 字母大写,中间不留空格:
12345678Z。很多表格允许在字母前加连字符,比较两个号码前先去掉空格、句点和连字符。 - 把 DNI 存成文本而不是整数。存进数字列会丢掉开头的 0 和字母。
- 输入时检查字母可以及早发现笔误,但不要把字母正确当作身份核验。
- DNI 和 NIE 能识别个人,属于个人信息,不要放进 URL、日志或统计分析工具。
开发用测试号码
测试表单和数据库需要能通过校验的示例号码。校验工具可以生成校验字母正确的随机 DNI 和 NIE。它们仅供测试:随机号码可能恰好与真实个人的号码相同,绝不能在真实数据、发票或文件中当作任何人的号码使用。
常见问题
NIF 和 DNI 是同一个号码吗?
对西班牙公民来说是的:NIF 就是 DNI 号码加上字母。外国居民用 NIE 作为 NIF,两者都没有的人会从税务局获得以 K、L 或 M 开头的号码。
CIF 是什么?
CIF 是企业税号的旧称。现在企业使用的 NIF 由法律形式字母、7 位数字和校验字符组成。
为什么我的 DNI 字母显示错误?
请对照证件逐一核对数字和字母。I、Ñ、O、U 一定是错的,只要调换两位数字,正确的字母也会改变。
能查出号码属于谁吗?
不能。字母只由数字计算得出,不含持有人信息,校验工具也不会到任何地方查询号码。
来源
来源:Ministerio del Interior: Cálculo del dígito de control del NIF/NIE (Internet Archive, 2025-12-30) · 核对日期:
来源:BOE: Real Decreto 255/2025, de 1 de abril, por el que se regula el Documento Nacional de Identidad · 核对日期:
来源:BOE: Orden EHA/451/2008 (texto consolidado, modificada por la Orden HAP/5/2016) · 核对日期: