Skip to content

Integração Hotmart

Emissão automática de NFS-e para vendas de infoprodutos (cursos, ebooks, mentorias).

Diferença dos marketplaces físicos

  • Shopify/Mercado Livre → NF-e de produto (mod. 55)
  • Hotmart/Eduzz/Kiwify → NFS-e de serviço (LC 116 item 1.05 ou 1.08)

1. Configurar webhook na Hotmart

  1. Hotmart → Ferramentas → Webhooks → Adicionar
  2. URL: https://api.nferapido.com.br/webhooks/hotmart
  3. Eventos: PURCHASE_COMPLETE, PURCHASE_APPROVED, PURCHASE_REFUNDED
  4. Copie o hottok gerado
  5. Cole no .env: HOTMART_HOTTOK=seu-hottok

2. Vincular produtor

http
PATCH /api/v1/empresas/{id}
json
{
  "hotmart_email_produtor": "voce@hotmart.com",
  "cod_servico_hotmart": "01.05",
  "cod_lc116_hotmart": "1.05",
  "serie_nfse": "RPS",
  "iss_aliquota": 0.02
}

3. Fluxo automático

Em compra aprovada

  1. Hotmart dispara webhook com dados do comprador
  2. API valida hottok
  3. Busca empresa vinculada pelo email do produtor
  4. Monta payload NFS-e (tomador = comprador, serviço = nome do produto)
  5. Enfileira emissão
  6. Prefeitura autoriza (ABRASF ou NFS-e Nacional)
  7. E-mail automático ao comprador com XML+DANFSe

Em reembolso

  1. Webhook PURCHASE_REFUNDED
  2. API localiza NFS-e pelo hotmart_transaction
  3. Dispara cancelamento automático com justificativa "Reembolso Hotmart"

4. Payload Hotmart esperado

Referência resumida do que a Hotmart envia:

json
{
  "event": "PURCHASE_COMPLETE",
  "data": {
    "producer": { "email": "voce@hotmart.com" },
    "buyer": {
      "name": "João Silva",
      "email": "joao@cliente.com",
      "document": "12345678909",
      "address": {
        "address": "Rua X", "number": "123",
        "district": "Centro",
        "city": "São Paulo", "state": "SP",
        "zipCode": "01310100"
      }
    },
    "product": { "name": "Curso de Marketing Digital" },
    "purchase": {
      "transaction": "HP123456789",
      "price": { "value": 297.00 },
      "order_date": "2026-04-20T15:00:00Z"
    }
  }
}

5. NFS-e Nacional automática

Se nfse_nacional_habilitado = true na empresa, a integração emite no padrão novo automaticamente. Em cidades onde a NFS-e Nacional ainda não é aceita, cai para o adapter municipal.

Múltiplos produtos

Se você tem vários infoprodutos com códigos de serviço diferentes:

json
{
  "codigo_servico_por_produto": {
    "Curso de Marketing": "01.08",
    "Mentoria 1:1": "01.05",
    "Ebook Gratuito": "01.07"
  }
}

A API usa o nome do produto como chave para escolher o código correto.

Emissão ilimitada em todos os planos.