TF Fiscal

Outros documentos fiscais

CT-e

5 endpoints

A API de CT-e (modelo 57, leiaute 4.00 + NT2025/001) permite emitir, cancelar, corrigir (CC-e) e consultar Conhecimentos de Transporte Eletrônicos. O CT-e documenta a prestação de serviço de transporte de cargas. Suporta 6 modais (rodoviário, aéreo, aquaviário, ferroviário, dutoviário, multimodal) e 4 tipos de CT-e (Normal, Complemento, Anulação, Substituto). Os dados de negócio vão no corpo do /create; os campos técnicos da chave de acesso (cCT, cDV, cUF, dhEmi, mod) são calculados automaticamente pelo servidor. Os campos serie e nCT são opcionais: quando omitidos (ou 0) o servidor aloca a numeração automaticamente; quando enviados no request, são respeitados (útil para pular a numeração, por exemplo após uma duplicidade no Fisco).

EndpointMétodoDescrição
/api/cte/createPOSTEmitir CT-e
/api/cte/cancelPOSTCancelar CT-e (evento 110111)
/api/cte/ccePOSTCarta de Correção — CC-e (evento 110110)
/api/cte/consultPOSTConsultar situação do CT-e

O tomador do serviço (quem paga o frete) é definido em ide.toma: 0=Remetente, 1=Expedidor, 2=Recebedor, 3=Destinatário, 4=Outros (neste caso preencha ide.toma4).

POST/api/cte/create

Emitir CT-e

Emite um CT-e a partir do corpo enviado. O cliente envia apenas os dados de negócio; os campos de identificação técnica da chave de acesso são calculados pelo servidor (ver a nota abaixo da tabela ide). O débito de crédito ocorre somente em produção (tpAmb=1) e quando o CT-e é autorizado. Os exemplos abaixo cobrem o caso mais comum: modal rodoviário (modal=01) e CT-e Normal (tpCTe=0).

Headers obrigatórios

HeaderTipoDescrição
tokenstringToken da empresa emissora
signstringAssinatura MD5: MD5(token + path + body + timestamp)
timestampstringUnix timestamp em segundos (janela de 5 minutos)
Campos obrigatórios na requisição: ide (tpAmb, CFOP, natOp, modal, tpCTe, toma, cMunIni, UFIni, cMunFim, UFFim); emit com CNPJ ou CPF e xNome; rem com CNPJ ou CPF; dest com CNPJ ou CPF; vPrest.vTPrest > 0; imp (com uma variante de ICMS). Para tpCTe=0 (Normal): infCTeNorm com infCarga (proPred + ao menos 1 infQ) e infModal (o modal correspondente a ide.modal; para modal=01, rodo.RNTRC é obrigatório). Demais campos opcionais.

Body — raiz

CampoTipoDescrição
ide *objectIdentificação do CT-e
emit *objectDados do emitente (transportador)
rem *objectRemetente da carga
dest *objectDestinatário da carga
vPrest *objectValores da prestação do serviço
imp *objectImpostos (ICMS + tributos)
infCTeNorm *objectCorpo do CT-e Normal — obrigatório quando tpCTe=0 (Normal) ou 3 (Substituto)
expedobjectExpedidor (opcional)
recebobjectRecebedor (opcional)
complobjectDados complementares (observações, fluxo, entrega)
infCteCompobjectChave do CT-e complementado — obrigatório quando tpCTe=1 (Complemento): { chCTe }
infCteAnuobjectChave do CT-e anulado — obrigatório quando tpCTe=2 (Anulação): { chCte, dEmi }
autXMLarrayCNPJs/CPFs autorizados a acessar o XML: [{ CNPJ } | { CPF }]
infRespTecobjectResponsável técnico — preenchido automaticamente pelo servidor por UF

ide — Identificação

