Guia: MDFe
Emita e encerre Manifestos de Documentos Fiscais (MDFe, modelo 58) para transporte interestadual via Engine API.
MDFe: Manifesto Eletrônico de Documentos Fiscais
O MDFe (modelo 58) é obrigatório para transporte de cargas entre estados ou entre municípios de estados diferentes. Vincula os documentos fiscais (NFes, CTes) a um veículo em uma viagem específica.
Endpoint base: https://api.engineapi.com.br/mdfe
Transporte interestadual
Obrigatório para qualquer carga cruzando fronteiras estaduais
Vincular documentos
Associa NFes e CTes ao veículo e rota
Encerramento
Encerre após a entrega no município de destino
Quando usar MDFe
| Situação | MDFe obrigatório? | |----------|-----------------| | Transporte entre estados (interestadual) | Sim | | Transportadora com vários documentos por viagem | Sim | | Transporte dentro do mesmo estado | Depende da legislação estadual | | Entrega local (mesmo município) | Não |
Verificar Status do Serviço
curl https://api.engineapi.com.br/mdfe/status?uf=SP \
-H "x-api-key: SUA_API_KEY"
Emitir MDFe
curl -X POST https://api.engineapi.com.br/mdfe \
-H "x-api-key: SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"issuerId": "ISSUER_ID",
"ufInicio": "SP",
"ufFim": "RJ",
"modal": {
"tipo": "rodoviario",
"rntrc": "12345678",
"veiculo": {
"placa": "ABC1234",
"tara": 6000,
"capacidadeKg": 15000,
"capacidadeM3": 40,
"uf": "SP"
},
"motoristas": [{
"nome": "João Silva",
"cpf": "12345678901"
}]
},
"documentos": [
{
"tipo": "NFe",
"chave": "35260211222333000144550010000000011000000019",
"segmento": "01",
"valorCarga": 5000.00,
"municipioCarregamento": "São Paulo",
"codigoMunicipioCarregamento": "3550308"
}
],
"percurso": ["RJ"],
"totalCargaKg": 1000,
"totalCargaM3": 5,
"totalValorCarga": 5000.00
}'
Campos de Referência
| Campo | Tipo | Obrigatório | Descrição |
|-------|------|-------------|-----------|
| issuerId | string (UUID) | Sim | ID da transportadora emissora |
| ufInicio | string | Sim | UF de início da viagem |
| ufFim | string | Sim | UF de destino final |
| modal.tipo | string | Sim | "rodoviario", "ferroviario", "aquaviario", "aereo" |
| modal.rntrc | string | Sim | Registro Nacional de Transportadores |
| modal.veiculo | objeto | Sim | Dados do veículo trator |
| modal.motoristas | array | Sim | Pelo menos 1 motorista |
| documentos | array | Sim | NFes e CTes da viagem |
| percurso | string[] | Não | UFs intermediárias (além do início/fim) |
| totalCargaKg | número | Sim | Peso total em kg |
| totalValorCarga | número | Sim | Valor total em R$ |
Response de Sucesso
{
"success": true,
"mdfe": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"accessKey": "35260211222333000144580010000000011000000019",
"status": "AUTHORIZED",
"protocol": "135260000001234",
"damdfeUrl": "/mdfe/pdf/35260...",
"xmlUrl": "/mdfe/xml/35260...",
"createdAt": "2026-04-27T02:00:00.000Z"
}
}
Encerrar MDFe
O encerramento é obrigatório após a entrega das cargas no município de destino:
curl -X POST https://api.engineapi.com.br/mdfe/ACCESS_KEY/encerrar \
-H "x-api-key: SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"municipioEncerramento": "Rio de Janeiro",
"codigoMunicipioEncerramento": "3304557",
"ufEncerramento": "RJ"
}'
O MDFe deve ser encerrado no prazo máximo de 30 dias após a autorização. Após o encerramento, não é possível cancelar.
Cancelar MDFe
Cancelamento disponível antes do encerramento:
curl -X POST https://api.engineapi.com.br/mdfe/ACCESS_KEY/cancelar \
-H "x-api-key: SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "motivo": "Viagem cancelada por motivo operacional" }'