Skip to main content

charge.paid

Disparado quando um pagamento PIX é confirmado.
{
  "event": "charge.paid",
  "data": {
    "id": "ch_flare_dc7dc11b7f984d2886d2b429",
    "object": "charge",
    "amount": 10.00,
    "amount_cents": 1000,
    "status": "paid",
    "description": "Pedido #1234",
    "customer": {
      "name": "João Silva",
      "email": "joao@email.com"
    },
    "paid_at": "2026-03-05T18:16:22.000Z",
    "created_at": "2026-03-05T18:14:48.552Z"
  }
}

charge.expired

Disparado quando uma cobrança expira sem ter sido paga.
{
  "event": "charge.expired",
  "data": {
    "id": "ch_flare_dc7dc11b7f984d2886d2b429",
    "object": "charge",
    "amount": 10.00,
    "status": "expired",
    "expires_at": "2026-03-05T19:14:48.549Z"
  }
}

charge.failed

Disparado quando há um erro no processamento de uma cobrança.
{
  "event": "charge.failed",
  "data": {
    "id": "ch_flare_dc7dc11b7f984d2886d2b429",
    "object": "charge",
    "amount": 10.00,
    "status": "failed"
  }
}

transfer.completed

Disparado quando um saque é processado com sucesso.
{
  "event": "transfer.completed",
  "data": {
    "id": "wd_flare_a1b2c3d4e5f6a7b8c9d0e1f2",
    "object": "withdrawal",
    "amount": 100.00,
    "fee": 1.90,
    "net_amount": 98.10,
    "status": "paid"
  }
}

transfer.failed

Disparado quando um saque falha.
{
  "event": "transfer.failed",
  "data": {
    "id": "wd_flare_a1b2c3d4e5f6a7b8c9d0e1f2",
    "object": "withdrawal",
    "amount": 100.00,
    "status": "failed",
    "error": "Chave PIX inválida"
  }
}

Handler Completo

Exemplo de como tratar todos os eventos em um único handler:
app.post('/webhooks/flare', express.json(), (req, res) => {
  res.json({ received: true });

  const { event, data } = req.body;

  switch (event) {
    case 'charge.paid':
      // Liberar produto/serviço
      liberarPedido(data.id, data.amount);
      break;

    case 'charge.expired':
      // Notificar cliente, cancelar reserva
      cancelarPedido(data.id);
      break;

    case 'charge.failed':
      // Log e notificação interna
      logFalha(data.id);
      break;

    case 'transfer.completed':
      // Confirmar saque no dashboard interno
      confirmarSaque(data.id, data.net_amount);
      break;

    case 'transfer.failed':
      // Notificar equipe financeira
      notificarFalhaSaque(data.id, data.error);
      break;

    default:
      console.log(`Evento desconhecido: ${event}`);
  }
});