TF Fiscal

核心接口

NFC-e 消费者发票

15 个接口

POST/api/nfce/company/create

注册 NFC-e 公司

注册(或更新)用于 NFC-e 开票的公司。公司名称、IE、地址和其他数据通过 SintegraWS 从 CNPJ 自动提取。如果 CNPJ 已存在于用户中,则更新 NFC-e 字段并返回现有公司。

必需请求头

请求头类型说明
tokenstring分销商令牌(b2b)
signstringMD5 签名
timestampstring秒级 Unix 时间戳

Body

字段类型说明
cnpj *string开票公司 CNPJ
cert_content *stringA1 数字证书文件内容(.pfx/.p12 的 Base64)
cert_filestring已废弃,2026-09-01 起拒绝。证书 HTTPS URL
cert_pwd *string证书密码
csc_id *string税务局的 CSC(纳税人安全代码)ID
csc *stringCSC 令牌(与税务局共享的密钥)
serie_nfceintNFC-e 系列
number_nfceintNFC-e 初始编号
telefonestring公司电话

* 必填字段。其他数据(名称、IE、地址等)通过 SintegraWS 从 CNPJ 自动提取。

POST/api/nfce/company/update

更新 NFC-e 公司

更新由 token 请求头标识的 NFC-e 公司。Body 中所有字段都是可选的 — 只发送要修改的字段。更新 cep 时,系统自动解析 stateCode 和 ibge。当 cert_content 和 cert_pwd 一起发送时,证书在保存前会经过验证。

必需请求头

请求头类型说明
tokenstringNFC-e 公司令牌
signstringMD5 签名
timestampstring秒级 Unix 时间戳

Body(所有字段可选 — 至少发送 1 个)

字段类型说明
标识
namestring公司名称
aliasstring商号
iestring州注册号
invoice_typestring税务制度
emailstring电子邮件
telefonestring电话
地址
cepstring邮政编码(自动更新 stateCode 和 ibge)
addressstring街道地址
house_numberstring门牌号
complementostring补充
townstring街区
citystring城市
statestringUF
NFC-e
csc_idstringCSC ID
cscstringCSC 令牌
serie_nfceint系列
number_nfceint下一个编号
cert_contentstringA1 数字证书文件内容(.pfx/.p12 的 Base64)
cert_filestring已废弃,2026-09-01 起拒绝。证书 HTTPS URL
cert_pwdstring证书密码

Body 中至少 1 个字段必填。CNPJ 不可修改。

POST/api/nfce/company/get

查询 NFC-e 公司

返回由 token 请求头标识的 NFC-e 公司数据。注意:方法是 POST,但 body 中无字段 — 公司仅通过令牌解析。

必需请求头

请求头类型说明
tokenstringNFC-e 公司令牌
signstringMD5 签名
timestampstring秒级 Unix 时间戳

Body

为空。可以发送 {}。

NFC-e 税种管理

税种定义了NFC-e开票时应用于产品的税务规则。与NFe不同,NFC-e仅适用于州内销售,因此结构更加简化:每种税只需一个对象,无需多个场景。

注意: NFC-e税种与NFe税种分开存储。每个税种包含ICMS、PIS、COFINS和IBS/CBS配置。本节所有接口均需在header中传入 token、sign 和 timestamp。
POST/api/nfce/category/create

创建 NFC-e 税种

创建一个 NFC-e 税务类目。每个类目只有单一场景(州内出库),ICMS、PIS、COFINS 和 IBS/CBS 使用扁平对象(不是数组,因为 NFC-e 不允许单一类目下有多个场景)。不包含 IPI。

必需请求头

请求头类型说明
tokenstringNFC-e 企业 token
signstringMD5 签名
timestampstringUnix 时间戳(秒)

Body(根)

字段类型说明
descricao *string类目描述
codigo_cfop *stringCFOP 代码(如 5102、5405)
icms *objectICMS 配置(扁平对象)
pis *objectPIS 配置(扁平对象)
cofins *objectCOFINS 配置(扁平对象)
ibs_cbsobjectIBS/CBS 配置(税制改革,可选)
desconta_icms_pis_cofinsboolean算 PIS/COFINS 前先减去 ICMS,按(金额 − ICMS)计税(巴西现行标准);默认 false 不减,税额会偏高

