你是在德国、荷兰、法国或其他欧盟国家的自雇顾问,会计刚把你的 ChatGPT Plus 发票退回来。PDF 上 $20 / €19 那行写得清清楚楚,但 VAT 字段是空的,或者客户名没填,或者你为做反向征收(reverse charge)填的 VAT 号根本没收录进去。英国走 Ltd 公司报税的也一样,会被 HMRC 拒。OpenAI 是会出合规税务发票的,但前提是你在对的账单页面填了企业 Tax ID,而且某些国家 + 客户类型的组合需要走反向征收,这一步在注册时极容易漏掉。
最快的修法(截至 2026 年 6 月):打开 chatgpt.com → 头像 → Settings → Account → Payment → Manage(会跳到 Stripe 托管的账单页面)。在 Billing information 里把档案改成企业身份,填上完整法定名、地址,以及带国家前缀的 VAT 号(DE…、NL…、FR…、GB…)。一个有效的欧盟 VAT 号会让下一张发票变成零税率反向征收。当月这张发票不会追溯修改——已经开出去的发票,得让 OpenAI 计费支持重开(见第 4 步)。
常见原因
按欧盟/英国客户实际踩坑的频次排序。
1. 账单档案当初是按个人(consumer)建的,不是企业
ChatGPT 默认注册建的是”个人”账单档案。个人档案会按本地 VAT 税率加税(德国 19%、荷兰 21% 等),但发票上没有 VAT 号——给终端消费者用够用了,但企业要抵扣进项 VAT 就不行了。
如何确认:你的发票上写着 Tax: 19% €3.80,但客户那行没有 VAT 号,“Bill to” 一栏只有你的名字,没有公司名。
2. 填了企业 VAT 号但没验证通过(或后来被移除)
企业档案带欧盟 VAT 号会触发反向征收(不加税,自己自核算)。但 OpenAI / Stripe 会把这个号去欧盟 VIES 系统验证一遍。要是验证悄无声息地失败了,档案会回退到个人处理方式。更糟的是,OpenAI 的计费条款写明:如果某个 Tax ID 事后被判定无效,可以随时从账户里移除,后续发票照常加 VAT——也就是说,曾经能用的号可能会悄悄失效。
如何确认:几周前你就填了 VAT 号,但最近一张发票还是带本地税。打开 Stripe 账单页面(Settings → Account → Payment → Manage)看 Tax ID 字段——如果是空的、或者保存的值跟你输入的不一样,说明验证没过或号被剥掉了。
3. 英国 VAT 号(脱欧之后)填的方式不对
英国 VAT 号(GB 前缀)脱欧后不再走欧盟 VIES——脱欧后 GB 号根本不在 VIES 里——而是走 HMRC 单独的验证。一些老版本的注册流程还把 GB 当欧盟处理,行为不稳定。
如何确认:英国 Ltd 客户填了 GB123456789,发票还是按 20% VAT 收。或者是零税但没有反向征收声明,HMRC 那边会被点名。
4. 改完税务信息后太早下载了发票
税号变更从下一个计费周期起生效,不追溯。当前这张发票仍然反映旧档案。
如何确认:你两天前刚改了税号,以为这个月的发票就改了。其实新税号要等下一周期才出现。
5. 系统从卡 BIN 识别国家,不是从账单地址识别
如果你的卡发卡国和企业地址不在一个国家,OpenAI 的税务引擎可能跟着卡走。结果就是税率错了,或者本该反向征收的反而按本地税加了。
如何确认:你公司在西班牙,账单地址也是西班牙,但发票按爱尔兰税率(23%)收了,因为你的卡是爱尔兰发的。
6. 发票发到了买方个人邮箱,不是公司发票邮箱
有人用私人 Gmail 订阅,然后指望公司会计去取发票。会计根本看不到——发票全在个人账号里。
如何确认:会计登的是共享收件箱,但 ChatGPT 从来没往那发过发票。其实全发到了你私人邮箱。
先对号入座
| 发票上的表现 | 最可能的原因 | 去哪步 |
|---|---|---|
| 加了 VAT、没 VAT 号、只有你名字 | 个人档案(#1) | 第 1 步 |
| 填了号之后还是加 VAT | VIES 验证没过或号被移除(#2) | 第 2 步 |
填了 GB 号,还是按 20% 英国 VAT | 英国 / HMRC 路由(#3) | 第 6 步 |
| 这周刚改过 Tax ID | 改动下个周期才生效(#4) | 第 4 步(重开) |
| 按错了国家的税率(如西班牙企业被按爱尔兰 23%) | 国家从卡 BIN 取的(#5) | 第 3 步 |
| 会计根本找不到任何发票 | 账单邮箱错 / 个人账号(#6) | 见”验证修复” |
开始前的准备
- 把企业 VAT 号准备成带国家前缀的格式:
DE123456789、NL123456789B01、FR12345678901、GB123456789。没前缀,OpenAI 的表单要么拒绝要么填错路径。 - 欧盟号先自己去 VIES 验一遍:ec.europa.eu/taxation_customs/vies——输自己的号,看是否返回 “Yes, valid VAT number” 加上你注册的企业名。(VIES 里没有
GB号。) - 英国号用 HMRC 自己的查询页:gov.uk/check-uk-vat-number——输入时不要带
GB前缀;还能下载一张带日期的证明,留作查过的凭证。 - 决定好发票抬头是给谁(你个人、你的 Ltd、你的 GmbH 等)再去改。
- 注意:发票变更不追溯——要赶在下次续费日之前操作完。
需要收集的信息
- 公司完整法定名,跟工商注册一字不差(有些国家要求严格)。
- 公司地址,含邮编和国家代码。
- 带国家前缀的 VAT / Tax ID。
- 账单邮箱(常常和登录邮箱不一样)。
- 信用卡账单和当前发票 PDF,用来对照。
- 续费日期——决定改动是这个周期生效还是下个周期。
一步步排查
按顺序做——跳过第 1 步,后面全白搭。
第 1 步:打开账单页面,填好企业信息
入口在 2026 年初改过位置。截至 2026 年 6 月:
- 个人 / Plus / Pro / Go 账号:
chatgpt.com → 头像 → Settings → Account → Payment → Manage。 - ChatGPT Business 工作区:
chatgpt.com → 头像 → Workspace settings → Billing → Settings → Edit。
Manage 和 Edit 都会跳到 Stripe 托管的账单页面。现在没有单独的 “Business / Personal” 开关了——你只要填了 Tax ID,就自动按企业身份处理。在 Billing information 里填完整法定名、企业地址、国家,这些会变成发票上的 “Bill to” 抬头。
第 2 步:VAT 号要带国家前缀填
在 Tax ID 字段,先选 ID 类型(比如 EU VAT、GB VAT),再按验证系统要求的格式填:
DE123456789 (德国)
NL123456789B01 (荷兰)
FR12345678901 (法国)
IT12345678901 (意大利)
ES12345678A (西班牙)
GB123456789 (英国)
IE1234567X (爱尔兰)
保存。Stripe 会把欧盟号去 VIES 验证(GB 转给 HMRC)。号有效,下一张发票就自动按零税率反向征收。如果你是在结账时就填的,从第一笔款就免税;后填的,从下一个计费周期起生效。
如果号被拒或被悄悄剥掉,自己再查一遍:欧盟号查 VIES,GB 号查 HMRC。常见原因是号刚注册不久、还没同步进 VIES(可能要几天)。
第 3 步:同一页面里修正国家 / 税率错误
如果发票按错了国家的税率(原因 #5,跟着卡 BIN 走),修法还是同一个页面:确认 Billing information 里的企业地址国家和你实际注册地一致,保存即可。Stripe 是根据账单地址加上有效 Tax ID 来判定 VAT 处理方式的,不看你的卡。修正后的税率从下一张发票生效。
第 4 步:让对方把上一张发票重开
Stripe 自助页面只改以后的发票,改不了已经开出去的 PDF。已经开出去的没 VAT 信息的发票,要通过 help.openai.com 的应用内帮助聊天联系 OpenAI 计费支持。手边备好 Invoice ID——它以 INV- 开头,印在 PDF 上。一封清楚的请求长这样:
Subject: Re-issue invoice with corrected business details
Body:
- Account email: <login email>
- Invoice ID: INV-XXXXXXXX (from the PDF)
- Invoice date: <date>
- Issue: missing company name / VAT number / wrong VAT rate
- Correct billing details:
Company: <legal name>
Address: <full address>
VAT number: <country prefix + number>
- Requesting: corrected invoice (credit note + new invoice if needed)
OpenAI / Stripe 通常 3-5 个工作日内重开。欧盟标准的修正流程是:对错误发票开一张 credit note(贷记单),再开一张信息正确的新发票;已经扣过税的发票能否退税,要按个案审核,可能受辖区和时效限制。
第 5 步:跨境 B2B 必须带反向征收声明
合规的欧盟跨境 B2B 反向征收发票上必须有这样一行声明:
"Reverse charge — VAT to be accounted for by the recipient
under Article 196 of Council Directive 2006/112/EC."
VAT 号验证通过后,OpenAI 的税务引擎会自动加上。如果重开的发票没这行,工单里明确要求加上——会计做 VAT 申报时要的就是这一句。
第 6 步:英国客户确认是国内业务还是跨境 B2B
如果 OpenAI 给你开票的实体是爱尔兰(OpenAI Ireland Ltd),你是英国 Ltd,那这是跨境 B2B,应该零税率 + 反向征收——你在自己的申报里自核算英国 VAT。如果是 OpenAI LLC(美国实体),按英国规则属于进口服务,同样走反向征收。发票上印的实体名要和 HMRC 期望的 VAT 处理方式对得上。先在 gov.uk/check-uk-vat-number 确认自己的 GB 号是有效的;如果号有效但发票还是按 20% 英国 VAT 收,就连同发票一起把请求发给 OpenAI 计费。
验证修复
- 下个月发票下载下来,确认上面有:公司名、完整地址、VAT 号、零税 + 反向征收声明(欧盟 B2B)或正确的本地税率。
- 把你的 VAT 号丢进 VIES(欧盟)或 HMRC(
GB)——返回的应该是你注册的企业名。 - 把发票给会计看——他确认能满足你所在国 VAT 申报要求。
- 确认发票邮件发到了正确的账单邮箱(在 Stripe 账单页面里设的那个),不是私人邮箱。
长期预防
- 企业订阅,从企业邮箱开通,结账时就把 Tax ID 填上——这样第一笔款就免税,不会留一个月错的发票。
- 每年用 VIES / HMRC 验证一次 VAT 号;有些国家会变号、会注销,而且一旦 OpenAI 计费判定你的 Tax ID 无效,可以不通知就移除它、重新开始收 VAT。
- 维护一份清单:哪条订阅开在哪个实体名下。ChatGPT、GitHub、Notion、Linear——个人和公司发票混着开是审计季最大的噩梦。
- Team / Enterprise 套餐,客户经理能配 PO 号、净付期等定制开票方式;开通时就提。
- 每月归档发票 PDF 到共享会计文件夹,别只留邮箱里。
- 跨境业务,原始发票和 VIES 验证截图都一起存。
常见误区
- VAT 号没带国家前缀就填进去——VIES 静默拒绝,你看不到错误。
- 以为改动会追溯。不会;有一个周期是部分修正,这正常。
- 在个人档案上填了公司 VAT 号——字段能看到,但发票上还是写”personal”。
- 觉得”verified”就等于”在我国合规”——这只表示 VIES 知道这个号。反向征收声明、客户名、地址必须都齐。
- 取消重订想”逼出一张新发票”——续费锚定日期没了,旧发票还是错的。
- 英国公司只填了
123456789没带GB——HMRC 验证失败,OpenAI 也确认不了,被按 20% 英国 VAT 收。
常见疑问
Q:ChatGPT Plus 个人订阅能加 VAT 号吗?
不能——VAT 号只对 Business / Team / Enterprise 档案生效。个人订阅本地 VAT 是固定的,也不能抵扣。
Q:我在德国是 Kleinunternehmer(小企业免税),没 VAT 号,还能开干净的发票吗?
可以。用 Business 档案、留空 VAT 号即可——发票仍然按本地税率含税开,但客户行会带你的公司名和地址,对收入端记账够用了。
Q:我的发票写的是 OpenAI LLC(美国),不应该是 OpenAI Ireland Ltd 给欧盟客户吗?
欧盟的个人和企业订阅由 OpenAI Ireland Ltd(都柏林,VAT IE 4143435AH)开票;OpenAI 从 2025 年起通过这个实体收欧盟 VAT。英国和很多其他非欧盟客户由 OpenAI LLC(美国)开票。发票上的实体应该和你的国家设置对得上。如果一张欧盟发票写的是 OpenAI LLC,多半是你的国家/地址设错了(见第 3 步)——把账单地址改对,再按第 4 步重开。相关路由问题:ChatGPT 订阅未识别。
Q:能不能一次把全年发票批量下载?
打开 Stripe 账单页面(Settings → Account → Payment → Manage),翻到 Invoice history / Billing history,每张发票点一下就能下 PDF。没有打包导出,所以月份多的话要么一张张下,要么联系计费要一份合并对账单。
Q:公司名带特殊字符(德语 ä、法语 é),发票上变成乱码了。
直接走 Stripe 客户中心(第 3 步)改,Stripe 端能正确处理 UTF-8。OpenAI UI 偶尔会吃掉非 ASCII 字符。