Skip to content

MDF-e — Manifesto de Carga (modelo 58)

Manifesto Eletrônico de Documentos Fiscais: consolida os CT-e/NF-e de uma viagem (veículo + condutor + percurso). Emissão síncrona — a resposta já traz o veredito da SEFAZ.

O exemplo abaixo é um payload real autorizado em homologação (SVRS). Cada grupo presente existe porque a SEFAZ o exige para transportador rodoviário — seguro com averbação (rej. 698/699), produto predominante (725), contratantes (578) e pagamento do frete.

Emitir

http
POST /api/v1/mdfe/emitir
Authorization: Bearer {token}
Content-Type: application/json
Idempotency-Key: viagem-2026-08-06-a
json
{
  "ide": {
    "nMDF": 42, "serie": 3, "modal": "1", "tpEmit": "1",
    "UFIni": "SP", "UFFim": "SP",
    "infMunCarrega": [{ "cMunCarrega": "3549904", "xMunCarrega": "Sao Jose dos Campos" }]
  },
  "rodo": {
    "RNTRC": "56271866",
    "veicTracao": {
      "placa": "ABC1D23", "UF": "SP", "tara": "7000",
      "condutor": { "xNome": "NOME DO CONDUTOR", "CPF": "52998224725" }
    },
    "infContratante": [{ "xNome": "CONTRATANTE LTDA", "CNPJ": "14295537000130" }],
    "infPag": [{
      "xNome": "CONTRATANTE LTDA", "CNPJ": "14295537000130",
      "Comp": [{ "tpComp": "01", "vComp": 1000.00 }],
      "vContrato": 1000.00, "indPag": "0",
      "infBanc": { "PIX": "financeiro@transportadora.com.br" }
    }]
  },
  "infDoc": {
    "infMunDescarga": [{
      "cMunDescarga": "3550308", "xMunDescarga": "Sao Paulo",
      "infCTe": [{ "chCTe": "35260628738768000186570070009990011..." }]
    }]
  },
  "seg": {
    "respSeg": "1",
    "xSeg": "NOME DA SEGURADORA", "seg_CNPJ": "99999999000191",
    "nApol": "123456789", "nAver": "12345678901234567890"
  },
  "prodPred": {
    "tpCarga": "05", "xProd": "ARROZ BENEFICIADO", "NCM": "10063021",
    "infLotacao": { "cepCarrega": "12226303", "cepDescarrega": "01001000" }
  },
  "tot": { "vCarga": 1000.00, "cUnid": "01", "qCarga": 1000.0 }
}

Regras que derrubam quem começa

  • Numeração é sua (ide.nMDF) — o manifesto acompanha a sua sequência.
  • tpTransp só com veículo de terceiro: informe apenas junto de veicTracao.prop (proprietário) — sozinho, a SEFAZ rejeita (cStat 745).
  • Seguro completo para prestador rodoviário: responsável + seguradora + apólice + averbação (nAver) — sem a averbação, rejeição 699.
  • Frota própria não informa prop nem tpTransp; frete de terceiros informa ambos.
  • Rejeição não consome o número: corrija e reemita no mesmo nMDF.

Resposta (síncrona)

json
{
  "mdfe_id": "uuid",
  "chave": "35260828738768000186589990...",
  "numero": 42, "serie": 3,
  "status": "100", "motivo": "Autorizado o uso do MDF-e",
  "protocolo": "935260000054245",
  "autorizado": true
}

Retry com a mesma Idempotency-Key devolve o mesmo manifesto (idempotent_replay: true) — e após uma rejeição a chave fica livre para a tentativa corrigida.

Encerrar e cancelar

  • POST /api/v1/mdfe/{id}/encerrar — na chegada (UF + município de destino). Obrigatório antes de emitir o próximo manifesto do mesmo veículo.
  • POST /api/v1/mdfe/{id}/cancelar — até 24h, com justificativa (evento 110111).

Utilitários

  • POST /api/v1/mdfe/percurso — calcula as UFs intermediárias pela rota real de estrada (para ide.infPercurso).
  • GET /api/v1/mdfe/{id}/xml — XML autorizado.

Referência completa

Todos os campos e validações no Swagger interativo.

Emissão ilimitada em todos os planos.