icms

字段类型说明
situacao_tributaria *stringCST/CSOSN(如 102、500)
aliquota_reducaodecimal计税基础减免百分比
aliquota_reducao_stdecimalICMS-ST 计税基础减免百分比
aliquota_creditodecimalSimples Nacional 信用税率(%)(CSOSN 101、201、900)
aliquota_diferimentodecimalICMS 递延百分比(CST 51)
motivo_desoneracaostring免税理由代码
ad_rem_icmsdecimalICMS 单一环节 — 从量税率(雷亚尔/单位)(CST 02、15、53)
ad_rem_icms_retdecimalICMS 单一环节 — 代扣从量税(雷亚尔/单位)(CST 15、61)
p_dif_monodecimalICMS 单一环节 — 递延百分比(CST 53)
q_bc_monodecimalICMS 单一环节 — 计税数量(升/千克);0 则使用项目数量(CST 02、15、53)
valor_desoneracaodecimalICMS 免征金额(雷亚尔)— 输出 vICMSDeson(CST 40、41、50、90)
v_bc_st_retdecimal上一环节已代扣 ICMS-ST 的计税基础(由调用方提供,不由系统计算 — CST 60、CSOSN 500)
p_stdecimal最终消费者承担的税率(%)(由调用方提供,不由系统计算 — CST 60、CSOSN 500)
v_icms_st_retdecimal上一环节已代扣的 ICMS-ST 金额(由调用方提供,不由系统计算 — CST 60、CSOSN 500)
v_icms_substitutodecimal替代纳税人自身的 ICMS 金额(由调用方提供,不由系统计算 — CST 60、CSOSN 500)
v_bc_fcp_st_retdecimal按 ST 代扣 FCP 的计税基础(由调用方提供,不由系统计算 — CST 60、CSOSN 500)
p_fcp_st_retdecimal按 ST 代扣的 FCP 税率(%)(由调用方提供,不由系统计算 — CST 60、CSOSN 500)
v_fcp_st_retdecimal按 ST 代扣的 FCP 金额(由调用方提供,不由系统计算 — CST 60、CSOSN 500)
aliquota_icmsarray各州税率:[{ "estado": "SP", "aliquota": 18.00 }]
aliquota_icms_starray各州 ICMS-ST 税率:[{ "estado": "SP", "aliquota": 18.00 }]
aliquota_mvaarray各州 MVA/IVA-ST:[{ "estado": "SP", "aliquota": 40.00 }]
aliquota_fcparray各州 FCP:[{ "estado": "SP", "aliquota": 0.00 }]
aliquota_fcp_starray各州 FCP-ST:[{ "estado": "SP", "aliquota": 0.00 }]
beneficio_fiscalarray各州税收优惠:[{ "estado": "SP", "codigo": "SP800001" }]

pis / cofins

字段类型说明
situacao_tributaria *stringPIS/COFINS 的 CST
aliquota *string百分比税率(如 "0.00"、"1.65"、"7.60")
valor_unidadestringPIS/COFINS 按数量计税 — 单价(雷亚尔/单位);v = 数量 × 单价(CST 03 及其他按数量计税方式)

ibs_cbs(可选)

字段类型说明
situacao_tributaria *stringIBS/CBS 的 CST
classificacao_tributaria *string税务分类代码
p_ibs_ufstringIBS州税率(%)(可选;留空则使用过渡期默认值0.10(2026年))。支持点或逗号
p_ibs_munstringIBS市级税率(%)(可选;2026年默认0)
p_cbsstringCBS税率(%)(可选;2026年默认0.90)
p_red_aliqstring税率减免百分比(CST 011、200、515)
p_difstring递延百分比(CST 510、515)
p_red_bcstring计税基础减免百分比(CST 222)
proporcaostring操作比例(%)(CST 221)
aliquota_cbs_monostringCBS 单一环节 — 按计税基础的百分比税率;优先于 valor_unidade_cbs(CST 620)
aliquota_ibs_monostringIBS 单一环节 — 按计税基础的百分比税率;优先于 valor_unidade_ibs(CST 620)
valor_unidade_cbsstringCBS 单一环节 — 从量金额(雷亚尔/单位);仅在没有百分比税率时使用(CST 620)
valor_unidade_ibsstringIBS 单一环节 — 从量金额(雷亚尔/单位);仅在没有百分比税率时使用(CST 620)
valor_deducao_legalstring计税基础的法定扣除额(雷亚尔)(CST 830)