CampoTipoDescrição
tpAmb *intAmbiente: 1=produção, 2=homologação
CFOP *intCódigo fiscal da operação (ex.: 5353 dentro do estado, 6353 interestadual)
natOp *stringNatureza da operação (ex.: "PRESTACAO DE SERVICO DE TRANSPORTE")
modal *stringModal: "01"=rodoviário, "02"=aéreo, "03"=aquaviário, "04"=ferroviário, "05"=dutoviário, "06"=multimodal
tpCTe *intTipo do CT-e: 0=Normal, 1=Complemento, 2=Anulação, 3=Substituto
tpServ *intTipo de serviço: 0=Normal, 1=Subcontratação, 2=Redespacho, 3=Redespacho Intermediário, 4=Serviço Vinculado a Multimodal
toma *intTomador do serviço: 0=Remetente, 1=Expedidor, 2=Recebedor, 3=Destinatário, 4=Outros
toma4objectDados do tomador — obrigatório quando toma=4 (ver tabela abaixo)
indIETomaintIndicador de IE do tomador: 1=Contribuinte ICMS, 2=Isento, 9=Não Contribuinte (quando 9, a IE do tomador é omitida automaticamente)
cMunIni *longCódigo IBGE do município de início da prestação (7 dígitos)
xMunInistringNome do município de início
UFIni *stringUF de início (2 letras)
cMunFim *longCódigo IBGE do município de fim da prestação (7 dígitos)
xMunFimstringNome do município de fim
UFFim *stringUF de fim (2 letras)
cMunEnvlongCódigo IBGE do município de emissão
xMunEnvstringNome do município de emissão
UFEnvstringUF de emissão
retiraintRetira na origem: 0=Sim, 1=Não. Default: 1
xDetRetirastringDetalhes da retirada
tpImpintFormato do DACTE: 1=Retrato, 2=Paisagem. Default: 1
infPercursoarrayUFs do percurso: [{ UFPer }]
dhContstringData/hora de entrada em contingência (ISO 8601)
xJuststringJustificativa da contingência
serieintSérie do CT-e (3 dígitos da chave de acesso). Opcional — auto-alocada (série de CT-e da empresa) quando omitida ou 0; respeitada quando enviada
nCTlongNúmero do CT-e (compõe a chave de acesso). Opcional — auto-incrementado pelo servidor quando omitido ou 0; respeitado quando enviado (útil para pular a numeração, ex.: após uma duplicidade)

Preenchidos automaticamente pelo servidor — não é necessário enviá-los: mod (fixo 57), cCT (código numérico de 8 dígitos), cDV (dígito verificador), cUF (derivado da UF do emitente), dhEmi (data/hora atual), tpEmis (default 1=Normal), procEmi e verProc.

toma4 — Tomador "Outros" (quando ide.toma=4)

CampoTipoDescrição
CNPJ ⚠ / CPF ⚠stringDocumento do tomador (um dos dois)
IEstringInscrição Estadual
xNomestringRazão social/nome
xFant, fone, emailstringNome fantasia, telefone, e-mail
enderTomaobjectEndereço: { xLgr, nro, xCpl, xBairro, cMun, xMun, CEP, UF, cPais, xPais }

emit — Emitente (transportador)

CampoTipoDescrição
CNPJ ⚠stringCNPJ do emitente (14 dígitos)
CPF ⚠stringCPF do emitente (11 dígitos)
IEstringInscrição Estadual
IESTstringInscrição Estadual do substituto tributário
xNome *stringRazão social
xFantstringNome fantasia
CRTintCódigo de Regime Tributário: 1=Simples Nacional, 2=SN excesso de sublimite, 3=Regime Normal, 4=MEI. Default: 3
enderEmitobjectEndereço: { xLgr, nro, xCpl, xBairro, cMun, xMun, CEP, UF, fone }

rem — Remetente

CampoTipoDescrição
CNPJ ⚠ / CPF ⚠stringDocumento do remetente (um dos dois)
IEstringInscrição Estadual (ou "ISENTO")
xNomestringRazão social/nome
xFant, fone, emailstringNome fantasia, telefone, e-mail
enderRemeobjectEndereço do remetente (estrutura abaixo)
locColetaarrayLocais de coleta (opcional): [{ CNPJ|CPF, xNome, xLgr, nro, xBairro, cMun, xMun, UF }]

dest — Destinatário

CampoTipoDescrição
CNPJ ⚠ / CPF ⚠stringDocumento do destinatário (um dos dois)
IEstringInscrição Estadual (ou "ISENTO")
xNomestringRazão social/nome
fone, email, ISUFstringTelefone, e-mail, Inscrição na SUFRAMA
enderDestobjectEndereço do destinatário (estrutura abaixo)
locEntobjectLocal de entrega (opcional): { CNPJ|CPF, xNome, xLgr, nro, xBairro, cMun, xMun, UF }

exped / receb — Expedidor / Recebedor (opcionais)

CampoTipoDescrição
CNPJ / CPFstringDocumento (um dos dois)
IE, xNome, fone, emailstringInscrição Estadual, nome, telefone, e-mail
enderExped / enderRecebobjectEndereço (mesma estrutura genérica abaixo)

Endereço (enderEmit / enderReme / enderExped / enderReceb / enderDest)

CampoTipoDescrição
xLgrstringLogradouro
nrostringNúmero
xCplstringComplemento
xBairrostringBairro
cMunstringCódigo IBGE do município (7 dígitos)
xMunstringNome do município
CEPstringCEP (8 dígitos) — não usado em enderEmit
UFstringSigla da UF (2 letras)
cPaisstringCódigo do país (opcional, default 1058 Brasil)
xPaisstringNome do país (opcional)
fonestringTelefone (somente em enderEmit)

