TF Fiscal
开发文档

开票主体

TF Fiscal 开票主体的生命周期、一个主体如何同时服务 NF-e / CT-e / DC-e / NFS-e、税制推导、DC-e 与 NFS-e 的开通方式与相关错误码。

什么是开票主体

开票主体(empresa)是被代为开具单据的法律实体:电商平台的卖家、承运人,或为自己开票的集成商。每个主体由注册开票主体返回的 empresaId 标识,它是所有发行、查询、取消端点的路径变量。

步骤端点说明
1 注册主体POST /openapi/v2/empresas返回 empresaId、dceHabilitado 与 nfseHabilitado;请求体带 id 即更新既有主体
2 关联证书POST /openapi/v1/empresas/{empresaId}/certificadoDigitalA1 证书(.pfx / .p12)与密码;multipart 或 JSON + Base64
3 登记回调POST /openapi/v1/webhooks每个应用一个回调地址,所有单据类型共用

生命周期

  1. 注册:注册接口调用成功后,主体进入平台审核队列。同一 CNPJ 重复注册返回 10003002;直接使用原 empresaId,或带 id 更新。
  2. 证书:关联 A1 证书。证书须属于主体 CNPJ(10003010)、在有效期内(10003011)且与当前生效证书不同(10003012);密码不符返回 CER0005。上传成功即替换旧证书。
  3. 审批:由运营审批主体。运营审批通过、且证书关联成功后主体方可开票。审批前开票,NF-e 返回 10004004(DC-e 为 DCe00008,CT-e 为 10017004)。审批进度请与平台运营确认。
  4. 环境:每个主体有一个当前环境,认证测试 Homologacao 或生产 Producao。新注册主体默认认证测试;切生产由平台运营操作、不开 API。每个发行请求里的环境值(NF-e 与 CT-e 为 ambienteEmissao,DC-e 为 ambiente)必须与主体当前环境一致,不一致返回 10004030(NF-e)、10017010(CT-e)或 DCe00004(DC-e)。参见环境。

注意: 更新(请求体带 id)不重新提交审核,也不改变主体状态与环境。

一个主体,四种单据

同一 empresaId、同一证书、同一回调地址服务所有单据类型。不同之处在于各类型所需的号段:

单据类型模型号段配置方式环境字段不可开票错误码
NF-e55注册时的 emissaoNFeProduto.ambienteProducao(sequencialNFe / serieNFe)ambienteEmissao10004004
CT-e57由平台侧配置;注册报文没有 CT-e 配置块。未配置号段,或存在多个启用号段且请求未指定时,发行返回 10017007ambienteEmissao10017004
DC-e99注册时或带 id 更新时的 emissaoDCe.ambienteProducao(tipoEmitente、sequencialDCe / serieDCe、siteMarketplace)ambienteDCe00008
NFS-e—注册时或带 id 更新时的 emissaoNFSe(序列、起始票号与税制身份),也可由运营维护ambienteEmissao10018004
  • emissaoNFeProduto、emissaoDCe 与 emissaoNFSe 各自可选、至少传一个。只开 NF-e 传第一个,只开 DC-e 或只开 NFS-e 的主体可省略它(不建模型 55 号段),传多个则对应单据同时开通。三个都缺返回 400 10001001。
  • 注册时提交的系列与下一号即开票使用的号段,此后平台自动连续取号。
  • CT-e 发行还要求该 CNPJ 在其州税务局有 CT-e 发行资质;资质缺失时 SEFAZ 返回 230 - IE do emitente não cadastrada,平台无法代为解决。

税制推导

主体税制由注册时的两个布尔值推导,更新不可变更:

meioptanteSimplesNacional税制
true任意MEI
falsetrueSimples Nacional
falsefalse一般税制

税制决定 NF-e 商品行可用的税码族(Simples / MEI 用 CSOSN,一般税制用 CST),见 NF-e;也决定 NFS-e 档案里 regimeApuracaoSn 是否必填,见下文。inscricaoEstadual 是开具 NF-e / CT-e / DC-e 的必填项,缺失返回 10003006;只做 NFS-e 的主体不要求州注册号。

开通 DC-e

DC-e(模型 99)由 emissaoDCe 配置块开通:

json
"emissaoDCe": {
"ambienteProducao": {
"tipoEmitente": "Marketplace",
"sequencialDCe": 1,
"serieDCe": "1",
"siteMarketplace": "https://loja.exemplo.com.br"
}
}
  • tipoEmitente 为 Marketplace(电商平台代非纳税人卖家 / 个人发件)或 OwnIssuer(企业自发)。Carrier 可登记但发行被 10019013 拒绝。Marketplace 必须传 siteMarketplace。
  • 未传 emissaoDCe 的主体不会开通 DC-e:注册仍成功,响应 dceHabilitado=false,发行时收到 DCe00004。请在注册当场核对该字段。
  • 事后补开 DC-e:带 id 重传注册报文并加上 emissaoDCe 块。模型 99 号段只升不降:sequencialDCe 只能抬高下一号,不能降低(400 10001001);旧系列仍启用时换 serieDCe 会被拒绝(400 10001001,须经运营)。

开通 NFS-e

NFS-e 由 emissaoNFSe 配置块开通。带上本块主体才能开 NFS-e,票号序列也在此建立。这里只放不会一张票一个样的东西——服务码、CNAE、NBS、ISS 税率、代扣与 IBS/CBS 都跟着卖的是什么服务走,放在每张票的 servico 块里传。

json
"emissaoNFSe": {
"serieDps": "1",
"sequencialDps": 1,
"regimeApuracaoSn": 1,
"regimeEspecialTributacao": 0
}
字段类型必填说明
serieDpsstring(1-5 位数字)否开票用的 DPS / RPS 序列号。每张票都用本项,发行请求不接受单独的序列号。本项不传则为 1
sequencialDpsinteger否下一张要开的票号,从 1 起。从别家迁移过来时传已用过的最大号加一,票号才能接着原来的继续。本项不传则为 1。号段一旦建立,更新时不再改动
regimeApuracaoSnintegerME/EPP 必填Simples Nacional 怎么计算税:1 联邦与市政均按 SN / 2 联邦按 SN、市政固定额 / 3 联邦按 SN、市政常规。Simples 归属由顶层 optanteSimplesNacional / mei 推导。非 Simples 主体传了本项即拒
regimeEspecialTributacaointeger否有没有特殊税务待遇:0 无 / 1 合作社行为 / 2 核定征收 / 3 市政微型企业 / 4 公证登记 / 5 自由职业者 / 6 专业人士合伙。本项不传则为 0
  • 注册响应新增 nfseHabilitado:{ "empresaId": "…", "dceHabilitado": false, "nfseHabilitado": true }。未传本块即 false,发行时收到 10018005。
  • 更新(请求体带 id)带本块时整份覆盖档案:未传的可选项即回默认值;不带本块则档案不动,nfseHabilitado 回显主体现状。强制指定市政标准是运营动作,不经本块。
  • 结构约束在受理期即拒(400 10001001):ME/EPP 缺 regimeApuracaoSn、非 Simples 带 regimeApuracaoSn。
  • 只做 NFS-e 的主体可以不传 emissaoNFeProduto(不建模型 55 号段),也不要求州注册号 inscricaoEstadual。
  • 圣保罗主体的市政登记号 CCM 取顶层 inscricaoMunicipal,不在本块重复。

相关错误码

错误码HTTP场景处置
10003002400CNPJ 已注册该主体已存在,直接使用原 empresaId 或带 id 更新
10003000404empresaId 不存在或非本应用名下核对 empresaId
10003006400注册资料缺 IE补 inscricaoEstadual
10003010 / 10003011 / 10003012400证书 CNPJ 与主体不一致 / 已过期 / 与现有证书重复换正确证书
10003035400Base64 非法或证书超过 1MB(JSON 形态)修正编码或文件
CER0005400证书密码不符核对密码
GW001400注册:城市 / 州解析不到 IBGE 码核对 UF 与城市名
10004004400主体不可开票(未审批通过或证书未就绪)等待审批 / 关联证书
10004030400ambienteEmissao 与主体当前环境不一致按主体环境提交或联系运营切换
10001001400字段校验失败,或注册 / 更新契约错误(三个配置块都缺、更新改 cnpj / 换市政、DC-e 号段降号、换系列、emissaoNFSe 结构约束不满足)按 mensagem 修正

完整清单见错误码。