* 必填字段。

GET/api/nfce/category/get_detail

获取 NFC-e 税种详情

返回 NFC-e 税务类目的完整数据(描述、CFOP、ICMS、PIS、COFINS 和 IBS/CBS)。

必需请求头

请求头类型说明
tokenstringNFC-e 企业 token
signstringMD5 签名
timestampstringUnix 时间戳(秒)

查询参数

字段类型说明
category_id *stringNFC-e 类目 ID

* 必填字段。

GET/api/nfce/category/get_list

NFC-e 税种列表

返回已认证企业下注册的 NFC-e 税务类目的分页列表。

必需请求头

请求头类型说明
tokenstringNFC-e 企业 token
signstringMD5 签名
timestampstringUnix 时间戳(秒)

查询参数

字段类型说明
page *int页码(最小 1)
page_size *int每页条数(1~50)

* 必填字段。

POST/api/nfce/category/edit

编辑 NFC-e 税种

注意: 与 /api/nfce/category/create 端点结构相同,但增加了必填字段 category_id。icms、pis、cofins 和 ibs_cbs 字段会被整体替换(不合并)。

必需请求头

请求头类型说明
tokenstringNFC-e 企业 token
signstringMD5 签名
timestampstringUnix 时间戳(秒)

额外字段

字段类型说明
category_id *string待编辑的类目 ID

* 必填字段。

POST/api/nfce/category/delete

删除 NFC-e 税种

删除 NFC-e 税务类别。不可逆操作。绑定到此类别的产品仍会引用已删除的 category_id — 请先更新它们。

必需请求头

请求头类型说明
tokenstringNFC-e 公司令牌
signstringMD5 签名
timestampstring秒级 Unix 时间戳

Body

字段类型说明
category_id *string要删除的 NFC-e 类别 ID

* 必填字段。

POST/api/nfce/create

开具 NFC-e

开具 NFC-e(模型 65,始终为州内出库,无运输)。与 NFe 端点的主要区别:消费者对象名为 client(不是 cliente);地址号为 client.number;消费者为可选;不存在 impostos.ipi、shipping_address、delivery_address 或 transportation。pag_info 中的金额字段名为 amount。

必需请求头

请求头类型说明
tokenstringNFC-e 企业 token
signstringMD5 签名:MD5(token + path + body + timestamp)
timestampstringUnix 时间戳(秒,5 分钟窗口)

Body(根)

字段类型说明
nature_of_operation *string操作性质(如 "商品销售")
issuance_type *string开具类型:"1"(正常)、"9"(NFC-e 离线应急)
ambiente *string"1" 生产、"2" 同源
products *array商品列表(详见下文)
idstring外部标识符
ind_presstring买家出席:"1" 现场(默认)、"4" 上门配送、"5" 经营场所外现场、"9" 不适用
ind_intermedstring"0" 无中介、"1" 市场平台。当 ind_pres = 2、3、4 时必填
total_discount_amountdecimal发票总折扣
trocodecimal找零金额
segurodecimal保险金额
outras_despesasdecimal其他附加费用
informacoes_complementaresstring给消费者的补充信息
informacoes_fiscostring给税务机关的信息
clientobject消费者数据(可选 — 见表格)
pag_infoarray付款(默认:现金 — 见表格)

client(可选)

仅在消费者已识别时填写。CPF 或 CNPJ 仅传数字。

字段类型说明
cpfstringCPF(设定为自然人)
cnpjstringCNPJ(法人)
iestring州登记号
namestring姓名 / 法人名称
enderecostring街道
numberstring地址号 (注意:与 NFe 不同,NFe 使用 numero)
complementostring补充
bairrostring街区
citystring城市
ufstring州(若提供 CEP 则验证)
cepstring邮政编码(仅数字)
telefonestring电话
emailstring电子邮箱

