API

API NF-e Gratuita: Como Emitir Nota Fiscal de Produto (Mod 55/65) via REST em 2026

Aprenda como emitir NF-e (produtos) e NFC-e gratuitamente via API REST: payload JSON completo, CFOP, NCM, ICMS, cURL, TypeScript, Python e Webhooks HMAC.

Fábio Magalhães CostaAtualizado em 04/10/2026
Emissão automatizada de NF-e modelo 55 e NFC-e modelo 65 via API REST JSON conectada à SEFAZ

Emissão automatizada de NF-e modelo 55 e NFC-e modelo 65 via API REST JSON conectada à SEFAZ

Integrar a emissão de Nota Fiscal Eletrônica de Produtos (NF-e modelo 55) e a API NFC-e (modelo 65) diretamente no backend de um e-commerce, ERP, frente de caixa (PDV) ou plataforma de vendas sempre foi um desafio repleto de barreiras técnicas: lidar com webservices SOAP estaduais das 27 Secretarias da Fazenda (SEFAZ), assinar lotes XML com certificados digitais ICP-Brasil A1 e decifrar centenas de códigos de rejeição tributária.

Com a evolução das APIs fiscais modernas, hoje é possível automatizar todo o ciclo de vida da NF-e com uma interface REST limpa e padronizada em JSON.

Neste guia técnico, demonstraremos como configurar uma integração completa utilizando o plano gratuito da Notaas — que oferece 50 notas fiscais/mês em produção com validade jurídica e testes ilimitados em Sandbox —, incluindo cálculo de tributos (ICMS, PIS, COFINS, CFOP, NCM), códigos de benefício fiscal (cBenef) e recebimento do DANFE em PDF e XML via Webhooks.


⚙️ A Complexidade da NF-e (Modelo 55) vs SEFAZ Estadual

Diferente da NFS-e (que é de competência municipal), a NF-e de mercadorias é regulamentada nacionalmente pelo CONFAZ e operada pelas SEFAZ estaduais (alguns estados possuem autorizadores próprios como SP, PR, MG, RS, enquanto outros utilizam o SVAN ou SVRS).

📦 Fluxo de Emissão de NF-e (Produtos):

  • 1. Sua Aplicação / E-commerce: Dispara a requisição JSON com itens, CFOP e NCM via POST /api/v1/emitir.
  • 2. Motor Fiscal Notaas: Valida o schema da SEFAZ, calcula alíquotas e assina o XML em nuvem segura (HSM).
  • 3. SEFAZ Estadual: Processa o lote e retorna o protocolo de autorização 100.
  • 4. Webhook & CDN: Notificação em tempo real com links públicos para download do DANFE em PDF e do XML autorizado.

Principais Dores de Integrar Direto com a SEFAZ:

  1. Comunicação SOAP e Envelopes XML: A SEFAZ não aceita REST nem JSON. Toda a mensageria é feita em XML SOAP 1.2 com namespaces rígidos.
  2. Rejeições Fiscais Críticas:
    • Rejeição 204 / 539 (Duplicidade de NF-e): Ocorre quando uma tentativa de reenvio repete a numeração sem controle idempotente de chave.
    • Rejeição 938 (Não informada a vBCST): Divergência entre a alíquota e base de cálculo de substituição tributária.
    • Rejeição 805 (A NT 2020.006): Incompatibilidade de código de benefício fiscal (cBenef) com a CST do ICMS exigida por estados como PR, RS e SC.
  3. Gerenciamento do Certificado Digital A1: Armazenamento seguro de chaves criptográficas .pfx com renovação e assinatura em tempo de execução sem travamento de threads.

📌 Operações com Regras Tributárias Especiais: Caso sua aplicação necessite emitir NF-e para segmentos específicos com redução de base de cálculo do ICMS (CST 20 e 70) ou detalhamento do grupo de veículos novos (veicProd), confira nosso guia técnico: Emissão de NF-e para Veículos Novos e Redução de Base de Cálculo de ICMS.

A Notaas absorve toda essa complexidade: você submete um JSON limpo e a plataforma cuida da validação dos schemas da NT 2024/2025, assinatura, envio assíncrono para a SEFAZ correta e entrega do PDF e XML autorizados.


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

Veja a estrutura de um payload JSON pronto para emissão de NF-e de venda de produto através da Notaas:

Endpoint:

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

Headers:

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

Corpo da Requisição (Payload JSON):

