Automação

Como Automatizar NFS-e de MEI no Stripe, Asaas, Kiwify, Hotmart e WooCommerce via Webhook (Sem Comprar Certificado A1)

Tutorial prático com código em Node.js/TypeScript para automatizar a emissão de NFS-e de MEI e Simples Nacional após vendas no Stripe, Asaas, Kiwify, Hotmart e WooCommerce usando webhooks e Procuração Eletrônica RFB (00233) sem arquivo .pfx.

Fábio Magalhães CostaAtualizado em 09/11/2026
Fluxo de automação de NFS-e para MEI e prestadores de serviço conectando webhooks de pagamento (Stripe, Asaas, Kiwify, Hotmart) à API da Notaas sem exigir certificado A1 próprio

Fluxo de automação de NFS-e para MEI e prestadores de serviço conectando webhooks de pagamento (Stripe, Asaas, Kiwify, Hotmart) à API da Notaas sem exigir certificado A1 próprio

Se você pesquisar hoje no Google "como automatizar emissão de nota fiscal MEI no Stripe, Asaas, Kiwify, Hotmart ou WooCommerce sem certificado digital", quase todos os artigos que aparecem na primeira página dirão que isso é impossível — e que a sua única saída sem comprar um Certificado Digital A1 (.pfx) é exportar planilhas de vendas toda sexta-feira e digitar nota por nota manualmente no Portal Nacional da NFS-e (nfse.gov.br).

Até outubro de 2026, essa limitação era verdadeira: a API governamental da Sefin Nacional exigia estritamente que o certificado digital da conexão mTLS pertencesse ao próprio CNPJ do MEI.

Mas em 1º de novembro de 2026, a Receita Federal e a Sefin Nacional viraram essa chave ao liberar oficialmente a emissão de NFS-e Nacional via API por Procuração Eletrônica (Serviço Cód. 00233).

Neste guia prático, vou te mostrar como combinar a Procuração Eletrônica gratuita no gov.br com um listener de Webhook em Node.js / Next.js conectado à Notaas para emitir NFS-e automaticamente a cada venda aprovada no Stripe, Asaas, Kiwify, Hotmart ou WooCommerce — sem comprar arquivo .pfx e sem digitar uma única nota na mão.

Pela Resolução CGSN nº 169/2022, 100% dos MEIs do Brasil emitem obrigatoriamente pelo motor do Ambiente Nacional (snnfse). Isso significa que qualquer MEI de qualquer cidade brasileira pode automatizar suas notas via API usando a Procuração Eletrônica 00233.


1. Como Funciona a Arquitetura "Zero .pfx" para Automações de Vendas

Em vez de comprar um e-CNPJ A1 para o seu MEI (ou cobrar o .pfx de cada infoprodutor/prestador na sua plataforma), o fluxo completo leva menos de 3 minutos para ser configurado:

⚡ Fluxo de Emissão Automática Pós-Pagamento (Webhook ➔ Notaas ➔ Sefin Nacional):

  • 1. Autorização Gratuita no gov.br (1 única vez): O titular do MEI acessa servicos.receitafederal.gov.br com sua conta gov.br (Prata ou Ouro), entra em Procurações → Minhas Autorizações de Acesso → + Nova Autorização e autoriza o CNPJ institucional da Notaas / We Digi Tecnologia Ltda (03.167.121/0001-10) (ou o CNPJ da sua contabilidade/plataforma) no serviço 00233 - NFS-e.
  • 2. Ativação do Modo Procuração na Notaas: No painel da Notaas em /certificates (ou via POST /api/v1/org/certificate com {"useWedigiProxy": true} a partir do Plano Dev), você ativa a assinatura institucional para o seu projeto.
  • 3. Gatilho de Pagamento Confirmado: Quando o cliente paga no Stripe (invoice.paid / checkout.session.completed), Asaas (PAYMENT_CONFIRMED / PAYMENT_RECEIVED), Kiwify (order_approved), Hotmart (PURCHASE_COMPLETE) ou WooCommerce (order.completed), seu endpoint recebe o webhook da plataforma de pagamento.
  • 4. Disparo Idempotente na Notaas (POST /api/v1/emitir): Seu webhook envia um JSON simples passando o ID da transação como externalId (garantindo que nunca seja emitida nota duplicada mesmo que o gateway reenvie o evento). A Notaas assina a DPS com o certificado de procurador, autoriza na Sefin Nacional e gera o PDF do DANFSe v2.0 localmente.

2. Código Prático em TypeScript (Next.js App Router): Receptor de Webhooks (Stripe, Asaas, Kiwify / Hotmart)

Veja como implementar uma rota unificada (app/api/webhooks/pagamento/route.ts) que recebe a confirmação de pagamento, extrai os dados do comprador e dispara a emissão da NFS-e na Notaas com idempotência nativa (externalId):

import { NextResponse } from "next/server";

const NOTAAS_API_KEY = process.env.NOTAAS_API_KEY!; // ntaas_live_...
const NOTAAS_URL = "https://platform.notaas.com.br/api/v1/emitir";

interface DadosVendaNormalizados {
  transacaoId: string;
  documentoCliente: string; // CPF (11 dígitos) ou CNPJ (14 dígitos)
  nomeCliente: string;
  emailCliente?: string;
  cep?: string;
  logradouro?: string;
  numero?: string;
  bairro?: string;
  codigoMunicipio?: string;
  uf?: string;
  valorPago: number;
  descricaoServico: string;
}