vPrest — Valores da Prestação

CampoTipoDescrição
vTPrest *decimalValor total da prestação do serviço (> 0)
vRecdecimalValor a receber
ComparrayComponentes do valor: [{ xNome, vComp }] — ex.: "FRETE PESO", "PEDÁGIO", "GRIS"

imp — Impostos

CampoTipoDescrição
ICMS *objectTributação do ICMS — preencher apenas uma das variantes (ver abaixo)
vTotTribdecimalValor aproximado total de tributos
infAdFiscostringInformações adicionais de interesse do Fisco
ICMSUFFimobjectDIFAL (partilha interestadual, opcional): { vBCUFFim, pFCPUFFim, pICMSUFFim, pICMSInter, vFCPUFFim, vICMSUFFim, vICMSUFIni }
infTribFedobjectTributos federais (opcional): { vPIS, vCOFINS, vIR, vINSS, vCSLL }

ICMS — variantes (preencher só uma)

VarianteQuando usarCampos
ICMS00Tributação normal{ vBC, pICMS, vICMS } (CST 00)
ICMS20Com redução de base de cálculo{ pRedBC, vBC, pICMS, vICMS } (CST 20)
ICMS45Isenta / não tributada / diferida{ CST } — "40"=Isenta, "41"=Não tributada, "51"=Diferido
ICMS60ICMS cobrado por substituição tributária{ vBCSTRet, vICMSSTRet, pICMSSTRet, vCred } (CST 60)
ICMS90Outros (regime especial){ pRedBC, vBC, pICMS, vICMS, vCred } (CST 90)
ICMSOutraUFICMS devido a outra UF{ pRedBCOutraUF, vBCOutraUF, pICMSOutraUF, vICMSOutraUF }
ICMSSNEmitente do Simples Nacional{ CST: "90", indSN: 1 }

infCTeNorm — CT-e Normal (obrigatório para tpCTe=0/3)

CampoTipoDescrição
infCarga *objectInformações da carga (tabela abaixo)
infDocobjectDocumentos transportados (tabela abaixo)
infModal *objectInformações do modal (tabela abaixo)
docAntobjectDocumentos anteriores (subcontratação/redespacho): { emiDocAnt[]{ CNPJ|CPF, IE, UF, xNome, idDocAnt[] } }
segarraySeguro da carga: [{ respSeg, xSeg, CNPJ, nApol, nAver, vCarga }] — respSeg: 1=Remetente…6=Tomador
cobrobjectCobrança/faturas: { fat{ nFat, vOrig, vDesc, vLiq }, dup[]{ nDup, dVenc, vDup } }
veicNovosarrayVeículos novos transportados: [{ chassi, cCor, xCor, cMod, vUnit, vFrete }]
infCteSubobjectSubstituição — obrigatório quando tpCTe=3: { chCte, indAltToma, refNF, tomaICMS, tomaNaoICMS }

infCTeNorm.infCarga — Carga

CampoTipoDescrição
proPred *stringProduto predominante
vCargadecimalValor total da carga
xOutCatstringOutras características da carga (ex.: FRIA, GRANEL, REFRIGERADA)
vCargaAverbdecimalValor da carga para efeito de averbação
infQ[] *arrayQuantidades — mínimo 1: [{ cUnid, tpMed, qCarga }]
infQ[].cUnidstringUnidade: "00"=M³, "01"=KG, "02"=TON, "03"=UNIDADE, "04"=LITROS, "05"=MMBTU
infQ[].tpMedstringTipo de medida (ex.: "PESO BRUTO", "PESO DECLARADO")
infQ[].qCargadecimalQuantidade

infCTeNorm.infDoc — Documentos transportados

CampoTipoDescrição
infNFearrayNF-es por chave de acesso: [{ chave, PIN, dPrev, infUnidCarga[], infUnidTransp[] }] — chave com 44 dígitos
infNFarrayNotas em papel (legado): [{ mod, serie, nDoc, dEmi, vBC, vICMS, vProd, vNF, nCFOP, nPeso, … }]
infOutrosarrayOutros documentos: [{ tpDoc, descOutros, nDoc, dEmi, vDocFisc }] — tpDoc: "00"=Declaração, "10"=Dutoviário, "99"=Outros

infCTeNorm.infModal — Modais (preencher só o correspondente a ide.modal)

