NF-e

Desconto Condicionado vs Incondicionado na NFS-e: Como Lançar via API sem Erro de Base de Cálculo (Portaria 43 Curitiba e SNNFSE)

Aprenda a diferenciar desconto condicionado e incondicionado na NFS-e via API REST. Regras da Portaria 43 Curitiba, cálculo de ISS no SNNFSE e eliminação de autuações fiscais.

Fábio Magalhães CostaAtualizado em 08/10/2026
Lançamento automatizado de descontos condicionados e incondicionados na NFS-e e SNNFSE via API REST JSON

Lançamento automatizado de descontos condicionados e incondicionados na NFS-e e SNNFSE via API REST JSON

Se a sua empresa desenvolve plataformas de billing, sistemas de assinatura, ERPs financeiros ou soluções de emissão recorrente de notas fiscais, o tratamento de descontos certamente já gerou dúvidas na sua equipe de engenharia e contabilidade.

A concessão de abatimentos em faturas de serviços — como cupons promocionais em plataformas SaaS ou descontos de pontualidade no boleto bancário — envolve uma divisão tributária rigorosa entre Desconto Incondicionado e Desconto Condicionado.

Nos últimos meses, a fiscalização municipal intensificou a auditoria sobre esses campos. O marco mais expressivo foi a publicação da Portaria SMF nº 43/2026 (regulamentada pelo Decreto Municipal nº 1.730/2026 em Curitiba/PR) e as atualizações do Padrão Nacional da NFS-e (SNNFSE / DPS v1.01), que passaram a rejeitar notas fiscais ou autuar contribuintes que deduzem descontos indevidos da Base de Cálculo do ISSQN.

⚠️ O Risco Real para ERPs e Startups:
Lançar um desconto financeiro (como "5% de abatimento se pagar até o vencimento") como se fosse desconto incondicionado é considerado sonegação ou dedução indevida de base de cálculo pelas secretarias de finanças municipais.
Por outro lado, deixar de lançar o desconto comercial na tag apropriada gera bitributação, forçando o cliente a pagar imposto sobre um dinheiro que ele nunca recebeu.

Neste guia técnico definitivo, vamos esclarecer as diferenças jurídicas e fiscais entre os dois tipos de desconto, analisar as regras da Portaria 43 de Curitiba e do Emissor Nacional, e demonstrar como emitir notas fiscais perfeitas via JSON na Notaas sem dores de cabeça com schemas XSD.


⚖️ A Diferença Jurídica: Incondicionado vs Condicionado

A distinção fundamental entre os dois institutos está expressa no Código Tributário Nacional (CTN) e na Lei Complementar nº 116/2003 (Lei Geral do ISSQN):

Característica Desconto Incondicionado (Comercial) Desconto Condicionado (Financeiro)
Natureza Comercial, contratual, negociado previamente. Financeiro, moratório, estímulo à liquidez.
Momento da Aplicação No ato da venda/contratação (ex: cupom SaaS, fidelidade). Em momento futuro e incerto (ex: pagamento antecipado do boleto).
Depende de Evento Futuro? ❌ Não. O abatimento já é líquido e certo no momento da emissão. ✅ Sim. Depende de o cliente efetivamente pagar na data estipulada.
Abate a Base de Cálculo do ISS? ✅ SIM. Reduz legalmente o montante tributável (vBC = vServ - vDescIncond). ❌ NÃO. A base de cálculo do ISS é o valor bruto integral do serviço.
Tag XML na DPS Nacional <vDescIncond> <vDescCond>

🏛️ O Que Mudou com a Portaria 43 de Curitiba e o Padrão SNNFSE?

Historicamente, muitos sistemas legados somavam os dois descontos em um único campo livre ou deduziam ambos da base de cálculo para apresentar um "valor líquido bonito" ao consumidor.

A Portaria SMF nº 43 de Curitiba e as validações estritas da Receita Federal no Portal Nacional da NFS-e consolidaram três regras invioláveis:

1. Auditoria Matemática da Base de Cálculo

A equação de apuração do ISSQN exigida pelo Fisco é estrita:

📐 Equação Oficial da Base de Cálculo do ISSQN:

vBC = vServ - vDescIncond - vDed
vISSQN = vBC * (aliquota / 100)

O desconto condicionado (<vDescCond>) não entra nessa fórmula. Ele é um campo puramente informativo para constar no corpo do DANFSe PDF e no boleto de cobrança.

2. Trava de Valor Máximo

O valor do desconto incondicionado nunca pode ser igual ou superior ao valor total dos serviços prestados (vDescIncond < vServ), salvo em hipóteses excepcionais de gratuidade formal com justificativa fiscal. Tentar enviar uma nota com desconto maior que o serviço gera rejeição imediata da DPS por base de cálculo negativa ou zerada.

3. Exibição Transparente no DANFSe

O Documento Auxiliar da NFS-e (DANFSe) deve exibir de forma segregada:

  • O Valor Bruto dos Serviços;
  • O Desconto Incondicionado (que abate a base);
  • A Base de Cálculo Efetiva;
  • O Desconto Condicionado (apenas como nota financeira para o tomador).

🚀 Como Estruturar o Payload na Notaas

A engine da Notaas (v0.56.30 / PR #447) foi atualizada para implementar nativamente as novas regras da Portaria 43 de Curitiba e do Emissor Nacional (SNNFSE).

Você não precisa calcular alíquotas fracionadas nem mapear nós aninhados do XML. Basta informar os campos amigáveis descontoIncondicionado e descontoCondicionado diretamente no objeto servico:

Exemplo de Payload JSON (POST /api/v1/emitir)

{
  "tipo": "nfse",
  "codigoMunicipio": "4106902", // Curitiba/PR (ou qualquer cidade no padrão nacional)
  "naturezaOperacao": "1", // Tributação no município
  "tomador": {
    "cnpj": "12345678000195",
    "razaoSocial": "EMPRESA DE TECNOLOGIA TOMADORA S.A.",
    "endereco": {
      "logradouro": "Rua XV de Novembro",
      "numero": "1200",
      "bairro": "Centro",
      "codigoMunicipio": "4106902",
      "uf": "PR",
      "cep": "80020310"
    }
  },
  "servico": {
    "itemListaServico": "01.07", // Suporte técnico, manutenção de software
    "codigoTributacaoMunicipio": "0107001",
    "discriminacao": "Assinatura mensal de plataforma em nuvem (Plano Enterprise).\nCupom Promocional de Boas-Vindas aplicado: R$ 200,00.\nCondicao de Pontualidade: 5% de desconto financeiro (R$ 40,00) para liquidacao ate o dia 10.",
    "valorServicos": 1000.00,
    
    // 🎯 Desconto Comercial (Abate a Base do ISSQN):
    "descontoIncondicionado": 200.00,
    
    // 🎯 Desconto Financeiro (Informativo, não abate a Base):
    "descontoCondicionado": 40.00,
    
    "aliquota": 5.00
  }
}

⚡ Processamento Automático Realizado pela Notaas:

  • 1. Base de Cálculo: A Notaas calcula automaticamente vBC = R$ 1.000,00 - R$ 200,00 = R$ 800,00.
  • 2. ISSQN Apurado: vISSQN = R$ 800,00 * 5% = R$ 40,00 (garantindo total conformidade legal).
  • 3. Montagem da DPS Nacional: A engine injeta <vDescIncond>200.00</vDescIncond> e <vDescCond>40.00</vDescCond> nos nós padronizados da DPS v1.01.
  • 4. DANFSe PDF: O PDF gerado destaca o valor bruto, o desconto comercial que formou a base e o aviso financeiro para o tomador.

💻 Exemplo de Implementação em TypeScript / Node.js

Para plataformas de faturamento e SaaS de cobrança, veja como criar uma função desacoplada que calcula e emite a NFS-e com descontos:

import axios from "axios";

interface DadosFaturamentoServico {
  valorBruto: number;
  cupomDesconto?: number; // Incondicionado
  descontoPontualidade?: number; // Condicionado
  descricaoServico: string;
  cnpjTomador: string;
  razaoSocialTomador: string;
  codigoMunicipio: string;
}

export async function emitirNfseComDescontos(
  fatura: DadosFaturamentoServico,
  apiKey: string
) {
  const url = "https://api.notaas.com.br/api/v1/emitir";

  const payload = {
    tipo: "nfse",
    codigoMunicipio: fatura.codigoMunicipio,
    naturezaOperacao: "1",
    tomador: {
      cnpj: fatura.cnpjTomador,
      razaoSocial: fatura.razaoSocialTomador
    },
    servico: {
      itemListaServico: "01.07",
      discriminacao: fatura.descricaoServico,
      valorServicos: fatura.valorBruto,
      descontoIncondicionado: fatura.cupomDesconto || 0,
      descontoCondicionado: fatura.descontoPontualidade || 0,
      aliquota: 5.00
    }
  };

  try {
    const { data } = await axios.post(url, payload, {
      headers: {
        Authorization: `Bearer ${apiKey}`,
        "Content-Type": "application/json"
      }
    });

    console.log("NFS-e Emitida com Sucesso! Número:", data.numeroNota);
    console.log("PDF Oficial DANFSe:", data.pdfUrl);
    return data;
  } catch (error: any) {
    console.error("Falha na emissão da NFS-e:", error.response?.data || error.message);
    throw error;
  }
}

📋 Guia de Validação Rápida para o Seu Time Fiscal

Antes de colocar em produção novas regras de desconto no seu checkout ou ERP, passe por este checklist de auditoria:

  • Contratos de SaaS e Licenciamento: Descontos por plano anual ou cupons promocionais concedidos no carrinho devem ser sempre informados como descontoIncondicionado.
  • Boletos Bancários com Desconto até o Dia X: O abatimento por pontualidade no boleto é incerto na data de emissão. Deve ser informado como descontoCondicionado para não violar a LC 116/2003.
  • Salão Parceiro e Terceirização: Se a sua dedução decorre da Lei do Salão Parceiro (Lei 13.352/2016), veja nosso guia dedicado sobre Como Emitir NFS-e para Salão Parceiro com Dedução de Base.
  • Adesão ao Emissor Nacional: Mais de 2.970 municípios já utilizam o padrão nacional do SNNFSE, que segue rigorosamente essas equações. A Notaas cobre tanto o Emissor Nacional quanto mais de 1.800 cidades com webservices legados integrados. Veja o guia de Integração Técnica com a NFS-e Nacional.

🏁 Conclusão

Tratar descontos fiscais com precisão técnica é fundamental para blindar sua empresa e seus clientes de multas administrativas municipais e passivos tributários ocultos.

Com a Notaas, sua equipe de produto elimina a complexidade tributária:

  • Suporte nativo às regras da Portaria 43 de Curitiba e do SNNFSE Nacional.
  • 50 notas fiscais gratuitas todo mês por CNPJ em produção real, sem exigência de cartão de crédito.
  • Webhooks assinados com HMAC SHA-256 e geração de DANFSe PDF local em milissegundos.

👉 Quer integrar a emissão fiscal de serviços no seu ERP hoje mesmo?
Confira a Documentação da API Notaas ou crie sua conta gratuitamente em platform.notaas.com.br/sign-up.

Notaas — API Fiscal para Desenvolvedores

Emita NFS-e, NF-e e NFC-e via API sem complexidade tributária

Conheça a API de Nota Fiscal da Notaas: integração via REST API simples, sandbox imediato, webhooks assinados com HMAC e suporte a múltiplos CNPJs. 50 notas fiscais gratuitas todo mês.