开票主体
TF Fiscal 开票主体的生命周期、一个主体如何同时服务 NF-e / CT-e / DC-e、税制推导、DC-e 开通方式与相关错误码。
什么是开票主体
开票主体(empresa)是被代为开具单据的法律实体:电商平台的卖家、承运人,或为自己开票的集成商。每个主体由注册开票主体返回的 empresaId 标识,它是所有发行、查询、取消端点的路径变量。
| 步骤 | 端点 | 说明 |
|---|---|---|
| 1 注册主体 | POST /openapi/v2/empresas | 返回 empresaId 与 dceHabilitado;请求体带 id 即更新既有主体 |
| 2 关联证书 | POST /openapi/v1/empresas/{empresaId}/certificadoDigital | A1 证书(.pfx / .p12)与密码;multipart 或 JSON + Base64 |
| 3 登记回调 | POST /openapi/v1/webhooks | 每个应用一个回调地址,所有单据类型共用 |
生命周期
- 注册:注册接口调用成功后,主体进入平台审核队列。同一 CNPJ 重复注册返回
10003002;直接使用原empresaId,或带id更新。 - 证书:关联 A1 证书。证书须属于主体 CNPJ(
10003010)、在有效期内(10003011)且与当前生效证书不同(10003012);密码不符返回CER0005。上传成功即替换旧证书。 - 审批:由运营审批主体。运营审批通过、且证书关联成功后主体方可开票。审批前开票,NF-e 返回
10004004(DC-e 为DCe00008,CT-e 为10017004)。审批进度请与平台运营确认。 - 环境:每个主体有一个当前环境,认证测试
Homologacao或生产Producao。新注册主体默认认证测试;切生产由平台运营操作、不开 API。每个发行请求里的环境值(NF-e 与 CT-e 为ambienteEmissao,DC-e 为ambiente)必须与主体当前环境一致,不一致返回10004030(NF-e)、10017010(CT-e)或DCe00004(DC-e),这是防止测试单据误开进生产的硬校验。参见环境。
注意: 更新(请求体带
id)不重新提交审核,也不改变主体状态与环境。
一个主体,三种单据
同一 empresaId、同一证书、同一回调地址服务所有单据类型。不同之处在于各类型所需的号段:
| 单据类型 | 模型 | 号段配置方式 | 环境字段 | 不可开票错误码 |
|---|---|---|---|---|
| NF-e | 55 | 注册时的 emissaoNFeProduto.ambienteProducao(sequencialNFe / serieNFe) | ambienteEmissao | 10004004 |
| CT-e | 57 | 由平台侧配置;注册报文没有 CT-e 配置块。未配置号段,或存在多个启用号段且请求未指定时,发行返回 10017007 | ambienteEmissao | 10017004 |
| DC-e | 99 | 注册时或带 id 更新时的 emissaoDCe.ambienteProducao(tipoEmitente、sequencialDCe / serieDCe、siteMarketplace) | ambiente | DCe00008 |
emissaoNFeProduto与emissaoDCe各自可选、至少传一个。只开 NF-e 传前者,只开 DC-e 的主体可省略前者(不建模型 55 号段),两个都传则两种单据同时开通。两个都缺返回 40010001001。- 注册时提交的系列与下一号即开票使用的号段,此后平台自动连续取号。
- CT-e 发行还要求该 CNPJ 在其州税务局有 CT-e 发行资质;资质缺失时 SEFAZ 返回
230 - IE do emitente não cadastrada,平台无法代为解决。
税制推导
主体税制由注册时的两个布尔值推导,更新不可变更:
mei | optanteSimplesNacional | 税制 |
|---|---|---|
true | 任意 | MEI |
false | true | Simples Nacional |
false | false | 一般税制 |
税制决定 NF-e 商品行可用的税码族(Simples / MEI 用 CSOSN,一般税制用 CST),见 NF-e。inscricaoEstadual 在本平台为必填,缺失返回 10003006。
开通 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拒绝,待新 schema 包发布后放开。Marketplace必须传siteMarketplace。- 未传
emissaoDCe的主体不会开通 DC-e:注册仍成功,响应dceHabilitado=false,发行时收到DCe00004。请在注册当场核对该字段。 - 事后补开 DC-e:带
id重传注册报文并加上emissaoDCe块。模型 99 号段只升不降:sequencialDCe只能抬高下一号,不能降低(40010001001);旧系列仍启用时换serieDCe会被拒绝(40010001001,须经运营)。
相关错误码
| codigo | HTTP | 场景 | 处置 |
|---|---|---|---|
10003002 | 400 | CNPJ 已注册 | 该主体已存在,直接使用原 empresaId 或带 id 更新 |
10003000 | 404 | empresaId 不存在或非本应用名下 | 核对 empresaId |
10003006 | 400 | 注册资料缺 IE | 补 inscricaoEstadual |
10003010 / 10003011 / 10003012 | 400 | 证书 CNPJ 与主体不一致 / 已过期 / 与现有证书重复 | 换正确证书 |
10003035 | 400 | Base64 非法或证书超过 1MB(JSON 形态) | 修正编码或文件 |
CER0005 | 400 | 证书密码不符 | 核对密码 |
GW001 | 400 | 注册:城市 / 州解析不到 IBGE 码 | 核对 UF 与城市名 |
10004004 | 400 | 主体不可开票(未审批通过或证书未就绪) | 等待审批 / 关联证书 |
10004030 | 400 | ambienteEmissao 与主体当前环境不一致 | 按主体环境提交或联系运营切换 |
10001001 | 400 | 字段校验失败,或注册 / 更新契约错误(两个配置块都缺、更新改 cnpj / 换市政、DC-e 号段降号、换系列) | 按 mensagem 修正 |
完整清单见错误码。
