API

API NFC-e: Como Emitir Nota Fiscal ao Consumidor (Mod 65) via REST em 2026

Guia completo de integração da API NFC-e (modelo 65): payload JSON de venda, cálculo de ICMS, contingência offline para picos de venda, QR Code v2, cURL, webhooks e 50 notas grátis/mês.

Fábio Magalhães CostaAtualizado em 04/10/2026
Integração de API NFC-e em caixa de supermercado moderno com autorização em tempo real e QR Code

Integração de API NFC-e em caixa de supermercado moderno com autorização em tempo real e QR Code

Integrar a emissão de Nota Fiscal de Consumidor Eletrônica (NFC-e modelo 65) diretamente em frentes de caixa (PDV), totens de autoatendimento, aplicativos de delivery e plataformas de e-commerce é um dos maiores desafios de engenharia tributária no varejo brasileiro.

Diferente do modelo tradicional onde o caixa dependia de impressoras fiscais térmicas blindadas e módulos de hardware locais (como os antigos ECFs ou aparelhos SAT no estado de São Paulo), a modernização fiscal permitiu que todo o fluxo de autorização fosse transferido para a nuvem.

Com uma API NFC-e REST moderna, seu sistema envia os dados da venda em formato JSON e recebe, em menos de 1,5 segundo, o XML assinado digitalmente, o protocolo da SEFAZ, o link do QR Code v2 e o DANFE simplificado em PDF pronto para impressão térmica de 80mm ou 58mm.

Neste guia técnico completo, apresentaremos o fluxo operacional de emissão, o payload JSON detalhado, o cálculo de tributos no Simples Nacional e Regime Normal, a arquitetura de contingência offline para a Black Friday e outros picos de venda, e exemplos práticos em cURL e TypeScript.


⚡ Fluxo de Integração e Autorização da NFC-e

A arquitetura de emissão da NFC-e via Notaas desacopla a complexidade dos webservices SOAP das Secretarias da Fazenda estaduais, fornecendo uma camada REST assíncrona e resiliente:

🛒 Fluxo Operacional de Emissão de NFC-e (Modelo 65):

  • 1. PDV / E-commerce: Dispara requisição JSON para POST /api/v1/emitir com itens, CFOP 5.102/5.405, NCM e meios de pagamento (pag).
  • 2. Notaas Engine: Valida o schema XSD da SEFAZ, assina digitalmente com certificado A1 e gera o hash do QR Code v2 utilizando o CSC do contribuinte.
  • 3. SEFAZ Estadual: Processa a requisição e retorna o protocolo de autorização 100 em menos de 1.500ms.
  • 4. Impressão & Webhook: Sua aplicação recebe o DANFE em PDF (otimizado para bobinas térmicas de 80mm/58mm) e o evento assinado com HMAC via Webhook.

⚡ Comece a testar sem travar seu caixa: A Notaas oferece 50 notas fiscais gratuitas por mês por CNPJ em produção real, sem exigência de cartão de crédito. 👉 Criar conta gratuita (50 notas/mês) | Acessar Documentação da API


📦 Payload Completo de Emissão de NFC-e (JSON)

Para emitir uma NFC-e através da Notaas, basta submeter um payload JSON limpo. A plataforma cuida de calcular os totais e montar o XML com a assinatura ICP-Brasil em nuvem HSM.

Endpoint:

POST https://platform.notaas.com.br/api/v1/emitir

Headers:

Content-Type: application/json
X-API-Key: sk_live_sua_chave_secreta

Exemplo de Payload JSON (Venda ao Consumidor com PIX):

{
  "tipo": "nfce",
  "ambiente": "producao",
  "referencia": "PDV-CAIXA-01-CUPOM-10492",
  "naturezaOperacao": "VENDA AO CONSUMIDOR",
  "serie": 1,
  "presencaComprador": 1,
  "itens": [
    {
      "codigo": "PROD-001",
      "descricao": "Mouse Sem Fio Ergonômico USB",
      "ncm": "84716053",
      "cfop": "5102",
      "unidade": "UN",
      "quantidade": 1,
      "valorUnitario": 129.90,
      "tributacao": {
        "icms": {
          "origem": 0,
          "cst": "102"
        },
        "pis": {
          "cst": "07"
        },
        "cofins": {
          "cst": "07"
        }
      }
    },
    {
      "codigo": "PROD-002",
      "descricao": "Cabo USB-C Trançado 2m",
      "ncm": "85444290",
      "cfop": "5405",
      "unidade": "UN",
      "quantidade": 2,
      "valorUnitario": 35.00,
      "tributacao": {
        "icms": {
          "origem": 0,
          "cst": "500"
        },
        "pis": {
          "cst": "07"
        },
        "cofins": {
          "cst": "07"
        }
      }
    }
  ],
  "pagamentos": [
    {
      "formaPagamento": "pix",
      "valor": 199.90
    }
  ],
  "consumidor": {
    "cpf": "12345678901",
    "nome": "Cliente Balcao"
  }
}

