Documentação

Receitas

Cashback na sua própria tela

Puxar o saldo de cashback e resgatar para o saldo do jogador pelo seu servidor.

O clube calcula o cashback (perda líquida do dia × % da faixa) a partir dos eventos bet.placed e bet.settled. Você desenha o botão e o valor do seu jeito e usa o modo servidor para ler e resgatar.

1. Configure no Studio

Gamificação › Cashback: ligue, defina as faixas e escolha o modo Resgate (o jogador resgata quando quiser, até N dias). No modo Automático o clube paga sozinho no horário configurado e o resgate responde 409 auto_mode.

2. Mostre o saldo

Seu backend (Node)
const API = "https://api.iclubing.com";
const headers = (userId) => ({
  Authorization: `Bearer ${process.env.ICLUBING_KEY}`,
  "X-Participant": userId,
});

app.get("/minha-api/cashback", async (req, res) => {
  const r = await fetch(`${API}/v1/me/cashback`, { headers: headers(req.user.id) });
  if (r.status === 404) return res.json({ ligado: false });
  const c = await r.json();
  res.json({
    ligado: c.enabled,
    disponivel: c.available,          // R$ pronto para resgatar
    acumulandoHoje: c.today.amount,   // R$ que o dia de hoje está gerando
    percentual: c.today.pct,
    proximoDia: c.nextDayAt,
    recebidoNoMes: c.monthReceived,
  });
});
Campo de GET /v1/me/cashbackSignificado
enabled, modeLigado; claim (resgate) ou auto.
availableTotal pronto para resgatar (R$).
availableDays[]dayKey, amount, pct, loss de cada dia fechado não resgatado.
todayamount, loss, pct, band: o que o dia de hoje está acumulando.
pctRangeMenor e maior % das faixas.
nextDayAt, claimDays, autoHourQuando o dia fecha, quantos dias o valor fica disponível, hora do pagamento automático.
monthReceivedTotal recebido no mês.

3. Resgate para o saldo

js
app.post("/minha-api/cashback/resgatar", async (req, res) => {
  const r = await fetch(`${API}/v1/me/cashback/claim`, {
    method: "POST",
    headers: headers(req.user.id),
  });
  if (r.status === 409) return res.status(409).json({ erro: "Nada para resgatar agora." });
  const { claimed, deliveries } = await r.json();

  // Uma entrega por dia pago: credite cada uma UMA vez (idempotente pelo delivery_id)
  for (const d of deliveries) {
    await carteira.creditar(req.user.id, d.amount, { ref: d.delivery_id });
    await fetch(`${API}/v1/deliveries/${d.delivery_id}/confirm`, {
      method: "POST",
      headers: { ...headers(req.user.id), "Content-Type": "application/json" },
      body: JSON.stringify({ external_ref: d.delivery_id }),
    });
  }
  res.json({ creditado: claimed });
});

Cada dia paga uma vez só: resgatar de novo responde 409 nothing_to_claim. Com o cashback desligado: 404 disabled.