ModalObjetoCampos
01 Rodoviáriorodo{ RNTRC* } — RNTRC com 8 dígitos ou "ISENTO". Opcional: occ[] (ordens de coleta)
02 Aéreoaereo{ nMinu, nOCA, dPrevAereo, natCarga{ xDime, cInfManu[] }, tarifa{ CL, cTar, vTar }, peri[] } — dPrevAereo AAAA-MM-DD
03 Aquaviárioaquav{ vPrest, vAFRMM, xNavio, nViag, direc, irin, tpNav, balsa[], detCont[] } — direc: N/L/S/O; tpNav: 0=Interior, 1=Cabotagem
04 Ferroviárioferrov{ tpTraf, respFat, ferrEmi, vFrete, chCTeFerroOrigem, ferroEnv[] } — tpTraf: 0=Próprio, 1=Mútuo, 2=Rodoferroviário, 3=Rodoviário
05 Dutoviárioduto{ vTar, dIni, dFim } — datas AAAA-MM-DD
06 Multimodalmultimodal{ COTM, indNegociavel, seg[] } — indNegociavel: 0=Não, 1=Sim

Todo o bloco infModal aceita versaoModal (default "4.00").

compl — Dados complementares (opcional)

CampoTipoDescrição
xCaracAd, xCaracSer, xEmistringCaracterística adicional do transporte / do serviço / nome do emissor
origCalc, destCalcstringMunicípio de origem / destino para cálculo do frete
xObsstringObservações gerais
ObsCont / ObsFiscoarrayObservações livres do contribuinte / fisco: [{ xCampo, xTexto }]
fluxo, EntregaobjectFluxo de carga (origem/passagem/destino/rota) e previsão de entrega

* Campo obrigatório. ⚠ Pelo menos um de CNPJ ou CPF é obrigatório no grupo.

POST/api/cte/cancel

Cancelar CT-e

Cancela um CT-e autorizado (evento 110111). Requer que o CT-e tenha sido autorizado (possua protocolo) e ainda não esteja cancelado.

Headers obrigatórios

HeaderTipoDescrição
tokenstringToken da empresa emissora
signstringAssinatura MD5
timestampstringUnix timestamp em segundos

Body

CampoTipoDescrição
chCTe *stringChave de acesso do CT-e (44 dígitos)
xJust *stringJustificativa do cancelamento (mínimo 15 caracteres por exigência Fisco)
nProtstringProtocolo de autorização. Opcional: quando omitido, usa o protocolo registrado na emissão

* Campo obrigatório.

Registra uma Carta de Correção Eletrônica (evento 110110) sobre um CT-e autorizado. A CC-e não pode corrigir valores que impactem o imposto, dados cadastrais que mudem emitente/tomador/remetente/destinatário, ou a data de emissão. Cada correção indica o grupo, campo e novo valor.

Headers obrigatórios

HeaderTipoDescrição
tokenstringToken da empresa emissora
signstringAssinatura MD5
timestampstringUnix timestamp em segundos

Body

CampoTipoDescrição
chCTe *stringChave de acesso do CT-e (44 dígitos)
infCorrecao[] *arrayCorreções (mínimo 1, até 20)
infCorrecao[].grupoAlterado *stringGrupo alterado (ex.: "ide", "rem", "dest")
infCorrecao[].campoAlterado *stringCampo alterado (ex.: "xNome")
infCorrecao[].valorAlterado *stringNovo valor
infCorrecao[].nroItemAlteradointNúmero do item alterado (quando o grupo for uma lista)

* Campo obrigatório. A condição de uso (xCondUso) é preenchida automaticamente pelo servidor.

POST/api/cte/consult

Consultar situação do CT-e

Consulta a situação do CT-e no Fisco a partir da chave de acesso. Quando o CT-e está cancelado (registro local), a resposta reflete o cancelamento.

Headers obrigatórios

HeaderTipoDescrição
tokenstringToken da empresa emissora
signstringAssinatura MD5
timestampstringUnix timestamp em segundos

Body

CampoTipoDescrição
chCTe *stringChave de acesso do CT-e (44 dígitos)

* Campo obrigatório.

GET/api/cte/get_list

Listar CT-e (com paginação)

Lista os CT-e da empresa com paginação. Parâmetros passados via query string (não no body). O filtro de tempo é opcional, mas se enviado exige ambos start_create_time e end_create_time.

Headers obrigatórios

HeaderTipoDescrição
tokenstringToken da empresa emissora
signstringAssinatura MD5 (path inclui a query string)
timestampstringUnix timestamp em segundos

Query string

ParâmetroTipoDescrição
page *intNúmero da página (≥ 1)
page_size *intTamanho da página (1–50)
start_create_timelongUnix timestamp em milissegundos — início (exige end_create_time)
end_create_timelongUnix timestamp em milissegundos — fim
statusstringFiltrar por status. Valores: "Success" (autorizado), "Canceled" (cancelado), "Processing" (em processamento), "Failed" (falhou), "Unknown" (desconhecido)

* Campo obrigatório.