Pular para o conteúdo principal

Template de planilha para emissão de DC-e em lote

Emitir várias DC-e de uma vez não exige integração: basta preencher uma planilha e subir o arquivo. Esta página é o contrato desse arquivo — quais abas existem, quais colunas cada uma tem, o que é obrigatório, o que a ausência de uma coluna significa e o que a plataforma faz com cada valor.

Versão do contrato: v1. A versão também aparece na aba Referencia do modelo, e sobe quando uma coluna some, muda de nome ou muda de significado.

Você não precisa começar do modelo

O modelo preenchido é oferecido para download no painel, na importação em lote. Ele existe para poupar trabalho, não para ser obrigatório: qualquer arquivo com estas colunas é aceito, inclusive o que o seu sistema exportar. As colunas são casadas por nome.

Quem integra por API não passa por aqui — a emissão documento a documento está em Emitir uma DC-e.

Por que duas abas, e não uma​

Uma DC-e declara de 1 a 999 itens. Repetir os 40 campos do documento em cada linha de item permitiria a mesma DC-e aparecer com destinatários diferentes em linhas distintas, sem critério para eleger a correta — e um lote de 200 documentos com 5 itens viraria 1.000 linhas de 48 colunas.

Por isso o arquivo tem três abas:

AbaO que éO que a plataforma faz
DCeuma linha por documentolê
Itensuma linha por itemlê
Referenciaconsulta: valores aceitos, limites e obrigatoriedade condicionalignora, por nome — não é dado

As duas abas de dado são obrigatórias. Arquivo sem a aba Itens é recusado nomeando a aba que falta.

Como as colunas são casadas​

Por nome, nunca por posição. O cabeçalho é normalizado antes da comparação — sem acento, sem caixa, sem asterisco e sem separador —, então Descrição *, descricao e DESCRICAO são a mesma coluna.

Isso tem uma consequência que vale conhecer: coluna nova entra no fim, e coluna existente nunca é reordenada. Quem montou o próprio exportador casando por posição continua funcionando.

O asterisco no cabeçalho​

* no cabeçalho quer dizer obrigatória sempre.

Coluna sem asterisco não quer dizer opcional

Quer dizer que a obrigatoriedade depende de outra coluna — a modalidade de emissão, a de transporte ou qual documento identifica cada parte. As regras estão em Obrigatoriedade condicional.

Aba DCe​

Uma linha por documento. A ordem das colunas é a de preenchimento (identidade → emitente → parte emissora → destinatário → transporte → autorizados → informação adicional), não a do XML: quem preenche lê a planilha da esquerda para a direita uma vez só.

A coluna "Campo na API" é o caminho no corpo da emissão, para quem quiser comparar com a referência da API.

