状态码 402余额与额度(402)Claude CodeCodex CLICursorClineCherry StudioopencodeSDK / curl 直接调用

报 402 insufficient_balance「余额不足」怎么解决

报错原文
API Error: 402 {"type":"error","error":{"type":"insufficient_balance","message":"余额不足,请前往 https://www.ccsub.net/purchase 充值"}}

CCSub 返回 402 insufficient_balance 有三种文案:余额不足、可用余额不够本次预估、月卡今日额度已用完。看清是哪一种,再决定是充值、等北京时间 0 点额度重置,还是等几分钟让预冻结释放。

3 步解决

  1. 1

    看 message 属于哪一种

    只写「余额不足」是可用余额已经为 0;带「可用 $x,本次预估 $y」是还有余额但不够这次请求的预冻结;写「今日月卡额度已用完」是月卡当天的额度用完、而且按量余额也没有了。

  2. 2

    到控制台核对余额和今日额度

    控制台首页看账户余额,月卡页看「剩余今日额度」。使用记录里被拦下的请求费用是 $0,不会扣钱。

  3. 3

    充值或等待重置

    按量余额不够就去充值页充值;月卡额度用完可以等北京时间 0 点自动重置,或充一点按量余额继续用。余额明明够却报「本次预估」,多半是并发请求占用了预冻结,几分钟后重试即可。

同一个问题的其他写法

  • 余额不足(可用 $0.12,本次预估 $0.50),请前往 https://www.ccsub.net/purchase 充值
  • 今日月卡额度($50/天)已用完,将于北京时间 0 点重置;如需继续使用,请前往 https://www.ccsub.net/purchase 充值余额
  • unexpected status 402 Payment Required: {"type":"error","error":{"type":"insufficient_balance","message":"余额不足,请前往 https://www.ccsub.net/purchase 充值"}}, url: https://www.ccsub.net/api/v1/responses

三种 402 文案分别是什么意思

CCSub 的 402 错误类型都是 insufficient_balance,但 message 有三种,原因和处理方式不一样。

1. 余额不足,请前往充值

账户没有有效月卡,并且可用余额已经小于等于 0。这种情况只能去 充值页 充值按量余额。按量余额不会因为月份结束而清零。

2. 余额不足(可用 $x,本次预估 $y)

这一种最容易让人困惑:明明余额不是 0,为什么还拦?

原因是预冻结。每个请求转发前,CCSub 会按型号先冻结一笔估算费用,请求结束后按实际 Token 用量结算,多冻的部分释放回来。代码里目前的估算值大约是:Opus 档每次 $0.50,Sonnet 档 $0.15,Haiku 档 $0.03,再乘以这把 Key 所在分组的倍率。所以:

  • 余额只剩 $0.30 时请求 Opus 档型号,会因为不够冻结 $0.50 被拦,哪怕这次实际只会花几分钱。换成便宜的型号,或者充值后再用。
  • 同时开很多个请求时,每个都会冻结一笔。例如 Claude Code 同时跑多个子代理,可用余额会被这些冻结占满,后发的请求就会 402。等前面的请求结束、冻结释放后就恢复了。
  • 请求异常中断时偶尔会残留冻结,系统每 5 分钟自动清理一次。余额明明够、只是短时间报这个错,等几分钟重试即可。

3. 今日月卡额度($N/天)已用完

月卡每天有固定的美元额度,按北京时间 0 点重置,当天用不完的部分作废、不会累积到第二天。计费顺序是先用当天额度,额度用完自动改用按量余额,所以只有「当天额度用完」并且「按量余额也没有」时才会看到这句。可以等北京时间 0 点重置,或者充值一点按量余额接着用。月卡页面 会显示「剩余今日额度」。

怎么确认不是上游的问题

CCSub 自己返回的 402 一定是中文文案、带 https://www.ccsub.net/purchase 链接。如果你看到的是英文的 Insufficient Balance、insufficient account balance 之类,那不是你的账户:上游线路账户的余额问题会被 CCSub 改写成 503,文案是「上游线路暂时不可用,请稍后重试(不是您账户余额的问题)」,处理方法见 503 上游繁忙。

不同工具里长什么样

  • Claude Code:API Error: 402 {...},不会自动重试,充值后在原会话里发一句「继续」即可。
  • Codex CLI:unexpected status 402 Payment Required: {...}, url: https://www.ccsub.net/api/v1/responses。
  • Cursor、Cline、Cherry Studio 等:通常把 message 原样显示在对话框里。
  • 自己写代码:HTTP 状态码 402,JSON 里 error.type 是 insufficient_balance,可以据此提示用户去充值,不要无限重试。

被 402 拦下的请求会以 $0 的费用出现在 使用记录 里,不会扣钱。

常见问题

我明明还有余额,为什么报 402?

每个请求在转发前都会按型号预冻结一笔估算费用,请求结束再按实际用量结算、释放冻结。可用余额等于余额减去正在冻结的金额。余额只剩几毛钱、又在请求高价型号,或者同时开了很多个请求,都可能出现「可用 $x,本次预估 $y」。异常残留的冻结每 5 分钟会自动清理一次。

月卡用户为什么也会看到 402?

月卡每天有固定的美元额度,按北京时间 0 点重置,当天没用完的不累积。当天额度用完后会自动改用按量余额;只有额度和按量余额都用完时才返回 402。

报错是英文的 Insufficient Balance,是我的余额问题吗?

不是。CCSub 自己的 402 文案是中文的、并且带充值链接。上游线路的余额类问题会被转换成 503「上游线路暂时不可用(不是您账户余额的问题)」,与你的账户无关,稍后重试即可。

402 的请求会扣费吗?

不会。402 在转发给模型之前就返回了,使用记录里这类请求的费用都是 $0。

还是不行?

还没有 CCSub 账号?

注册后在控制台创建 API Key,填进 Claude Code、Codex 等工具即可使用,按实际用量计费。