TF Fiscal
开发文档

参考

错误码

TF Fiscal Open API 错误码合并参考,按层与领域分组,附 HTTP 状态、场景与处置建议。

错误形状

错误按产出层分三种形状,见通用约定

HTTP形状码字段
平台网关(鉴权、订阅、限流、文件下载链接)401 / 403 / 404 / 429 / 503平台信封 {success, errorType, code, message}code(整数)
开票主体、NF-e、CT-e、DC-e、Webhook 注册400 / 404数组 [{codigo, mensagem}],每个问题一条codigo(字符串)
NF-e 验证与身份核验400 / 422 / 428 / 451 / 500 / 503裸对象 {code, message}code(整数)

messageLanguage / Accept-Language 请求头本地化(默认葡语)。请按码分支,不要按文案分支。数组形状里 GW001CER0005NFe0001CTe0001DCe0001DCe0000x 沿用字母数字原码;其余 codigo 为平台错误码数字串。

各领域码段:

码段领域
10001xxx请求校验与平台异常
10003xxx开票主体与证书
10004xxxNF-e 开票、作废与更正函
10005xxx税务引擎
10009xxx开放平台(鉴权、订阅、限流、webhook、下载链接)
10013xxx文件下载
10015xxxNF-e 验证
10016xxx身份核验(CNPJ / CPF)
10017xxxCT-e
10019xxxDC-e

网关:鉴权与授权

平台信封形状,在请求到达接口前产出。401 与 403 属配置错误,不修复就重试没有意义,还可能触发限流。签名方案见认证与签名