products[](每项)

字段类型说明
name *string商品名称(CJK 字符会被剥离)
ncm *stringNCM(8 位)
count *decimal数量
unit *string商业单位(如 "UN"、"KG")
unit_price *decimal单价
total_price *decimal项目总金额
origem *int商品原产地(0..8)
indicador_total *int1 = 计入发票总额;0 = 不计入
category_id ⚠stringNFC-e 税务类目 ID(未发送 impostos 时必填)
impostos ⚠object手动税(category_id 的替代,无 IPI)
codigostring内部商品代码
ceststringCEST
gtinstring商业 GTIN/EAN
gtin_tributavelstring应税 GTIN
discount_pricedecimal项目折扣
nItemPedint采购订单项目 (I61)。从根 id 取得的 xPed 所引用订单内的项目顺序号。有效范围: 1–999999。默认: 省略。

pag_info[](每项)

字段类型说明
payment_indicator *string"0" 现付、"1" 赊账
payment_method *string付款方式(01=现金、03=信用卡、04=借记卡、17=PIX、99=其他 等)
amountdecimal此方式支付的金额
card_info.integration_typestring"1" 集成、"2" 未集成(卡 03/04 时必填)
card_info.brand_codestring卡品牌(卡 03/04 时必填)
card_info.acquirer_cnpjstring收单方 CNPJ
card_info.authorization_codestring授权代码

* 必填字段。⚠ category_id 或 impostos 二选一,必填。

返回字段(data)

字段类型说明
uuidstringNFC-e 内部标识符。用于后续调用(/api/nfce/get_detail、/api/nfce/get_danfe)
statusstring状态:"Success"(已授权)、"Failed"(被拒/失败)、"Contingencia"(离线应急开具,待传输)
motivostring与 cStat 对应的税务局官方消息(PT / 中文 双语格式)
nfceint已开具的 NFC-e 号码(注意:字段名是 nfce,不是 nfe)
serieintNFC-e 系列号
chavestring44 位访问密钥(未授权时为空)
modelostring单据模型:"nfce"
xmlstring已授权 XML 的 URL
danfestringNFC-e DANFE 的 URL — 开具时为空;请通过 /api/nfce/get_danfe 按需生成
离线应急开具时(issuance_type = "9" 或税务局不可用),返回的 status 为 "Contingencia",并带有额外字段 contingencia: true 和 tpEmis: 9;该发票需要之后传输给税务局。

返回 — 拒绝 / 错误

当税务局拒绝该发票时,success 为 false,data.motivo 给出原因;chave 返回为空。字段校验错误(提交税务局之前)返回 success: false,消息位于 message,且没有 data 对象。
        {
          "success": false,
          "data": {
            "uuid": "65f8b9a1c2d3e4f5a6b7c8d9",
            "status": "Failed",
            "motivo": "Rejeição 226: Código da UF do Emitente diverge da UF autorizadora / 拒绝 226: 发件人所在州代码与授权州不一致",
            "nfce": 5,
            "serie": 1,
            "chave": "",
            "modelo": "nfce",
            "xml": "",
            "danfe": ""
          }
        }
POST/api/nfce/cancel

取消 NFC-e

取消已授权的 NFC-e。与 NFe 不同,这里取消原因由客户提供并转发给税务局。税务局取消窗口很短(通常授权后 15-30 分钟)。

必需请求头

请求头类型说明
tokenstring开票公司令牌
signstringMD5 签名
timestampstring秒级 Unix 时间戳

Body

字段类型说明
chave *stringNFC-e 的 44 位访问密钥(注意:这里是 chave,而非其他端点中的 uuid)
motivo *string取消理由(税务局要求最少 15 个字符)

* 必填字段。

返回字段(data)

字段类型说明
motivostring税务局对取消事件的官方消息
statusstring状态:"Canceled"(已取消)
nfceint已取消的 NFC-e 号码
serieintNFC-e 系列号
chavestring44 位访问密钥
modelostring单据模型:"nfce"
cStatint税务局事件代码:135 或 155 = 取消已核准。如果 NFC-e 此前已取消,成功返回中不含 cStat

返回 — 错误