ColunaCampo na APIObrigatóriaObservação
ID_DCe— (vínculo local)simIdentificador escolhido por você, até 40 caracteres. É o que aparece no relatório de erro. Não vai para a API
Tipo_EmitenteemitterTypesimMarketplace, Emissao_Propria ou Transportadora
Emitente_CNPJissuer.cnpjcondicionalSó dígitos. Único documento aceito em Emissao_Propria
Emitente_CPFissuer.cpfcondicionalSó dígitos
Emitente_ID_Outrosissuer.idOtherscondicionalIdentificação estrangeira, quando não há CNPJ nem CPF
Emitente_Nomeissuer.namesim
Emitente_Endereco_CEPissuer.address.postalCodesimSó dígitos, oito. O zero à esquerda importa
Emitente_Endereco_Logradouroissuer.address.streetsim
Emitente_Endereco_Numeroissuer.address.numbersimTexto: S/N é valor legítimo
Emitente_Endereco_Complementoissuer.address.complementnãoVazio é omitido, não enviado como texto vazio
Emitente_Endereco_Bairroissuer.address.neighborhoodsim
Emitente_Endereco_Cidade_Codigoissuer.address.cityCodesimCódigo IBGE de sete dígitos
Emitente_Endereco_Cidade_Nomeissuer.address.cityNamesim
Emitente_Endereco_Estadoissuer.address.statesimSigla de duas letras
Parte_Emissora_CNPJemitterParty.cnpjcondicionalEm Emissao_Propria, derivado do emitente quando vazio
Parte_Emissora_NomeemitterParty.namecondicionalEm Emissao_Propria, derivado do emitente quando vazio
Parte_Emissora_SiteemitterParty.sitecondicionalObrigatório em Marketplace
Destinatario_CNPJrecipient.cnpjcondicionalSó dígitos
Destinatario_CPFrecipient.cpfcondicionalSó dígitos
Destinatario_ID_Outrosrecipient.idOtherscondicionalIdentificação estrangeira
Destinatario_Nomerecipient.namesim
Destinatario_Emailrecipient.emailnãoQuem recebe o aviso de emissão
Destinatario_Endereco_CEPrecipient.address.postalCodesimSó dígitos, oito
Destinatario_Endereco_Logradourorecipient.address.streetsim
Destinatario_Endereco_Numerorecipient.address.numbersim
Destinatario_Endereco_Complementorecipient.address.complementnão
Destinatario_Endereco_Bairrorecipient.address.neighborhoodsim
Destinatario_Endereco_Cidade_Codigorecipient.address.cityCodesimCódigo IBGE de sete dígitos
Destinatario_Endereco_Cidade_Nomerecipient.address.cityNamesim
Destinatario_Endereco_Estadorecipient.address.statesim
Destinatario_Endereco_Pais_Codigorecipient.address.countryCodenãoPadrão 1058 (Brasil)
Destinatario_Endereco_Paisrecipient.address.countrynãoPadrão Brasil
Transporte_Modalidadetransport.modesimCorreios, Proprio ou Transportadora
Transporte_Transportadora_CNPJtransport.carrierCnpjcondicionalEnviado só em Transportadora; nas outras é descartado
Autorizados_CNPJauthorizedDownloaders[].cnpjnãoVários separados por ;
Autorizados_CPFauthorizedDownloaders[].cpfnãoVários separados por ;. Somando as duas colunas, no máximo 10
Info_Adicional_FiscoadditionalInfo.fiscoInfonão
Info_Adicional_ComplementaradditionalInfo.complementarynão
Info_Adicional_MarketplaceadditionalInfo.marketplaceInfonão
Info_Adicional_CorreiosadditionalInfo.ectInfonão
Por que o destinatário tem colunas de país e o emitente não

A DC-e admite destinatário no exterior, então o endereço do destinatário aceita qualquer país. O do emitente não: o código de país do emitente é uma enumeração de um único valor (1058) e o nome só aceita Brasil. Informar outro país no emitente faz a SEFAZ rejeitar o documento.

Aba Itens​

Uma linha por item. A coluna ID_DCe liga a linha ao documento da aba DCe.

ColunaCampo na APIObrigatóriaObservação
ID_DCe— (vínculo local)simTem que existir na aba DCe. Item órfão é erro
Item_Numeroitems[].itemNumbernãoInformativo — veja o aviso abaixo
Descricaoitems[].descriptionsim1 a 120 caracteres
NCMitems[].ncmnãoVazio, 2 ou 8 dígitos
Quantidadeitems[].quantitysimNúmero. Vírgula ou ponto decimal
Valor_Unitarioitems[].unitValuesim
Valor_Totalitems[].totalValuenãoVazio = quantidade × unitário. Informado é respeitado sem recálculo
Informacoes_Adicionaisitems[].additionalInfonãoAté 500 caracteres
Item_Numero é informativo, e a plataforma o ignora

A numeração enviada é sempre 1..N, pela ordem das linhas na aba. A regra H02-10 da SEFAZ exige numeração consecutiva começando em 1 e rejeita o documento com cStat 927 quando não é — e planilha preenchida à mão chega com numeração que pula e repete. A coluna existe para você se orientar ao preencher; quem decide a ordem é a posição da linha.

Valor_Total informado não é recalculado

Mesmo divergindo de quantidade × valor unitário, o valor que você informar é o que vai para a SEFAZ. Deixar a coluna vazia é o caminho seguro: a conta é feita para você. Na API, o valor total do item é obrigatório — é a planilha que o calcula quando você omite.

