TF Fiscal

Outros documentos fiscais

MDF-e

5 endpoints

A API de MDF-e (modelo 58, layout PL-MDFe 3.00) permite emitir, consultar, cancelar e encerrar manifestos de transporte. O MDF-e agrega NF-es e/ou CT-es vinculados a uma operação de transporte, suportando 4 modais: rodoviário, aéreo, aquaviário e ferroviário. Toda informação operacional (condutor, veículo, contratante, CIOT, vale-pedágio, pagamento) vai no corpo do /create — não há eventos de inclusão/alteração após a emissão.

EndpointMétodoDescrição
/api/mdfe/createPOSTEmitir MDF-e
/api/mdfe/consultPOSTConsultar situação do MDF-e
/api/mdfe/cancelPOSTCancelar MDF-e (até 24h após autorização)
/api/mdfe/closePOSTEncerrar MDF-e (após finalizar viagem)
POST/api/mdfe/create

Emitir MDF-e

Emite um MDF-e a partir do corpo enviado. Os campos cMDF, cDV, cUF, dhEmi, mod, tpEmis, procEmi, verProc são calculados automaticamente pelo servidor. O cliente envia apenas os campos de negócio. Os campos serie e nMDF 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).

Headers obrigatórios

HeaderTipoDescrição
tokenstringToken da empresa emissora
signstringAssinatura MD5: MD5(token + path + body + timestamp)
timestampstringUnix timestamp em segundos (janela de 5 minutos)

Body — raiz

CampoTipoDescrição
ide *objectIdentificação do MDF-e
emit *objectDados do emitente
infModal *objectInformações do modal (apenas UM dos quatro: rodo, aereo, aquav, ferrov)
infDoc *objectDocumentos fiscais vinculados
tot *objectTotalizadores da carga
prodPredobjectProduto predominante da carga
segarrayInformações de seguro
lacresarrayLacres do MDF-e
autXMLarrayCNPJs/CPFs autorizados a acessar o XML
infAdicobjectInformações adicionais (fisco e contribuinte)
infRespTecobjectResponsável técnico (CNPJ, contato, email, etc.)

ide — Identificação

CampoTipoDescrição
tpAmb *intAmbiente: 1=produção, 2=homologação
tpEmit *intTipo do emitente: 1=transportador, 2=carga própria, 3=prestador de serviço de transporte
modal *stringModal: "1"=rodoviário, "2"=aéreo, "3"=aquaviário, "4"=ferroviário
UFIni *stringUF de início da viagem (2 letras)
UFFim *stringUF de fim da viagem
infMunCarrega[] *arrayMunicípios de carregamento: [{ cMunCarrega, xMunCarrega }]
infPercurso[]arrayUFs do percurso: [{ UFPer }]
tpTranspstringTipo de transportador (rodoviário)
dhIniViagemstringData/hora de início da viagem (ISO 8601)
indCanalVerdestringIndicador de canal verde
indCarregaPosteriorstringIndicador de carregamento posterior
serieintSérie do MDF-e (3 dígitos da chave de acesso). Opcional — auto-alocada (série de MDF-e da empresa) quando omitida ou 0; respeitada quando enviada
nMDFintNúmero do MDF-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)

emit — Emitente

CampoTipoDescrição
CNPJ ⚠stringCNPJ do emitente (14 dígitos)
CPF ⚠stringCPF do emitente (11 dígitos)
IEstringInscrição Estadual
xNome *stringRazão social
xFantstringNome fantasia
enderEmitobjectEndereço: { xLgr, nro, xCpl, xBairro, cMun, xMun, CEP, UF, fone, email }

infModal — Modal Rodoviário (modal="1")

CampoTipoDescrição
rodo.veicTracao *objectVeículo de tração: { placa, tara, RENAVAM, capKG, capM3, tpRod, tpCar, UF, condutor[], prop }
rodo.veicTracao.condutor[] *arrayCondutores: [{ xNome, CPF }] — mínimo 1
rodo.veicReboque[]arrayVeículos de reboque (mesma estrutura de veicTracao sem condutor)
rodo.infANTTobjectInformações da ANTT: { RNTRC, infCIOT[], valePed, infContratante[], infPag[] }
rodo.codAgPortostringCódigo de agendamento no porto
rodo.lacRodo[]arrayLacres do modal: [{ nLacre }]

infModal — Modal Aéreo (modal="2")

CampoTipoDescrição
aereo.nac *stringMarca de nacionalidade da aeronave
aereo.matr *stringMatrícula da aeronave
aereo.nVoo *stringNúmero do voo
aereo.cAerEmb *stringCódigo IATA do aeroporto de embarque
aereo.cAerDes *stringCódigo IATA do aeroporto de destino
aereo.dVoo *stringData do voo (AAAA-MM-DD)

infModal — Modal Aquaviário (modal="3")

