O Manifesto Eletrônico de Documentos Fiscais tem como objetivo a implantação de um modelo nacional de documento fiscal que substitui a emissão em papel do antigo Manifesto de Carga modelo 25 e da Capa de Lote eletrônica (CL-e), mas com a mesma validade jurídica garantida pela assinatura digital do emitente. Ele tem por objetivo consolidar todos os documentos fiscais que estão presentes em uma operação de transporte (NFe e CTe) que está transportando carga fracionada (verificar detalhes de legislação do estado).

O desenvolvedor, que precisa enfrentar diariamente muitos desafios no desenvolvimento de soluções, ao se deparar com o MDFe precisa entender quais são as particularidades do seu XML, para poder desenvolver um bom sistema e sem retrabalhos para a empresa.

Para auxiliar nessa tarefa e ir além do manual do MDFe (que pode ser baixado no Portal do MDFe no site da SEFAZ), pegamos um XML deste documento e destrinchamos os detalhes de como funciona o preenchimento do arquivo para realizar a emissão.

Para tornar a explicação mais sintonizada com a prática, ao invés de explicar campo por campo em uma tabela, como faz o manual, nós utilizamos o próprio conteúdo do arquivo inserindo como comentários em formato XML destacados. Assim, se o desenvolvedor quiser, copiar o mesmo conteúdo e colar em seu editor de código para visualizar melhor toda a estrutura.

O arquivo que foi utilizado nesse exemplo é um XML de autorização de MDFe, ou seja, que traz o retorno da SEFAZ com a mensagem de autorizado (vide o final do arquivo). Isso porque ele contém todas as informações e grupos para poder visualizar uma estrutura completa e assim o desenvolvedor pode identificar as diferenças. Nos comentários estão descritas as mudanças para o XML de envio que deve ser montado pelo sistema para emissão no servidor do Fisco.

 

Segue o arquivo com seus respectivos comentários:

<mdfeProc versao="1.00" xmlns=" http://www.portalfiscal.inf.br/mdfe "> <!-- No caso de um MDFe que seja de envio, aqui no lugar de mdfeProc é utilizado enviMDFe -->

    <MDFe xmlns="http://www.portalfiscal.inf.br/mdfe"><infMDFe versao="1.00" Id="MDFe4114080818716800016000369341000000018">

        <ide> <!-- campo de identificação -->

            <cUF>41</cUF>

            <tpAmb>2</tpAmb> <!-- Identificação do ambiente em que foi emitido o documento e que irá identificá-lo no servidor do fisco. Nesse caso, a emissão foi feita em ambiente de Homologação, como segue: 1 - Produção; 2 - Homologação -->

            <tpEmit>1</tpEmit>

            <mod>58</mod>

            <serie>1</serie>

            <nMDF>364</nMDF>

            <cMDF>000001</cMDF>

            <cDV>8</cDV>

            <modal>1</modal> <!-- Identificação do modal do XML: ferroviário, hidroviário, aquaviário, aéreo ou rodoviário -->

            <dhEmi>2014-08-12T18:07:14</dhEmi>

            <tpEmis>1</tpEmis>

            <procEmi>0</procEmi>

            <verProc>1.0</verProc>

            <UFIni>PR</UFIni> <!-- O campo UFIni deve ser usado para identificação do estado onde o transporte irá começar. Lembrando, como é descrito em outros comentários, que essa UF não é identificada no campo infPercurso -->

            <UFFim>PB</UFFim> <!-- O campo UFFim deve ser usado para identificação do estado onde o transporte irá terminar. Lembrando, como é descrito em outros comentários, que essa UF não é identificada no campo infPercurso -->

            <infMunCarrega> <!-- Município onde o carregamento da carga é feito a partir do endereço de onde o transporte está saindo para transporte (origem) -->

                <cMunCarrega>4115200</cMunCarrega>

                <xMunCarrega>Maringa</xMunCarrega>

            </infMunCarrega>

            <infPercurso> <!-- No campo infPercurso, informar quais UF o transporte irá passar sem que tenha carregamento, ou seja, são os intermediários entre o início e fim (o início e fim há campos específicos, portando não são inseridos no campo infPercurso. Necessariamente deve estar na ordem em que o veículo irá seguir -->

                <UFPer>SP</UFPer>

            </infPercurso>

            <infPercurso>

                <UFPer>MG</UFPer>

            </infPercurso>

            <infPercurso>

                <UFPer>BA</UFPer>

            </infPercurso>

            <infPercurso>

                <UFPer>SE</UFPer>

            </infPercurso>

            <infPercurso>

                <UFPer>AL</UFPer>

            </infPercurso>

            <infPercurso>

                <UFPer>PE</UFPer>

            </infPercurso>

            <infPercurso>

                <UFPer>CE</UFPer>

            </infPercurso>

        </ide>

        <emit> <!-- Não tem segredo, aqui são as informações do emitente do MDFe, assim como nos outros documentos eletrônicos -->

            <CNPJ>081867677100160</CNPJ>

            <IE>90446866788</IE>

            <xNome>TECNOSPEED</xNome>

            <xFant>TECNOSPEED</xFant>

            <enderEmit>

                <xLgr>RUA DUQUE DE CAXIAS</xLgr>

                <nro>882</nro>

                <xBairro>CENTRO</xBairro>

                <cMun>4115200</cMun>

                <xMun>Maringa</xMun>

                <CEP>87060025</CEP>

                <UF>PR</UF>

                <fone>4430283749</fone>

            </enderEmit>

        </emit>

        <infModal versaoModal="1.00">

            <rodo>

                <RNTRC>12345678</RNTRC> <!-- Código do transportador no Registro Nacional de Transportadores Rodoviários de carga, verificar link: http://www.antt.gov.br/index.php/content/view/4929/RNTRC___Registro_Nacional_de_Transportadores_Rodoviarios_de_Cargas.html -->

                <veicTracao> <!--Identificação do veículo que está conduzindo a carga -->

                    <placa>ABC5677</placa>

                    <tara>5000</tara>

                    <capKG>4500</capKG>

                    <capM3>400</capM3>

                    <prop> <!-- Descrição do proprietário do veículo descrito acima. Só preenchido quando o veículo não pertencer à empresa emitente do MDF-e -->

                        <CPF>09841019755</CPF>

                        <RNTRC>87784321</RNTRC>

                        <xNome>Lucas</xNome>

                        <IE/>

                        <UF>PR</UF>

                        <tpProp>2</tpProp>

                    </prop>

                    <condutor> <!-- Descrição do condutor do veículo. Em um MDFe podem ser inseridos até 10 condutores em um mesmo XML -->

                        <xNome>JOAO</xNome>

                        <CPF>12345678912</CPF>

                    </condutor>

                    <tpRod>01</tpRod>

                    <tpCar>00</tpCar>

                    <UF>PR</UF>

                </veicTracao>

            </rodo>

        </infModal>

        <infDoc>

            <infMunDescarga> <!-- Nesse campo é preciso descrever o último município onde haverá descarga, lembrando que não é preciso que o UF de descarregamento esteja no campo infPercurso. O descarregamento utilizando esse modelo de MDFe que estamos utilizando de exemplo pode ser feito em vários municípios desde que na mesma UF, que nesse caso é na Paraíba. Se houver a necessidade de descarregar em duas UFs diferentes, é necessário que haja 2 MDFe. -->

                <cMunDescarga>2507507</cMunDescarga>

                <xMunDescarga>João Pessoa</xMunDescarga>

                <infCTe> <!-- Nesse campo, são inseridos os documentos de CTe que estão vinculados nessa carga. Nesse caso não há nenhuma NFe vinculada, mas se houvesse, o grupo seria denomidado infNFe com o campo chNFe para inserção da chave do XML -->

                    <chCTe>4213010579382723245343571010000010021000000011</chCTe>

                    <infUnidTransp> <!--Informações das Unidades de Transporte (Carreta/Reboque/Vagão). Os Tipos aceitos são 1 – Rodoviário Tração 2 – Rodoviário Reboque 3 – Navio 4 – Balsa 5 – Aeronave 6 – Vagão 7 - Outros. -->

                        <tpUnidTransp>1</tpUnidTransp>

                        <idUnidTransp>A</idUnidTransp>

                    </infUnidTransp>

                </infCTe>

                <infCTe>

                    <chCTe>43130994814834000150576450000001078001234892</chCTe>

                </infCTe>

            </infMunDescarga>

        </infDoc>

        <tot> <!-- Grupo totalizador de informações do MDFe de acordo com os CTe vinculados. A SEFAZ não faz nenhum tipo de validação automática com os CTe que estão no MDFe, por isso esse campo é informado manualmente pelo emitente. Esse valor pode, por exemplo, ser inserido pelo software do emitente -->

            <qCTe>2</qCTe> <!-- Quantidade total de CTe que estão vinculadas no XML do MDFe -->

            <vCarga>55.00</vCarga> <!-- Valor total da carga do MDFe informado pelo emitente -->

            <cUnid>02</cUnid> <!-- Unidade de carga que é utilizada no campo qCarga, de acordo com tabela do manual -->

            <qCarga>50.0000</qCarga> <!-- Peso bruto da carga informado pelo emitente -->

        </tot>

        <autXML>

            <CNPJ>34548370000189</CNPJ> <!-- CNPJ de empresa autorizada a fazer o download do XML posteriormente -->

        </autXML>

    </infMDFe>

    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <!-- Grupo referente a assinatura do XML pelo certificado digital da empresa -->

        <SignedInfo>

            <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>

            <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1& quot;/>

            <Reference URI="#MDFe41140808187345000160580010000369341000000018& quot;>

                <Transforms>

                    <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature& quot;/>

                    <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>

                </Transforms>

                <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1& quot;/>

                <DigestValue>VlyxjWBWkliHPz4EV7Hs9y4r/q4=</DigestValue>

            </Reference>

        </SignedInfo>

        <SignatureValue>MiZqRH9VBIrkDFjl9g2K2OGa/VSCzmvvVNOFGnv4QF (...)

        </SignatureValue>

        <KeyInfo>

            <X509Data>

                <X509Certificate>MIIIAzCCBeugAwIBAgIIWPTrb74GwM8wDQYJKoZIhvcNAQELBQAwd (...)

                </X509Certificate>

            </X509Data>

        </KeyInfo>

    </Signature>

</MDFe>

<protMDFe versao="1.00"> <!-- Protocolo de autorização e retorno da SEFAZ sobre a situação do documento, daqui em diante são informações referentes ao XML de autorização e não devem constar no arquivo de envio -->

    <infProt Id="MDFe941143400049672">

        <tpAmb>2</tpAmb> <!-- Identificação do ambiente em que foi autorizado o documento. Nesse caso, a autorização foi feita em ambiente de Homologação, como segue: 1 - Produção; 2 - Homologação -->

        <verAplic>RS20140801111734

        </verAplic>

        <chMDFe>3423808187168000160580010000369341000000018 <!-- Chave de autorização do MDFe, que é utilizado para impressão do DAMDFE -->

        </chMDFe>

        <dhRecbto>2014-08-12T18:07:27</dhRecbto>

        <nProt>941140000049672</nProt>

        <digVal>VlyxjWBWkliHPz4EV7Hs9y4r/q4=</digVal>

        <cStat>100

        </cStat>

        <xMotivo>Autorizado o uso do MDF-e

        </xMotivo>

    </infProt>

</protMDFe>

</mdfeProc>