当税务局拒绝该事件时(如超过取消期限),success 为 false,data 中带有 status: "Failed" 和被拒的 cStat。校验错误(缺少 chave/motivo、motivo 少于 15 个字符、找不到 NFC-e、应急开具尚未传输)返回 success: false,消息位于 message,且没有 data 对象。
        {
          "success": false,
          "data": {
            "motivo": "Rejeição: Pedido de Cancelamento intempestivo",
            "status": "Failed",
            "nfce": 5,
            "serie": 1,
            "chave": "35210112345678901234650010000000051234567890",
            "modelo": "nfce",
            "cStat": 501
          }
        }
POST/api/nfce/return

NFC-e 退货

为一张已授权的 NFC-e 开具退货票。退货票是一张入库方向的 NF-e(模型 55),在 XML 中引用原 NFC-e 的访问密钥;NFC-e 本身没有退货这种单据。原票按 uuid 或 chave 在 NFC-e 记录中查找,商品与税务字段沿用原票。/api/invoice/return 只在 NF-e 记录中查找原票,对 NFC-e 会返回「发票不存在」,请改用本接口。

必需请求头

请求头类型说明
tokenstring开票公司令牌
signstringMD5 签名
timestampstring秒级 Unix 时间戳

Body

字段类型必填说明
uuidstring否原 NFC-e 的 uuid。与 chave 二选一
chavestring否原 NFC-e 的 44 位访问密钥。与 uuid 二选一
cfopstring是退货票的 CFOP,州内常用 1202,州际常用 2202
natureza_operacaostring否经营性质。默认 Devolução de Mercadoria
clienteobject否收货方,即原票的买方。字段:cpf、cnpj、name、endereco、numero、complemento、bairro、city、uf、cep、email、telefone。传了的字段覆盖原票,未传的沿用原票

退货票是 NF-e,收货方地址是必填项,而 NFC-e 通常不记录买方地址。原票 XML 里没有地址时,必须在 cliente 中传 endereco、bairro、city、uf、cep,缺哪项接口会逐项列出。

只有已授权的 NFC-e 可以退货。原票的环境(生产或测试)随原票,不需要也不能另传。

重复调用不会重复开票:同一张原票、同一环境下已经开出退货票时,返回已开出的那张。

本接口按整票退货。商品、数量与税务字段取自原票,税务字段先按分类解析,分类缺失时直接沿用原票 XML 的 CST 与税率。

返回字段(data)

字段类型说明
uuidstring退货票的唯一标识
statusstringSuccess 已授权,Failed 被拒
motivostring税务局返回的说明
nfeint退货票号码
serieint退货票序列号
chavestring退货票的 44 位访问密钥
modelostring固定 nfe:退货票是 NF-e
epecboolean是否走了应急方式
xmlstring退货票 XML 地址

返回 — 错误

参数或原票问题时 success 为 false,原因在 message,没有 data。税务局拒绝时同样 success 为 false,但带 data,其中 status 为 Failed、motivo 为拒绝原因。
        {
          "success": false,
          "message": "A devolução é uma NF-e e exige o endereço do comprador; a NFC-e original não o traz. Informe em cliente: endereco, bairro, city, uf, cep / 退货票是 NF-e,必须有买方地址,原 NFC-e 没有。请在 cliente 里传:endereco、bairro、city、uf、cep"
        }
GET/api/nfce/get_detail

查询 NFC-e 详情

通过 UUID 返回特定 NFC-e 的详情。包括 XML 和 DANFE(热敏小票)的 URL,以及提供时的客户数据。

必需请求头

请求头类型说明
tokenstring开票公司令牌
signstringMD5 签名(path 包含查询字符串)
timestampstring秒级 Unix 时间戳

查询字符串

参数类型说明
uuid *stringNFC-e UUID

* 必填字段。

POST/api/nfce/get_danfe

获取 NFC-e DANFE

返回 NFC-e DANFE(电子财政小票)的 PDF URL,包含用于税务局查询的 QR 码。按需生成并按哈希(访问密钥 + 状态)缓存;重复调用返回现有 URL。

必需请求头

请求头类型说明
tokenstring开票公司令牌
signstringMD5 签名
timestampstring秒级 Unix 时间戳

Body

