EPC Girocode
EPC Girocode 是欧洲支付委员会(EPC)针对 SEPA 信用转账制定的 QR 格式。扫描 Girocode 后,付款人的银行应用会自动填入收款人的 IBAN、金额和汇款说明,省去手动复制粘贴银行信息的步骤。Sparkasse、Volksbank、Deutsche Bank、ING、N26、Revolut 以及大多数德国、奥地利、荷兰银行应用均原生支持该格式。在 SEPA 区域以外,Girocode 不起任何作用。
规范来源:EPC069-12 v2.1,《支持 SEPA 信用转账发起的 QR 码数据采集指南》(2022 年)。
编码方式: 纯 UTF-8 文本,非 TLV,非结构化。十二个固定位置字段,以
方案: SEPA 信用转账(SCT)或 SEPA 即时信用转账(SCT Inst)。该 QR 触发一次性信用转账;不支持直接借记或定期委托。
编码方式: 纯 UTF-8 文本,非 TLV,非结构化。十二个固定位置字段,以
\n(LF,U+000A)分隔。最大有效载荷 331 字节。 方案: SEPA 信用转账(SCT)或 SEPA 即时信用转账(SCT Inst)。该 QR 触发一次性信用转账;不支持直接借记或定期委托。
有效载荷结构:12 行,换行符分隔
| 行 | 字段 | 长度 | 必填 | 说明 |
|---|---|---|---|---|
| 1 | 服务标签 | 3 | 是 | 固定值 BCD。 |
| 2 | 版本 | 3 | 是 | 001(原始规范)或 002(v2,BIC 在 EEA 内现为可选)。 |
| 3 | 字符集 | 1 | 是 | 1=UTF-8,2=ISO-8859-1,3=ISO-8859-2 等。1 是唯一安全的选择。 |
| 4 | 标识 | 3 | 是 | SCT(标准信用转账)。SCT Inst 使用相同标签,即时或标准由收单方决定。 |
| 5 | BIC | 0、8 或 11 | 否(v002) | v001 中为必填;v002 中对 SEPA 支付为可选。对非 EEA 收款方应填写 BIC。 |
| 6 | 受益人姓名 | 1–70 | 是 | 自然语言姓名,字符集依第 3 行所填。 |
| 7 | IBAN | 1–34 | 是 | 不含空格或格式符。应填 DE89370400440532013000,而非 DE89 3704 0044 0532 0130 00。 |
| 8 | 金额 | 4–12 | 否 | 格式:EUR10.00。省略该字段可让付款人在扫码时自行输入金额。 |
| 9 | 用途 | 0–4 | 否 | ISO 20022 外部用途代码。示例:GDDS(商品),CHAR(慈善)。 |
| 10 | 结构化汇款参考 | 0–35 | 否 | ISO 11649 RF 债权人参考,用于自动对账。与第 11 行互斥。 |
| 11 | 非结构化汇款信息 | 0–140 | 否 | 自由文本付款说明。与第 10 行互斥。 |
| 12 | 受益人至发起人信息 | 0–70 | 否 | 在银行应用中向付款人展示的可选提示文字(如"Rechnung 2026-0042")。 |
规范测试向量:v002 最小配置
向 Commerzbank 的 Max Mustermann(IBAN:DE89370400440532013000,无 BIC)转账 €12.50,非结构化备注"Rechnung 42":
BCD
002
1
SCT
Max Mustermann
DE89370400440532013000
EUR12.50
Rechnung 42
注意第 5 行(无 BIC)、第 9 行(无用途)、第 10 行(无结构化参考)为空行。这些空行是必须保留的,行数必须恰好为 12 行(如省略第 12 行则为 11 行)。
实时 IBAN 校验器(mod-97)
Girocode 会拒绝任何未通过 ISO 13616 mod-97 校验和的 IBAN。以下是 Abundera 在 Girocode 生成器 内嵌运行的同款校验器,在您的浏览器中直接运行。
请输入 IBAN 以进行校验。
常见问题
- 行尾字符。 EPC069-12 规定使用 LF(
\n,U+000A)。CR+LF(\r\n)会导致部分 Android 银行应用解析失败。如果从 Windows 记事本复制粘贴有效载荷,会带入 CR+LF;在进行 QR 编码前需先去除 CR。 - v001 要求 BIC,v002 为可选。 SEPA 内部转账始终应使用版本
002,可节省 8–11 字节有效载荷,且兼容所有现代银行应用。仅在兼容旧版 v001 应用(多已停用)或对非 EEA 收款方时才需填写 BIC。 - 金额格式严格。 格式为
EUR10.00:货币代码前缀、小数点分隔符、恰好两位小数。EUR10、EUR10,00、10.00 EUR均无效。 - 结构化与非结构化参考不可同时填写。 第 10 行与第 11 行互斥。若两者均非空,规范认定该 QR 无效;实际上部分应用会接受并丢弃其中一个,导致对账不符。
- IBAN 不含空格。 第 7 行 IBAN 字段不允许包含空白字符。人类可读格式
DE89 3704 0044 0532 0130 00在编码前必须去除空格,还原为DE89370400440532013000。 - 最大有效载荷 331 字节。 超过 331 字节的 QR 有效载荷不符合规范要求。较长的受益人姓名、较长的汇款说明、BIC 以及 IBAN 叠加后容易超出限制。银行应用在扫码时会显示错误;编码阶段 QR 本身不会自动警告。
- 字符集陷阱。 第 3 行指定适用于第 6、11、12 行的字符集。UTF-8(值
1)是处理国际姓名的唯一现实选择。ISO-8859-1 无法编码西欧拉丁字母以外的字符。 - 仅限 SEPA 区域。 Girocode 付款仅适用于参与 SEPA 的账户之间(欧盟、EEA、瑞士、英国、摩纳哥、圣马力诺、安道尔、梵蒂冈)。在非 SEPA 银行应用中扫描 Girocode,要么失败,要么显示空白字段的普通转账界面。
- 不支持直接借记。 Girocode 仅适用于 SEPA 信用转账。拉取或订阅流程(定期委托、循环授权等)无法通过 Girocode 表达。如需此类场景,需将 QR 与 SEPA 委托文件配合使用。
- PSD2 退款权利。 SEPA 信用转账为推送式,消费者在扫码时自行授权。PSD2 下的消费者退款权利仍然适用(例如 13 个月内的未经授权交易)。商家须单独保存签署的授权记录,QR 本身不构成合同。
银行应用兼容性
| 应用 / 地区 | Girocode 支持 | 说明 |
|---|---|---|
| Sparkasse(德国) | 原生支持 | Girocode 最初的目标应用,完整支持。 |
| Volksbank / Raiffeisen(德国、奥地利) | 原生支持 | VR-BankingApp 完整支持。 |
| Deutsche Bank、Commerzbank、Postbank(德国) | 原生支持 | 通过其移动应用的"Überweisung"流程扫码。 |
| ING(德国 / 荷兰) | 原生支持 | 荷兰版应用同时支持扫描 iDEAL QR。 |
| N26、Revolut | 原生支持 | 在所有支持国家完整支持。 |
| Erste Bank、Bank Austria(奥地利) | 原生支持 | 奥地利与德国同步采用 Girocode。 |
| Crédit Agricole、BNP Paribas(法国) | 部分支持 | 部分法国银行可扫描 Girocode,但多数仍偏好旧式纸质参考格式。 |
| iOS/Android 原生相机 | 不支持 | 原生相机不会将 BCD 文本格式解析为支付意图,用户需先打开银行应用。 |
另请参阅
- /epc-girocode-qr-code/,含 IBAN 校验和实时编码功能的 Girocode 生成器。
- /sepa-qr-code/,SEPA 信用转账 QR 生成器(使用相同底层格式)。
- /standards/swiss-qr-bill/,Swiss QR-bill,适用于 CHF / 瑞士 IBAN 转账的区域性替代方案。
- /standards/,返回规范索引。