Tema
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
- Hotmart → Ferramentas → Webhooks → Adicionar
- URL:
https://api.nferapido.com.br/webhooks/hotmart - Eventos:
PURCHASE_COMPLETE,PURCHASE_APPROVED,PURCHASE_REFUNDED - Copie o hottok gerado
- 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
- Hotmart dispara webhook com dados do comprador
- API valida
hottok - Busca empresa vinculada pelo email do produtor
- Monta payload NFS-e (tomador = comprador, serviço = nome do produto)
- Enfileira emissão
- Prefeitura autoriza (ABRASF ou NFS-e Nacional)
- E-mail automático ao comprador com XML+DANFSe
Em reembolso
- Webhook
PURCHASE_REFUNDED - API localiza NFS-e pelo
hotmart_transaction - 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.