Valores aceitos​

A planilha fala português e a API fala o enum dela. A tradução é parte do contrato: é o que permite conferir na referência da API o que cada valor faz.

Tipo_Emitente​

Na planilhaNa APIO que muda
MarketplaceMarketplaceExige Parte_Emissora_Site
Emissao_PropriaSelfIssuerSó aceita Emitente_CNPJ; Parte_Emissora_* é derivada do emitente
TransportadoraCarrierAceita CNPJ, CPF ou identificação estrangeira no emitente

Transporte_Modalidade​

Na planilhaNa APIO que muda
CorreiosMailTransporte_Transportadora_CNPJ é descartado
ProprioOwnCarriageTransporte_Transportadora_CNPJ é descartado
TransportadoraCarrierExige Transporte_Transportadora_CNPJ
Transportadora aparece nas duas listas, e são coisas diferentes

Em Tipo_Emitente, é quem declara o conteúdo. Em Transporte_Modalidade, é quem leva a carga. Uma emissão própria entregue por transportadora usa Emissao_Propria na primeira coluna e Transportadora na segunda.

O que cada modalidade de emissão exige de cadastro na SEFAZ está em Credenciamento.

Regras de vínculo entre as abas​

RegraO que acontece quando quebra
ID_DCe preenchido nas duas abaslinha sem identificador é recusada
ID_DCe único na aba DCeduas linhas com o mesmo identificador é erro: não há como saber qual documento vale
Todo item aponta para um ID_DCe que existe na aba DCeitem órfão é erro, apontando o identificador
Todo documento tem pelo menos um itemdocumento sem item é erro: a DC-e exige de 1 a 999
Dados do documento não divergem entre linhas do mesmo ID_DCeerro, porque nenhum critério de desempate seria defensável

Obrigatoriedade condicional​

O quêRegra
Identificação do emitenteexatamente uma entre Emitente_CNPJ, Emitente_CPF e Emitente_ID_Outros — e só Emitente_CNPJ quando Tipo_Emitente = Emissao_Propria
Identificação do destinatárioexatamente uma entre Destinatario_CNPJ, Destinatario_CPF e Destinatario_ID_Outros
Parte_Emissora_Siteobrigatório quando Tipo_Emitente = Marketplace
Parte_Emissora_CNPJ e Parte_Emissora_Nomeobrigatórios em Marketplace e Transportadora; em Emissao_Propria, derivados do emitente quando vazios
Transporte_Transportadora_CNPJobrigatório quando Transporte_Modalidade = Transportadora; descartado nas outras

Se mais de um documento vier preenchido para a mesma parte, a precedência é CNPJ → CPF → identificação estrangeira — a mesma que a API usa ao exibir o documento na consulta.

Limites​

O quêLimite
Itens por DC-e1 a 999
Descricao do item1 a 120 caracteres
Informacoes_Adicionais do itematé 500 caracteres
Autorizados a baixar o XMLaté 10, somando Autorizados_CNPJ e Autorizados_CPF
ID_DCeaté 40 caracteres, único na aba DCe
NCMvazio, 2 ou 8 dígitos

Os quatro primeiros são limites do próprio documento fiscal, definidos no leiaute da DC-e: valem igualmente para quem emite pela API. ID_DCe é da planilha, porque a API não tem esse campo.

O que deliberadamente não tem coluna​

AusênciaPor quê
Série e númeroquem numera é a plataforma. Uma coluna aqui seria promessa que o cliente descobriria como documento duplicado (cStat 451/452)
Ambienteé da empresa, e é o mesmo valor que escolhe o host da API. O arquivo poder discordar da conta é exatamente o que a validação recusa
Qualquer tributoa DC-e não tem imposto: sem ICMS, sem IBS/CBS, sem alíquota. É o que a separa da NF-e — veja Conceitos
Tipo de emissão / contingênciasó a emissão normal existe; a SEFAZ rejeita contingência offline com cStat 215
País do emitenteo emitente é sempre brasileiro no leiaute: o código de país é enumeração de um valor e o nome fora de Brasil reprova na validação