HTTPcode含义处置
40110009000缺少签名请求头(token / sign / timestamp每次请求带全三个头
40110009001时间戳非法或时钟偏差超 ±300 秒校准时钟(NTP);每次请求重新生成时间戳,勿复用
40110009002token 无效核对 app_secret;如已轮换请更新配置
40110009003签名不匹配重新推导签名;见认证与签名的核对清单
40310009004应用已停用联系平台
40310009015应用未生效(待审批或已驳回)等待审批 / 联系平台
40310009014集成商账户已停用联系平台
40310009005接口未订阅为所调端点申请订阅
42910009006超出限流额度退避重试(初始 1 秒,倍增至 30 秒上限,加抖动);限流按应用与接口组两级实施

下载链接(linkDanfelinkDownloadXmllinkDaccenfeLinkXmlcteLinkDactedceLinkDace 等)是不带签名头的 GET 请求;失败以 HTTP 状态 + 平台信封返回,见文件下载

HTTPcode含义处置
40110009035下载链接无效(路径被改、令牌挪用或签名不符)使用查询接口原样返回的链接
40110009036下载链接已过期重新调用查询接口获取新链接
50310009037文件尚未生成(渲染服务繁忙)Retry-After 稍后重试同一链接
40410013011下载的文件不存在核对链接来源
42910013016回调链接的单 IP 下载过于频繁Retry-After 重试

请求校验与平台异常

codeHTTP形状场景处置
10001001400数组请求字段校验失败,每字段一条;亦包括 emissaoDCe 段的注册 / 更新契约错误(两个配置块都缺、更新改 cnpj / 换市政、号段降号、换系列)mensagem 修正
10001000500裸对象验证或身份核验调用的平台侧异常退避重试;持续出现请携带失败请求的 timestamp 与路径联系平台

开票主体与证书

数组形状。见开票主体

codigoHTTP场景处置
GW001400注册:城市 / 州解析不到 IBGE 码;开票:收件人 IBGE 市政码不存在或与 uf 不一致核对 UF 与城市名 / IBGE 码
CER0005400证书密码不符核对密码
10003000404empresaId 不存在或非本应用名下核对 empresaId
10003002400CNPJ 已注册该主体已存在,直接使用原 empresaId
10003006400注册资料缺 IEinscricaoEstadual
10003010400证书 CNPJ 与主体不一致换正确证书
10003011400证书已过期换有效证书
10003012400证书与现有证书重复无需上传
10009033400Webhook 注册参数不合法(id 不匹配 / contentType 非 JSON)按说明修正,见 Webhook 注册

NF-e

数组形状。业务错误为 HTTP 400;单据不存在为 HTTP 404,codigoNFe0001。发行阶段的 SEFAZ 驳回不走 HTTP 错误,而是查询结果 Negada + webhook invoice.rejected。见 NF-e

codigoHTTP场景处置
NFe0001404查询 / 作废 / 更正函的 nfeId 不存在核对开票时传入的 id 与 empresaId
10004002400该 CNPJ 待处理开票任务超限稍后重试
10004004400主体不可开票(未审批通过或证书未就绪)等待审批 / 关联证书
10004012400作废 / 更正函:票不在已授权状态查询确认状态
10004013400作废:超出 24 小时窗口改开退货票
10004014400作废:SEFAZ 拒绝(附返回码与原因)按 SEFAZ 原因处理
10004015400更正函:同票已达 20 封不能再登记,需作废重开或退货票
10004016400更正函:SEFAZ 拒绝(附返回码与原因)按 SEFAZ 原因处理
10004017400更正函:内容净化后不足 15 字符用葡语 / ASCII 文本重写
10004019400更正函:超出授权后 720 小时窗口只能作废重开或退货票
10004021 至 10004026400退货票引用校验:缺引用 / 非退货票带引用 / 原票不存在或不属本主体 / 原票未授权 / 原票行不存在 / 数量超原票行NF-e 开票的退货票规则
10004030400ambienteEmissao 与主体当前环境不一致按主体环境提交或联系运营切换,见环境
10004031400不支持的取值(presencaConsumidor / 多条支付 / 未知支付类型 / tipoPessoa 与证件不符 / CPF 买方携带 inscricaoEstadualNF-e 开票的支持范围调整
10004034400CNPJ 买方未传 cliente.inscricaoEstadual补买方 IE(ICMS 纳税人)
10004043400契约字段缺失(税码所需的减基比例 / ST MVA 与税率 / 递延比例 / 按量单位税额 / IPI 税码 / pCredSN 请求与档案皆无),mensagem 点名字段路径NF-e 开票的税码矩阵补字段
10004044400字段不适用于该税码(非 ST 税码带 substituicaoTributaria、非抵免税码带 percentualCreditoSimples去掉该组
10004045400CNPJ 买方的 cliente.inscricaoEstadual 不符合买方所在州的校验位规则(否则取号后被 SEFAZ 209 拒绝并烧号)核对买方 IE 与州
10004046400税码与主体税制不匹配(CRT 1/4 须三位 CSOSN,CRT 2/3 须两位 CST)按主体税制改税码
10004047400非纳税人买方使用了只对纳税人合法的税码(10/30/70、101/201/202/203)或携带 pCredSN改用 102 / 500 或不带抵免的 900
10005000400税务引擎校验拒绝(税制错配、ST 用于非纳税人、税率越界等)NF-e 开票的税参规则

CT-e

数组形状。业务错误为 HTTP 400;单据 / 任务不存在为 HTTP 404,codigoCTe0001。发行阶段的 SEFAZ 驳回体现为查询结果 Negada + webhook cte.rejected。见 CT-e

codigoHTTP场景处置
CTe0001404cteId 不存在或非本主体核对 id 与 empresaId
10003000404empresaId 不存在核对 empresaId
10017004400主体不可发行(未审批 / 证书未就绪)等待审批 / 关联证书
10017005 / 10017006400同请求并发重复 / 该 CNPJ 待处理任务超限稍后重试
10017007400号段无法确定(未配置或多个启用号段未指定)配置模型 57 号段
10017010400ambienteEmissao 与主体环境不一致按主体环境提交
10017011400市政 IBGE 码不存在核对 codigoIbge
10017012 / 10017013400参与方缺失 / 承担方与 IE 指示不符补参与方或改 indicadorIeTomador
10017014400单据引用不合法(缺失、chave 校验位错、三种类型混用、前序单据与服务类型不符)调整单据引用
10017015400单据类型与引用不符(补充 / 替代)tipoctesComplementados / cteSubstituido
10017016400运费组成合计不等于总额,或 aReceber 大于总额修正金额
10017017 / 10017018 / 10017019400RNTRC 非法 / 模态不支持 / 枚举或格式非法(mensagem 点名字段)mensagem 修正
10017020 至 10017025400税参缺失 / 禁传 / 与税制不符 / 跨州非纳税人缺 icmsUfFim / 税率表缺项 / CST 不支持CT-e 的税参说明
10017030400id 报文不同换 id 或沿用原报文
10017031400生产环境同 id 已有在途 / 已授权单据查询原单
10017040 至 10017045400状态不允许事件 / 超取消窗口 / 事件文本非法 / SEFAZ 拒绝事件 / 更正序号超限 / 被撤销事件不存在CT-e 的取消与事件规则
10017048 / 10017049400已登记信函更正不可取消 / 信函更正超 720 小时窗口CT-e 的取消与事件规则
10001001400请求字段校验失败(每字段一条)mensagem 修正

DC-e

数组形状。业务错误为 HTTP 400;单据 / 任务不存在为 HTTP 404,codigoDCe0001。文档给出示例码的情形沿用该码值,其余 codigo 为平台错误码数字串。发行阶段的 SEFAZ 驳回体现为查询结果 Negada + webhook dce.rejected;取消阶段的 SEFAZ 拒绝走 dce.cancel_rejected。见 DC-e

codigoHTTP场景处置
DCe0001404dceId 不存在、非本主体,或取消时单据尚未物化核对 id 与 empresaIdPendente 单据待授权后再取消
10003000404empresaId 不存在核对 empresaId
DCe00004400主体未配置 DC-e 发行(缺 tipoEmitente / 模型 99 号段 / Marketplace 站点),或 ambiente 与主体当前环境不一致注册时传 emissaoDCe 或带 id 更新补配;按主体当前环境提交,切生产联系运营
DCe00005400Marketplace / Carrier 主体未传 remetente补发件方
DCe00006400remetente.endereco 缺失补发件方地址
DCe00007400巴西发件方缺 cpfCnpj补发件方证件
DCe00008400主体不可发行(未审批 / 证书未就绪)等待审批 / 关联证书
DCe00009400巴西收件方缺 cpfCnpj补收件方证件
GW001400市政 IBGE 码不存在或与 uf 不一致核对 cidade / uf
10019005 / 10019006400同请求并发重复 / 该 CNPJ 待处理任务超限稍后重试
10019007400号段无法确定(多个启用号段)联系运营收敛号段
10019013400主体类型 Carrier 当前不支持发行改用 Marketplace / OwnIssuer 主体
10019018400明细不合法(NCM 位数、数量 ≤ 0、单价为负)mensagem 修正
10019019400枚举或格式非法(mensagem 点名字段:tipoPessoamodalidadedataEmissao、证件、电话、邮箱、自发主体 remetente 与主体不符等)mensagem 修正
10019020400承运商 CNPJ 不合法修正 cnpjTransportadora
10019021400附加信息超长缩短文本
10019022400autorizacaoDownloadXml 条数或证件不合法;含发行方自身 CNPJ;同一证件重复修正该列表
10019030400id 报文不同换 id 或沿用原报文
10019031400生产环境同 id 已有在途 / 已授权单据查询原单
10019040 至 10019043400状态不允许取消 / 超 24 小时窗口 / 取消已受理 / 理由不合法DC-e 的取消规则
10019048400dataEmissao 超出允许窗口(超前大于 5 分钟或回溯大于 30 天,mensagem 带当前允许范围)改用当前时刻或省略 dataEmissao
10001001400请求字段校验失败(每字段一条);emissaoDCe 的注册 / 更新契约错误mensagem 修正

NF-e 验证

裸形状 {code, message},HTTP 400,请求未进入校验流程。见 NF-e 验证

code接口含义处置
10015000XML 验证请求体为空在 body 中发送 XML
10015001XML 验证超过 1 MB真实单张 NF-e 不会超过此限制;检查是否包了一层或二次编码
10015002XML 验证检测到 DTD(<!DOCTYPE去除 DTD;作为 XXE 防护直接拒绝
10015003XML 验证编码非 UTF-8提交前转为 UTF-8
10015104chave 查询chave 非法(长度 / 字符 / 校验位)先本地校验:44 位数字;末位为 mod-11 校验位
10015004chave 查询各数据源均查无此票平台与官方数据源均无该 chave;与开票方核实

一级校验错误

HTTP 200 返回,位于 XML 验证响应的 validation.errors[]。这些不是传输错误:请求成功、单据不合格。除 PROTOCOL_MISSING(warning)外均为阻断项(终态 REJECTED)。

errors[].code数字码含义
XML_MALFORMED10015100XML 语法非法
XSD_INVALID10015101不符合 NF-e 4.00 XSD 版式
SIGNATURE_INVALID10015102数字签名验证失败(内容被篡改,或签名时证书已过期)
SIGNATURE_CERT_MISMATCH10015103签名证书 CNPJ 与开票方不符
ACCESS_KEY_INVALID10015104chave 结构 / 校验位非法
ACCESS_KEY_MISMATCH10015105chave 分段与票面字段不一致
PROTOCOL_MISMATCH10015106协议块与票内容不自洽
PROTOCOL_MISSING10015107无协议节点(warning,不阻断
XML_VERSION_UNSUPPORTED10015108版式版本非 4.00

二级结论

非 HTTP 错误:经 webhook invoice.verify.completed 送达。

validationStatus终态处置
VALIDATED可放行(发货、结算)
REJECTED不可放行;reason 说明 SEFAZ 判定(已取消 / 否决 / 作废 / 查无 / 协议不符)
VALIDATION_ERROR平台侧核验失败,非发票判定;稍后带请求头 forceRevalidate: true 重新提交

身份核验

裸形状 {code, message}。格式与校验位错误由平台本地拦截,不会发往上游数据源,因此不消耗调用额度也不计费。见身份核验

codeHTTP责任方含义处置
10016000400调用方CPF 格式不合法(须 11 位数字)检查是否误传格式符或位数不足
10016001400调用方CPF 校验位不合法本地先用 mod-11 算法校验
10016002400调用方出生日期格式不合法(须 DDMMYYYY 有效日期)注意是日月年顺序,且须为真实存在的日期
10016003400调用方未找到该 CPF 的信息该 CPF 不存在,或 CPF 与出生日期不匹配(二者不作区分)
10016004451第三方(上游依法拦截)LGPD: menor de 16 anos (Lei Felca),持有人小于 16 岁依法不提供数据,勿重试
10016005422第三方(上游依法拦截)LGPD: menor de idade,持有人 16 到 17 岁依法不提供数据,勿重试
10016006428第三方(上游依法拦截)LGPD: idade nao verificavel - informe a data de nascimento para completar a verificacao,年龄无法核实平台已带出生日期补核验一次仍未通过,勿重试
10016010400调用方CNPJ 格式不合法(须 14 位数字)检查是否误传格式符
10016011400调用方CNPJ 校验位不合法本地先用 mod-11 算法校验
10016012400调用方未找到该 CNPJ 的信息该 CNPJ 在官方登记中不存在
10016020503第三方(上游不可用)上游数据源暂不可用指数退避重试(初始 1 秒,倍增至 30 秒上限,加抖动);持续出现请联系平台

处理指引

  • 401 / 403:配置错误;修正凭证、订阅或时钟。不要原样重试。
  • 400 / 404:请求或业务规则问题;按码修正。少数码为暂时性,可稍后重试:10004002、10017005 / 10017006、10019005 / 10019006。
  • 422 / 428 / 451:身份核验的法定拦截;重试无意义。
  • 429:指数退避加抖动(初始 1 秒,倍增至 30 秒上限)。
  • 503:按 Retry-After 重试同一请求或链接(10009037、10016020)。
  • 5xx:退避重试;持续失败请携带失败请求的 timestamp 与路径联系平台。
  • 信封 errorType1 API 错误、2 SEFAZ 驳回、3 系统异常(可重试)、4 字段校验失败(修正请求)。
  • 不要盲目重发被驳回的单据NegadaREJECTED 是终态结论,先按 SEFAZ 原因处理。