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.webmaniabr.com. 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 Normal de NFCom |
/2/nfcom/substituir | POST | NFCom de Substituição |
/2/nfcom/ajuste | POST | NFCom de Ajuste |
/2/nfcom/consulta/{uuid} | GET | Consulta de NFCom por UUID ou chave |
/2/nfcom/status | GET | Status do Serviço SEFAZ |
/2/nfcom/cancelar | PUT | Cancelamento de NFCom |
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 |
numero | número | Número da NFComGerenciado automaticamente pelo emissor. |
status | string | Status da NFComaprovado |
motivo | string | Motivo do statusEx.: Autorizado o uso da 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 |
data_autorizacao | string | Data e hora da autorizaçãoFormato: DD/MM/YYYY HH:MM:SS |
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,
"numero": 119,
"status": "aprovado",
"motivo": "Autorizado o uso da NFCom",
"xml": "https://api.webmaniabr.com/xmlnfcom/[uuid]",
"xml_cancelamento": "https://api.webmaniabr.com/xmlnfcom/[uuid]/cancelamento",
"danfecom": "https://api.webmaniabr.com/danfecom/[uuid]",
"log": { ... }
} 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 API NFCom suporta três tipos de emissão, cada uma com sua rota específica:
POST /2/nfcom/emissao - Para emissão de NFCom regular (finalidade = 0)POST /2/nfcom/substituir - Para substituir uma NFCom emitida anteriormente (finalidade = 3)POST /2/nfcom/ajuste - Para ajustar valores de uma NFCom emitida (finalidade = 4)Para emitir uma Nota Fiscal de Comunicação normal, envie a requisição no método POST para a URL /2/nfcom/emissao contendo no corpo da requisição os objetos no formato JSON.
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.webmaniabr.com/2/nfcom/emissao Segue abaixo exemplo de como emitir NFCom:
{
"ambiente": 2,
"municipio_fato_gerador": "3550308",
"assinante": {
"codigo": "ASS123456",
"tipo": 3,
"tipo_servico": 4,
"contrato": {
"numero": "CONT2024001",
"data_inicio": "2024-01-01",
"data_fim": "2024-12-31"
}
},
"cliente": {
"cpf": "12345678901",
"nome_completo": "João da Silva",
"indicador_ie": 9,
"endereco": {
"logradouro": "Rua das Flores",
"numero": "123",
"bairro": "Centro",
"codigo_municipio": "3550308",
"municipio": "São Paulo",
"uf": "SP",
"cep": "01310100"
}
},
"itens": [{
"codigo": "SERV001",
"codigo_classificacao": "1234567",
"descricao": "Internet Banda Larga 100MB",
"unidade": "MES",
"quantidade": 1,
"valor_unitario": 99.90,
"impostos": {
"icms": {
"origem": 0,
"cst": "00",
"modalidade_bc": 3,
"valor_bc": 99.90,
"aliquota": 25.00,
"valor": 24.98,
"codigo_cfop": "5307",
},
"pis": {
"cst": "01",
"valor_bc": 99.90,
"aliquota": 0.65,
"valor": 0.65
},
"cofins": {
"cst": "01",
"valor_bc": 99.90,
"aliquota": 3.00,
"valor": 3.00
}
}
}]
} A resposta do corpo da mensagem será no formato objeto JSON, contendo os campos uuid, chave, serie, numero, status, motivo, modelo, xml, danfecom e log:
{
"uuid": "550e8400-e29b-41d4-a716-446655440000", // Número único de identificação
"chave": "35240712345678901234620010000001191234567890", // Chave de identificação na Sefaz
"modelo": "62", // Modelo do documento
"serie": 1, // Série da NFCom
"numero": 119, // Número da NFCom
"protocolo": "135240000123456", // Protocolo de autorização
"status": "aprovado", // aprovado, reprovado, cancelado ou processando
"motivo": "Autorizado o uso da NFCom", // Motivo do status
"xml": "https://api.webmaniabr.com/xmlnfcom/550e8400-e29b-41d4-a716-446655440000",
"danfecom": "https://api.webmaniabr.com/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 processamentoControle das solicitações de emissão por pedido ou ID de processamento. Saiba mais |
ambiente | Obrigatório | integer | 1 | Identificação do Ambiente da Sefaz1 - Produção |
url_notificacao | Opcional | string | - - - | URL de notificação para todas as atualizações de status da NFCom |
finalidade | Obrigatório | integer | 1 | Finalidade da emissão (definida automaticamente pela rota)0 - Normal (rota /emissao) |
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) |
serie | Opcional | string | 1-3 | Série de emissãoDefault: 1 |
numero | Opcional | string | 1-9 | Número da NFComCaso não informado, será gerado automaticamente |
data_emissao | Opcional | string | 19 | Data e hora de emissãoFormato: YYYY-MM-DD HH:MM:SS |
tipo_faturamento | Opcional | integer | 1 | Tipo de faturamento0 - Faturamento Normal (padrão) |
periodo_apuracao | Opcional | string | 7 | Período de apuraçãoFormato: YYYY-MM |
codigo_modelo | Opcional | integer | 2 | Código do modelo do documento21 - Conta detalhada |
previa_danfecom | Opcional | boolean | - - - | Gerar apenas prévia do DANFECOM sem emitirtrue - Gera apenas prévia |
assinante | Obrigatório | objeto | - - - | Informações do assinante do serviço |
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 |
autorizados_xml | Opcional | array | - - - | CPF/CNPJ autorizados a baixar o XMLArray de objetos com cpf ou cnpj |
informacoes_complementares | Opcional | string | 1-5000 | Informações complementares de interesse do contribuinte |
informacoes_fisco | Opcional | string | 1-2000 | Informações adicionais de interesse do Fisco |
A NFCom suporta indicadores específicos do setor de telecomunicações:
As 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 | Obrigatório | string | 1-60 | Código do assinanteIdentificador único do assinante no sistema do prestador |
tipo | Obrigatório | integer | 1 | Tipo do assinante1 - Comercial/Industrial |
tipo_servico | Obrigatório | integer | 1 | Tipo de utilização do serviço1 - Telefonia |
contrato | Obrigatório | 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 | string | 2-60 | Nome ou Razão Social |
indicador_ie | Obrigatório | 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 para endereço nacional | string | 8 | Código postal (CEP) do endereço |
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",
"razao_social": "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 | Obrigatório | string | 1-60 | Código do item/serviço |
descricao | Obrigatório | string | 1-120 | Descrição do item/serviço |
unidade | Obrigatório | integer | 1 | Unidade de medida1 - Minuto |
quantidade | Obrigatório | decimal | 15v4 | Quantidade do itemAté 4 casas decimais |
valor_unitario | Obrigatório | decimal | 21v10 | Valor unitário do itemAté 10 casas decimais |
valor_desconto | Opcional | decimal | 15v2 | Valor do desconto |
outras_despesas | Opcional | decimal | 15v2 | Outras despesas acessórias |
indicador_prepago | Opcional | boolean | - - - | Indicador de serviço pré-pagotrue - Serviço pré-pago |
indicador_cessao_meios | Opcional | boolean | - - - | Indicador de cessão de meios de redetrue - Com cessão |
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 | objeto | - - - | Definição de impostos na API, para operações específicas como FUNTTEL, FUST ou que demande maior flexibilidade |
Segue abaixo exemplo de como informar um item/serviço:
{
...
"itens": [
{
"codigo": "SERV001",
"descricao": "Internet Banda Larga 100MB",
"unidade": "MES",
"quantidade": 1,
"valor_unitario": 99.90,
"impostos": {
"codigo_classificacao": "0107",
"icms": {
"origem": 0,
"cst": "00",
"codigo_cfop": "5307",
"modalidade_bc": 3,
"valor_bc": 99.90,
"aliquota": 25.00,
"valor": 24.98
},
"pis": {
"cst": "01",
"valor_bc": 99.90,
"aliquota": 0.65,
"valor": 0.65
},
"cofins": {
"cst": "01",
"valor_bc": 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 | string | 4 | Código de classificação do itemAcesse a tabela de classificações |
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
origem | Obrigatório | integer | 1 | Origem da mercadoria0 - Nacional |
cst | Obrigatório | string | 2 | Código de Situação Tributária00 - Tributada integralmente |
codigo_cfop | Obrigatório | string | 4 | Código Fiscal de Operações e PrestaçõesExemplos: |
modalidade_bc | Obrigatório para CST 00, 20, 90 | integer | 1 | Modalidade de determinação da BC0 - Margem Valor Agregado |
valor_bc | Obrigatório para CST 00, 20, 90 | decimal | 15v2 | Valor da base de cálculo |
aliquota | Obrigatório para CST 00, 20, 90 | decimal | 5v2 | Alíquota do ICMSVaria por estado (17-35%) |
valor | Obrigatório para CST 00, 20, 90 | decimal | 15v2 | Valor do ICMS |
percentual_reducao | Obrigatório para CST 20 | decimal | 5v2 | Percentual de redução da base de cálculo |
percentual_fcp | Opcional | decimal | 5v2 | Percentual do Fundo de Combate à Pobreza |
valor_fcp | Opcional | decimal | 15v2 | Valor do FCP |
valor_desoneracao | Opcional | decimal | 15v2 | Valor do ICMS desonerado |
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
cst | Obrigatório | string | 2 | Código de Situação Tributária01 - Operação Tributável |
valor_bc | Obrigatório para CST 01, 02 | decimal | 15v2 | Valor da base de cálculo |
aliquota | Obrigatório para CST 01, 02 | decimal | 5v4 | AlíquotaPIS: 0.65% |
valor | Obrigatório para CST 01, 02 | decimal | 15v2 | Valor do tributo |
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
valor_bc | 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": "0107",
"icms": {
"origem": 0,
"cst": "00",
"codigo_cfop": "5307",
"modalidade_bc": 3,
"valor_bc": 99.90,
"aliquota": 25.00,
"valor": 24.98
},
"pis": {
"cst": "01",
"valor_bc": 99.90,
"aliquota": 0.65,
"valor": 0.65
},
"cofins": {
"cst": "01",
"valor_bc": 99.90,
"aliquota": 3.00,
"valor": 3.00
},
"fust": {
"valor_bc": 99.90,
"aliquota": 1.0,
"valor": 1.00
},
"funttel": {
"valor_bc": 99.90,
"aliquota": 0.5,
"valor": 0.50
}
},
...
} As informações de faturamento e cobrança devem ser informadas no objeto fatura.
indicador_cessao_meios_rede = 0 (padrão). Apenas é dispensado quando indicador_cessao_meios_rede = 1. | Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
competencia_fatura | Opcional | string | 6 | Competência da faturaFormato: MMAAAA (Ex: 012024 para Janeiro/2024) |
data_vencimento | Opcional | string | 10 | Data de vencimentoFormato: YYYY-MM-DD |
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 |
codigo_barras_fatura | Opcional | string | 1-48 | Código de barras da faturaSomente números |
numero_debito_automatico | Opcional | string | 1-20 | Número para débito automáticoSomente números |
qrcode_pix_fatura | Opcional | string | 2-2000 | QR Code PIX para pagamentoString completa do código PIX |
valor_desconto | Opcional | decimal | 15v2 | Valor do desconto |
valor_liquido | Opcional | decimal | 15v2 | Valor líquido da fatura |
codigo_barras | Opcional | string | 44 | Código de barras para pagamento |
periodos | Opcional | array | - - - | Períodos de apuração da fatura |
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
referencia | Obrigatório | string | 7 | Mês de referênciaFormato: YYYY-MM |
vencimento | Obrigatório | string | 10 | Data de vencimentoFormato: YYYY-MM-DD |
valor | Obrigatório | decimal | 15v2 | Valor do período |
Segue abaixo exemplo de faturamento:
{
...
"fatura": {
"competencia_fatura": "012024",
"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",
"qrcode_pix_fatura": "00020126360014BR.GOV.BCB.PIX0114..."
},
...
} É 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_prepago | Opcional | boolean | - - - | Indica se o serviço é pré-pagotrue - Serviço pré-pago |
indicador_cessao_meios | Opcional | boolean | - - - | Indica cessão de meios de redePara compartilhamento de infraestrutura |
indicador_servico_parcial | Opcional | boolean | - - - | Indica serviço parcialmente tributadoQuando parte do serviço é isenta/não tributada |
Exemplo de uso com indicadores:
{
...
"indicador_prepago": true,
"indicador_cessao_meios": false,
"indicador_servico_parcial": false,
...
} Informações relativas à substituição tributária. Grupo opcional utilizado quando há substituição tributária na operação.
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
valor_bc_retido | Obrigatório | decimal | 15v2 | Valor da base de cálculo retida anteriormente |
valor_retido | Obrigatório | decimal | 15v2 | Valor do ICMS retido anteriormente |
codigo_cfop | Opcional | string | 4 | CFOP aplicado na operaçãoEx: 5949 |
Exemplo de uso:
{
...
"substituicao": {
"valor_bc_retido": 150.00,
"valor_retido": 27.00,
"codigo_cfop": "5949"
},
...
} 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 |
|---|---|---|---|---|
cnpj | Obrigatório | string | 14 | CNPJ da operadora que realizará a cobrança |
numero_nfcom | Obrigatório | string | 1-9 | Número da NFCom onde será realizada a cobrança |
Exemplo de uso:
{
...
"cofaturamento": {
"cnpj": "12345678901234",
"numero_nfcom": "123456"
},
...
} Referência a uma nota fiscal de entrada de produto. Utilizado para relacionar a NFCom com uma nota fiscal de entrada quando aplicável.
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
chave_acesso | Obrigatório | string | 44 | Chave de acesso da nota fiscal de entrada |
tipo_nota_entrada | Opcional | integer | 1 | Tipo da nota de entrada1 - NF-e |
Exemplo de uso:
{
...
"nota_entrada": {
"chave_acesso": "35240712345678901234550010000001191234567890",
"tipo_nota_entrada": 1
},
...
} Para emitir uma NFCom de Substituição, utilize a rota POST /2/nfcom/substituir. Este tipo de emissão é usado para substituir uma NFCom emitida anteriormente com erro.
| 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 | 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 |
Exemplo de NFCom de Substituição:
curl -X POST \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"ambiente": 2,
"cliente": {
"cnpj": "12345678901234",
"razao_social": "Empresa Exemplo LTDA",
"indicador_ie": 9,
"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": "4"
},
"itens": [
{
"descricao": "Internet Banda Larga 100MB - Correção Tributária",
"codigo_classificacao": "0101101",
"unidade": "MES",
"quantidade": 1,
"valor_unitario": 99.90,
"impostos": {
"icms": {
"situacao_tributaria": "40",
"codigo_cfop": "5307"
}
}
}
]
}' \
https://api.webmaniabr.com/2/nfcom/substituir Para emitir uma NFCom de Ajuste, utilize a rota POST /2/nfcom/ajuste. Este tipo de emissão é usado para ajustar valores ou informações de uma ou mais NFCom emitida anteriormente.
As emissões de NFCom de ajuste permitem informar mais de um item, sendo cada um destes referente a uma mesma NFCom emitida anteriormente ou NFComs diferentes. Desta forma, é possível realizar ajustes em massa através da emissão de uma única NFCom, facilitando a correção de informações e valores.
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
chave_nfcom_anterior | Obrigatório | string | 44 | Chave da NFCom que está sendo ajustada (obrigatório em cada item) |
numero_item_anterior | Opcional | integer | 1-990 | Número do item na NFCom original que está sendo ajustado |
Exemplo de NFCom de Ajuste:
curl -X POST \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"ambiente": 2,
"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": "0301101",
"unidade": "MIN",
"quantidade": 100,
"valor_unitario": 0.50,
"chave_nfcom_anterior": "35240198765432109876620010000005431234567890",
"numero_item_anterior": 1,
"impostos": {
"icms": {
"situacao_tributaria": "00",
"codigo_cfop": "5307",
"valor_base_calculo": 50.00,
"aliquota_icms": 18,
"valor_icms": 9.00
}
}
}
]
}' \
https://api.webmaniabr.com/2/nfcom/ajuste 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.webmaniabr.com/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.webmaniabr.com/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" \
-H "Content-Type: application/json" \
-d '{
}' \
https://api.webmaniabr.com/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, numero, xml, danfecom, log:
{
"uuid": "00000000-0000-0000-0000-000000000000", // Número único de identificação
"chave": "00000000000000000000000000000000000000000000", // Chave de identificação na Sefaz
"status": "aprovado", // aprovado, reprovado, cancelado, processando ou contingencia
"motivo": "Autorizado o uso da NFCom", // Motivo do status
"serie": 1, // Série da NFCom
"numero": 123, // Número da NFCom
"xml": "https://api.webmaniabr.com/xmlnfcom/[chave]",
"xml_cancelamento": "https://api.webmaniabr.com/xmlnfcom/[chave]/cancelamento",
"danfecom": "https://api.webmaniabr.com/danfecom/[chave]",
"log": "{...}" // Log de retorno da Sefaz
} Para cancelar uma NFCom, envie a requisição no método PUT para URL /2/nfcom/cancelar/ contendo na requisição os parâmetros uuid ou chave da NFCom e justificativa do cancelamento.
| Parâmetro | Obrigatório | Tipo | Tam. | Descrição |
|---|---|---|---|---|
uuid | chave | Obrigatório | string | 36 | 44 | UUID ou 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.webmaniabr.com/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.webmaniabr.com/xmlnfcom/[chave]",
"xml_cancelamento": "https://api.webmaniabr.com/xmlnfcom/[chave]/cancelamento",
"danfecom": "https://api.webmaniabr.com/danfecom/[chave]",
"log": "{...}" // Log de retorno da Sefaz
} Para verificar o status do serviço da SEFAZ:
curl -X PUT \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
GET /2/nfcom/status
Resposta:
{
"status": "online",
"ambiente": 1,
"tempo_medio": 850,
"data_hora": "2024-07-01 10:00:00",
"mensagem": "Serviço em operação"
} 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",
"status": "contingencia",
"motivo": "NFCom em contingência - será processada automaticamente",
"contingencia": true,
"tipo_emissao": 2,
"danfecom": "https://api.webmaniabr.com/danfecom/550e8400-e29b-41d4-a716-446655440000",
"xml": "https://api.webmaniabr.com/xmlnfcom/550e8400-e29b-41d4-a716-446655440000"
} 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.webmaniabr.com retorne 403 Erro Forbidden por engano, por favor, entre em contato para liberarmos o IP do seu servidor.