Zero à esquerda, e por que ele importa​

CEP 04403240 lido como número volta 4403240; CNPJ vira notação científica. O arquivo é normalizado na leitura — mas você vê o valor errado na sua tela e conclui que a planilha está quebrada.

Por isso, no modelo, as colunas de documento (CNPJ, CPF, identificação estrangeira), CEP, código de município, NCM e ID_DCe são gravadas com formato de texto: o Excel não as converte ao abrir. Se você montar o arquivo no seu sistema, formate essas colunas como texto antes de exportar.

As linhas de exemplo​

O modelo vem preenchido, com dois documentos — o vínculo entre as abas é a única parte do formato que não é óbvia, e dois exemplos o explicam sem documentação:

ID_DCeTipo_EmitenteItensO que demonstra
EXEMPLO-1Emissao_Propria1o caso simples: CNPJ do emitente, destinatário pessoa física, envio pelos Correios
EXEMPLO-2Marketplace2Parte_Emissora_* com site, transporte por transportadora com CNPJ, autorizados separados por ;

Os documentos dos exemplos são fictícios, com dígito verificador válido.

Apague as linhas de exemplo antes de enviar

Os identificadores começam com EXEMPLO- de propósito: encontrando linhas de exemplo intactas no arquivo enviado, a plataforma avisa antes de emitir. Renomear o prefixo desliga esse aviso — e emitir um exemplo é emitir um documento fiscal de verdade.

A planilha de resultado​

Terminado o envio, a exportação devolve o mesmo arquivo — as duas abas e todas as colunas de origem intactas — com mais quatro colunas ao fim da aba DCe:

ColunaConteúdo
Resultadoo desfecho da linha
Chave_Acessoa chave de acesso, quando houver
Protocoloo protocolo da SEFAZ, quando houver
Motivoa mensagem da recusa ou o motivo da rejeição, quando houver

Este arquivo volta a ser aceito na importação, e é para isso que ele existe: o ciclo é exportar, corrigir as linhas que falharam no próprio arquivo e subir de novo. As quatro colunas acrescentadas são ignoradas na leitura.

Reenviar uma linha já emitida não gera documento novo: cada linha carrega uma chave de idempotência, e o reenvio devolve o documento que já existe. A proteção vale por 24 horas.

Veja também​

NFE.io

A NFE.io é uma empresa de tecnologia que fornece soluções para automatizar e simplificar a emissão e gestão de notas fiscais eletrônicas. Com suas ferramentas, as empresas podem economizar tempo e reduzir erros, aumentando a eficiência e precisão do processo de emissão de notas fiscais.

Um dos principais cases de sucesso da NFE.io é a implementação da solução na empresa de transporte Rodonaves. Com a automatização da emissão e gestão de notas fiscais eletrônicas, a Rodonaves conseguiu reduzir em até 80% o tempo gasto nesse processo, o que se traduziu em uma significativa melhoria na eficiência operacional. Além disso, a empresa também conseguiu eliminar erros e atrasos na emissão de notas fiscais, o que melhorou a relação com seus clientes e aumentou a confiança dos órgãos fiscais.

Outro exemplo é a implementação da NFE.io na empresa de comércio eletrônico, a Loja Integrada. Com a automatização da emissão de notas fiscais, a Loja Integrada conseguiu aumentar a velocidade de emissão de notas em até 10 vezes, o que permitiu que a empresa atendesse a uma maior quantidade de clientes e, consequentemente, aumentar as suas vendas.

Além desses exemplos, a NFE.io também tem outros cases de sucesso com empresas de setores como indústria, construção, varejo e serviços, mostrando a versatilidade e eficácia da sua solução.

Em resumo, a NFE.io é uma empresa de tecnologia que oferece soluções para automatizar e simplificar a emissão e gestão de notas fiscais eletrônicas, ajudando as empresas a economizar tempo e reduzir erros, melhorando a eficiência e precisão do processo. Com cases de sucesso em diferentes setores, a NFE.io tem se destacado como uma empresa líder em automação fiscal.