Conheça as soluções Webmania® para o seu negócio. Teste grátis as nossas soluções.
Conversar no WhatsApp*Teste grátis para novos clientes.
Consulte condições e serviços disponíveis.
Utilize a REST API da Webmania®, para emissão de NFCom destinada a documentar prestações de serviços de telecomunicação. 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.
| Código | Descrição | Função |
|---|---|---|
/2/nfcom/emissao | POST | Emissão ou prévia de NFCom (finalidade 1-4) |
/2/nfcom/cancelar | PUT | Cancelamento de NFCom |
/2/nfcom/consulta/{uuid|chave} | GET | Consulta de NFCom por UUID ou chave |
/2/nfcom/status | GET | Status do Serviço SEFAZ |
/xmlnfcom/{uuid|chave} | GET | Download do XML emitido ou da prévia |
/danfecom/{uuid|chave} | GET | Download do DANFECOM |
Todas as respostas são no formato objeto JSON.
Uma requisição bem-sucedida é indicada através do status HTTP, o status 2xx indica sucesso. Quando ocorrer uma falha na requisição, o corpo da resposta [body] continua no formato JSON, mas sempre contém o campo error. Por exemplo, caso a sua autenticação não seja bem-sucedida, será retornada a seguinte mensagem:
{
"error": "Acesso restrito."
} Realize a emissão com apenas um clique na sua plataforma através dos módulos da Webmania® ou realize a integração para os diversos tipos de linguagens de programação.
Para as solicitações, o corpo da requisição [body] deve ser enviado no formato JSON com os headers Content-Type e Accept definidos para application/json.
A autenticação é realizada através do cabeçalho HTTP (HTTP headers). É necessário o envio do header Authorization Bearer Token com o Access-Token da API 2.0, que é encontrado no painel Webmania®.
Mantenha as credenciais de acesso em segurança. Nunca publique as credenciais de acesso no código fonte do site, aplicativo ou software onde o usuário possa ter fácil acesso.
Para aplicativos mobile iOS e Android, recomendamos que o processo de emissão seja realizado no servidor (back-end). No código fonte do aplicativo deve possuir somente a solicitação de emissão, enquanto o processo deve ser realizado em seu servidor.
Para que a sua plataforma se mantenha sempre atualizada, a Webmania disponibiliza as notificações automáticas para todos os status da NFCom.
Cada NFCom possui um identificador único chamado de UUID. Este identificador deve ser utilizado para recepcionar e identificar a NFCom para atualizar as informações no seu banco de dados.
No momento em que for realizada a emissão da NFCom, 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 uuid, chave, serie, numero, status, motivo, xml, danfecom e log.
| Parâmetro | Tipo | Descrição |
|---|---|---|
uuid | string | Identificador único da NFComDeve ser utilizado o UUID para recepcionar o retorno da notificação. |
chave | string | Chave de identificação da NFCom na Sefaz |
serie | número | Série de emissão |
nfcom | número | Número da NFComGerenciado automaticamente pelo emissor. |
status | string | Status da NFComaprovado |
motivo | string | Motivo do statusEx.: Autorizado o uso da NFCom |
modelo | string | Modelo retornadoValor fixo: nfcom |
xml | string | URL do XML da NFCom |
xml_cancelamento | string | URL do XML da NFCom canceladaDisponível somente para NFCom cancelada. |
danfecom | string | URL do DANFECOM |
log | array | Log de retorno da Sefaz |
protocolo | string | Protocolo de autorizaçãoDisponível quando NFCom é autorizada |
contingencia | boolean | Indica se a NFCom está em contingência |
A requisição via POST é realizada no formato application/json:
-X POST \
-H "Content-type: application/json" \ Segue exemplo do retorno via POST:
{
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"chave": "35240712345678901234620010000001191234567890",
"serie": 1,
"nfcom": 119,
"status": "aprovado",
"motivo": "Autorizado o uso da NFCom",
"modelo": "nfcom",
"contingencia": false,
"xml": "https://api.webmania.com.br/xmlnfcom/[uuid]",
"xml_cancelamento": null,
"danfecom": "https://api.webmania.com.br/danfecom/[uuid]",
"log": { ... },
"protocolo": "135240000123456"
} url_notificacao para receber todas as atualizações da NFCom. O sistema enviará notificações automaticamente sempre que houver mudanças de status, incluindo aprovação após processamento ou saída de contingência. A emissão é realizada em uma única rota: POST /2/nfcom/emissao. Utilize o campo finalidade para indicar o tipo da NFCom:
substituicao quando substituir uma NFCom ou um documento 21/22Envie a requisição em JSON para /2/nfcom/emissao.
curl -X POST \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"ambiente": 2,
"natureza_operacao": "Prestação de Serviços de Telecomunicação",
"tipo_operacao": 1,
...
}' \
https://api.webmania.com.br/2/nfcom/emissao Segue abaixo exemplo de como emitir NFCom:
{
"ambiente": 2,
"natureza_operacao": "Prestação de serviços de telecomunicação",
"tipo_operacao": 1,
"finalidade": 1,
"municipio_fato_gerador": "3550308",
"consumidor_final": 1,
"presenca_comprador": 2,
"cliente": {
"cnpj": "12345678000199",
"razao_social": "Empresa Exemplo LTDA",
"indicador_ie": 2,
"endereco": {
"logradouro": "Rua das Flores",
"numero": "123",
"bairro": "Centro",
"codigo_municipio": "3550308",
"municipio": "São Paulo",
"uf": "SP",
"cep": "01310100"
}
},
"assinante": {
"codigo": "ASS123456",
"tipo": 3,
"tipo_servico": 4,
"contrato": {
"numero": "CONT2024001",
"data_inicio": "2024-01-01",
"data_fim": "2024-12-31"
}
},
"itens": [{
"codigo": "SERV001",
"codigo_classificacao": "400401",
"descricao": "Internet Banda Larga 100MB",
"unidade": "MES",
"quantidade": 1,
"valor_unitario": 99.90,
"valor_total": 99.90,
"indicador_total": 1,
"impostos": {
"icms": {
"origem": 0,
"situacao_tributaria": "00",
"codigo_cfop": "5307",
"valor_base_calculo": 99.90,
"aliquota_icms": 18.00,
"valor_icms": 17.98
},
"pis": {
"situacao_tributaria": "01",
"valor_base_calculo": 99.90,
"aliquota": 0.65,
"valor": 0.65
},
"cofins": {
"situacao_tributaria": "01",
"valor_base_calculo": 99.90,
"aliquota": 3.00,
"valor": 3.00
}
}
}],
"url_notificacao": "https://exemplo.com/webhook"
} A resposta do corpo da mensagem será no formato objeto JSON, contendo os campos uuid, chave, serie, nfcom, status, motivo, modelo, contingencia, xml, danfecom, xml_cancelamento (quando houver) e log. Quando autorizada, o protocolo é incluído.
{
"uuid": "550e8400-e29b-41d4-a716-446655440000", // Número único de identificação
"chave": "35240712345678901234620010000001191234567890", // Chave de identificação na Sefaz
"modelo": "nfcom", // Modelo do documento
"serie": 1, // Série da NFCom
"nfcom": 119, // Número da NFCom
"status": "aprovado", // aprovado, reprovado, cancelado, processando ou contingencia
"motivo": "Autorizado o uso da NFCom", // Motivo do status (quando houver)
"contingencia": false,
"protocolo": "135240000123456", // Protocolo de autorização (quando aprovado)
"xml": "https://api.webmania.com.br/xmlnfcom/550e8400-e29b-41d4-a716-446655440000",
"xml_cancelamento": null,
"danfecom": "https://api.webmania.com.br/danfecom/550e8400-e29b-41d4-a716-446655440000",
"log": { ... } // Log de retorno da Sefaz
} No momento em que for realizada a emissão da Nota Fiscal de Comunicação, caso tenha informado o parâmetro url_notificacao, será enviado o retorno no formato POST para a URL especificada. Saiba mais
A Nota Fiscal de Comunicação (NFCom) é um documento fiscal eletrônico, modelo 62, utilizado para documentar as prestações de serviços de telecomunicação.
A NFCom deve ser emitida por prestadores de serviços de telecomunicação, tais como:
Preencha os campos conforme finalidade da sua emissão. A tabela abaixo possui os campos necessários para a emissão de uma NFCom.
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
ID | Opcional | string | 1-15 | Número do pedido de compra ou ID de processamento (uso interno)Não altera o processamento fiscal, apenas rastreia o pedido. Saiba mais |
ambiente | Obrigatório | integer | 1 | Identificação do Ambiente da Sefaz1 - Produção |
natureza_operacao | Obrigatório | string | 1-60 | Natureza da operação |
tipo_operacao | Obrigatório | integer | 1 | Tipo de operação0 - Entrada |
finalidade | Obrigatório | integer | 1 | Finalidade da emissão1 - Normal |
consumidor_final | Opcional | integer | 1 | Indica se o tomador é consumidor final0 - Não |
presenca_comprador | Opcional | integer | 1 | Presença do comprador1 - Presencial |
processo_emissao | Opcional | integer | 1 | Processo de emissão0 - Aplicação do contribuinte (padrão) |
origem | Opcional | string | 1-100 | Identificação interna da origem da emissão (log/auditoria) |
url_notificacao | Opcional | string | - - - | URL de notificação para todas as atualizações de status da NFCom |
municipio_fato_gerador | Opcional | string | 7 | Código IBGE do município de ocorrência do fato geradorDefault: usa código do município do cliente se não informado |
indicador_pre_pago | Opcional | integer | 1 | Indica se o serviço é pré-pago0 - Não (padrão) |
indicador_cessao_meios_rede | Opcional | integer | 1 | Indica cessão de meios de rede0 - Não (padrão) |
indicador_nota_entrada | Opcional | integer | 1 | Indica se é nota de entrada0 - Não (padrão) |
tipo_faturamento | Opcional | integer | 1 | Tipo de faturamento0 - Faturamento Normal (padrão) |
previa_danfecom | Opcional | boolean | - - - | Gerar apenas prévia do DANFECOM sem emitirtrue - Gera apenas prévia |
assinante | Obrigatório conforme observação | objeto | - - - | Informações do assinante do serviço (obrigatório enviar contrato quando tipo_faturamento = 0 ou 1) |
cliente | Obrigatório | objeto | - - - | Dados do tomador do serviço |
itens | Obrigatório | array | - - - | Array contendo os serviços prestados |
fatura | Opcional | objeto | - - - | Dados de faturamento e cobrança |
autorizar_download | Opcional | array | - - - | CPF/CNPJ autorizados a baixar o XMLArray com até 10 CPFs/CNPJs |
informacoes_complementares | Opcional | string | 1-5000 | Informações complementares de interesse do contribuinte |
A NFCom suporta indicadores específicos do setor de telecomunicações:
indicador_nota_entrada = 1 quando aplicávelAs informações sobre o assinante do serviço são enviadas através do objeto assinante.
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
codigo | Opcional | string | 1-60 | Código do assinanteIdentificador único do assinante no sistema do prestador (se ausente usa CPF/CNPJ do tomador) |
tipo | Opcional | integer | 1 | Tipo do assinante1 - Comercial/Industrial |
tipo_servico | Opcional | integer | 1 | Tipo de utilização do serviço1 - Telefonia |
contrato | Obrigatório para faturamento normal ou centralizado | objeto | - - - | Dados do contratoObrigatório quando tipo_faturamento = 0 ou 1 |
Quando tipo_faturamento é 0 (Normal) ou 1 (Centralizado), é obrigatório informar os dados do contrato dentro do objeto assinante.contrato:
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
numero | Obrigatório | string | 1-60 | Número do contratoEx: 12345/2025 |
data_inicio | Obrigatório | string | 10 | Data de início do contratoFormato: YYYY-MM-DD |
data_fim | Obrigatório | string | 10 | Data de término do contratoFormato: YYYY-MM-DD |
Segue abaixo exemplo de como informar o assinante com contrato:
{
...
"tipo_faturamento": 0,
"assinante": {
"codigo": "ASS123456",
"tipo": 3,
"tipo_servico": 4,
"contrato": {
"numero": "12345/2025",
"data_inicio": "2025-01-01",
"data_fim": "2025-12-31"
}
},
...
} contrato é obrigatório apenas quando tipo_faturamento = 0 (Normal) ou 1 (Centralizado). Para cofaturamento (tipo_faturamento = 2), o contrato não deve ser informado. Os dados do tomador do serviço (cliente) são informados no objeto cliente, seguindo as regras abaixo.
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
cnpj | Obrigatório no caso de Pessoa Jurídica | string | 14 | Número de CNPJ |
cpf | Obrigatório no caso de Pessoa Física | string | 11 | Número de CPF |
razao_social | Obrigatório quando informado CNPJ | string | 2-60 | Razão Social (Pessoa Jurídica)Não utilize para CPF: nesse caso use nome_completo. |
nome_completo | Obrigatório quando informado CPF | string | 2-60 | Nome completo (Pessoa Física)Não utilize para CNPJ: nesse caso use razao_social. |
indicador_ie | Obrigatório para CNPJ | integer | 1 | Indicador de Inscrição Estadual1 - Contribuinte ICMS |
inscricao_estadual | Opcional | string | 2-14 | Número de Inscrição Estadual |
inscricao_municipal | Opcional | string | 1-15 | Número de Inscrição Municipal |
email | Opcional | string/array | - - - | Endereço de e-mailPode ser string ou array de strings para múltiplos e-mails |
endereco | Obrigatório | objeto | - - - | Dados do endereço do cliente |
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
logradouro | Obrigatório | string | 2-60 | Logradouro do endereço |
numero | Obrigatório | string | 1-60 | Número do endereço |
complemento | Opcional | string | 1-60 | Complemento do endereço |
bairro | Obrigatório | string | 2-60 | Bairro do endereço |
codigo_municipio | Obrigatório | string | 7 | Código IBGE do municípioInformar 9999999 para operações com o exterior. |
municipio | Obrigatório | string | 2-60 | Nome do municípioInformar 'EXTERIOR' para operações com o exterior. |
uf | Obrigatório | string | 2 | Sigla do estadoInformar 'EX' para operações com o exterior. |
cep | Obrigatório | string | 8 | Código postal (CEP) do endereçoObrigatório (use 00000000 para exterior quando aplicável) |
pais | Opcional | string | 1-60 | Nome do paísDefault: Brasil |
codigo_pais | Opcional | string | 1-4 | Código do país (BACEN)Default: 1058 (Brasil) |
telefone | Opcional | string | 6-14 | Número de telefone |
Segue abaixo exemplo de como informar o cliente:
{
...
"cliente": {
"cpf": "12345678901",
"nome_completo": "João da Silva",
"indicador_ie": 9,
"email": ["joao@email.com", "joao.silva@email.com"],
"endereco": {
"logradouro": "Avenida Paulista",
"numero": "1000",
"complemento": "Apto 501",
"bairro": "Bela Vista",
"codigo_municipio": "3550308",
"municipio": "São Paulo",
"uf": "SP",
"cep": "01310100",
"telefone": "1133334444"
}
},
...
} Os serviços prestados e os bens/produtos relacionados são informados no array itens, onde cada elemento corresponde a um serviço ou produto.
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
codigo | Opcional | string | 1-60 | Código do item/serviço |
codigo_classificacao | Obrigatório conforme observação | string | 6-7 | Código de classificação do itemObrigatório informar aqui ou em impostos.codigo_classificacao ou via classe_imposto |
descricao | Obrigatório | string | 1-120 | Descrição do item/serviço |
unidade | Obrigatório | string | 1-6 | Unidade de medidaAceita valores como MIN, MB, GB, UN, MES; convertidos para o código exigido pela NFCom |
quantidade | Obrigatório | número | 15v4 | Quantidade do item (até 4 casas decimais) |
valor_unitario | Obrigatório | número | até 99999999999.99 | Valor unitário do item |
valor_total | Obrigatório | número | até 99999999999.99 | Valor total do item |
indicador_total | Obrigatório | integer | 1 | Indica se o item compõe o total da NFCom0 - Não compõe o total |
valor_desconto | Opcional | decimal | 15v2 | Valor do desconto |
outras_despesas | Opcional | decimal | 15v2 | Outras despesas acessórias |
classe_imposto | Opcional | string | - - - | Definição automática de impostos, informe a referência da classe de imposto cadastrado no painel Webmania®Ex: REF000000000 |
impostos | Obrigatório conforme observação | objeto | - - - | Definição de impostos na API, para operações específicas como FUNTTEL, FUST ou que demandem maior flexibilidadeObrigatório quando não for usada uma classe_imposto |
Segue abaixo exemplo de como informar um item/serviço:
{
...
"itens": [
{
"codigo": "SERV001",
"codigo_classificacao": "400401",
"descricao": "Internet Banda Larga 100MB",
"unidade": "MES",
"quantidade": 1,
"valor_unitario": 99.90,
"valor_total": 99.90,
"indicador_total": 1,
"impostos": {
"icms": {
"origem": 0,
"situacao_tributaria": "00",
"codigo_cfop": "5307",
"valor_base_calculo": 99.90,
"aliquota_icms": 18.00,
"valor_icms": 17.98
},
"pis": {
"situacao_tributaria": "01",
"valor_base_calculo": 99.90,
"aliquota": 0.65,
"valor": 0.65
},
"cofins": {
"situacao_tributaria": "01",
"valor_base_calculo": 99.90,
"aliquota": 3.00,
"valor": 3.00
}
}
}
],
...
} Existem duas formas de definir impostos para emissão da Nota Fiscal, através da Classe de Imposto ou diretamente na API.
A classe de imposto reúne informações fiscais do CÓDIGO DE CLASSIFICAÇÃO, ICMS, PIS, FUST e FUNTTEL para que seja realizado o cálculo automático dos impostos. É um procedimento simples, configurado uma única vez, que facilita emissões das notas fiscais de comunicação com maior agilidade.
Para utilizar a classe de imposto, basta informar o código de referência para emitir a nota fiscal conforme o exemplo abaixo:
{
"itens": [
{
"descricao": "Plano Internet Fibra 200MB",
"unidade": "GB",
"quantidade": 1,
"valor_unitario": 99.90,
"classe_imposto": "REF000000000"
},
{
"descricao": "Modem hwauei fibra",
"unidade": "un",
"quantidade": 1,
"valor_unitario": 280.50,
"classe_imposto": "REF000000000"
}
]
} Para efetuar o cadastro de uma classe de imposto de comunicação basta acessar este link: Cadastrar Classe de Imposto de comunicação. Após o cadastro, o código de referência da classe de imposto pode ser obtido no painel Webmania® clicando no botão Impostos.
As informações tributárias são informadas dentro do objeto impostos de cada item. A NFCom suporta os seguintes impostos:
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
codigo_classificacao | Obrigatório conforme observação | string | 6-7 | Código de classificação do itemObrigatório informar aqui ou no item quando não usar classe_imposto. Consulte a tabela de classificações. |
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
origem | Obrigatório | integer | 1 | Origem da mercadoria0 - Nacional |
situacao_tributaria | Obrigatório | string | 2 | Situação Tributária00, 10, 20, 30, 40, 41, 45, 50, 51, 60, 70 ou 90 |
codigo_cfop | Opcional | string | 4 | Código Fiscal de Operações e PrestaçõesExemplos: |
valor_base_calculo | Opcional | decimal | 15v2 | Valor da base de cálculo |
aliquota_icms | Opcional | decimal | 5v2 | Alíquota do ICMS |
valor_icms | Opcional | decimal | 15v2 | Valor do ICMS |
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
situacao_tributaria | Obrigatório | string | 2 | Situação Tributária01, 02, 03, 04, 05, 06, 07, 08, 09, 49, 50, 51, 52, 53, 54, 55, 56, 60, 61, 62, 63, 64, 65, 66, 67, 70, 71, 72, 73, 74, 75, 98 ou 99 |
valor_base_calculo | Obrigatório para CST tributada (ex.: 01, 02) | decimal | 15v2 | Valor da base de cálculo |
aliquota | Obrigatório para CST tributada (ex.: 01, 02) | decimal | 5v4 | Alíquota do tributo |
valor | Obrigatório para CST tributada (ex.: 01, 02) | decimal | 15v2 | Valor do tributo calculado |
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
valor_base_calculo | Opcional | decimal | 15v2 | Valor da base de cálculo |
aliquota | Opcional | decimal | 5v2 | AlíquotaFUST: 1.0% (fixo) |
valor | Opcional | decimal | 15v2 | Valor do tributo |
Segue abaixo exemplo completo de impostos de um item:
{
...
"impostos": {
"codigo_classificacao": "400401",
"icms": {
"origem": 0,
"situacao_tributaria": "00",
"codigo_cfop": "5307",
"valor_base_calculo": 99.90,
"aliquota_icms": 18.00,
"valor_icms": 17.98
},
"pis": {
"situacao_tributaria": "01",
"valor_base_calculo": 99.90,
"aliquota": 0.65,
"valor": 0.65
},
"cofins": {
"situacao_tributaria": "01",
"valor_base_calculo": 99.90,
"aliquota": 3.00,
"valor": 3.00
},
"fust": {
"valor_base_calculo": 99.90,
"aliquota": 1.0,
"valor": 1.00
},
"funttel": {
"valor_base_calculo": 99.90,
"aliquota": 0.5,
"valor": 0.50
}
},
...
} As informações de faturamento e cobrança podem ser informadas no objeto fatura. Quando indicador_cessao_meios_rede = 1 o grupo é omitido automaticamente.
fatura, todos os campos do grupo são obrigatórios (validados pelo backend). | Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
competencia_fatura | Opcional | string | 6 | Competência da faturaFormato: AAAAMM (pode enviar MMAAAA que é normalizado) |
data_vencimento | Opcional | string | 10 | Data de vencimentoFormato: YYYY-MM-DD (>= hoje) |
data_periodo_inicial | Opcional | string | 10 | Data início do período de apuraçãoFormato: YYYY-MM-DD |
data_periodo_final | Opcional | string | 10 | Data fim do período de apuraçãoFormato: YYYY-MM-DD (>= data inicial) |
codigo_barras_fatura | Opcional | string | 1-60 | Código de barras da faturaSomente números |
numero_debito_automatico | Opcional | string | 1-60 | Número para débito automáticoSomente números |
O layout atual da NFCom v1.00 não utiliza o grupo de períodos de fatura nesta API. Utilize apenas os campos listados no objeto fatura acima.
Segue abaixo exemplo de faturamento:
{
...
"fatura": {
"competencia_fatura": "202401",
"data_vencimento": "2024-02-10",
"data_periodo_inicial": "2024-01-01",
"data_periodo_final": "2024-01-31",
"codigo_barras_fatura": "34191234567890123456789012345678901234567890",
"numero_debito_automatico": "DEB123456"
},
...
} É possível autorizar CPFs ou CNPJs específicos para realizar o download do XML da NFCom diretamente na SEFAZ. Útil para contadores, parceiros comerciais ou sistemas integrados.
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
autorizar_download | Opcional | array | Máx. 10 | Array de strings com CPF ou CNPJ autorizadosO sistema identifica automaticamente se é CPF (11 dígitos) ou CNPJ (14 dígitos) |
Exemplo de uso:
{
...
"autorizar_download": [
"12345678901", // CPF
"12345678901234", // CNPJ
"98765432100" // CPF
],
...
} A NFCom permite informar indicadores específicos do setor de telecomunicações que afetam a tributação e características do serviço.
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
indicador_pre_pago | Opcional | integer | 1 | Indica se o serviço é pré-pago1 - Serviço pré-pago |
indicador_cessao_meios_rede | Opcional | integer | 1 | Indica cessão de meios de rede1 - Dispensa o grupo de fatura (gFat) |
indicador_nota_entrada | Opcional | integer | 1 | Indica nota de entrada1 - Nota de entrada |
Exemplo de uso com indicadores:
{
...
"indicador_pre_pago": 1,
"indicador_cessao_meios_rede": 0,
"indicador_nota_entrada": 0,
...
} Use o objeto substituicao para substituir uma NFCom ou referenciar um documento modelo 21/22. Informe a chave da NFCom substituída ou os dados da nota referenciada, além do motivo.
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
substituicao.chave_nfcom_substituida | Obrigatório conforme observação | string | 44 | Chave da NFCom substituídaObrigatório quando não informar nf_referenciada |
substituicao.motivo | Obrigatório | string | 2 | Motivo da substituição01 - Erro de Preço |
substituicao.nf_referenciada.cnpj | Obrigatório conforme observação | string | 14 | CNPJ do emitente da NF referenciadaObrigatório quando não informar chave_nfcom_substituida |
substituicao.nf_referenciada.modelo | Obrigatório conforme observação | string | 2 | Modelo da NF referenciada21 ou 22 |
substituicao.nf_referenciada.serie | Obrigatório conforme observação | string | 3 | Série da NF referenciada |
substituicao.nf_referenciada.numero | Obrigatório conforme observação | integer | 1-9 | Número da NF referenciada |
substituicao.nf_referenciada.competencia | Obrigatório conforme observação | string | 6 | Competência da NF referenciadaFormato: AAAAMM |
substituicao.nf_referenciada.hash115 | Opcional | string | - - - | Hash do convênio 115 (opcional) |
Exemplo de uso:
{
...
"finalidade": 3,
"substituicao": {
"chave_nfcom_substituida": "35240112345678901234620010000001231234567890",
"motivo": "04"
}
} Informações do cofaturamento. Utilizado quando a cobrança é realizada por outra operadora em regime de cofaturamento.
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
cofaturamento.chave_nfcom_local | Obrigatório conforme observação | string | 44 | Chave da NFCom emitida pela operadora local |
cofaturamento.nf_referenciada.cnpj | Obrigatório conforme observação | string | 14 | CNPJ da NF referenciada (modelo 21/22) |
cofaturamento.nf_referenciada.modelo | Obrigatório conforme observação | string | 2 | Modelo da NF referenciada |
cofaturamento.nf_referenciada.serie | Obrigatório conforme observação | string | 3 | Série da NF referenciada |
cofaturamento.nf_referenciada.numero | Obrigatório conforme observação | integer | 1-9 | Número da NF referenciada |
cofaturamento.nf_referenciada.competencia | Obrigatório conforme observação | string | 6 | Competência da NF referenciada |
cofaturamento.nf_referenciada.hash115 | Opcional | string | - - - | Hash do convênio 115 (opcional) |
Exemplo de uso:
{
...
"cofaturamento": {
"chave_nfcom_local": "35240712345678901234620010000001191234567890"
},
...
} Para notas de entrada utilize o indicador indicador_nota_entrada = 1 (já descrito em Indicadores Especiais). A API NFCom não possui um grupo específico de nota_entrada.
Para emitir uma NFCom de Substituição, utilize a rota POST /2/nfcom/emissao com finalidade = 3 e o objeto substituicao preenchido. Esse objeto aceita a chave da NFCom substituída ou os dados de uma NF modelo 21/22.
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
substituicao | Obrigatório | object | - - - | Objeto contendo informações da substituição |
substituicao.chave_nfcom_substituida | Obrigatório quando não houver NF referenciada | string | 44 | Chave de acesso da NFCom a ser substituída |
substituicao.motivo | Obrigatório | string | 1 | Motivo da substituição1 - Erro de Preço |
substituicao.nf_referenciada.* | Obrigatório quando não informar chave_nfcom_substituida | object | - - - | Dados de NF 21/22: cnpj, modelo, serie, numero, competencia e hash115 (opcional) |
Exemplo de NFCom de Substituição:
curl -X POST \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"ambiente": 2,
"finalidade": 3,
"cliente": {
"cnpj": "12345678901234",
"razao_social": "Empresa Exemplo LTDA",
"indicador_ie": 2,
"endereco": {
"logradouro": "Rua Exemplo",
"numero": "123",
"bairro": "Centro",
"codigo_municipio": "3550308",
"municipio": "São Paulo",
"uf": "SP",
"cep": "01310100"
}
},
"assinante": {
"tipo": 1,
"tipo_servico": 4
},
"substituicao": {
"chave_nfcom_substituida": "35240112345678901234620010000001231234567890",
"motivo": "04"
},
"itens": [
{
"descricao": "Internet Banda Larga 100MB - Correção Tributária",
"codigo_classificacao": "400401",
"unidade": "MES",
"quantidade": 1,
"valor_unitario": 99.90,
"impostos": {
"icms": {
"situacao_tributaria": "40",
"codigo_cfop": "5307"
}
}
}
]
}' \
https://api.webmania.com.br/2/nfcom/emissao Para emitir uma NFCom de Ajuste ou Complementar, utilize a rota POST /2/nfcom/emissao com o campo finalidade ajustado (2 para complementar, 3 para ajuste/substituição).
Exemplo de NFCom de Ajuste:
curl -X POST \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"ambiente": 2,
"finalidade": 3,
"cliente": {
"cpf": "12345678901",
"nome_completo": "João da Silva",
"indicador_ie": 9,
"endereco": {
"logradouro": "Av. Principal",
"numero": "500",
"bairro": "Jardim",
"codigo_municipio": "3550308",
"municipio": "São Paulo",
"uf": "SP",
"cep": "04567890"
}
},
"assinante": {
"tipo": 3,
"tipo_servico": 1
},
"itens": [
{
"descricao": "Ajuste de Cobrança - Telefonia Móvel",
"codigo_classificacao": "300101",
"unidade": "MIN",
"quantidade": 100,
"valor_unitario": 0.50,
"impostos": {
"icms": {
"situacao_tributaria": "00",
"codigo_cfop": "5307",
"valor_base_calculo": 50.00,
"aliquota_icms": 18,
"valor_icms": 9.00
}
}
}
]
}' \
https://api.webmania.com.br/2/nfcom/emissao 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 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/danfecom/00000000-0000-0000-0000-000000000000/ A 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/danfecom/00000000-0000-0000-0000-000000000000/?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 emissão da NFCom, envie a requisição no método GET para URL /2/nfcom/consulta/ contendo na URL da requisição o UUID ou Chave de Acesso da NFCom.
Segue abaixo exemplo da consulta de uma NFCom:
curl -X GET \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
https://api.webmania.com.br/2/nfcom/consulta/00000000-0000-0000-0000-000000000000 A resposta do corpo da mensagem será no formato objeto JSON, contendo os campos uuid, chave, status, motivo, serie, nfcom, modelo, contingencia, xml, danfecom, xml_cancelamento, log, além de protocolo e data_autorizacao quando disponíveis.
{
"uuid": "00000000-0000-0000-0000-000000000000", // Número único de identificação
"chave": "00000000000000000000000000000000000000000000", // Chave de identificação na Sefaz
"serie": 1, // Série da NFCom
"nfcom": 123, // Número da NFCom
"modelo": "nfcom",
"status": "aprovado", // aprovado, reprovado, cancelado, processando ou contingencia
"motivo": "Autorizado o uso da NFCom", // Motivo do status
"contingencia": false,
"protocolo": "135240000123456",
"data_autorizacao": "10/01/2025 09:30:00",
"xml": "https://api.webmania.com.br/xmlnfcom/[uuid]",
"xml_cancelamento": null,
"danfecom": "https://api.webmania.com.br/danfecom/[uuid]",
"log": { ... } // Log de retorno da Sefaz
} Para cancelar uma NFCom, envie a requisição no método PUT para URL /2/nfcom/cancelar/ contendo a chave de acesso (44 dígitos) e a justificativa do cancelamento.
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
chave | Obrigatório | string | 44 | Chave da NFCom |
justificativa | Obrigatório | string | 15-255 | Motivo do cancelamento |
Segue abaixo exemplo de cancelamento da NFCom:
curl -X PUT \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"chave": "00000000000000000000000000000000000000000000",
"justificativa": "Cancelado por motivos administrativos."
}' \
https://api.webmania.com.br/2/nfcom/cancelar/ A resposta do corpo da mensagem será no formato objeto JSON:
{
"uuid": "00000000-0000-0000-0000-000000000000", // Número único de identificação
"chave": "00000000000000000000000000000000000000000000", // Chave de identificação na Sefaz
"status": "cancelado",
"motivo": "Cancelado por motivos administrativos.", // Motivo do status
"serie": 1, // Série da NFCom
"numero": 123, // Número da NFCom
"xml": "https://api.webmania.com.br/xmlnfcom/[uuid]",
"xml_cancelamento": "https://api.webmania.com.br/xmlnfcom/[uuid]/cancelamento",
"danfecom": "https://api.webmania.com.br/danfecom/[uuid]",
"log": { ... } // Log de retorno da Sefaz
} Para verificar o status do serviço da SEFAZ:
curl -X GET \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
https://api.webmania.com.br/2/nfcom/status Resposta:
{
"operacional": true,
"mensagem": "Serviço NFCom operacional"
} A NFCom possui um sistema de contingência automático que garante a continuidade das emissões mesmo quando a SEFAZ está indisponível. O sistema é ativado automaticamente quando detecta falhas de comunicação com a SEFAZ.
tpEmis=2 (Contingência por ausência de comunicação)Os seguintes erros de comunicação ativam automaticamente o modo de contingência:
| Código | Descrição |
|---|---|
109 | Serviço Paralisado Sem Previsão |
508 | Falha no processamento da requisição |
999 | Erro não catalogado |
timeout | Timeout na comunicação |
connection | Erro de conexão com a SEFAZ |
Quando uma NFCom é emitida em contingência, a resposta inclui:
{
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"chave": "35240712345678901234620010000001191234567890",
"serie": 1,
"nfcom": 120,
"modelo": "nfcom",
"status": "contingencia",
"motivo": "NFCom emitida em contingência. Será processada quando a SEFAZ retornar.",
"contingencia": true,
"xml": "https://api.webmania.com.br/xmlnfcom/550e8400-e29b-41d4-a716-446655440000",
"xml_cancelamento": null,
"danfecom": "https://api.webmania.com.br/danfecom/550e8400-e29b-41d4-a716-446655440000",
"log": { ... }
} A tabela de classificação de produtos utilizada para validar o valor do campo cClass nos itens da NFCom determina diversas validações que são aplicadas na autorização da NFCom, além de determinar a natureza do valor do item na totalização da nota, uma vez que alguns tipos de produtos podem entrar deduzindo do valor total. Códigos que iniciarem pelo dígito 5 devem deduzir do valor total da nota, enquanto os demais códigos, iniciados por zero, serão itens somados no total da nota.
| Código | Descrição |
|---|---|
0100101 | Assinatura de serviços de telefonia |
0100201 | Assinatura de serviços de comunicação de dados |
0100301 | Assinatura de serviços de TV por Assinatura |
0100401 | Assinatura de serviços de comunicação multimídia |
| Código | Descrição |
|---|---|
0200101 | Habilitação de serviços de telefonia |
0200201 | Habilitação de serviços de comunicação de dados |
0200301 | Habilitação de TV por Assinatura |
| Código | Descrição |
|---|---|
0300101 | Serviço Medido - Chamadas locais |
0300102 | Serviço Medido - Chamadas longa distância nacional |
0300103 | Serviço Medido - Chamadas longa distância internacionais |
0300104 | Serviço Medido - Chamadas originadas em Roaming |
0300105 | Serviço Medido - Chamadas recebidas em Roaming |
0300106 | Serviço Medido - Adicional de chamada |
0300107 | Serviço Medido - Números Especiais (0300/0500/0600/0800/etc.) |
0300108 | Serviço Medido - Mensagem SMS |
0300109 | Serviço Medido - Mensagem MMS |
0300201 | Serviço Medido - Comunicação de dados |
0300301 | Serviço Medido - Pay-per-view (programação TV) |
0300401 | Serviço Medido - Comunicação multimidia |
| Código | Descrição |
|---|---|
0400101 | Serviço Não Medido - Telefonia |
0400201 | Serviço Não Medido - Comunicação de dados |
0400301 | Serviço Não Medido - TV por Assinatura |
0400401 | Serviço Não Medido - Provimento à internet |
0400501 | Serviço Não Medido - Comunicação multimídia |
| Código | Descrição |
|---|---|
0450101 | Serviços Combinados (dados, voz, mensagens e outros) |
| Código | Descrição |
|---|---|
0500101 | Cartão Telefônico - Telefonia Fixa |
0500102 | Carga / Recarga de Créditos - Telefonia Fixa |
0500201 | Carga / Recarga de Créditos - Telefonia Móvel |
0500301 | Carga / Recarga de Créditos - Serviço de Comunicação Multimídia |
0500401 | Carga / Recarga de Créditos - TV por assinatura |
0500501 | Recarga de Créditos - Antecipação |
0500601 | Repasse de Pré-pago |
| Código | Descrição |
|---|---|
0600101 | Facilidades Adicionais (identificador, caixa postal, não-perturbe, etc) |
0600201 | Streaming de vídeo e audio |
0600301 | Serviço de Rastreamento |
0600401 | Veiculação de publicidade e propaganda em qualquer meio |
0600501 | Outros Serviços (substituição de número, troca de aparelho, instalação, software, visita técnica, etc.) |
0600601 | Outros serviços de valor adicionado |
| Código | Descrição |
|---|---|
0700101 | Interconexão |
0700201 | Roaming |
0700301 | Exploração Industrial de Linha Dedicada - EILD |
0700401 | Lançamento de ICMS proporcional às saídas isentas, não tributadas ou com redução de base de cálculo (§ 1º, Cláusula terceira, Convênio ICMS 17/2013) |
0700501 | Lançamento de ICMS proporcional às cessões de meio destinadas a consumo próprio (§ 1º Cláusula terceira, Convênio ICMS 17/2013) |
0700601 | Lançamento de ICMS complementar, na condição de responsável tributário |
| Código | Descrição |
|---|---|
0800101 | Aparelho telefônico |
0800201 | Aparelho Identificador de chamadas |
0800301 | Modem |
0800401 | Rack |
0800501 | Sala/Recinto |
0800601 | Roteador |
0800701 | Servidor |
0800801 | Multiplexador |
0800901 | Decodificador/Conversor |
0801001 | Outros equipamentos |
| Código | Descrição |
|---|---|
1000101 | Cobrança de seguros |
1000201 | Cobrança de parcelamento |
1000301 | Cobrança de juros de mora |
1000401 | Cobrança de multa de mora |
1000402 | Cobrança de multa por descumprimento de contrato (fidelização) |
1000501 | Cobrança de conta de meses anteriores |
1000601 | Correção monetária |
1000701 | Taxas |
| Código | Descrição |
|---|---|
5900101 | Dedução relativa a impugnação de serviços |
5900201 | Dedução referente ajuste de conta |
5900301 | Dedução relativa à multa pela interrupção de fornecimento |
5900401 | Dedução por pagamento em duplicidade |
5900501 | Outras deduções |
| Código | Descrição |
|---|---|
1200101 | Item lançado em outra NFCom - Cobrança centralizada |
| Código | Descrição |
|---|---|
1300101 | Item lançado em outra NFCom - Cobrança por cofaturamento |
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:O retorno via POST na url_notificacao é enviado diretamente dos servidores da Webmania, através dos IPs estáticos de saída. Com a verificação do IP, é possível garantir que o retorno para sua aplicação está sendo realizada através de nossos servidores.
Todos os arquivos são armazenados na Amazon S3 que garante 99,999999999% de durabilidade dos arquivos e criptografia de ponta a ponta, seguindo critérios rígidos de segurança e controle interno.
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://webmaniabr.com/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.