{
  "tipo": "nfe",
  "ambiente": "producao",
  "referencia": "pedido_ecommerce_84920",
  "naturezaOperacao": "Venda de mercadoria adquirida de terceiros",
  "prestador": {
    "cnpj": "12345678000195",
    "inscricaoEstadual": "123456789110"
  },
  "tomador": {
    "cpfCnpj": "01234567890",
    "razaoSocial": "João da Silva Sauro",
    "email": "joao.silva@exemplo.com.br",
    "indicadorIe": 9,
    "endereco": {
      "logradouro": "Rua das Flores",
      "numero": "123",
      "bairro": "Centro",
      "codigoMunicipio": "3550308",
      "uf": "SP",
      "cep": "01001000"
    }
  },
  "itens": [
    {
      "codigo": "PROD-001",
      "descricao": "Teclado Mecânico RGB Switch Blue",
      "ncm": "84716052",
      "cfop": "5102",
      "unidadeComercial": "UN",
      "quantidade": 1,
      "valorUnitario": 299.90,
      "tributos": {
        "icms": {
          "origem": 0,
          "cst": "102"
        },
        "pis": {
          "cst": "07"
        },
        "cofins": {
          "cst": "07"
        }
      }
    }
  ],
  "pagamento": {
    "formas": [
      {
        "meio": "pix",
        "valor": 299.90
      }
    ]
  }
}

💻 Integração em Código: Multi-Linguagens

1. Chamada via cURL

curl -X POST https://platform.notaas.com.br/api/v1/emitir   -H "Content-Type: application/json"   -H "X-API-Key: sk_test_sua_chave_aqui"   -d '{
    "tipo": "nfe",
    "ambiente": "sandbox",
    "referencia": "teste_nfe_001",
    "naturezaOperacao": "Venda de mercadoria",
    "prestador": { "cnpj": "12345678000195" },
    "tomador": {
      "cpfCnpj": "00000000000191",
      "razaoSocial": "Empresa Teste Ltda",
      "email": "cliente@teste.com.br",
      "indicadorIe": 9
    },
    "itens": [
      {
        "codigo": "SKU-99",
        "descricao": "Mouse Gamer Óptico USB",
        "ncm": "84716053",
        "cfop": "5102",
        "unidadeComercial": "UN",
        "quantidade": 1,
        "valorUnitario": 120.00,
        "tributos": {
          "icms": { "origem": 0, "cst": "102" }
        }
      }
    ],
    "pagamento": {
      "formas": [{ "meio": "cartao_credito", "valor": 120.00 }]
    }
  }'

2. Integração em TypeScript / Node.js

import axios from "axios";

interface ItemNFe {
  codigo: string;
  descricao: string;
  ncm: string;
  cfop: string;
  unidadeComercial: string;
  quantidade: number;
  valorUnitario: number;
  tributos: {
    icms: { origem: number; cst: string };
    pis?: { cst: string };
    cofins?: { cst: string };
  };
}

interface EmitirNFeParams {
  referencia: string;
  clienteDoc: string;
  clienteNome: string;
  clienteEmail: string;
  itens: ItemNFe[];
  valorTotal: number;
}

export async function emitirNfeProduto(params: EmitirNFeParams) {
  const payload = {
    tipo: "nfe",
    ambiente: process.env.NODE_ENV === "production" ? "producao" : "sandbox",
    referencia: params.referencia,
    naturezaOperacao: "Venda de mercadoria",
    prestador: {
      cnpj: process.env.EMPRESA_CNPJ!,
    },
    tomador: {
      cpfCnpj: params.clienteDoc,
      razaoSocial: params.clienteNome,
      email: params.clienteEmail,
      indicadorIe: 9, // Não contribuinte
    },
    itens: params.itens,
    pagamento: {
      formas: [{ meio: "pix", valor: params.valorTotal }],
    },
  };

  const response = await axios.post("https://platform.notaas.com.br/api/v1/emitir", payload, {
    headers: {
      "Content-Type": "application/json",
      "X-API-Key": process.env.NOTAAS_API_KEY!,
    },
    timeout: 12000,
  });

  return response.data;
}

3. Integração em Python 3

import os
import requests

NOTAAS_KEY = os.getenv("NOTAAS_API_KEY")
ENDPOINT = "https://platform.notaas.com.br/api/v1/emitir"

def emitir_nfe(referencia: str, cliente_cpf: str, cliente_nome: str, valor: float):
    payload = {
        "tipo": "nfe",
        "ambiente": "producao",
        "referencia": referencia,
        "naturezaOperacao": "Venda de Mercadorias",
        "prestador": {"cnpj": "12345678000195"},
        "tomador": {
            "cpfCnpj": cliente_cpf,
            "razaoSocial": cliente_nome,
            "indicadorIe": 9
        },
        "itens": [
            {
                "codigo": "LIVRO-01",
                "descricao": "Livro Arquitetura de Software Moderna",
                "ncm": "49019900",
                "cfop": "5102",
                "unidadeComercial": "UN",
                "quantidade": 1,
                "valorUnitario": valor,
                "tributos": {
                    "icms": {"origem": 0, "cst": "102"}
                }
            }
        ],
        "pagamento": {
            "formas": [{"meio": "pix", "valor": valor}]
        }
    }

    headers = {
        "Content-Type": "application/json",
        "X-API-Key": NOTAAS_KEY
    }

    resp = requests.post(ENDPOINT, json=payload, headers=headers, timeout=15)
    resp.raise_for_status()
    return resp.json()

