Pagamentos

Eventos de cobrança e o corpo de cada um.

Eventos de cobrança#

EventoDisparado quando
payment.createdA cobrança é registrada.
payment.pendingA cobrança está aguardando o pagador.
payment.processingO processador começou a analisar.
payment.paidPagamento confirmado. É o evento que libera o pedido.
payment.failedA cobrança foi recusada.
payment.expiredO prazo terminou sem pagamento.
payment.canceledVocê cancelou a cobrança.
payment.refundedO valor total foi devolvido.
payment.partially_refundedParte do valor foi devolvida.
payment.chargebackO pagador contestou a compra.

Um evento decide o pedido

Libere produto ou serviço somente em payment.paid. Os demais eventos servem para atualizar a tela do cliente e o seu relatório.
payment.paid
{
  "event": "payment.paid",
  "sent_at": "2026-08-11T19:03:12Z",
  "data": {
    "id": "pay_3Kq8Zx91",
    "status": "paid",
    "method": "pix",
    "amount_centavos": 12990,
    "net_centavos": 12945,
    "platform_fee_centavos": 45,
    "installments": 1,
    "paid_at": "2026-08-11T19:03:11Z",
    "end_to_end_id": "E12345678202608111903...",
    "metadata": { "pedido": "8291" }
  }
}

Assinaturas recorrentes#

EventoDisparado quando
subscription.createdUma assinatura é criada.
subscription.renewedUm ciclo é cobrado com sucesso.
subscription.failedA cobrança do ciclo falhou.
subscription.canceledA assinatura é cancelada.

Cadastro da conta#

Se você opera subcontas ou revende, também recebe merchant.pending, merchant.approved e merchant.rejected conforme a análise de cada conta avança.

tratamento idempotente
async function processar(evento) {
  if (evento.event !== "payment.paid") return;

  const pedido = await Pedido.porPagamento(evento.data.id);
  if (!pedido || pedido.status === "pago") return; // já tratado

  await pedido.marcarPago({
    liquido: evento.data.net_centavos,
    pagoEm: evento.data.paid_at,
  });
}