💻 Exemplo Prático de Requisição (cURL & TypeScript)

Chamada cURL:

curl -X POST https://platform.notaas.com.br/api/v1/emitir \
  -H "Content-Type: application/json" \
  -H "X-API-Key: sk_live_sua_chave_secreta" \
  -d '{
    "tipo": "nfce",
    "ambiente": "producao",
    "referencia": "VENDA-89231",
    "naturezaOperacao": "VENDA AO CONSUMIDOR",
    "itens": [
      {
        "codigo": "7891234567890",
        "descricao": "Café Especial Torrado 250g",
        "ncm": "09012100",
        "cfop": "5102",
        "quantidade": 1,
        "valorUnitario": 32.00,
        "tributacao": { "icms": { "cst": "102" } }
      }
    ],
    "pagamentos": [
      { "formaPagamento": "dinheiro", "valor": 50.00, "troco": 18.00 }
    ]
  }'

Exemplo de Resposta de Autorização (HTTP 200 OK):

{
  "status": "autorizada",
  "id": "not_98a72bc19fa4e21d",
  "chaveAcesso": "35260901234567000190650010000104921987654321",
  "numero": 10492,
  "serie": 1,
  "protocolo": "135260000891245",
  "dataAutorizacao": "2026-09-10T11:40:00-03:00",
  "qrCodeUrl": "https://www.sefaz.sp.gov.br/nfce/qrcode?p=35260901234567000190650010000104921987654321|2|1|1|token_hash",
  "danfePdf": "https://cdn.notaas.com.br/danfe/danfe_nfce_10492.pdf",
  "xmlUrl": "https://cdn.notaas.com.br/xml/nfce_10492.xml"
}

Integração em TypeScript (Node.js):

interface EmitirNfceParams {
  referencia: string;
  itens: Array<{
    codigo: string;
    descricao: string;
    ncm: string;
    cfop: string;
    quantidade: number;
    valorUnitario: number;
  }>;
  pagamentos: Array<{
    formaPagamento: string;
    valor: number;
    troco?: number;
  }>;
}

export async function emitirNfce(payload: EmitirNfceParams) {
  const response = await fetch("https://platform.notaas.com.br/api/v1/emitir", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "X-API-Key": process.env.NOTAAS_API_KEY!,
    },
    body: JSON.stringify({
      tipo: "nfce",
      ambiente: process.env.NODE_ENV === "production" ? "producao" : "homologacao",
      naturezaOperacao: "VENDA AO CONSUMIDOR",
      ...payload,
    }),
  });

  if (!response.ok) {
    const errorData = await response.json();
    throw new Error(`Erro na autorização da NFC-e: ${errorData.message}`);
  }

  return await response.json();
}

🛡️ Contingência Offline da NFC-e: Arquitetura para Black Friday e Picos de Venda

No varejo presencial, o cliente não pode esperar no caixa. Em datas de pico como a Black Friday, o volume de vendas por minuto cresce justamente quando a infraestrutura mais sofre: SEFAZ com lentidão, operadoras sobrecarregadas e redes internas no limite. Para isso, a legislação prevê a emissão em contingência offline da NFC-e (tpEmis = 9). Antes de desenhar o fluxo do seu PDV, é importante entender quem faz o quê.

Como as responsabilidades se dividem

Situação Tipo de emissão Quem emite e transmite
Operação normal (loja com internet e SEFAZ disponível) Normal online (tpEmis = 1) A Notaas: valida, assina com o certificado A1, gera o QR Code v2 e obtém a autorização na SEFAZ
Loja sem internet Contingência offline (tpEmis = 9) O módulo local do PDV, que emite, imprime e transmite depois
SEFAZ estadual fora do ar Contingência offline (tpEmis = 9) O módulo local do PDV, da mesma forma

⚠️ Ponto crítico: a NFC-e não tem SVC (a SEFAZ Virtual de Contingência atende apenas a NF-e modelo 55). Por isso, a contingência da NFC-e é sempre offline e emitida no próprio ponto de venda. A Notaas atua como gateway de alta disponibilidade para a autorização online direta (tpEmis = 1). Se a sua operação precisa continuar vendendo durante uma queda de link ou da SEFAZ, o PDV precisa de um módulo local de contingência.