export async function emitirNfseAutomaticaMei(venda: DadosVendaNormalizados) {
  const docLimpo = venda.documentoCliente.replace(/\D/g, "");
  const isCnpj = docLimpo.length === 14;

  const payload = {
    externalId: `venda-${venda.transacaoId}`, // Blinda contra duplicidade em retries do gateway
    tomador: {
      ...(isCnpj ? { cnpj: docLimpo } : { cpf: docLimpo }),
      razaoSocial: venda.nomeCliente,
      email: venda.emailCliente,
      ...(venda.cep && venda.codigoMunicipio
        ? {
            endereco: {
              cep: venda.cep.replace(/\D/g, ""),
              logradouro: venda.logradouro || "Nao informado",
              numero: venda.numero || "S/N",
              bairro: venda.bairro || "Centro",
              codigoMunicipio: venda.codigoMunicipio,
              uf: venda.uf || "SP",
            },
          }
        : {}),
    },
    servico: {
      // Exemplo: 010701 (Suporte técnico/SaaS) ou 080201 (Instrução, treinamento e cursos)
      codigoTributacaoNacional: "080201",
      discriminacao: `${venda.descricaoServico} | Pedido #${venda.transacaoId}`,
      valorServicos: venda.valorPago,
    },
  };

  const response = await fetch(NOTAAS_URL, {
    method: "POST",
    headers: {
      "x-api-key": NOTAAS_API_KEY,
      "Content-Type": "application/json",
    },
    body: JSON.stringify(payload),
  });

  if (!response.ok) {
    const errorText = await response.text();
    throw new Error(`Erro ao enfileirar NFS-e na Notaas: ${errorText}`);
  }

  return await response.json();
}

Mapeando os Eventos de Cada Plataforma de Pagamento

Ao conectar seu checkout, fique atento ao evento exato em que você deve disparar a nota (especialmente em infoprodutos com prazo de garantia de 7 dias):

Plataforma / Gateway Evento de Webhook Recomendado Campo para externalId Dica de Operação Fiscal (MEI e Simples)
Asaas PAYMENT_CONFIRMED ou PAYMENT_RECEIVED payment.id (pay_...) Excelente para cobranças PIX/Boleto recorrentes; o payload já traz o cpfCnpj do cliente validado.
Stripe invoice.paid ou checkout.session.completed data.object.id (in_... / cs_...) Ative tax_id_collection: { enabled: true } ou um custom_field de CPF/CNPJ no Stripe Checkout para capturar o documento do tomador brasileiro.
Kiwify / Hotmart order_approved / PURCHASE_OUT_OF_SHOPPING_CART (ou pós-garantia) order_id / transaction Se você oferece garantia incondicional de 7 dias, pode agendar o disparo para D+7 na sua fila ou emitir na aprovação e cancelar via POST /api/v1/invoices/{id}/cancel caso ocorra reembolso dentro do prazo.
WooCommerce order.completed (ou order.processing) id do pedido (wc_order_...) Utilize o plugin Brazilian Market on WooCommerce para ter os meta fields _billing_cpf e _billing_cnpj estruturados no JSON do webhook.

3. Como Receber o PDF do DANFSe v2.0 e Enviar ao Cliente por E-mail ou WhatsApp

Assim que a Sefin Nacional autoriza a DPS (geralmente em menos de 2 segundos), a Notaas gera localmente o PDF oficial do DANFSe v2.0 no layout da NT-008 e dispara um webhook assinado com X-Notaas-Signature (HMAC SHA-256) para o seu backend com o evento invoice.issued:

{
  "event": "invoice.issued",
  "data": {
    "id": "inv_987654321",
    "externalId": "venda-pay_01928374",
    "status": "issued",
    "numero": "42",
    "chaveAcesso": "355030822...",
    "xmlUrl": "https://platform.notaas.com.br/api/v1/invoices/inv_987654321/xml",
    "pdfUrl": "https://platform.notaas.com.br/api/v1/invoices/inv_987654321/pdf"
  }
}

Com o pdfUrl em mãos, seu sistema pode anexar a nota fiscal automaticamente no e-mail de boas-vindas do aluno/cliente ou enviá-la direto no WhatsApp! E se você usa ferramentas de desenvolvimento assistido por IA como Cursor, Lovable ou Claude Code, pode usar nosso guia de Vibe Coding Fiscal ou o Notaas MCP Server (@notaas/mcp) para gerar toda essa integração em minutos.


📚 Guias Relacionados para Aprofundamento:


🚀 Automatize as Notas Fiscais das Suas Vendas Hoje

Pare de perder horas preenchendo notas fiscais manualmente após cada venda:

  • Procuração Eletrônica RFB (00233) inclusa nos planos Dev (R$ 99/mês para até 3 CNPJs) e SaaS Pro (R$ 249/mês para CNPJs ilimitados)
  • Ou comece no Plano Gratuito (R$ 0/mês com 20 notas grátis/mês em produção) caso já possua Certificado A1 próprio

👉 Criar Conta na Notaas Platform e Automatizar Agora
👉 Consultar a Documentação de Endpoints e Webhooks

Notaas — Infraestrutura Fiscal Multi-Tenant para SaaS, ERPs e BPOs

Escale a emissão de NFS-e, NF-e, NFC-e, CT-e e MDF-e para dezenas de CNPJs

Integre a API de Nota Fiscal da Notaas no seu software: provisione clientes via Org API Multi-CNPJ, isole certificados A1 em nuvem, receba webhooks assinados com HMAC e gere DANFSe v2.0 local. Sandbox ilimitado e planos sob medida para operações em escala.

Artigos Relacionados em Automação

Guias Pilares de Integração Fiscal