engineAPIengine·API

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

road

Transporte interestadual

Obrigatório para qualquer carga cruzando fronteiras estaduais

link

Vincular documentos

Associa NFes e CTes ao veículo e rota

flag-checkered

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

bash
curl https://api.engineapi.com.br/mdfe/status?uf=SP \
  -H "x-api-key: SUA_API_KEY"

Emitir MDFe

bash
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

json
{
  "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:

bash
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:

bash
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" }'

Próximos passos