Emissor Fiscal · todos os modelos
NFS-e em mais de 5.000 municípios
+15 milhõesde documentos fiscais por mês
Conheça as soluções Webmania® para o seu negócio e escolha a ideal para sua operação.
Agendar demonstraçãoConsulte condições e serviços disponíveis.

Utilize a REST API da Webmania® para emitir e consultar DUA-e — o Documento Único de Arrecadação Eletrônico do Espírito Santo — junto à Secretaria da Fazenda do Estado do Espírito Santo (SEFAZ/ES) de forma automatizada, com código de barras, linha digitável e pagamento via PIX. Deseja emitir outros modelos? Ver documentação
O que é o DUA-e? O Documento Único de Arrecadação Eletrônico do Espírito Santo é a guia oficial para o recolhimento, em um único documento, de tributos, taxas e demais receitas públicas devidos a órgãos e entidades do Espírito Santo, com linha digitável e opção de pagamento via PIX.
Atenção: a SEFAZ/ES não possui ambiente de homologação para o DUA-e — o parâmetro ambiente da emissão aceita apenas 1 (produção). Toda emissão gera um DUA-e real e pagável, e não há cancelamento do documento. Veja o alerta com as orientações completas em Emissão de DUA-e.
Todas as requisições na API devem ser realizadas em ambiente criptografado HTTPS através da URL https://api.webmania.com.br/. O prefixo /2/dua deve ser adicionado na URL em todas as requisições.
GET /2/dua/area-servico para obter codigo_area e codigo_servico, e o valor em GET /2/dua/valor-servico.POST /2/dua/notas/preview — quando emitir a partir de notas fiscais. A prévia não emite nada e não consome cota do plano.POST /2/dua/emissao informando url_notificacao. A API responde processando com um uuid.GET /2/dua/pdf/{numero_guia}.A tabela abaixo lista todos os endpoints disponíveis na API:
| URL | HTTP Verb | Função |
|---|---|---|
/2/dua/emissao | POST | Emitir DUA-e — por valor direto, por período de notas ou por chaves/UUIDs |
/2/dua/emissao-cda | POST | Emitir DUA-e de Dívida Ativa |
/2/dua/notas/preview | POST | Prever a seleção de notas e o valor apurado, sem emitir |
/2/dua/status/{uuid} | GET | Consultar status do DUA-e pelo uuid retornado na emissão |
/2/dua/consulta | POST | Consultar DUA-e |
/2/dua/pdf/{numero_guia} | GET | Obter PDF do DUA-e |
/2/dua/area-servico | GET | Consultar área e serviço |
/2/dua/municipio | GET | Consultar município |
/2/dua/valor-servico | GET | Consultar valor do serviço |
/2/dua/pagos | POST | Consultar DUA-e pagos |
Sempre envie o corpo da requisição no formato JSON, e o cabeçalho Content-Type deve estar definido como application/json.
A resposta da API estará sempre no formato JSON, o padrão da estrutura da resposta está disponível nesta seção da documentação.
O webhook é o canal principal de notificação de resultado da API DUA-ES. Toda emissão (normal ou de Dívida Ativa) deve informar a URL de callback no parâmetro url_notificacao.
O UUID (Universally Unique Identifier) é um identificador único de 36 caracteres, no formato 8-4-4-4-12, que a Webmania® atribui a cada emissão de DUA-e. Ele é gerado assim que a requisição é aceita pela API — antes de qualquer transmissão à SEFAZ/ES.
Uma vez gerado, o UUID é definitivo: não muda em retentativas nem em reenvio. O protocolo devolvido pela SEFAZ/ES também tem formato UUID, mas não é o mesmo identificador: ele é gerado pelo órgão, só existe após o processamento e não deve ser usado como chave no seu banco. Guarde sempre o uuid devolvido pela emissão.
url_notificacao é obrigatória. A emissão retorna HTTP 422 se a URL não for enviada ou for inválida. Quando o DUA-e atingir um status terminal — aprovado ou rejeitado — a Webmania® envia uma requisição POST para a url_notificacao com o resultado completo.
Exemplo do payload enviado pelo webhook:
{
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"modelo": "dua",
"status": "aprovado",
"ambiente": 1,
"identificador": "0000000000"
} O identificador é o número do DUA-e emitido (numero_guia) — sempre o numero_guia, inclusive na emissão de Dívida Ativa (o numero_cda é apenas a chave de entrada dessa modalidade). É o mesmo valor exposto em provider_identifier no endpoint de status. Exceção: se a emissão por CDA é rejeitada antes da aceitação pela SEFAZ/ES — nenhum DUA-e emitido, sem provider_identifier — o identificador cai para o numero_cda enviado. Quando status é rejeitado, o payload inclui motivos_rejeicao (lista de {codigo, mensagem}) com o motivo da rejeição.
A notificação é enviada no método POST, com o cabeçalho Content-Type: application/json — os campos do payload:
| Parâmetro | Tipo | Descrição |
|---|---|---|
uuid | string | Identificador da emissão — o mesmo devolvido na resposta síncrona. É a chave de correlação da notificação. |
modelo | string | Tipo da guia: dua. |
status | string | aprovado ou rejeitado (o webhook dispara apenas para status terminais). |
ambiente | number | Sempre 1 — a SEFAZ/ES não disponibiliza homologação para DUA-e. |
identificador | string | Número do DUA-e emitido (numero_guia) — sempre o numero_guia, inclusive na emissão de Dívida Ativa (o numero_cda é apenas a chave de entrada dessa modalidade). É o mesmo valor exposto em provider_identifier no endpoint de status. Exceção: na rejeição antes da aceitação pela SEFAZ/ES (nenhum DUA-e emitido), retorna o numero_cda enviado. Presente quando o identificador já existe. |
motivos_rejeicao | array | Lista de {codigo, mensagem} com o motivo — codigo é o codigo_retorno da SEFAZ/ES e mensagem é o descricao_retorno correspondente (ver Códigos de Retorno). Exceção: se a API esgotar as tentativas de comunicação com a SEFAZ/ES sem obter o número do DUA, codigo é SEFAZ_UNSTABLE_TIMEOUT (não um codigo_retorno). Presente quando status é rejeitado. |
Em emissões por notas, o payload inclui ainda origem (periodo ou chaves), o detalhe notas e o índice notas_ignoradas das notas não liquidadas — veja Emissão por Notas.
Exemplo de notificação — DUA-e rejeitado:
{
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"modelo": "dua",
"status": "rejeitado",
"ambiente": 1,
"motivos_rejeicao": [
{ "codigo": "705", "mensagem": "A Área não pertence ao Órgão" }
]
} O webhook não dispara para processando nem para erro_comunicacao. O status erro_comunicacao indica que o resultado junto à SEFAZ/ES ficou incerto: a API não reenvia a emissão automaticamente, e a resolução é manual — consulte GET /2/dua/status/{uuid}, que retorna uma mensagem orientando a conferência com a SEFAZ/ES. Só reemita após confirmar que o DUA-e não foi gerado, para evitar documento fiscal em duplicidade.
Se a comunicação com a SEFAZ/ES falhar e a API esgotar as tentativas sem obter o número do DUA, a guia será marcada como rejeitada e o webhook será chamado com a mensagem explicando que houve instabilidade nos servidores da SEFAZ/ES. Nessa situação, o integrador pode tentar emitir novamente.
Para casos em que o webhook não puder ser recebido, acompanhe GET /2/dua/status/{uuid} como fallback de consulta manual.
Resumo dos status possíveis:
| Status | Terminal | Dispara webhook | Ação recomendada |
|---|---|---|---|
processando | Não | Não | Aguarde a notificação. Não reenvie a requisição. |
aprovado | Sim | Sim | DUA-e gerado. Obtenha os artefatos de pagamento (PDF via GET /2/dua/pdf/{numero_guia}). |
rejeitado | Sim | Sim | A SEFAZ/ES recusou. Consulte motivos_rejeicao no payload e corrija antes de reemitir. |
erro_comunicacao | Sim | Não | Falha de comunicação com a SEFAZ/ES. Confirme via GET /2/dua/status/{uuid} que o DUA-e não foi gerado antes de reemitir, para evitar documento fiscal em duplicidade. |
O endpoint POST /2/dua/emissao aceita dois modos de origem, mutuamente exclusivos:
| Valor direto | A partir de notas fiscais | |
|---|---|---|
| Quando usar | Você já sabe o valor do DUA-e | Você emite NF-e pela Webmania® e quer o DUA-e das operações do período |
| Campo de origem | valor | periodo ou documentos[] |
| Quem calcula o valor | Você | A API, somando o ICMS-ST e o DIFAL das notas selecionadas |
| Campos de órgão/serviço | Obrigatórios | Obrigatórios também — não são deriváveis da NF-e |
Emitente (cnpj_emi) | Preenchido pelo servidor | Preenchido pelo servidor |
| Limite | — | 100 notas por requisiçãolimite diário de 1.000 emissões por notas |
| Confere antes de emitir | — | POST /2/dua/notas/preview |
Emissão a partir de notas fiscais. Informe uma janela de emissão em periodo (data_inicio e data_fim) ou uma lista de até 100 identificadores em documentos[]. A API localiza as notas e apura o valor do DUA-e a partir do ICMS-ST e do DIFAL declarados.
Atenção: os sete campos de serviço/órgão — cnpj_orgao, codigo_area, codigo_servico, documento_contribuinte, data_referencia, codigo_municipio e informacoes_complementares — permanecem obrigatórios em todos os modos, inclusive por notas. Eles identificam o órgão e a receita da SEFAZ/ES e não são deriváveis da NF-e. Como o DUA-e é produção-only e não tem cancelamento, essa validação é feita antes de qualquer seleção ou reserva de notas: uma requisição incompleta é recusada sem gerar nada.
📌 O documentos[] aceita a chave de acesso ou o UUID da nota. O UUID é o mesmo identificador que a REST API de NF-e da Webmania® devolve na emissão e que você já tem gravado no seu banco. Você pode misturar chaves de 44 dígitos e UUIDs no mesmo array:
"documentos": [
"35260800000000000000550010000012341123456789",
"8f14e45f-ceea-4d3e-a2e0-123456789012"
] 💡 A prévia é gratuita. POST /2/dua/notas/preview executa a mesma seleção da emissão e devolve o valor que seria apurado, sem emitir, sem ocupar lote e sem consumir cota do plano. Como não há homologação para o DUA-e, a prévia é a única forma segura de validar a integração antes de gerar um documento pagável — use-a.
Teste a REST API de DUA-ES sem escrever uma linha de código e acelere a sua integração com as ferramentas oficiais da Webmania®.
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 da API 2.0 é encontrado no painel Webmania® e deve ser incluído em todas as requisições.
Autenticação mútua (mTLS) com a SEFAZ/ES. A Webmania® utiliza internamente um certificado digital A1 do tipo e-CNPJ A1 para a comunicação SOAP com a SEFAZ/ES. O integrador não precisa enviar certificado nas requisições à API Webmania®; o certificado do transmissor é resolvido e aplicado automaticamente pelo gateway.
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. Os campos usam snake_case por extenso, no mesmo vocabulário das APIs GNRE e DARE-ICMS SP.
A tabela abaixo apresenta os códigos de status HTTP que a API pode retornar com suas respectivas descrições.
| Código | Significado | Sucesso | Descrição |
|---|---|---|---|
200 | OK | ✅ | Operações bem-sucedidas (GET|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/licença para realizar a operação. |
404 | Not Found | ❌ | A guia não foi encontrada para o uuid informado em GET /2/dua/status/{uuid}. |
422 | Unprocessable Entity | ❌ | Validação dos campos falhou (formato, tamanho, valores obrigatórios). |
502 | Bad Gateway | ❌ | Resposta inesperada ou indisponibilidade da SEFAZ/ES. |
503 | Service Unavailable | ❌ | Certificado ou credencial do transmissor não disponível no momento. |
Legenda: ✅ a operação foi concluída · ❌ a operação não foi concluída e nada foi criado.
O código 429 (Too Many Requests) não aparece nesta tabela: ele é específico do controle de volume e está descrito em Limite de requisições.
Limite diário do modo por notas: as emissões de DUA-e a partir de notas fiscais somam um limite diário de 1.000 emissões por empresa. Ao atingir o teto, novas emissões por notas retornam 429 com a mensagem "Limite diário de 1000 emissões por notas atingido. Novas emissões por notas serão liberadas no próximo dia." O limite é renovado à meia-noite (horário de Brasília) e a emissão com valor direto não consome esse limite.
Exemplo de resposta para uma requisição com erro de validação:
{
"error": "O campo documento_contribuinte é obrigatório."
}
Todo DUA-e é emitido para um órgão credenciado na SEFAZ/ES. O CNPJ do órgão é o ponto de partida da integração: é ele que você informa em cnpj_orgao na emissão e em cnpj nas consultas de área/serviço e de valor.
A tabela abaixo lista os órgãos credenciados. Não há endpoint que retorne essa lista — copie o CNPJ do órgão responsável pelo serviço que você precisa quitar.
| CNPJ | Descrição | Sigla |
|---|---|---|
19481436000178 | Agência Estadual de Recursos Hídricos | AGERH |
08673715000117 | Agência Reguladora de Saneamento Básico e Infra-Estrutura Viária do ES | ARSI |
01683866000107 | Agência de Desenvolvimento em Redes do Estado do Espírito Santo S/A | ADERES |
26064356000182 | Agência de Regulação de Serviços Públicos | ARSP |
07238404000167 | Agência de Serviços Públicos de Energia do Estado do Espírito Santo | ASPE |
27064062000113 | Centrais de Abastecimento do Espirito Santo S/A | CEASA |
28139012000110 | Companhia de Habitação e Urbanização do Estado do Espirito Santo | COHAB |
02489503000106 | Corpo de Bombeiros Militar | CBMES |
28162105000166 | Departamento Estadual de Trânsito | DETRAN |
04889717000197 | Departamento de Estradas de Rodagem do Estado do Espírito Santo | DER-ES |
28161362000183 | Departamento de Imprensa Oficial | DIO |
35964162000124 | Escola de Serviços Públicos | ESESP |
30965214000163 | Faculdade de Música do Espirito Santo | FAMES |
07296722000184 | Fundação de Apoio à Ciência e Tecnologia | FAPES |
02133636000137 | Fundo Especial de Reequip. Corpo Bombeiros | FUNREBOM |
01449136000146 | Fundo Especial de Reequipamento da POLICIA CIVIL | FUNREPOCI |
18542218000133 | Fundo Especial do Ministério Público do Estado do Espírito Santo | FUNEMP |
20868995000114 | Fundo Especial do Poder Judiciário do Estado do Espírito Santo | FUNPJ |
20604213000130 | Fundo Estadual Anti Drogas | FESAD |
01076895000100 | Fundo Estadual de Assistência Social | FEAS |
02504742000180 | Fundo Estadual de Ciência e Tecnologia | FUNCITEC |
27173272000140 | Fundo Estadual de Combate a Corrupção | FECC |
15833032000145 | Fundo Estadual de Combate e Erradicação da Pobreza | FUNCOP |
20310626000101 | Fundo Estadual de Cultura | FUNCULTURA |
02397642000100 | Fundo Estadual de Defesa do Consumidor | FEDC |
20355058000165 | Fundo Estadual de Recursos Hídricos do Espírito Santo | FUNDAGUA |
06893466000140 | Fundo Estadual de Saúde | FES |
20846927000154 | Fundo Estadual do Meio Ambiente | FUNDEMA |
20516616000127 | Fundo Penitenciário Estadual | FUNPEN |
31677776000174 | Fundo Rotativo do Sistema Penitenciário | FRSP |
36388023000910 | Fundo da Infância e Adolescência | FIA |
04937281000164 | Fundo de Desenvolvimento e Assistência ao Servidor Público | FUNDASPES |
21902751000173 | Fundo de Fomento do Turismo | FUNTUR |
20639872000101 | Fundo de Incentivo ao Esporte e Lazer do Estado do Espírito Santo | PROESPORTE |
19797818000105 | Fundo de Modernização e Incentivo à Cobrança da Dívida Ativa | FUNCAD |
37566095000115 | Fundo de Proteção Social dos Militares | FPS |
27273416000130 | Instituto Capixaba de Pesquisa, Assistência Técnica e Extensão Rural | INCAPER |
05200358000181 | Instituto Estadual de Meio Ambiente e Recursos Hídricos | IEMA |
08696369000192 | Instituto Estadual de Obras Públicas | IOPES |
08109446000160 | Instituto Estadual de Proteção e Defesa do Consumidor | PROCON |
27316918000109 | Instituto Jones dos Santos Neves | IJSN |
30967111000132 | Instituto de Atendimento Sócio-Educativo do Espírito Santo | IASES |
02254666000100 | Instituto de Defesa Agropecuária e Florestal | IDAF |
29986312000106 | Instituto de Previdência e Assistência Jerônimo Monteiro | IPAJM |
28162790000120 | Instituto de Tecnologia da Informação e Comunicação | ITI |
28152080000110 | Junta Comercial do Estado do Espírito Santo | JUCEES |
02304470000174 | Ministério Publico do Estado do Espirito Santo | MPES |
27476100000145 | Poder Judiciário | TJES |
27470897000173 | Policia Civil | PCES |
01809448000113 | Policia Militar | PMES |
27080530000909 | Procuradoria Geral do Estado | PGE |
36049641000188 | Rádio e Televisão Espírito Santo | RTV-ES |
06656711000103 | Secretaria da Ciência, Tecnologia, Inovação, Educação Profissional e Desenvolvimento Econômico | SECTIDES |
01062213000100 | Secretaria de Estado da Cultura | SECULT |
27080571000130 | Secretaria de Estado da Fazenda | SEFAZ |
36388023000162 | Secretaria de Estado da Justiça | SEJUS |
27080605000196 | Secretaria de Estado da Saúde | SESA |
27080555000147 | Secretaria de Estado de Agricultura, Abastecimento, Aquicultura e Pesca | SEAG |
31777550000145 | Secretaria de Estado de Controle e Transparência | SECONT |
07162270000148 | Secretaria de Estado de Gestão e Recursos Humanos | SEGER |
31752645000104 | Secretaria de Estado de Meio Ambiente e Recursos Hídricos | SEAMA |
27142025000186 | Secretaria de Estado de Segurança Pública de Defesa Social | SESP |
28414571000191 | Superintendência dos Projetos de Polarização Industrial | SUPPIN |
28483014000122 | Tribunal de Contas do Estado do Espírito Santo | TCEES |
Os serviços a seguir espelham os 10 endpoints REST da API Webmania®. Todos utilizam JSON sobre HTTPS com autenticação Bearer na API Webmania®. A comunicação com a SEFAZ/ES (SOAP/XML com autenticação mútua mTLS) é um canal interno da Webmania® — transparente para a sua integração: você não envia certificado nem monta envelope XML.
Emite um DUA-e junto à SEFAZ/ES. A API retorna imediatamente e processa o DUA-e em background. O resultado final é notificado pelo webhook informado em url_notificacao, com acompanhamento por GET /2/dua/status/{uuid} — Saiba mais.
1 (produção) deve ser utilizado. A emissão cria um DUA-e real e pagável; utilize o ambiente de produção com cautela e valores mínimos para testes. Parâmetros da requisição:
A coluna Tam. indica o tamanho: 14 = exatamente 14 caracteres; 1 a 6 e 4 a 5 = entre 1 e 6 / entre 4 e 5 algarismos; 1-100 = limite de itens da lista; 12,2 = até 12 algarismos com 2 casas decimais; 256 e 500 = até esse número de caracteres; - = tamanho fixo não publicado:
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
ambiente | Obrigatório | number | 1 | Ambiente. Aceita somente 1 = Produção — a SEFAZ/ES não oferece homologação para DUA-e, e enviar 2 é recusado com 422. |
url_notificacao | Obrigatório | URL | 500 | URL do webhook que receberá a notificação quando o DUA-e atingir status terminal (aprovado ou rejeitado). |
cnpj_orgao | Obrigatório | string | 14 | CNPJ do órgão responsável pelo serviço. |
codigo_area | Obrigatório | number | 1 a 6 | Código da área. |
codigo_servico | Obrigatório | number | 1 a 6 | Código do serviço. |
documento_contribuinte | Obrigatório | string | 14 | CPF ou CNPJ do contribuinte (campo único). |
data_referencia | Obrigatório | string | 7 | Data de referência no formato AAAA-MM. Aceita apenas valores a partir de 1991-01 (mês 01 a 12). |
data_vencimento | Obrigatório | string | 10 | Data de vencimento no formato AAAA-MM-DD. É o prazo do órgão e não pode ser anterior ao primeiro dia da data_referencia. |
data_pagamento | Obrigatório | string | 10 | Data de pagamento no formato AAAA-MM-DD. É a data prevista de quitação — define a validade da linha digitável e o cálculo de multa e juros. Para pagar no mesmo dia, informe a data de hoje em data_vencimento e data_pagamento. |
codigo_municipio | Obrigatório | number | 4 a 5 | Código do município. |
informacoes_complementares | Obrigatório | string | 256 | Informações complementares. |
valor_multa | Opcional | number | 12,2 | Valor da multa. |
valor_juros | Opcional | number | 12,2 | Valor do juro. |
valor_atualizacao | Opcional | number | 12,2 | Valor da atualização. |
valor | Opcional | number | 12,2 | Valor da receita (modo valor direto). No modo por notas o valor é calculado pela API — valor, periodo e documentos são mutuamente exclusivos. |
quantidade | Opcional | integer | 6 | Quantidade do serviço informado (número inteiro). |
referencia_interna | Opcional | string | 30 | Identificação livre do cliente solicitante (rótulo), com até 30 caracteres. Não é chave de idempotência. |
gerar_pix | Opcional | boolean | 1 | Geração do QR Code PIX.true/1 = gera QRCode |
periodo.data_inicioperiodo.data_fim | Obrigatório quando a origem for por período | date | 10 | Janela de emissão das notas, no formato yyyy-MM-dd; data_fim não pode ser anterior a data_inicio. O valor é calculado pela API a partir das notas da janela. Mutuamente exclusivo com documentos e com valor. |
documentos | Obrigatório quando a origem for por chaves | array | 1-100 | Chaves de acesso (44 dígitos) ou UUIDs das notas, sem duplicatas; máximo de 100 documentos. Mutuamente exclusivo com periodo e com valor. |
| Você envia | A API faz |
|---|---|
valor | Usa exatamente o valor informado. |
periodo / documentos[] | Soma o ICMS-ST e o DIFAL das notas selecionadas. |
nenhum + quantidade | O envelope sai sem valor — a SEFAZ/ES decide se recusa. Consulte antes valor-servico se precisar do valor da tabela. |
Exemplo de requisição: emissão direta de um DUA-e com vencimento e pagamento no mesmo dia
curl -X POST \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
https://api.webmania.com.br/2/dua/emissao
{
"ambiente": 1,
"url_notificacao": "https://seudominio.com.br/webhook/dua",
"cnpj_orgao": "27080571000130",
"codigo_area": 5,
"codigo_servico": 3867,
"documento_contribuinte": "12345678000195",
"data_referencia": "2027-06",
"data_vencimento": "2027-06-30",
"data_pagamento": "2027-06-30",
"codigo_municipio": 57053,
"informacoes_complementares": "DUA EXEMPLO",
"valor": 1.00,
"quantidade": 1,
"referencia_interna": "NFe XYZ",
"gerar_pix": true
} Exemplo de resposta: resposta imediata da emissão — o processamento é assíncrono e o desfecho final chega pelo webhook
{
"status": "processando",
"message": "Emissão em processamento. Consulte novamente em alguns instantes.",
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
} Quando a SEFAZ/ES recusa a emissão, o resultado terminal chega com status: "rejeitado" e a causa da recusa nos dois canais de acompanhamento — o webhook de url_notificacao (Notificações) e o GET /2/dua/status/{uuid} (Consulta de Status):
Corpo enviado pelo webhook: notificação de rejeição com o código e o motivo da recusa
{
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"modelo": "dua",
"status": "rejeitado",
"ambiente": 1,
"motivos_rejeicao": [
{ "codigo": "705", "mensagem": "A Área não pertence ao Órgão" }
]
} Resposta do GET /2/dua/status/{uuid}: o mesmo desfecho rejeitado, com o código do último erro apontado pela SEFAZ/ES
{
"status": "rejeitado",
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"provider_identifier": null,
"motivos_rejeicao": [
{ "codigo": "705", "mensagem": "A Área não pertence ao Órgão" }
],
"last_error_code": "705"
} Em motivos_rejeicao, o codigo é o codigo_retorno da SEFAZ/ES e a mensagem é o descricao_retorno correspondente. Exceção: se a API esgotar as tentativas de comunicação com a SEFAZ/ES sem obter o número do DUA, codigo é SEFAZ_UNSTABLE_TIMEOUT (não um codigo_retorno). A lista completa está em Códigos de Retorno.
Os campos da tabela abaixo compõem o response retornado quando o DUA-e é aprovado (disponível na resposta armazenada e em GET /2/dua/status/{uuid}) — não na resposta imediata acima.
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
status | Obrigatório | string | - | Status normalizado da resposta (aprovado, rejeitado, erro_comunicacao, processando). |
ambiente | Obrigatório | number | 1 | Ambiente de processamento. |
data_retorno | Obrigatório | string | 19 | Data e hora de retorno no formato AAAA-MM-DDTHH:MI:SS. |
protocolo | Obrigatório | string | 36 | Número do protocolo. |
tempo_processamento | Obrigatório | number | 5 | Tempo de processamento (ms). |
codigo_retorno | Obrigatório | number | 3 | Código de status do processamento. |
descricao_retorno | Obrigatório | string | 255 | Descrição do status. |
guia.numero_guia | Obrigatório | string | 10 | Número do DUA emitido. |
guia.data_emissao | Obrigatório | string | 19 | Data e hora de emissão. |
guia.valor_total | Obrigatório | number | 12,2 | Valor total do DUA. |
guia.linha_digitavel | Obrigatório | string | 48 | Linha digitável (48 posições). |
guia.qrcode_payload | Opcional | string | 300 | Payload do QR Code PIX. |
referencia_interna é só rótulo livre. O DUA-e é produção-only e não tem cancelamento: reenvio às cegas gera um segundo documento. Em 502/503/erro_comunicacao, confirme GET /2/dua/status/{uuid} antes de reemitir. O POST /2/dua/emissao — o mesmo endpoint da emissão por valor direto — também aceita a origem por notas. Além do valor direto, o DUA-e pode ser emitido a partir de notas fiscais já emitidas, informando uma janela de emissão (periodo) ou uma lista de identificadores (documentos). Os dois modos são mutuamente exclusivos entre si e não podem ser combinados com o valor direto (valor). O valor é calculado pela API a partir das notas selecionadas, e o emitente é preenchido pelo servidor.
Os sete campos de serviço/órgão permanecem obrigatórios em todos os modos de emissão, inclusive por notas:
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
cnpj_orgao | Obrigatório | string | 14 | CNPJ do órgão responsável pelo serviço. |
codigo_area | Obrigatório | number | 1 a 6 | Código da área. |
codigo_servico | Obrigatório | number | 1 a 6 | Código do serviço. |
documento_contribuinte | Obrigatório | string | 14 | CPF ou CNPJ do contribuinte (campo único). |
data_referencia | Obrigatório | string | 7 | Data de referência no formato AAAA-MM. Aceita apenas valores a partir de 1991-01 (mês 01 a 12). |
codigo_municipio | Obrigatório | number | 4 a 5 | Código do município. |
informacoes_complementares | Obrigatório | string | 256 | Informações complementares. |
Eles identificam o órgão/receita da SEFAZ-ES e o contribuinte do serviço e não são deriváveis da NF-e; por isso a recusa acontece antes de qualquer seleção ou reserva de notas — o DUA-e é produção-only e não tem cancelamento, então a validação é feita primeiro.
Exemplo de requisição por chaves: emissão do DUA-e calculando o valor a partir das chaves de acesso informadas
curl -X POST \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
https://api.webmania.com.br/2/dua/emissao
{
"ambiente": 1,
"url_notificacao": "https://seudominio.com.br/webhook/dua",
"cnpj_orgao": "27080571000130",
"codigo_area": 5,
"codigo_servico": 3867,
"documento_contribuinte": "12345678000195",
"data_referencia": "2027-06",
"data_vencimento": "2027-06-30",
"data_pagamento": "2027-06-30",
"codigo_municipio": 57053,
"informacoes_complementares": "DUA EXEMPLO POR NOTAS",
"documentos": [
"35260700000000000000550010000012341123456789",
"8f14e45f-ceea-4d3e-a2e0-123456789012"
]
} A resposta é a mesma da emissão por valor direto, com o resultado final notificado pelo webhook informado em url_notificacao.
POST /2/dua/notas/preview antecipa, sem emitir nada, a seleção de notas que POST /2/dua/emissao faria para a mesma origem (periodo ou documentos). Como a SEFAZ-ES não disponibiliza homologação para DUA-e, a seleção é sempre feita sobre o ambiente 1 (produção), independentemente do valor informado. Na origem por período, o limite é de 100 notas por requisição (limite_por_requisicao): um período acima desse limite responde 422 pedindo uma janela menor, sem emitir nada.
Limite diário por notas. A emissão por notas está sujeita ao limite diário de 1.000 emissões por notas: ao atingi-lo, a API responde 429 sem emitir nada. A emissão por valor direto não consome esse contador, e a prévia acima também não.
Parâmetros da requisição:
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
ambiente | Obrigatório | number | 1 | Aceita 1 ou 2 (envelope uniforme), mas a seleção é sempre feita sobre o ambiente 1 (produção) — o valor 2 é reescrito para 1 na prévia; as notas selecionadas são sempre as de produção. |
periodo.data_inicioperiodo.data_fim | Obrigatório quando a origem for por período | date | 10 | Janela de emissão das notas, no formato yyyy-MM-dd. Mutuamente exclusivo com documentos. |
documentos | Obrigatório quando a origem for por chaves | array | 1-100 | Chaves de acesso (44 dígitos) ou UUIDs das notas, sem duplicatas. Máximo de 100 documentos. Mutuamente exclusivo com periodo. |
Campos da resposta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
tipo | string | Sempre dua neste endpoint. |
selecionadas[] | array | Notas elegíveis: fiscal_document_uuid, document_key, valor_icms_st, valor_difal, uf_destino e guia_indicado. |
ignoradas[] | array | Notas recusadas, com motivo_ignorado e mensagem quando aplicável. |
totais | object | Somas em texto decimal: icms_st, difal e total. |
total_encontradastotal_omitidaslimite_por_requisicao | integer | Somente na origem por periodo: total de notas encontradas na janela, quantas ficaram de fora e o limite de notas por requisição — sempre 100 notas. Um período acima desse limite responde 422 pedindo uma janela menor, sem emitir nada. |
Exemplo de requisição: prévia de seleção por período — mostra as notas que seriam usadas, sem emitir nada
curl -X POST \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
https://api.webmania.com.br/2/dua/notas/preview
{
"ambiente": 1,
"periodo": {
"data_inicio": "2026-07-01",
"data_fim": "2026-07-31"
}
} Exemplo de resposta: notas selecionadas, ignoradas e totais calculados para o período informado
{
"tipo": "dua",
"selecionadas": [
{
"fiscal_document_uuid": "8f14e45f-ceea-4d3e-a2e0-123456789012",
"document_key": "35260700000000000000550010000012341123456789",
"valor_icms_st": "0.00",
"valor_difal": "85.40",
"uf_destino": "ES",
"guia_indicado": "dua"
}
],
"ignoradas": [],
"totais": { "icms_st": "0.00", "difal": "85.40", "total": "85.40" },
"total_encontradas": 1,
"total_omitidas": 0,
"limite_por_requisicao": 100
}Emite um DUA-e de Dívida Ativa (CDA) a partir do número da Certidão da Dívida Ativa. A API retorna imediatamente e processa o DUA-e em background. O resultado final é notificado pelo webhook informado em url_notificacao, com acompanhamento por GET /2/dua/status/{uuid} — Saiba mais.
O que é a Certidão da Dívida Ativa? A Certidão da Dívida Ativa (CDA) é o documento oficial emitido pelo Estado do Espírito Santo que formaliza a inscrição de um débito em dívida ativa — o registro definitivo do crédito após a fase administrativa de cobrança, e o que habilita a cobrança judicial (execução fiscal) do débito. O número da certidão (numero_cda) identifica o débito inscrito e é a chave desta emissão.
Quando usar a emissão por CDA? Utilize POST /2/dua/emissao-cda quando o contribuinte já possui a CDA: o DUA-e é gerado diretamente a partir do numero_cda, sem consulta de área/serviço e sem seleção de notas, porque o débito já está formalizado na certidão. Débitos sem CDA devem ser emitidos por POST /2/dua/emissao — Saiba mais.
1 (produção) deve ser utilizado. A emissão cria um DUA-e real e pagável. Parâmetros da requisição:
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
ambiente | Obrigatório | number | 1 | Ambiente.1 = Produção |
url_notificacao | Obrigatório | URL | 500 | URL do webhook que receberá a notificação quando o DUA-e CDA atingir status terminal (aprovado ou rejeitado). |
documento_contribuinte | Obrigatório | string | 14 | CPF ou CNPJ do contribuinte (campo único). |
numero_cda | Obrigatório | string | 1 a 9 | Número da Certidão da Dívida Ativa. |
Exemplo de requisição: emissão de um DUA-e de dívida ativa a partir do número da CDA
curl -X POST \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
https://api.webmania.com.br/2/dua/emissao-cda
{
"ambiente": 1,
"url_notificacao": "https://seudominio.com.br/webhook/dua",
"documento_contribuinte": "12345678000195",
"numero_cda": "99992099"
} Exemplo de resposta: resposta imediata — o processamento é assíncrono e o desfecho final chega pelo webhook
{
"status": "processando",
"message": "Emissão em processamento. Consulte novamente em alguns instantes.",
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
} Os campos da tabela abaixo compõem o response retornado quando o DUA-e CDA é aprovado (disponível na resposta armazenada e em GET /2/dua/status/{uuid}) — não na resposta imediata acima.
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
status | Obrigatório | string | - | Status normalizado da resposta (aprovado, rejeitado, erro_comunicacao, processando). |
ambiente | Obrigatório | number | 1 | Ambiente de processamento. |
data_retorno | Obrigatório | string | 19 | Data e hora de retorno no formato AAAA-MM-DDTHH:MI:SS. |
protocolo | Obrigatório | string | 36 | Número do protocolo. |
tempo_processamento | Obrigatório | number | 5 | Tempo de processamento (ms). |
codigo_retorno | Obrigatório | number | 3 | Código de status do processamento. |
descricao_retorno | Obrigatório | string | 255 | Descrição do status. |
guia.numero_guia | Obrigatório | string | 10 | Número do DUA emitido. |
guia.data_emissao | Obrigatório | string | 19 | Data e hora de emissão. |
guia.valor_total | Obrigatório | number | 12,2 | Valor total do DUA. |
guia.linha_digitavel | Obrigatório | string | 48 | Linha digitável (48 posições). |
guia.qrcode_payload | Opcional | string | 300 | Payload do QR Code PIX. |
Consulta as informações de um DUA-e já emitido. O retorno contém dados do órgão, área, serviço, receita, contribuinte, datas, valores e situação de pagamento.
Parâmetros da requisição:
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
ambiente | Obrigatório | number | 1 | Ambiente.1 = Produção |
numero_guia | Obrigatório | string | 10 | Número do DUA. |
cpf | Obrigatório quando cnpj não informado | string | 11 | CPF do cliente. Mutuamente exclusivo com cnpj. |
cnpj | Obrigatório quando cpf não informado | string | 14 | CNPJ do cliente. Mutuamente exclusivo com cpf. |
Exemplo de requisição: consulta de um DUA-e pelo número do documento e pelo identificador do cliente
curl -X POST \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
https://api.webmania.com.br/2/dua/consulta
{
"ambiente": 1,
"numero_guia": "0000000000",
"cnpj": "00000000000000"
} Os campos retornados na resposta estão descritos a seguir:
| Parâmetro | Tipo | Descrição |
|---|---|---|
ambiente | number | Ambiente da operação.1 = Produção |
data_retorno | string | Data e hora do retorno da SEFAZ/ES. |
protocolo | string | Protocolo devolvido pela SEFAZ/ES para a operação. |
tempo_processamento | number | Tempo de processamento da operação na SEFAZ/ES. |
codigo_retorno | number | Código de retorno da SEFAZ/ES. Veja Códigos de Retorno. |
descricao_retorno | string | Descrição correspondente ao codigo_retorno. |
guia.numero_guia | string | Número do DUA. |
guia.data_emissao | string | Data e hora de emissão. |
guia.linha_digitavel | string | Linha digitável (48 posições). |
guia.qrcode_payload | string | Payload do QR Code PIX. |
guia.orgao.* | object | Dados do órgão arrecadador (cnpj — veja Órgãos Credenciados, nome, sigla, codigo). |
guia.area.* | object | Dados da área (nome, codigo). |
guia.servico.* | object | Dados do serviço (nome, codigo). |
guia.receita.* | object | Dados da receita (codigo, valor). |
guia.contribuinte.* | object | Dados do contribuinte (cpf ou cnpj, razao_social). |
guia.data_referenciaguia.data_vencimentoguia.data_pagamento | string | Datas da guia. |
guia.valor_multaguia.valor_jurosguia.valor_atualizacaoguia.valor_creditoguia.valor_total | number | Valores da guia. |
guia.pagamento.* | object | Pagamento (codigo, data_autenticacao, agencia, autenticacao, forma, tipo_captura, banco). |
Exemplo de resposta: dados completos do DUA-e consultado — envelope, órgão, área, serviço, receita, contribuinte, datas, valores e pagamento
{
"ambiente": 1,
"data_retorno": "2026-07-14T18:30:29",
"protocolo": "00000000-aaaa-0000-aaaa-000000000000",
"tempo_processamento": 186,
"codigo_retorno": 104,
"descricao_retorno": "Consulta Dua realizada com sucesso",
"guia": {
"numero_guia": "0000000000",
"data_emissao": "2026-07-14T15:18:16",
"linha_digitavel": "85870000000601120007202730811...",
"qrcode_payload": "00020126920014br.gov.bcb.pix2570p...",
"data_referencia": "2026-01",
"data_vencimento": "2026-02-15",
"data_pagamento": "2026-07-14",
"valor_multa": 0.05,
"valor_juros": 0.07,
"valor_atualizacao": 0.00,
"valor_credito": 0.00,
"valor_total": 1.12,
"orgao": {
"cnpj": "27080571000130",
"nome": "Secretaria de Estado da Fazenda",
"sigla": "SEFAZ",
"codigo": 1
},
"area": {
"nome": "Receita de ICMS",
"codigo": 1902
},
"servico": {
"nome": "ICMS - Diferencial de Alíquota ...",
"codigo": 3867
},
"receita": {
"codigo": 3867,
"valor": 1.00
},
"contribuinte": {
"cnpj": "00000000000000",
"razao_social": "Empresa Exemplo LTDA"
},
"pagamento": {
"codigo": 1,
"data_autenticacao": "2026-07-14",
"agencia": "0675",
"autenticacao": "0675PIX-00000000000000",
"forma": 1,
"tipo_captura": 9,
"banco": "021"
}
}
}Obtém a representação gráfica (PDF) de um DUA-e emitido, retornada em base64.
Parâmetros da requisição:
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
ambiente (query) | Obrigatório | number | 1 | Ambiente.1 = Produção |
numero_guia (path) | Obrigatório | string | 10 | Número do DUA. |
cpf (query) | Obrigatório quando cnpj não informado | string | 11 | CPF do cliente. Mutuamente exclusivo com cnpj. |
cnpj (query) | Obrigatório quando cpf não informado | string | 14 | CNPJ do cliente. Mutuamente exclusivo com cpf. |
Exemplo de requisição: obtenção do PDF de um DUA-e pelo número do documento
curl -X GET \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
"https://api.webmania.com.br/2/dua/pdf/0000000000?ambiente=1&cnpj=00000000000000" Os campos retornados na resposta estão descritos a seguir:
| Parâmetro | Tipo | Descrição |
|---|---|---|
ambiente | number | Ambiente da operação.1 = Produção |
data_retorno | string | Data e hora do retorno da SEFAZ/ES. |
protocolo | string | Protocolo devolvido pela SEFAZ/ES para a operação. |
tempo_processamento | number | Tempo de processamento da operação na SEFAZ/ES. |
codigo_retorno | number | Código de retorno da SEFAZ/ES. Veja Códigos de Retorno. |
descricao_retorno | string | Descrição correspondente ao codigo_retorno. |
pdf_base64 | string | Representação em base64 do PDF do DUA. |
Exemplo de resposta: o PDF do DUA-e devolvido em base64
{
"ambiente": 1,
"data_retorno": "2026-07-14T18:49:09",
"protocolo": "00000000-aaaa-0000-aaaa-000000000000",
"tempo_processamento": 613,
"codigo_retorno": 106,
"descricao_retorno": "PDF do Dua obtido com sucesso",
"pdf_base64": "JVBERi0xLjQKMSAwIG9iago8PAovVGl0bGUgKP7/AEQAV..."
}Consulta as áreas e serviços disponíveis de determinado órgão credenciado na SEFAZ/ES. Úteis para descobrir o codigo_area e codigo_servico antes da emissão.
Parâmetros da requisição:
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
ambiente (query) | Obrigatório | number | 1 | Ambiente.1 = Produção |
cnpj (query) | Obrigatório | string | 14 | CNPJ do órgão — obtido na tabela de Órgãos Credenciados. |
Exemplo de requisição: as áreas e serviços do órgão credenciado
curl -X GET \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
"https://api.webmania.com.br/2/dua/area-servico?ambiente=1&cnpj=28161362000183" Os campos presentes na resposta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
orgao.cnpj | string | CNPJ do órgão (ver Órgãos Credenciados). |
orgao.nome | string | Nome do órgão. |
orgao.sigla | string | Sigla do órgão. |
orgao.area[].cod | number | Código da área. |
orgao.area[].desc | string | Descrição da área. |
orgao.area[].servico[].cod | number | Código do serviço. |
orgao.area[].servico[].desc | string | Descrição do serviço. |
orgao.area[].servico[].codigo_receita | number | Código da receita correspondente ao serviço. |
Exemplo de resposta: áreas, serviços e receitas do órgão consultado
{
"status": "aprovado",
"ambiente": 1,
"data_retorno": "2026-07-14T19:06:08",
"protocolo": "00000000-aaaa-0000-aaaa-000000000000",
"tempo_processamento": 121,
"codigo_retorno": 101,
"descricao_retorno": "Consulta Area e Servico realizada com sucesso",
"orgao": {
"cnpj": "28161362000183",
"nome": "Departamento de Imprensa Oficial",
"sigla": "DIO",
"area": [
{
"cod": 269,
"desc": "Outras Receitas",
"servico": [
{ "cod": 19442, "desc": "Outras receitas", "codigo_receita": 2411 }
]
},
{
"cod": 278,
"desc": "Venda de Jornais",
"servico": [
{ "cod": 21849, "desc": "Jornal Atrasado", "codigo_receita": 4553 },
{ "cod": 21850, "desc": "Jornal do Dia", "codigo_receita": 4553 }
]
}
]
}
}Consulta a lista de municípios utilizados pelo serviço DUA-e da SEFAZ/ES.
Parâmetros da requisição:
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
ambiente (query) | Obrigatório | number | 1 | Ambiente.1 = Produção |
Exemplo de requisição: a lista de municípios atendidos pelo serviço DUA-e
curl -X GET \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
"https://api.webmania.com.br/2/dua/municipio?ambiente=1" Os campos presentes na resposta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
municipio[].cod | number | Código do município. |
municipio[].desc | string | Nome do município. |
Exemplo de resposta: municípios retornados pela SEFAZ/ES
{
"status": "aprovado",
"ambiente": 1,
"data_retorno": "2026-07-14T19:20:14",
"protocolo": "00000000-aaaa-0000-aaaa-000000000000",
"tempo_processamento": 102,
"codigo_retorno": 103,
"descricao_retorno": "Consulta Municipio realizada com sucesso",
"municipio": [
{ "cod": 56014, "desc": "AFONSO CLAUDIO" },
{ "cod": 57177, "desc": "AGUA DOCE DO NORTE" },
{ "cod": 57053, "desc": "VITORIA" }
]
}Consulta o valor de determinado serviço de um órgão, área e código de serviço. Úteis para calcular o valor antes da emissão.
Parâmetros da requisição:
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
ambiente (query) | Obrigatório | number | 1 | Ambiente.1 = Produção |
cnpj (query) | Obrigatório | string | 14 | CNPJ do órgão — obtido na tabela de Órgãos Credenciados. |
codigo_area (query) | Obrigatório | number | 6 | Código da área. |
codigo_servico (query) | Obrigatório | number | 6 | Código do serviço. |
quantidade (query) | Opcional | integer | 6 | Quantidade do serviço (número inteiro). |
Exemplo de requisição: o valor de um serviço de um órgão credenciado
curl -X GET \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
"https://api.webmania.com.br/2/dua/valor-servico?ambiente=1&cnpj=27080571000130&codigo_area=297&codigo_servico=11092&quantidade=1" Os campos presentes na resposta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
orgao.cnpj | string | CNPJ do órgão (ver Órgãos Credenciados). |
orgao.nome | string | Nome do órgão. |
orgao.sigla | string | Sigla do órgão. |
orgao.area.cod | number | Código da área. |
orgao.area.desc | string | Descrição da área. |
orgao.area.servico.cod | number | Código do serviço. |
orgao.area.servico.desc | string | Descrição do serviço. |
orgao.area.servico.codigo_receita | number | Código da receita correspondente ao serviço. |
orgao.area.servico.valor | number | Valor do serviço. |
Exemplo de resposta: valor do serviço consultado
{
"status": "aprovado",
"ambiente": 1,
"data_retorno": "2026-07-14T19:33:42",
"protocolo": "00000000-aaaa-0000-aaaa-000000000000",
"tempo_processamento": 154,
"codigo_retorno": 102,
"descricao_retorno": "Consulta Valor do Servico realizada com sucesso",
"orgao": {
"cnpj": "27080571000130",
"nome": "Secretaria de Estado da Fazenda",
"sigla": "SEFAZ",
"area": {
"cod": 297,
"desc": "Requerimentos",
"servico": {
"cod": 11092,
"desc": "Isencao de IPVA Para Deficiente",
"codigo_receita": 2097,
"valor": 73.03
}
}
}
}Consulta os DUA-e pagos de um contribuinte em um período. O retorno pode ser descompactado (array pagamentos) ou compactado em base64 (pagamentos_base64) conforme o indicador compactar.
Parâmetros da requisição:
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
ambiente | Obrigatório | number | 1 | Ambiente.1 = Produção |
compactar | Obrigatório | number | 1 | Indicador de compactação.0 = Descompactado |
cnpj | Obrigatório | string | 14 | CNPJ do cliente. |
periodo.data_inicio | Obrigatório | string | 10 | Data inicial no formato AAAA-MM-DD. |
periodo.data_fim | Obrigatório | string | 10 | Data final no formato AAAA-MM-DD. Não pode ser anterior a periodo.data_inicio. |
Exemplo de requisição: consulta os DUA-e pagos do contribuinte no período informado
curl -X POST \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
https://api.webmania.com.br/2/dua/pagos
{
"ambiente": 1,
"compactar": 0,
"cnpj": "00000000000000",
"periodo": {
"data_inicio": "2026-07-01",
"data_fim": "2026-07-14"
}
} A resposta descompactada (compactar=0) devolve o envelope padrão — status, ambiente, data_retorno, protocolo, tempo_processamento, compactar, codigo_retorno e descricao_retorno — e o array pagamentos com um item por pagamento localizado. Campos de cada item de pagamentos[] (e do formato compactado pagamentos_base64):
| Parâmetro | Tipo | Descrição |
|---|---|---|
pagamentos[].numero_guia | string | Número do DUA (10 dígitos). |
pagamentos[].tp_pess | number | Identificação da pessoa (1 dígito).1 = CPF |
pagamentos[].documento_contribuinte | string | CPF (11 dígitos) ou CNPJ (14 dígitos) do pagador, conforme tp_pess. |
pagamentos[].nome_orgao | string | Nome do órgão (até 80 caracteres). |
pagamentos[].nome_area | string | Descrição da área de atuação (até 255 caracteres). |
pagamentos[].nome_servico | string | Descrição do serviço (até 255 caracteres). |
pagamentos[].codigo_receita | number | Código da receita (1 a 6 dígitos). |
pagamentos[].nome_municipio | string | Nome do município (até 50 caracteres). |
pagamentos[].valor_receita | number | Valor da receita (12,2 = até 12 algarismos com 2 casas decimais). |
pagamentos[].valor_multa | number | Valor da multa (12,2 = até 12 algarismos com 2 casas decimais). |
pagamentos[].valor_juros | number | Valor dos juros (12,2 = até 12 algarismos com 2 casas decimais). |
pagamentos[].valor_atualizacao | number | Valor da atualização monetária (12,2 = até 12 algarismos com 2 casas decimais). |
pagamentos[].banco | string | Código do banco (3 dígitos). |
pagamentos[].agencia | string | Código da agência (4 caracteres). |
pagamentos[].data_autenticacao | string | Data de autenticação do pagamento, no formato AAAA-MM-DD. |
pagamentos[].forma_recebimento | string | Forma de recebimento (1 caractere).C = Cheque |
pagamentos[].informacoes_complementares | string | Informações complementares (até 255 caracteres). |
pagamentos_base64 | string | Array pagamentos[] comprimido (gzip) e codificado em base64, devolvido quando compactar=1. |
Exemplo de resposta: um pagamento localizado no período consultado
{
"status": "aprovado",
"ambiente": 1,
"data_retorno": "2026-07-14T18:30:10",
"protocolo": "00000000-aaaa-0000-aaaa-000000000000",
"tempo_processamento": 130,
"compactar": 0,
"codigo_retorno": 108,
"descricao_retorno": "Pagamentos localizados",
"pagamentos": [
{
"numero_guia": "0000000000",
"tp_pess": 2,
"documento_contribuinte": "00000000000000",
"nome_orgao": "Secretaria de Estado da Fazenda",
"nome_area": "Receita de ICMS",
"nome_servico": "ICMS - Diferencial de Aliquotas",
"codigo_receita": 3867,
"nome_municipio": "VITORIA",
"valor_receita": 1.00,
"valor_multa": 0.05,
"valor_juros": 0.07,
"valor_atualizacao": 0.00,
"banco": "021",
"agencia": "0675",
"data_autenticacao": "2026-07-14",
"forma_recebimento": "9",
"informacoes_complementares": "DUA EXEMPLO"
}
]
}Consulta o status de uma emissão DUA-ES pelo uuid retornado na emissão. Endpoint: GET /2/dua/status/{uuid}. Prefira a notificação por webhook — ela chega assim que o desfecho existe.
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
uuid | Obrigatório | string | 36 | UUID do DUA-e retornado na emissão (parâmetro de rota). |
A resposta base é:
{
"status": "processando",
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"provider_identifier": null
} Os campos variam conforme o status:
| Status | Campos adicionais |
|---|---|
processando | Nenhum. provider_identifier passa a conter o numero_guia assim que a SEFAZ/ES retorna — sempre o numero_guia, inclusive na emissão de Dívida Ativa (o numero_cda é apenas a chave de entrada dessa modalidade). Exceção: se a emissão por CDA é rejeitada antes da aceitação pela SEFAZ/ES — nenhum DUA-e emitido, sem provider_identifier — o identificador do webhook cai para o numero_cda enviado (consulte a seção Notificações). |
aprovado | response: payload completo do resultado da emissão (DUA-e emitido — ou CDA, quando a emissão foi por Dívida Ativa). |
rejeitado | motivos_rejeicao: lista de {codigo, mensagem} — no DUA-e, codigo é o codigo_retorno da SEFAZ/ES e mensagem é o descricao_retorno (consulte Códigos de Retorno), exceto no esgotamento das tentativas de comunicação com a SEFAZ/ES, quando codigo é SEFAZ_UNSTABLE_TIMEOUT (não um codigo_retorno); last_error_code: código do último erro. |
erro_comunicacao | message: orientação de reconciliação manual com a SEFAZ/ES (ver exemplo abaixo). |
Além dos campos por status, a resposta inclui campos adicionais ligados à origem da emissão, quando presentes:
| Campo | Quando aparece | Conteúdo |
|---|---|---|
origem | Emissões originadas por notas. | periodo (seleção por período) ou chaves (seleção por chaves) — identifica o modo de emissão. |
notas | Emissões originadas por notas. | Trilha nota a nota: uma linha por nota selecionada, com document_key (chave da NF-e) e motivo_ignorado (preenchido quando a nota ficou de fora). receita acompanha a linha e é sempre null no DUA-e — a receita é um parâmetro da emissão, não é derivada por nota. |
notas_ignoradas | Quando alguma nota ficou fora da emissão. | Índice das linhas de notas que têm motivo_ignorado preenchido. Nada é removido de notas. |
Exemplo — status erro_comunicacao (resultado incerto; não dispara webhook):
{
"status": "erro_comunicacao",
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"provider_identifier": null,
"message": "Status incerto. A guia pode ter sido emitida antes da falha de comunicação. Consulte a SEFAZ manualmente. Não reenvie a emissão antes dessa confirmação, para evitar um documento fiscal em duplicidade."
} 400 (requisição inválida — tipo de guia não reconhecido), 401 (empresa não autenticada — token ausente ou inválido) e 404 quando o uuid não existe, pertence a outra empresa ou não é deste produto. O webhook continua sendo o canal principal de resultado terminal; este endpoint é o fallback e a única superfície para DUA-e em erro_comunicacao, que não disparam webhook. Além destes códigos, toda falha é retornada no envelope de erro JSON {"error": "..."} (com motivos_rejeicao quando a SEFAZ/ES devolve motivo) — a tabela abaixo detalha os códigos que aparecem no DUA.
A tabela a seguir apresenta os códigos de retorno (codigo_retorno) do Web Service DUA-e da SEFAZ/ES, agrupados por tipo de serviço. Em caso de rejeição, o campo descricao_retorno contém a descrição correspondente.
codigo_retorno × código HTTP. O codigo_retorno é a resposta da SEFAZ/ES; o código HTTP é a resposta da nossa API. Os dois não andam juntos:
400, 401, 403, 422) acontecem antes de qualquer envio à SEFAZ/ES e nunca carregam codigo_retorno.200 sempre que o SOAP completa — inclusive quando a SEFAZ/ES rejeita: o 601 "Dua não encontrado", por exemplo, chega com HTTP 200 e o codigo_retorno no corpo.200 com status: "processando"; o codigo_retorno final chega pela notificação ou pela consulta de status.500/502/503 indicam falha de plataforma ou de transporte, sem codigo_retorno — a SEFAZ/ES não respondeu.| Código | Descrição | Ação recomendada |
|---|---|---|
101 | Consulta Área e Serviço realizada com sucesso | Nenhuma ação — use a área e o serviço retornados. |
102 | Consulta Valor do Serviço realizada com sucesso | Nenhuma ação — use o valor retornado. |
103 | Consulta Município realizada com sucesso | Nenhuma ação — use os municípios retornados. |
104 | Consulta Dua realizada com sucesso | Nenhuma ação — use os dados do DUA retornados. |
105 | Dua emitido com sucesso | Nenhuma ação — o DUA-e existe e pode ser pago; realize o pagamento até o vencimento. |
106 | PDF do Dua obtido com sucesso | Nenhuma ação — o PDF foi gerado. |
108 | Pagamentos localizados | Nenhuma ação — confira os pagamentos retornados. |
Sobre o código 107. A SEFAZ/ES não define o codigo_retorno 107 no catálogo oficial do Web Service — o Anexo II do Manual de Integração passa de 106 diretamente para 108. Nenhum serviço documentado do DUA-e o devolve; se ele aparecer em uma resposta, entre em contato com o suporte informando o protocolo da operação.
Falha de plataforma na faixa 2xx. Os códigos 201 a 212 são gerados na comunicação SOAP com a SEFAZ/ES. A maioria refere-se ao envelope XML e ao cabeçalho SOAP, que são construídos internamente pela Webmania®: como a integração com a nossa API é REST, você nunca monta esse envelope. Os códigos 203 e 204 indicam paralisação do serviço na ponta da SEFAZ/ES. Em qualquer caso, trata-se de falha de plataforma — aplique a ação recomendada da tabela abaixo, e não alterações no seu código.
| Código | Descrição | Ação recomendada |
|---|---|---|
201 | Xml não informado | Falha de plataforma — entre em contato com o suporte. |
202 | Tamanho do xml de dados superior a 5 Kbytes | Falha de plataforma — entre em contato com o suporte. |
203 | Serviço paralisado momentaneamente | Aguarde o serviço voltar e repita a operação. |
204 | Serviço paralisado sem previsão de retorno | Repetir não adianta — entre em contato com o suporte para acompanhar o restabelecimento. |
205 | Emissor não autorizado | Falha de credenciamento do transmissor — entre em contato com o suporte. |
206 | Ambiente informado diverge do ambiente de recebimento | Confira o ambiente enviado (produção = 1); se persistir, entre em contato com o suporte. |
207 | Xml de dados mal formado | Falha de plataforma — entre em contato com o suporte. |
208 | Xml de retorno mal formado | Falha de plataforma — entre em contato com o suporte. |
209 | Elemento duaServiceHeader inexistente no SOAP Header | Falha de plataforma — entre em contato com o suporte. |
210 | Campo versão inexistente no elemento duaServiceHeader do SOAP Header | Falha de plataforma — entre em contato com o suporte. |
211 | Versão dos dados não suportada | Falha de plataforma — entre em contato com o suporte. |
212 | Não há parâmetros ativos | Falha de plataforma — entre em contato com o suporte. |
| Código | Descrição | Ação recomendada |
|---|---|---|
301 | Cnpj inválido | Confira o cnpj do órgão na tabela de Órgãos Credenciados. |
| Código | Descrição | Ação recomendada |
|---|---|---|
401 | Quantidade informada deve ser valor inteiro | Envie quantidade como número inteiro. |
402 | Receita não permitida para emissão no serviço | Confira a combinação cnpj/codigo_area/codigo_servico retornada pela consulta de Área e Serviço. |
403 | Órgão não encontrado | Confira o cnpj na tabela de Órgãos Credenciados. |
404 | Área não encontrada | Confira o codigo_area na resposta da consulta de Área e Serviço. |
405 | A Área não pertence ao Órgão | Use a combinação cnpj + codigo_area retornada pela consulta de Área e Serviço. |
406 | Serviço não encontrado (item) | Confira o codigo_servico junto com a área retornada pela consulta de Área e Serviço. |
407 | Serviço não encontrado | Confira o codigo_servico junto com a área retornada pela consulta de Área e Serviço. |
408 | CNPJ do Órgão inválido | Confira o cnpj do órgão na tabela de Órgãos Credenciados. |
409 | O serviço não é uma taxa | Veja a nota sobre taxa no fim desta tabela. |
Sobre 406 e 407 — e, na emissão, 706 e 710. As quatro mensagens significam o mesmo para a sua integração: o serviço (codigo_servico) não foi encontrado para a área e o órgão informados. As qualificações "(item)" e "(serviço)" são distinções internas da SEFAZ/ES, sem definição publicada no manual — a correção é idêntica nos códigos: confirme cnpj_orgao/cnpj, codigo_area e codigo_servico exatamente como retornados pela consulta de Área e Serviço.
O que é uma taxa? O Web Service distingue os serviços do tipo taxa — valor tabelado e fixo, publicado pela SEFAZ/ES no portal do DUA-e — dos demais serviços, cujo valor é calculado a partir da quantidade (quantidade). O código 409 informa que o serviço consultado não é uma taxa: confira a combinação cnpj/codigo_area/codigo_servico retornada pela consulta de Área e Serviço.
| Código | Descrição | Ação recomendada |
|---|---|---|
601 | Dua não encontrado | Confira o numero_guia informado na consulta. |
602 | Dua não pertence ao cliente informado | Confira o identificador do cliente (cnpj/cpf) enviado na consulta. |
| Código | Descrição | Ação recomendada |
|---|---|---|
701 | Quantidade informada deve ser valor inteiro | Envie quantidade como número inteiro. |
702 | Receita não permitida para emissão no serviço | Confira a combinação cnpj_orgao/codigo_area/codigo_servico retornada pela consulta de Área e Serviço. |
703 | Órgão não encontrado | Confira o cnpj_orgao na tabela de Órgãos Credenciados. |
704 | Área não encontrada | Confira o codigo_area na resposta da consulta de Área e Serviço. |
705 | A Área não pertence ao Órgão | Use a combinação cnpj_orgao + codigo_area retornada pela consulta de Área e Serviço. |
706 | Serviço não encontrado (serviço) | Confira o codigo_servico junto com a área retornada pela consulta de Área e Serviço. |
707 | CNPJ do Órgão inválido | Confira o cnpj_orgao na tabela de Órgãos Credenciados. |
708 | CPF/CNPJ do Cliente inválido | Confira o documento_contribuinte do contribuinte. |
709 | Município não encontrado | Confira o codigo_municipio (código IBGE do município). |
710 | Serviço não encontrado (item) | Confira o codigo_servico junto com a área retornada pela consulta de Área e Serviço. |
711 | Mês de Referência zero ou > 12 ou Ano de Referência zero ou < 1991 | Informe data_referencia no formato AAAA-MM, com mês de 1 a 12 e ano a partir de 1991. |
712 | Data de referência maior que vencimento | Informe data_vencimento (vencimento) posterior a data_referencia. |
713 | Data de pagamento menor que data atual | Informe data_pagamento a partir da data atual — datas passadas são recusadas. |
| Código | Descrição | Ação recomendada |
|---|---|---|
801 | Dua não encontrado | Confira o numero_guia informado. |
802 | Dua não pertence ao cliente informado | Confira o identificador do cliente (cnpj/cpf) enviado. |
Sobre os códigos de certificado. Os códigos 901 a 904 referem-se à credencial do transmissor, mantida pela Webmania®. Você não precisa cadastrar nem enviar certificado digital para usar esta API. Se receber um desses códigos, trata-se de falha de plataforma — entre em contato com o suporte. O código 205 (faixa genérica) tem o mesmo significado: é o transmissor que a SEFAZ/ES não autoriza, não o integrador.
999| Código | Descrição | Ação recomendada |
|---|---|---|
999 | Erro inesperado | Veja a política de repetição abaixo. |
Política de repetição para o 999. Em operações de leitura (consultas), aguarde alguns instantes e repita a requisição. Em emissões, o desfecho chega pela notificação: entre em contato com o suporte antes de reenviar — como o DUA-e não tem cancelamento, é preciso confirmar que a SEFAZ/ES não gerou nada antes de uma nova emissão.
Os 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 uma dessas 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 a API da Webmania® a requisição será redirecionada para o servidor mais próximo da sua localidade. As requisições dos endpoints são gerenciadas através de IPs estáticos, caso necessite autorize no firewall a comunicação com os IPs abaixo.
IPs estáticos de entrada:A API da Webmania® aplica limites de solicitação por método HTTP para evitar o mal uso da API e a sobrecarga dos servidores. Quando o limite é excedido, a requisição retorna erro 429 (Too Many Requests). Segue abaixo as 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.