Skip to main content

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çãoMDFe obrigatório?
Transporte entre estados (interestadual)Sim
Transportadora com vários documentos por viagemSim
Transporte dentro do mesmo estadoDepende 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

CampoTipoObrigatórioDescrição
issuerIdstring (UUID)SimID da transportadora emissora
ufIniciostringSimUF de início da viagem
ufFimstringSimUF de destino final
modal.tipostringSim"rodoviario", "ferroviario", "aquaviario", "aereo"
modal.rntrcstringSimRegistro Nacional de Transportadores
modal.veiculoobjetoSimDados do veículo trator
modal.motoristasarraySimPelo menos 1 motorista
documentosarraySimNFes e CTes da viagem
percursostring[]NãoUFs intermediárias (além do início/fim)
totalCargaKgnúmeroSimPeso total em kg
totalValorCarganúmeroSimValor 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" }'

Próximos passos

CTe

Emita o Conhecimento de Transporte vinculado ao MDFe

Webhooks

Receba eventos de MDFe em tempo real