跳转到内容
Tutorial

增值税号验证 API:在一个 POST 中验证欧盟税号

| 5 min read

通过一次 API 调用验证所有 27 个欧盟成员国的增值税号。 返回有效性、国家/地区代码和格式化数字。 免费层,无 SOAP XML。

EU flags in front of the European Parliament
Photo by Olga Subach on Unsplash

您向欧洲的企业销售软件。 欧盟税法要求您验证买方的增值税 申请反向收费(0% 增值税)之前的 ID。 官方 VIES 服务的正常运行时间不可靠 并返回 SOAP XML。 您需要一个更快、更安静的替代方案。

波托伊 /v1/validate/vat 端点验证所有 27 个欧盟成员国的增值税号 州和英国。 发送 POST,获取包含有效性、国家/地区代码和 格式化的数字。 没有 XML 解析。 没有 WSDL 文件。 超负荷的政府没有超时 服务器。

API 调用

发送带有两个字母的国家/地区前缀的增值税号:

回复:

valid 场是 true 当数字与预期格式匹配时 为了它的国家。 这 country_codecountry 田野告诉你 该号码属于哪个管辖区。

当号码验证失败时

如果数字与预期模式不匹配, valid 回来了 false。 响应仍然包含检测到的国家/地区:

德国增值税号需要紧随其后的 9 位数字 DE 前缀。 这个有5个。 您的前端可以显示国家/地区名称和预期格式,以帮助用户纠正他们的错误 输入。

Stripe 结账集成

在创建 Stripe 结帐会话之前,请验证买家的增值税 ID。 如果有效,则设置 客户至 tax_exempt: "reverse" 因此 Stripe 收取 0% 的增值税。 如果是 无效,拒绝该表格并要求买家更正。

这可以防止两个常见问题:向应免税的企业收取增值税 (造成退款麻烦),并向使用虚假增值税号的人提供免税 (创建审计问题)。

生成有条件增值税发票

生成发票时,您需要确定增值税税率。 规则:

  • 同国B2B销售:收取您的国内增值税税率。
  • 使用有效增值税 ID 进行跨境 B2B 销售:适用反向收费 (0%)。
  • 增值税 ID 无效或缺失:按买家当地费率收取。

country_code API 响应驱动此逻辑:

SaaS B2B 注册表单验证

将增值税号字段添加到您的注册表单并在提交时进行验证。 如果有效,则自动填写 国家/地区下拉列表。 如果无效,则在表单到达后端之前显示错误。

这可以防止不良数据进入您的计费系统。 它还使您的财务团队免于手动 在客户注册并开始使用产品后验证增值税号。

按国家/地区划分的增值税格式

每个欧盟国家都有不同的增值税识别号格式。 API 验证 针对所有这些模式:

完整名单涵盖所有 27 个欧盟成员国以及英国。 格式范围为 8 位数字 (丹麦、卢森堡)到 12 位数字(瑞典)。 有些国家在正文中包含字母 号码(法国、西班牙、爱尔兰)。

格式验证与 VIES 查找

该 API 验证 结构 增值税号。 它确认前缀、长度、 和字符模式符合该国家/地区的规则。 它没有质疑欧盟委员会的 VIES 数据库确认该号码已主动注册。

对于大多数结帐流程,格式验证是正确的第一步。 它捕获错别字、缺失 立即添加前缀和拼凑号码,无需依赖外部服务 经常下来。 如果您还需要注册状态,请在格式检查通过后致电 VIES。 这种两步方法将 VIES 调用减少了 15-30%(所有无效格式都不会命中 服务慢)。

要点

免费套餐涵盖开发和小批量生产使用。 适用于高人流量结账 流中,添加您的 API 密钥 Authorization: Bearer 标头。 检查 API文档 完整的端点参考和 互动游乐场 在浏览器中测试增值税号。

FAQ

VAT 验证 API 支持哪些国家/地区?
所有 27 个欧盟成员国,加上英国(GB 前缀)。 每个国家都有自己的格式模式。 API 通过两个字母的前缀检测国家/地区,并根据该管辖区的正确正则表达式进行验证。
这是否会取代 VIES SOAP 服务?
它取代了格式验证部分。 VIES 确认特定号码是否已在国家税务机关注册。 该 API 可立即验证结构和格式,无需依赖 VIES 的正常运行时间。 一起使用两者:首先进行格式检查,然后通过 VIES 查找注册状态。
验证后是否存储增值税号?
不会。该号码在内存中进行处理,并在响应后被丢弃。 没有任何内容写入磁盘或任何外部系统。
英国脱欧后我可以验证英国增值税号码吗?
英国增值税号(GB 前缀)遵循已知模式,并且可以在结构上进行验证。 它们不再是 EU VIES 系统的一部分,但格式检查仍然有效。
如果我省略国家/地区前缀会怎样?
API 需要两个字母的国家/地区前缀(例如“DE”、“FR”、“NL”)。 如果没有它,端点将返回错误,解释国家/地区代码丢失或不受支持。

开始使用 botoi 构建

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