🔔 Webhook: Recebendo DANFE PDF e XML da SEFAZ

Como a SEFAZ processa as requisições em lotes assíncronos, a Notaas dispara um evento de webhook assim que a autorização for confirmada (geralmente em 1 a 3 segundos).

Rota no Next.js App Router (app/api/webhooks/nfe/route.ts):

import { NextRequest, NextResponse } from "next/server";
import crypto from "crypto";

export async function POST(req: NextRequest) {
  const signature = req.headers.get("x-notaas-signature");
  const rawBody = await req.text();
  const secret = process.env.NOTAAS_WEBHOOK_SECRET!;

  // 1. Validar autenticidade HMAC SHA-256
  const computedHash = crypto
    .createHmac("sha256", secret)
    .update(rawBody)
    .digest("hex");

  if (!signature || !crypto.timingSafeEqual(Buffer.from(computedHash), Buffer.from(signature))) {
    return NextResponse.json({ error: "Assinatura inválida" }, { status: 401 });
  }

  const event = JSON.parse(rawBody);

  // 2. Tratar evento de NF-e autorizada pela SEFAZ
  if (event.event === "nfe.issued") {
    const { numero, chaveAcesso, pdfUrl, xmlUrl } = event.data;
    console.log(`✅ NF-e autorizada pela SEFAZ! Número: ${numero}`);
    console.log(`Chave de Acesso (44 dígitos): ${chaveAcesso}`);
    console.log(`DANFE PDF: ${pdfUrl}`);
    console.log(`XML Autorizado: ${xmlUrl}`);

    // Disparar e-mail com anexo ou atualizar status do pedido no ERP
  }

  return NextResponse.json({ received: true });
}

🏛️ A Reforma Tributária 2026 e a NF-e

A Reforma Tributária do Consumo (Emenda Constitucional 132/2023) altera profundamente a tributação de produtos a partir de 2026. O ICMS e o IPI darão lugar gradualmente ao IBS (estadual/municipal) e à CBS (federal), com o regime não cumulativo pleno ("crédito financeiro").

A Nota Técnica 2025.002 introduz campos opcionais para testes de segregação do IBS e CBS nos arquivos XML da NF-e modelo 55. Integrando via Notaas, sua infraestrutura de software já nasce preparada para a transição tributária, sem que você precise reescrever suas rotinas de faturamento quando a nova alíquota entrar em vigor.

Para quem também emite serviços, confira nosso Guia Definitivo da API NFS-e Nacional e o comparativo completo em Melhores APIs para Emissão Fiscal em 2026.


❓ Perguntas Frequentes (FAQ)

1. O plano gratuito da Notaas permite emitir NF-e em produção?

Sim! Você pode emitir até 50 notas fiscais por mês gratuitamente em ambiente de produção real com validade fiscal na SEFAZ. Além disso, o Sandbox é ilimitado para homologação técnica.

2. É possível emitir NFC-e (Nota de Consumidor) no plano gratuito?

Sim. O mesmo endpoint unificado /api/v1/emitir aceita o tipo "nfce". Para quem precisa emitir cupons fiscais em frentes de caixa de varejo, totens ou checkout rápido com QR Code v2 e contingência offline para a Black Friday, consulte o nosso Guia Completo da API NFC-e (Modelo 65).

3. O que é necessário para começar a emitir em produção?

Você precisará de:

  1. Uma conta na Notaas Platform.
  2. Certificado digital ICP-Brasil modelo A1 (.pfx ou .p12).
  3. Inscrição Estadual (IE) ativa e credenciamento na SEFAZ do seu estado para emissão em produção.

📚 Referências Oficiais & Guias Técnicos:


🚀 Comece a Emitir NF-e via API em Menos de 5 Minutos

Esqueça as dificuldades de conectar servidores SOAP à SEFAZ. Ganhe velocidade e estabilidade com a API fiscal mais moderna do país:

👉 Criar Conta Gratuita na Notaas (50 Notas/Mês Sem Cartão)
👉 Acessar a Documentação Técnica Oficial
👉 Guia para Desenvolvedores: Primeiros Passos com a Notaas

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.