跳转到内容
Tutorial

通过一次 API 调用验证 IBAN 号码

| 5 min read

验证任何 IBAN,提取国家/地区代码和校验位,然后返回格式化字符串。 一次 POST 请求,80 多个国家/地区,无需银行 SDK。

International bank building facade
Photo by Sean Pollock on Unsplash

您的付款表格接受国际银行转账。 用户输入 22 个字符的 IBAN。 在将其发送到支付处理器并等待失败之前,您需要捕获拼写错误 在表单级别。 IBAN 验证涉及模 97 校验位算法、特定国家/地区 长度规则和BBAN结构解析。 您可以自己编写,引入库,或者让 一个 API 处理它。

波托伊的 /v1/validate/iban 端点接受一个 IBAN 字符串并返回是否是 有效、国家/地区代码、国家/地区名称以及号码的格式化版本。 一个帖子 请求,无需银行 SDK,无需维护正则表达式集合。

API 调用

回复:

响应为您提供了四个字段。 valid 是你需要的布尔值 表单级门控。 country_codecountry 让你自动检测 用户的银行所在国家/地区用于下游逻辑,例如货币选择或税收规则。 formatted 返回标准四字符分组人类中的 IBAN 期望在发票和银行对账单上看到。

当 IBAN 校验位验证失败时,您仍然会得到解析的字段:

valid: false 旗帜就是你所需要的。 没有要捕获的异常,没有错误代码 向上看。 检查布尔值并显示错误消息。

Node.js

Python

各国 IBAN 格式

IBAN 长度因国家/地区而异。 前两个字符始终是 ISO 3166-1 国家/地区代码, 接下来是两个校验位,然后是基本银行帐号 (BBAN)。 这是五个最 欧洲支付的常见格式:

国家 代码 长度 格式 例子
德国 22 DE+2个校验位+8个银行代码+10个账户 DE89 3704 0044 0532 0130 00
英国 国标 22 GB+2个校验位+4个银行+6个分类码+8个账户 GB29 NWBK 6016 1331 9268 19
法国 FR 27 FR + 2 个校验位 + 10 个银行 + 11 个帐户 + 2 个密钥 FR76 3000 6000 0112 3456 7890 189
西班牙 ES 24 ES + 2 个校验位 + 4 个银行 + 4 个分行 + 2 个控制 + 10 个帐户 ES91 2100 0418 4502 0005 1332
荷兰 荷兰 18 NL + 2 个校验位 + 4 个银行 + 10 个帐户 NL91 ABNA 0417 1643 00

该 API 可处理 SWIFT IBAN 注册表中的所有 80 多个国家/地区。 你不需要维护一个 长度和格式查找表; 端点根据正确的规则进行验证 每个国家/地区代码。

React/Preact 模糊表单验证

最常见的集成:当用户跳出输入字段时验证 IBAN。 调用模糊(而不是每次击键)可保持 API 使用率较低并避免闪烁 用户仍在输入时出现错误消息。

当字段失去焦点时,组件调用 API。 如果 IBAN 有效,则通过 解析数据(国家代码,格式化字符串)通过 onValidated。 然后,家长可以自动填写货币、调整路由或将格式化的 IBAN 显示为 确认。

从 CSV 批量验证 IBAN

财务团队通常需要在运行之前验证供应商或员工 IBAN 列表 批量付款。 该脚本读取 CSV、验证每个 IBAN 并标记无效条目。

如果任何 IBAN 无效,则脚本将以代码 1 退出,使其可用作 CI 步骤或 预上传检查。 对于大文件(1,000 行以上),请在请求之间添加较小的延迟或 使用 API 密钥以获得更高的速率限制。

Stripe Connect 入门

通过 Stripe Connect 入职卖家或自由职业者时,您可以收集他们的银行详细信息 设置付款。 致电前验证 IBAN stripe.accounts.createExternalAccount 避免了到 Stripe API 的往返,无论如何都会失败。 它还可以让您提取 用于设置正确支付货币的国家/地区代码。

流程很简单:首先验证,提取国家/地区,将其映射到货币,然后 创建外部帐户。 如果 IBAN 无效,用户会立即看到错误 等待 Stripe 几秒钟后拒绝它。

要点

  • 一个 POST,四个字段。 将 IBAN 字符串发送至 /v1/validate/iban 并返回有效性、国家代码、国家名称和格式化号码。
  • 80 多个国家。 端点涵盖 SWIFT IBAN 注册表中的每个国家/地区。 您这边没有特定于国家/地区的逻辑。
  • 在表单级别捕获错误。 验证付款表格中的模糊情况 防止无效的 IBAN 到达您的银行或支付处理机构。
  • 没有存储,没有日志记录。 IBAN 在内存中进行处理并被丢弃。 没有什么是坚持下来的。
  • 提供免费套餐。 匿名访问每分钟 5 个请求,每天 100 个。 开发和测试不需要 API 密钥。

FAQ

此 API 是否验证银行帐户是否存在?
不会。它验证 IBAN 结构和 modulo-97 校验和。 它会确认号码格式正确,但不会联系任何银行或检查帐户是否已开立或已存入资金。
IBAN 验证支持多少个国家/地区?
80 多个国家/地区已采用 IBAN 标准,包括所有欧盟/欧洲经济区成员国、英国、瑞士、沙特阿拉伯和巴西。 完整列表遵循 SWIFT IBAN 注册表。
我可以发送包含空格的 IBAN 吗?
是的。 验证前会自动删除空格。 “DE89 3704 0044 0532 0130 00”和“DE89370400440532013000”都返回相同的结果。
我需要 API 密钥来验证 IBAN 吗?
不可以。匿名访问允许每分钟 5 个请求(基于 IP 的速率限制),每天允许 100 个请求。 为了获得更高的吞吐量,请在 botoi.com/api 上注册 API 密钥。
我发送的 IBAN 是否已存储或记录?
不会。IBAN 在内存中进行验证并立即丢弃。 没有任何内容被保留或写入任何日志。

开始使用 botoi 构建

150+ 个 API 端点,涵盖查询、文本处理、图片生成和开发者工具。免费套餐,无需信用卡。