字段类型说明
uuid *stringNFC-e UUID(注意:这里是 uuid,与 cancel 使用的 chave 不同)

* 必填字段。

GET/api/nfce/get_list

NFC-e 列表(分页)

分页列出公司的 NFC-e。参数通过 查询字符串(query string)传递(不在 body 中)。时间过滤可选,但若使用则需同时传入 start_create_time 和 end_create_time。

必需请求头

请求头类型说明
tokenstring开票公司令牌
signstringMD5 签名(path 包含查询字符串)
timestampstring秒级 Unix 时间戳

查询字符串

参数类型说明
page *int页码(≥ 1)
page_size *int每页大小(1–50)
start_create_timelongUnix 时间戳(毫秒) — 起始(需要 end_create_time)
end_create_timelongUnix 时间戳(毫秒) — 结束
statusstring按状态过滤。值: "Success"(已授权)、"Canceled"(已取消)、"Processing"(处理中)、"Failed"(失败)、"Unknown"(未知)

* 必填字段。

POST/api/nfce/export

批量导出 NFC-e

按时间段批量导出公司生产环境的 NFC-e(测试环境 homologação 的票据不包含)。生成为异步:第一次调用触发导出并返回 "status": "Processing";用相同的 body 重复调用,直到返回 "status": "Success" 和下载 url。XML 和 PDF 以 .zip 交付(每张票一个文件);表格为 .xlsx 或 .csv。结果有效期 10 天:期间相同参数返回同一文件(生成之后开出的票不会包含 — 换一个时间段即可生成新文件)。

必需请求头

请求头类型说明
tokenstring开票公司令牌
signstringMD5 签名
timestampstring秒级 Unix 时间戳

Body

字段类型说明
type *string"xml"(XML 打包 ZIP)、"pdf"(DANFE 打包 ZIP)或 "sheet"(表格)
start_create_timestring起始日期 dd/MM/yyyy(巴西利亚时间)— 从当天 00:00:00 开始
end_create_timestring结束日期 dd/MM/yyyy — 结束日整天包含(至 23:59:59)
monthint时间段的替代方式:整月(1–12,巴西利亚时间);大于当前月份 = 去年
statusstring"all"(默认)、"emitida"(已授权)、"cancelada"(已取消)或 "contingencia"(应急开票)
patternstringsheet:"xlsx"(默认)或 "csv";pdf:小票宽度(mm)— "80"(默认)、"72" 或 "50"

* 必填字段。时间段用 start_create_time + end_create_time 或 month 传入。

示例 1 — 现场销售(无收件人)

        {
          "nature_of_operation": "Venda de mercadoria",
          "ambiente": "2",
          "ind_pres": "1",
          "products": [
            {
              "codigo": "001",
              "name": "Refrigerante 350ml",
              "ncm": "22021000",
              "count": 3,
              "unit": "matriz",
              "unit_price": 5.50,
              "total_price": 16.50,
              "category_id": "BEBIDAS_PADRAO",
              "origem": "0",
              "indicador_total": "1",
              "cfop": "5102"
            }
          ],
          "pag_info": [
            { "payment_indicator": "0", "payment_method": "17" }
          ]
        }

示例 2 — 送货上门(含收件人)

        {
          "nature_of_operation": "Venda de mercadoria",
          "ambiente": "2",
          "ind_pres": "4",
          "client": {
            "cpf": "12345678900",
            "name": "Maria Silva",
            "endereco": "Rua das Flores",
            "number": "456",
            "bairro": "Jardim Primavera",
            "city": "São Paulo",
            "uf": "SP",
            "cep": "04567000"
          },
          "products": [
            {
              "codigo": "PIZZA01",
              "name": "Pizza Grande Marguerita",
              "ncm": "19059090",
              "count": 1,
              "unit": "matriz",
              "unit_price": 45.90,
              "total_price": 45.90,
              "category_id": "ALIMENTOS",
              "origem": "0",
              "indicador_total": "1",
              "cfop": "5102"
            }
          ],
          "pag_info": [
            { "payment_indicator": "0", "payment_method": "03" }
          ],
          "frete": 8.00,
          "informacoes_complementares": "Entrega em até 40 minutos"
        }