O que o módulo local de contingência precisa ter

  • Certificado digital A1 e CSC disponíveis localmente, protegidos, para assinar a nota e calcular o QR Code da emissão offline.
  • Numeração e série sob controle: o recomendável é reservar uma série exclusiva para a contingência do PDV, separada da série usada nas emissões online, para que as duas numerações nunca se cruzem.
  • Impressão imediata do DANFE NFC-e com a indicação de emissão em contingência e o QR Code de consulta.
  • Fila local de transmissão: as notas emitidas em contingência precisam ser transmitidas à SEFAZ assim que a comunicação voltar, dentro do prazo definido pela legislação da sua UF (em geral, 24 horas a partir da emissão). Confirme o prazo vigente no seu estado.
  • Tratamento de rejeições na transmissão posterior: uma nota emitida offline pode ser rejeitada ao ser transmitida (cadastro, tributação, dados do item). A retaguarda precisa corrigir e regularizar dentro do prazo.

Idempotência: evitando nota duplicada (Rejeições 204 e 539)

O erro mais caro em picos de venda não é a SEFAZ cair, é a mesma venda gerar duas notas. O cenário clássico: a chamada online sofre timeout, o PDV entra em contingência e emite outra NFC-e, mas a primeira já tinha sido autorizada.

⚡ Fluxo seguro antes de entrar em contingência:

  • 1. Referência única por venda: o PDV gera um identificador único e imutável por cupom (ex: PDV-LOJA07-CAIXA03-000104921) e o envia no campo referencia em toda tentativa.
  • 2. Timeout não é rejeição: quando a resposta não chega, o PDV não assume que a nota falhou. Primeiro verifica o status daquela venda (pela referência ou pela chave de acesso).
  • 3. Autorizada? Usa o protocolo existente e imprime o DANFE normal. Não emite de novo.
  • 4. Sem autorização e sem comunicação? Só então segue para a contingência local, mantendo o vínculo entre a venda e a nota emitida.
  • 5. Retaguarda: ao transmitir as notas de contingência, trata 204 (duplicidade de NF-e) e 539 (duplicidade com diferença na chave de acesso) como sinal de que já existe nota para aquela numeração: consulte, concilie e nunca reenvie às cegas.

Checklist de prontidão para a Black Friday

  • ✅ Testar em homologação o fluxo completo: timeout → verificação de status → contingência local → transmissão posterior.
  • ✅ Decidir se a operação terá contingência local no PDV e documentar o procedimento para o operador de caixa.
  • ✅ Separar a série da contingência da série online e nunca reaproveitar números após falhas.
  • ✅ Monitorar a fila de notas pendentes de transmissão e alertar antes de o prazo da UF expirar.
  • ✅ Consumir os webhooks de status da Notaas para conciliar vendas e notas autorizadas online no ERP.
  • ✅ Validar certificado A1 e CSC antes do pico (validade, senha e ambiente de produção).

⚙️ Configuração do CSC e Geração do QR Code v2

O QR Code impresso no DANFE da NFC-e permite ao consumidor e à fiscalização consultar a nota na SEFAZ. Para gerá-lo, cada empresa emissora obtém no portal da SEFAZ estadual o CSC (Código de Segurança do Contribuinte, antigo Token NFC-e) e o respectivo Identificador do CSC (ex: 000001).

A Notaas gera o QR Code versão 2.0, conforme as Notas Técnicas NT 2015.002 e NT 2016.002. Na emissão online, o conteúdo segue o formato:

{urlConsultaQRCodeDaUF}?p={chave}|2|{tpAmb}|{cIdCSC}|{cHashQRCode}
  • chave: chave de acesso de 44 dígitos da NFC-e.
  • 2: versão do QR Code.
  • tpAmb: 1 para produção, 2 para homologação.
  • cIdCSC: identificador do CSC, sem zeros à esquerda.
  • cHashQRCode: hash SHA-1 da concatenação dos parâmetros com o CSC, representado em hexadecimal maiúsculo (40 caracteres).

Na Notaas, o QR Code é calculado na emissão, inserido no grupo <infNFeSupl> do XML autorizado e renderizado como imagem no DANFE em PDF. Você cadastra o CSC do emitente uma única vez no painel ou via API, e ele fica armazenado com segurança na plataforma:

POST https://platform.notaas.com.br/api/v1/org/projects/{projectId}/fiscal-config
Content-Type: application/json
X-API-Key: sk_live_sua_chave_secreta

{
  "nfce": {
    "cscId": "000001",
    "cscToken": "SEU_CSC_AQUI",
    "serie": 1
  }
}

Boas práticas de segurança com o CSC

  • Trate o CSC como segredo: ele autentica o QR Code das suas notas. Nunca o exponha em código de front-end, aplicativo mobile, repositório Git ou logs.
  • Não distribua o CSC para cada PDV sem necessidade: nas emissões online, o hash do QR Code é calculado pela Notaas e o PDV não precisa conhecer o CSC. Ele só é necessário localmente se o PDV tiver um módulo próprio de contingência offline.
  • Revogue e gere um novo CSC em caso de vazamento: a troca é feita no portal da SEFAZ; atualize o cadastro na Notaas em seguida.
  • Separe homologação e produção: o CSC de homologação é diferente do de produção.

❓ Perguntas Frequentes sobre API NFC-e (FAQ)

1. O que é uma API NFC-e e como ela funciona?

A API NFC-e é uma interface de programação REST que permite que sistemas PDV, e-commerces e ERPs enviem dados estruturados de vendas em JSON, convertendo-os automaticamente para o padrão XML exigido pela SEFAZ, realizando a assinatura digital ICP-Brasil e retornando o DANFE e o QR Code em tempo real.

2. Qual a diferença entre NFC-e (Modelo 65) e NF-e (Modelo 55)?

A NF-e (modelo 55) é destinada principalmente a transações B2B (entre empresas), remessas, devoluções e comércio interestadual com transporte. Já a NFC-e (modelo 65) é restrita a operações de venda ao consumidor final (presencial ou delivery local), substituindo o cupom fiscal tradicional em papel e os módulos SAT/ECF.

3. É obrigatório identificar o CPF do consumidor na NFC-e?

Não. A inclusão do CPF ou nome do consumidor na NFC-e é opcional na maioria dos estados para vendas de pequeno valor. A identificação torna-se obrigatória por legislação estadual apenas quando o valor total da venda ultrapassa R$ 10.000,00 (ou R$ 1.000,00 em alguns estados específicos) ou quando o próprio consumidor solicita a inclusão do CPF para programas de benefícios (como Nota Fiscal Paulista ou Gaúcha).

4. Como funciona a impressão da NFC-e em impressoras térmicas de bobina?

A API da Notaas gera o DANFE simplificado em formato PDF já configurado nas dimensões exatas para bobinas térmicas de 80mm ou 58mm (impressoras EPSON, Elgin, Bematech, Daruma e térmicas Bluetooth). O arquivo já contém o cabeçalho fiscal, detalhamento dos itens, formas de pagamento e o QR Code nítido pronto para leitura pela câmera do smartphone.

5. A Notaas oferece plano gratuito para emissão de NFC-e?

Sim. A Notaas disponibiliza 50 notas fiscais por mês gratuitamente em ambiente de produção real com validade jurídica completa (suportando NFC-e, NF-e e NFS-e). O ambiente de Sandbox para homologação e testes de integração com webhooks é 100% gratuito e ilimitado.

6. A emissão de NFC-e via API funciona se a internet da loja cair?

Não. A Notaas autoriza a NFC-e online (tpEmis = 1), e uma API em nuvem só é alcançada quando o PDV tem conexão. Como a NFC-e não conta com SVC, a contingência, tanto na queda da internet da loja quanto na indisponibilidade da SEFAZ, é a emissão offline (tpEmis = 9) feita por um módulo local do PDV, com certificado A1 e CSC, que transmite as notas assim que a comunicação voltar, dentro do prazo da UF.


📚 Referências Oficiais & Guias Técnicos:


🚀 Comece a Integrar com a Notaas Hoje

Automatize a emissão de notas fiscais no seu SaaS, ERP ou PDV com a API fiscal mais moderna e resiliente do mercado:

  • Plano Gratuito: 50 notas fiscais/mês em produção sem cartão de crédito
  • Sandbox Imediato: Ambiente de testes completo com webhooks e eventos em tempo real
  • Multi-cidades e SEFAZ: Suporte ao padrão NFS-e Nacional, capitais e NF-e/NFC-e de mercadorias

👉 Criar Conta Gratuita na Notaas Platform (50 Notas/Mês)
👉 Acessar a Documentação Técnica Oficial
👉 Ver o Checklist Prático para ERPs e Vibe Coding

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.