Conheça as soluções Webmania® para o seu negócio e escolha a ideal para sua operação.
Conversar no WhatsAppConsulte condições e serviços disponíveis.
Utilize a REST API da Webmania para emissão de DC-e. Deseja emitir outros modelos? Ver documentação
Todas as solicitações na API devem ser realizadas em ambiente criptografado HTTPS através da URL https://api.webmania.com.br. O prefixo /2/ indica que atualmente estamos utilizando a versão 2.0 da API.
| URL | HTTP Verb | Função |
|---|---|---|
/2/dce/emissao | POST | Emissão de DC-e |
/2/dce/consulta/{uuid|chave} | GET | Consulta de DC-e por UUID ou chave |
/2/dce/cancelar | PUT | Cancelamento de DC-e |
Realize a emissão com apenas um clique na sua Loja Virtual através dos módulos da Webmania® ou realize a integração para os diversos tipos de linguagens de programação.
Para acessar os recursos da API, é necessário autenticar as requisições por meio do cabeçalho HTTP (HTTP headers). A autenticação deve ser feita utilizando o cabeçalho Authorization, no seguinte formato:
Authorization: Bearer {Access-Token} O Access-Token pode ser obtido no painel da Webmania® e deve ser incluído em todas as requisições.
Mantenha suas credenciais em segurança. Nunca publique o Access Token no código-fonte do site, aplicativo ou sistema onde ele possa ser facilmente acessado por terceiros.
Para aplicativos móveis (iOS e Android), recomendamos que a consulta à API seja realizada no servidor (back-end). O código-fonte do aplicativo deve apenas enviar a requisição enquanto o processamento da consulta deve ocorrer no seu servidor.
Todas as respostas da API seguem um padrão e estão no formato JSON, garantindo clareza e facilidade de interpretação.
A tabela abaixo apresenta os códigos de status HTTP que a API pode retornar com suas respectivas descrições. Esses códigos indicam o resultado da operação solicitada e ajudam a entender se a requisição foi bem-sucedida ou se ocorreu alguma falha.
| Código | Significado | Sucesso | Descrição |
|---|---|---|---|
200 | OK | Operações bem-sucedidas (GET|PUT|DELETE). | |
201 | Created | Criação de recursos (POST). | |
400 | Bad Request | A requisição está incorreta ou possui parâmetros inválidos no corpo (body) da requisição. | |
401 | Unauthorized | Falha na autenticação. Verifique o token de acesso enviado. | |
403 | Forbidden | Acesso negado. Não possui permissão para realizar a operação. |
Exemplo de resposta para uma requisição com erro:
{
"error": "Parâmetro inválido: cnpj. O valor ABCD não é um CNPJ válido."
}
Para que a sua plataforma se mantenha sempre atualizada, a Webmania disponibiliza as notificações automáticas para todos os status do DC-e.
Cada DC-e possui um identificador único chamado de UUID. Este identificador deve ser utilizado para recepcionar e identificar o DC-e para atualizar as informações no seu banco de dados.
No momento em que for realizada a emissão do DC-e, caso tenha informado o parâmetro url_notificacao, será enviado o retorno no formato POST para a URL especificada, contendo no corpo os parâmetros ID, uuid, chave, serie, numero, status, motivo, modelo, xml, xml_cancelamento, dace e log.
| Parâmetro | Tipo | Descrição |
|---|---|---|
ID | string | ID de controle enviado na emissão (quando informado). |
uuid | string | Identificador único do DC-e. |
chave | string | Chave de acesso do DC-e na SEFAZ. |
serie | number | Série do DC-e. |
numero | number | Número do DC-e. |
status | string | Status atual do documento. |
motivo | string | Motivo do status retornado. |
modelo | string | Valor fixo dce. |
xml | string | URL do XML autorizado. |
xml_cancelamento | string | URL do XML de cancelamento (presente somente quando status for cancelado). |
dace | string | URL do DACE. |
log | array | Log técnico da operação (envio/cancelamento). |
A requisição via POST é realizada no formato application/json:
-X POST \
-header "Content-type: application/json" \Segue exemplo do retorno via POST:
{
"ID": "PED-123",
"uuid": "00000000-0000-0000-0000-000000000000",
"chave": "00000000000000000000000000000000000000000000",
"serie": 1,
"numero": 123,
"status": "aprovado",
"motivo": "Autorizado o uso do DC-e",
"modelo": "dce",
"xml": "https://api.webmania.com.br/xmldce/[chave]",
"dace": "https://api.webmania.com.br/dace/[chave]",
"log": { ... }
} A Declaração de Conteúdo Eletrônica (DC-e) é um documento digital que substitui a antiga declaração de conteúdo em papel. Ela é utilizada para documentar o transporte de bens e mercadorias quando não há exigência de documento fiscal (NF-e, NFC-e, etc.).
A DC-e pode ser emitida por pessoas físicas ou jurídicas não contribuintes do ICMS. Após a autorização pela SEFAZ, é gerado o DACE (Declaração Auxiliar de Conteúdo Eletrônica), que deve acompanhar a mercadoria durante o transporte.
Para emitir, envie uma requisição POST para /2/dce/emissao com os dados no formato JSON:
curl -X POST \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"ID": "PED-123",
"ambiente": 2,
"url_notificacao": "https://suaaplicacao.com.br/webhook/dce",
"emitente": {
"cnpj": "12345678000195",
"razao_social": "EMPRESA EMISSORA LTDA",
"logradouro": "Rua A",
"numero": "100",
"bairro": "Centro",
"codigo_municipio": "4106902",
"municipio": "Curitiba",
"uf": "PR",
"cep": "80000000"
},
"cliente": {
"cnpj": "12345678000195",
"razao_social": "CLIENTE LTDA",
"logradouro": "Rua B",
"numero": "200",
"bairro": "Centro",
"codigo_municipio": "3550308",
"municipio": "São Paulo",
"uf": "SP",
"cep": "01001000"
},
"itens": [
{
"descricao": "Frete",
"ncm": "99000000",
"quantidade": 1,
"valor_unitario": 100.00
}
],
"transporte": {
"modalidade": "0"
},
"informacoes_adicionais": "Observações gerais"
}' \
https://api.webmania.com.br/2/dce/emissao A resposta será no formato JSON. Consulte a seção de Notificações para a descrição completa de cada campo.
{
"ID": "PED-123",
"uuid": "00000000-0000-0000-0000-000000000000",
"chave": "00000000000000000000000000000000000000000000",
"serie": 1,
"numero": 123,
"status": "aprovado",
"motivo": "Autorizado o uso do DC-e",
"modelo": "dce",
"xml": "https://api.webmania.com.br/xmldce/[chave]",
"dace": "https://api.webmania.com.br/dace/[chave]",
"log": { ... }
} Os parâmetros abaixo compõem o corpo principal da requisição de emissão. Clique no nome dos campos destacados para ver os detalhes de cada seção.
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
ID | Opcional | string | 1-100 | ID externo de controle da operação. |
ambiente | Obrigatório | number | 1 | Ambiente da emissão.1 = Produção |
url_notificacao | Opcional | url | até 500 | URL para receber notificações automáticas de status. |
solicitacao | Opcional com regra | json | até 2000 | Dados do pedido de emissão preenchidos no aplicativo do Fisco, em formato JSON.Obrigatório apenas quando o tipo de emissor da empresa estiver configurado como ‘Fisco’. |
emitente | Obrigatório | objeto | - - - | Objeto com os dados do emitente do documento.Consulte a seção de Emitente para as regras condicionais. |
cliente | Obrigatório | objeto | - - - | Objeto com os dados do cliente/tomador.Consulte a seção de Cliente para as regras condicionais. |
itens | Obrigatório | array | 1-n | Lista de bens/mercadorias transportados (máx. 999 itens).Valor total da DC-e limitado a R$ 200.000,00. |
transporte | Obrigatório | objeto | - - - | Objeto com os dados de transporte.O campo |
informacoes_adicionais | Opcional | string | 1-5000 | Informações adicionais gerais da emissão.Veja também os parâmetros de observações na seção de Informações Adicionais. |
O emitente é a pessoa física ou jurídica que está remetendo o bem ou mercadoria ao destinatário. Envie os dados no objeto emitente.
Para identificação, informe apenas uma das opções: cnpj, cpf ou identificacao_alternativa. De acordo com o tipo de identificação, o campo de nome também muda:
razao_socialnome_completo| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
cnpj | Obrigatório condicional | string | 14 | CNPJ do emitente (somente números).Informe apenas um: |
cpf | Obrigatório condicional | string | 11 | CPF do emitente (somente números).Informe apenas um: |
identificacao_alternativa | Obrigatório condicional | string | 2-20 | Identificação para emitentes sem CPF/CNPJ (estrangeiros, indígenas, quilombolas). |
razao_social | Obrigatório com CNPJ | string | 2-60 | Razão social (pessoa jurídica).Obrigatório quando |
nome_completo | Obrigatório com CPF/ID alternativa | string | 2-60 | Nome completo (pessoa física).Obrigatório quando |
logradouro | Obrigatório, com autopreenchimento por CEP | string | 2-60 | Logradouro do endereço. |
numero | Obrigatório | string | 1-60 | Número do endereço.Informe |
complemento | Opcional | string | 1-60 | Complemento do endereço. |
bairro | Obrigatório, com autopreenchimento por CEP | string | 2-60 | Bairro do endereço. |
codigo_municipio | Obrigatório, com autopreenchimento por CEP | string | 7 | Código IBGE do município (7 dígitos). |
municipio | Obrigatório, com autopreenchimento por CEP | string | 2-60 | Nome do município. |
uf | Obrigatório, com autopreenchimento por CEP | string | 2 | Sigla da UF (ex: SP, RJ, MG). |
cep | Obrigatório | string | 8 | CEP com 8 dígitos numéricos, sem máscara. |
telefone | Opcional | string | 7-12 | Telefone com DDD, somente números. |
Autopreenchimento por CEP: os campos logradouro, bairro, codigo_municipio, municipio e uf são preenchidos automaticamente quando o cep informado for válido e localizável.
Exemplo de emitente pessoa jurídica:
{
"emitente": {
"cnpj": "00000000000000",
"razao_social": "Empresa Logistica Ltda",
"logradouro": "Avenida Paulista",
"numero": "1000",
"bairro": "Bela Vista",
"codigo_municipio": "3550308",
"municipio": "Sao Paulo",
"uf": "SP",
"cep": "01310100",
"telefone": "1130000000"
}
} O cliente é o destinatário do bem ou mercadoria. Envie os dados no objeto cliente.
A regra de identificação é a mesma do emitente: informe apenas uma das opções (cnpj, cpf ou identificacao_alternativa), com o respectivo campo de nome.
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
cnpj | Obrigatório condicional | string | 14 | CNPJ do cliente (somente números).Informe apenas um: |
cpf | Obrigatório condicional | string | 11 | CPF do cliente (somente números).Informe apenas um: |
identificacao_alternativa | Obrigatório condicional | string | 2-20 | Identificação para destinatários sem CPF/CNPJ (estrangeiros, indígenas, quilombolas). |
razao_social | Obrigatório com CNPJ | string | 2-60 | Razão social (pessoa jurídica).Obrigatório quando |
nome_completo | Obrigatório com CPF/ID alternativa | string | 2-60 | Nome completo (pessoa física).Obrigatório quando |
email | Opcional | até 80 | E-mail do destinatário para recepção do documento. | |
logradouro | Obrigatório, com autopreenchimento por CEP | string | 2-60 | Logradouro do endereço. |
numero | Obrigatório | string | 1-60 | Número do endereço.Informe |
complemento | Opcional | string | 1-60 | Complemento do endereço. |
bairro | Obrigatório, com autopreenchimento por CEP | string | 2-60 | Bairro do endereço. |
codigo_municipio | Obrigatório, com autopreenchimento por CEP | string | 7 | Código IBGE do município (7 dígitos). |
municipio | Obrigatório, com autopreenchimento por CEP | string | 2-60 | Nome do município. |
uf | Obrigatório, com autopreenchimento por CEP | string | 2 | Sigla da UF. Para operações com o exterior, informe EX. |
cep | Obrigatório | string | 8 | CEP com 8 dígitos numéricos, sem máscara. |
telefone | Opcional | string | 7-12 | Telefone com DDD, somente números. |
codigo_pais | Opcional com default automático | string | 1-4 | Código do país. Padrão: 1058 (Brasil). |
pais | Opcional com default automático | string | 2-60 | Nome do país. Padrão: Brasil. |
Autopreenchimento por CEP: os campos logradouro, bairro, codigo_municipio, municipio e uf são preenchidos automaticamente quando o cep informado for válido e localizável.
Exemplo de cliente pessoa jurídica:
{
"cliente": {
"cnpj": "00000000000000",
"razao_social": "Empresa Comercial Ltda",
"email": "fiscal@empresacomercial.com.br",
"logradouro": "Rua da Bahia",
"numero": "550",
"bairro": "Centro",
"codigo_municipio": "3106200",
"municipio": "Belo Horizonte",
"uf": "MG",
"cep": "30160011",
"telefone": "3130000000"
}
} Os itens representam os bens ou mercadorias transportados. Envie os dados em um array no parâmetro itens, com no mínimo 1 e no máximo 999 itens.
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
descricao | Obrigatório | string | 1-120 | Descrição do produto, bem ou mercadoria. |
ncm | Obrigatório | string | 2 ou 8 | Código NCM (Nomenclatura Comum do Mercosul).Informe o capítulo com 2 dígitos ou o código completo com 8 dígitos, somente números. |
quantidade | Obrigatório | number | 13v4 | Quantidade do item.Aceita até 4 casas decimais. |
valor_unitario | Obrigatório | number | 13v8 | Valor unitário do item.Aceita até 8 casas decimais. |
informacoes_adicionais | Opcional | string | 1-500 | Informações complementares do item (ex: lote, validade). |
Limites de valor: o valor total de cada item (quantidade × valor unitário) não pode exceder R$ 100.000,00. A soma de todos os itens da DC-e não pode exceder R$ 200.000,00.
Exemplo com dois itens:
{
"itens": [
{
"descricao": "Cafe torrado e moido 500g",
"ncm": "09012100",
"quantidade": 120,
"valor_unitario": 18.9,
"informacoes_adicionais": "Lote 202603A"
},
{
"descricao": "Filtro de papel tamanho 103 com 30 unidades",
"ncm": "48232099",
"quantidade": 80,
"valor_unitario": 6.5
}
]
} Informe como a mercadoria será transportada no objeto transporte.
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
modalidade | Obrigatório | string | 1 | Modalidade de transporte. 0 = Correios |
cnpj_transportadora | Opcional | string | 14 | CNPJ da transportadora (somente números).Utilize quando a modalidade for |
Exemplo de transporte por empresa transportadora:
{
"transporte": {
"modalidade": "2",
"cnpj_transportadora": "19131243000197"
}
} Todos os campos desta seção são opcionais e permitem incluir observações complementares no documento. A DC-e oferece dois níveis de informações adicionais:
informacoes_adicionais e observacoes): visíveis para o destinatário e o fisco.informacoes_adicionais_emitente e observacoes_emitente): de interesse do emissor.| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
informacoes_adicionais | Opcional | string | 1-5000 | Texto livre com observações gerais do documento. |
observacoes | Opcional | array | 1-10 | Lista de observações estruturadas (campo/texto).Ver estrutura do item. |
informacoes_adicionais_emitente | Opcional | string | 1-5000 | Texto livre com observações de interesse do emitente. |
observacoes_emitente | Opcional | array | 1-10 | Lista de observações estruturadas do emitente (campo/texto).Ver estrutura do item. |
Cada item dos arrays observacoes e observacoes_emitente deve conter os campos campo e texto:
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
campo | Obrigatório quando enviar observacoes ou observacoes_emitente | string | 1-20 | Identificação do campo.Exemplo: PEDIDO, ROTA, REFERENCIA. |
texto | Obrigatório quando enviar observacoes ou observacoes_emitente | string | 1-60 | Conteúdo da observação. |
Exemplo utilizando todos os campos de informações adicionais:
{
"informacoes_adicionais": "Entrega agendada para o periodo da manha.",
"observacoes": [
{
"campo": "PEDIDO",
"texto": "Pedido interno 78954"
},
{
"campo": "CONTATO",
"texto": "Recebimento com Joao"
}
],
"informacoes_adicionais_emitente": "Documento emitido para controle logistico.",
"observacoes_emitente": [
{
"campo": "ORDEM",
"texto": "Ordem de coleta 45678"
}
]
} Na Webmania, a segurança da informação é nossa prioridade máxima. Por esse motivo, aplicamos restrições de acesso aos arquivos XML e PDF para garantir a segurança dos documentos fiscais.
O documento fiscal é criptografado com senha, e só pode ser visualizado após a confirmação do CPF/CNPJ do tomador da nota fiscal ou conforme formas de autenticação através do IP emissor, Credenciais de acesso, Token ou Conectado no painel Webmania®.
Segue abaixo as condições de acesso disponibilizados, após as restrições serem aplicadas:
| Autenticação | Acesso autorizado | Exige senha? | Descrição |
|---|---|---|---|
Credenciais de acesso | ✅ | Não | Ao enviar as credenciais de acesso da empresa na HEADER da requisição, podem ser acessados todos os documentos fiscais emitidos pela empresa. Authorization: Bearer SEU_ACCESS_TOKEN |
Token | ✅ | Não | Ao enviar o token criptografado na URL, o documento fiscal pode ser acessado pelo período de 24 horas sem o uso de senha. Ideal para disponibilizar link para compartilhamento.?token=[TOKEN]Token não está disponível para documentos fiscais sem tomador. |
IP emissor | ✅ | Não | Ao emitir uma nota fiscal o IP do computador/servidor é registrado como autorizado de forma permanente, onde pode acessar todos os documentos fiscais emitidos pelas empresas às quais possui acesso. IPs autorizados automaticamente |
Painel Webmania® | ✅ | Não | Ao realizar o login no painel Webmania® é permitido o acesso para todos os documentos fiscais emitidos pelas empresas da sua conta. O acesso é vinculado ao período que está conectado no painel Webmania®.Acesso enquanto estiver conectado |
Sem autenticação | ❌ | Sim | Ao acessar a URL de forma pública sem autenticação, os documentos fiscais são criptografados com senha. Para acessá-los é necessário informar o CPF/CNPJ do tomador da nota fiscal (somente números).PDF = Arquivo PDF com senhaAcesso sem autenticação não está disponível para documentos fiscais sem tomador. |
Ao enviar as credenciais de acesso da empresa na HEADER da requisição, podem ser acessados todos os documentos fiscais emitidos pela empresa. Segue abaixo exemplo de como visualizar o PDF, utilizando as credenciais de acesso:
curl -X GET \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
https://api.webmania.com.br/dace/00000000000000000000000000000000000000000000A resposta do corpo da mensagem será no formato application/pdf ou text/xml, contendo no corpo da requisição o arquivo.
Para disponibilizar o link do PDF e XML com segurança e eliminar a exigência da senha, é necessário a geração do token de forma criptografada utilizando a camada de segurança AES-256-CBC. Após gerar o token, deve ser enviado na URL do arquivo. Segue abaixo exemplo:
https://api.webmania.com.br/dace/00000000000000000000000000000000000000000000?token=[TOKEN]Pare gerar o token criptografado, verifique o passo a passo disponibilizado no Github da Webmania juntamente com as funções nas linguagens em PHP, Python, Java, C# e Ruby: https://github.com/webmaniabr/DFeToken.
Para consultar o status de um DC-e, envie requisição GET para /2/dce/consulta/ contendo na URL o uuid ou chave do DC-e.
curl -X GET \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
https://api.webmania.com.br/2/dce/consulta/00000000000000000000000000000000000000000000 A resposta será no formato JSON. Consulte a seção de Notificações para a descrição completa de cada campo.
{
"ID": "PED-123",
"uuid": "00000000-0000-0000-0000-000000000000",
"chave": "00000000000000000000000000000000000000000000",
"serie": 1,
"numero": 123,
"status": "aprovado",
"motivo": "Autorizado o uso do DC-e",
"modelo": "dce",
"xml": "https://api.webmania.com.br/xmldce/[chave]",
"xml_cancelamento": "https://api.webmania.com.br/xmldce/[chave]/cancelamento",
"dace": "https://api.webmania.com.br/dace/[chave]",
"log": { ... }
} Para cancelar uma DC-e, envie a requisição no método PUT para URL /2/dce/cancelar contendo na requisição os parâmetros uuid ou chave do DC-e e justificativa do cancelamento.
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
uuid | Obrigatório sem chave | string | 36 | UUID do DC-e. Não pode ser enviado junto com chave. |
chave | Obrigatório sem uuid | string | 44 | Chave do DC-e. Não pode ser enviada junto com uuid. |
justificativa | Obrigatório | string | 15-255 | Motivo do cancelamento. |
curl -X PUT \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"chave": "00000000000000000000000000000000000000000000",
"justificativa": "Cancelamento por erro operacional no lançamento"
}' \
https://api.webmania.com.br/2/dce/cancelar A resposta do corpo da mensagem será no formato objeto JSON, contendo os campos status, motivo, xml, xml_cancelamento e log:
{
"status": "cancelado",
"motivo": "Evento registrado e vinculado",
"xml": "https://api.webmania.com.br/xmldce/[chave]",
"xml_cancelamento": "https://api.webmania.com.br/xmldce/[chave]/cancelamento",
"log": { ... }
} Quando o cancelamento não é homologado pela SEFAZ:
{
"status": "reprovado",
"motivo": "Falha no cancelamento",
"log": { ... }
} A Webmania® desenvolveu uma tecnologia exclusiva que trabalha com o ambiente de contingência do Sefaz automaticamente, assim que identificado que as operações do Sefaz se encontram offline.
Em casos onde não está sendo possível comunicar o DC-e para a SEFAZ, as notas são colocadas em uma fila de processamento, na qual serão processadas assim que a comunicação com a SEFAZ for reestabelecida.
No momento que realizado a emissão da Nota Fiscal, caso tenha informado o parâmetro url_notificacao, será enviado o retorno no formato POST para a URL especificada. Saiba mais
O servidores da Webmania estão localizados na Amazon AWS, líder global em cloud computing, na região us-east-1 (Leste dos EUA) com ponto de presença em sa-east-1 (São Paulo). Manter a sua estrutura perto de algumas das duas localidades, garante um menor tempo de resposta nas requisições na API.
Utilizamos uma infraestrutura na Amazon AWS anycast de alta disponibilidade, o que significa que ao se comunicar com API da Webmania a requisição será redirecionada para o servidor mais próximo da sua localidade. As requisições dos endpoints são gerenciados através de IPs estáticos, caso necessite autorize no firewall a comunicação com os IPs abaixo.
IPs estáticos de entrada:API da Webmania® é protegida por um firewall que identifica de forma automática os acessos indevidos, suspeitos, credenciais incorretas e a localização da requisição, onde também pode limitar solicitações por segundo e o total de requisições para evitar o mal uso da API e a sobrecarga dos servidores. O uso indevido da API pode gerar mensagens de erro 503 ou 403 no retorno do cabeçalho da requisição. Segue abaixo especificações para uma correta integração:
https://webmania.com.br/api/ ou https://api.webmania.com.br retorne 403 Erro Forbidden por engano, por favor, entre em contato para liberarmos o IP do seu servidor.