Emitir MDF-e POST
Emite um Manifesto Eletrônico de Documentos Fiscais (modelo 58) -- reúne as NF-e/CT-e de uma mesma viagem/carga num único manifesto pro transportador. Hoje só o modal rodoviário é suportado.
Quando utilizar
Sempre que um veículo sair carregado com um ou mais documentos fiscais (NF-e e/ou CT-e) e a legislação exigir MDF-e pra essa viagem -- tipicamente transporte interestadual ou intermunicipal de carga. Depois de encerrada a viagem, o manifesto precisa ser encerrado -- não é opcional.
Pré-requisitos
- Contribuinte (transportador) já cadastrado, com certificado digital A1.
- Pelo menos 1 documento (NF-e ou CT-e) com chave de acesso, vinculado a um município de descarregamento.
- Condutor(es) e veículo de tração cadastrados na chamada -- não há cadastro prévio de frota nesta API.
-
Responsável técnico cadastrado na sua conta -- CNPJ, nome, e-mail e
telefone, preenchidos em Área do Cliente → Responsável Técnico (sem
campo equivalente no corpo desta requisição -- resolvido automaticamente pela API).
Bloqueante: sem isso a emissão falha com
status: "ERROR". Ver detalhes na doc de NF-e.
ide.modal hoje não tem efeito. O motor sempre gera MDF-e
rodoviário, independente do que você enviar nesse campo -- não existe erro nem aviso,
o valor é silenciosamente ignorado. Só rodoviário é suportado de fato (aéreo/aquaviário/
ferroviário lançam erro no motor .NET se algum dia forem aceitos aqui, mas hoje nem
chegam a ser tentados). rodoviario.veiculo_tracao.tipo_rodado e
tipo_carroceria exigem o código numérico SEFAZ direto
(ex.: "03" para Cavalo Mecânico), sem tradução por rótulo -- diferente de
totais.unidade_carga, que aceita "KG"/"TON" por
extenso.
Fluxo da operação
POST já monta, assina e transmite -- a resposta já vem com status
final (AUTHORIZED/REJECTED/ERROR/PROCESSING).
GET /v1/mdfe/emissoes/{transmissao_id} continua disponível pra reconsulta,
mas normalmente não é necessário logo após o POST.
Endpoint
Headers
| Header | Valor | |
|---|---|---|
Authorization | Bearer <sua_api_key> | obrigatório |
Content-Type | application/json | obrigatório |
Idempotency-Key | string livre, definida por você | opcional |
Body
Clique num campo com ▸ pra expandir.
documentos abaixo).placa/tara/capacidade_kg/tipo_carroceria obrigatórios por item quando presente.ciot + documento por item.<disp>.CNPJForn -- CNPJ da empresa fornecedora do vale-pedágio.vValePed.CNPJPg/CPFPg -- informe só quando o responsável pelo pagamento não for o emitente do MDF-e.nCompra -- identificador do vale-pedágio (IDVPO).tpValePed.<prop>, quando o veículo de tração não pertence ao emitente do MDF-e.razao_social como alias.tpProp: 0 TAC Agregado, 1 TAC Independente, 2 Outros.responsavel = "2" (contratante). Sem ele, a SEFAZ rejeita a emissão.cnpj / nome.numero + averbacoes[].numero por item.documento por item.Exemplo mínimo
Apenas os campos obrigatórios -- veja o código ao lado.
Resposta de sucesso
200 OK -- já com o resultado final da SEFAZ nesta mesma resposta
(status: "AUTHORIZED" em caso de sucesso). O campo detalhes traz o
cstat/xmotivo reais devolvidos pela SEFAZ, além do protocolo.
Cancelamento
POST /v1/mdfe/cancelamentos -- exige chave_acesso,
protocolo (da autorização original) e justificativa/
motivo com pelo menos 15 caracteres. Veja o exemplo ao lado.
Encerramento
O que ainda não existe
Estes grupos existem no leiaute oficial (mdfeModalRodoviario_v3.00.xsd) mas o
motor não os suporta hoje -- se sua operação depende de subcontratação de frete ou
transporte de carga perigosa, confirme com jurídico/contábil se são obrigatórios antes de
assumir que "opcional no XSD" resolve a questão:
- infPag -- detalhamento do pagamento do frete (parcelas, dados bancários, alto desempenho). É o maior grupo do modal rodoviário, ligado à Lei do Motorista/ANTT.
- peri[] -- produtos perigosos (classificação ONU), tema de legislação própria.
- prodPred -- produto predominante (Resolução ANTT 5.867/2020).
- infUnidTransp, indReentrega, SegCodBarra -- unidade de transporte/carreta-reboque, indicador de reentrega, código de barras do seguro.
- infAdic, infSolicNFF, infPAA, infRespTec -- grupos administrativos de nicho.
Próximos passos
- Reconsultar mais tarde, se precisar:
GET /v1/mdfe/emissoes/{transmissao_id}. - Encerrar ao fim da viagem:
POST /v1/mdfe/encerramentos(obrigatório). - Cancelar, se necessário, antes do encerramento:
POST /v1/mdfe/cancelamentos. - Baixar o DAMDFE (PDF) de um MDF-e autorizado: disponível na Área do Cliente → Transmissões, mesmo padrão do DANFE (NF-e) -- não é exposto como URL na resposta desta API.