CampoTipoDescrição
aquav.irin *stringIRIN da embarcação
aquav.tpEmb *stringTipo de embarcação (2 dígitos). Use valores ≥ 10 para evitar truncamento do byte interno do Zeus (ex.: "10", "11")
aquav.cEmbar *stringCódigo da embarcação
aquav.xEmbar *stringNome da embarcação
aquav.nViag *stringNúmero da viagem. Não pode começar com zero (validação do schema) — use "1", "100", etc.
aquav.cPrtEmb *stringCódigo do porto de embarque
aquav.cPrtDest *stringCódigo do porto de destino
aquav.prtTransstringPorto de transbordo
aquav.tpNavstringTipo de navegação
aquav.infTermCarreg[]arrayTerminais de carregamento: [{ cTermCarreg, xTermCarreg }]
aquav.infTermDescarreg[]arrayTerminais de descarregamento
aquav.infEmbComb[]arrayEmbarcações de comboio: [{ cEmbComb, xBalsa }]
aquav.infUnidCargaVazia[]arrayUnidades de carga vazias
aquav.infUnidTranspVazia[]arrayUnidades de transporte vazias

infModal — Modal Ferroviário (modal="4")

CampoTipoDescrição
ferrov.trem *objectDados do trem: { xPref, dhTrem, xOri, xDest, qVag }
ferrov.vag[] *arrayVagões: [{ pesoBC, pesoR, tpVag, serie, nVag, nSeq, TU }] — mínimo 1. Restrições do Zeus/Fisco: serie deve ter exatamente 3 dígitos (use 100+, ex.: "100"); nVag só aceita dígitos (long internamente, ex.: "100001"); nSeq opcional 1-3 dígitos.

infDoc — Documentos vinculados

CampoTipoDescrição
infMunDescarga[] *arrayMunicípios de descarga — mínimo 1
infMunDescarga[].cMunDescarga *stringCódigo IBGE do município
infMunDescarga[].xMunDescarga *stringNome do município
infMunDescarga[].infNFe[]arrayNF-es vinculadas: [{ chNFe, SegCodBarras, indReentrega, infUnidTransp[], peri[] }]
infMunDescarga[].infCTe[]arrayCT-es vinculados
infMunDescarga[].infMDFeTransp[]arrayMDF-es de transporte (subcontratação)

prodPred — Produto predominante

CampoTipoDescrição
tpCarga *stringTipo de carga: "01"=granel sólido, "02"=granel líquido, "03"=frigorificada, "04"=conteinerizada, "05"=carga geral, "06"=neogranel, "07"=perigosa, "08"=granel pressurizado
xProd *stringDescrição do produto predominante
cEANstringGTIN/EAN
NCMstringNCM
infLotacaoobjectLotação: { infLocalCarrega{CEP,latitude,longitude}, infLocalDescarrega{...} }

tot — Totalizadores

CampoTipoDescrição
vCarga *decimalValor total da carga (> 0)
cUnid *stringCódigo da unidade: "01"=KG, "02"=TON
qCarga *decimalQuantidade total da carga (> 0)
qCTeintQuantidade de CT-es vinculados
qNFeintQuantidade de NF-es vinculadas
qMDFeintQuantidade de MDF-es vinculados

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

POST/api/mdfe/consult

Consultar situação do MDF-e

Consulta a situação do MDF-e diretamente no Fisco a partir da chave de acesso.

Headers obrigatórios

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

Body

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

* Campo obrigatório.

POST/api/mdfe/cancel

Cancelar MDF-e

Cancela um MDF-e autorizado. Janela: até 24 horas após a autorização. Não permitido se o MDF-e já tiver sido encerrado.

Headers obrigatórios

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

Body

CampoTipoDescrição
chMDFe *stringChave de acesso do MDF-e (44 dígitos)
xJust *stringJustificativa do cancelamento (mínimo 15 caracteres por exigência Fisco)

* Campo obrigatório.

POST/api/mdfe/close

Encerrar MDF-e

Encerra um MDF-e ao final da viagem. Após o encerramento, não é mais possível cancelar. Os campos dtEnc, cUF e cMun são opcionais — quando omitidos, o sistema infere a partir do MDF-e original (data atual, UF e município do emitente).

Headers obrigatórios

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

Body

CampoTipoDescrição
chMDFe *stringChave de acesso do MDF-e (44 dígitos)
dtEncstringData do encerramento (AAAA-MM-DD). Default: data atual
cUFintCódigo IBGE da UF onde ocorreu o encerramento. Default: UF do emitente
cMunstringCódigo IBGE do município onde ocorreu o encerramento. Default: município do emitente

* Campo obrigatório.

GET/api/mdfe/get_list

Listar MDF-e (com paginação)

Lista os MDF-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), "Voided" (encerrado), "Processing" (em processamento), "Failed" (falhou), "Unknown" (desconhecido)

* Campo obrigatório.