<< docs .criar conta

[docs] webhooks

Webhooks

A s6xpay avisa o seu sistema quando o QR PIX é gerado, quando o pagamento confirma, quando o saque liquida e quando um reembolso conclui.

[api rest][webhooks][mcp]

Configuração

Configure em Configurações da API → webhook_url

Assinatura

ItemValor
algorithmHMAC-SHA256
headerX-Webhook-Signature
secret_sourcewebhook_secret da API credential
validar assinatura · php
$signature = $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'];
$payload = file_get_contents('php://input');
$expected = hash_hmac('sha256', $payload, $webhookSecret);

if (!hash_equals($expected, $signature)) {
    http_response_code(401);
    exit('Invalid signature');
}

Eventos

EventoQuando
payment.receivedQR PIX gerado — aguardando pagamento (cash-in)
payment.confirmedPagamento PIX confirmado (cash-in)
payment.expiredQR Code expirou sem pagamento
withdrawal.processingSaque PIX aceito e em processamento
withdrawal.completedSaque PIX (cash-out) liquidado
card.payment.confirmedPagamento com cartão confirmado (cobrança única ou 1ª parcela assinatura)
card.payment.failedPagamento com cartão recusado/falhou (inclui 1ª parcela assinatura)
subscription.authorizedAssinatura cartão ativada (após 1ª cobrança OK)
subscription.installment.paidRenovação cartão paga (mês 2+); is_renewal true
subscription.installment.rejectedRenovação cartão falhou (cartão recusado, etc.)
subscription.installment.retry_requestedNova tentativa de cobrança da renovação agendada
subscription.canceledAssinatura cartão cancelada ou encerrada
chargeback.createdChargeback/disputa de cartão aberta
chargeback.closedChargeback/disputa encerrada (ganha ou perdida)

Exemplos de payload

Payload — payment.confirmed · json
{
  "event": "payment.confirmed",
  "transaction_id": "API-1-1704654321-xYz12AbC",
  "type": "cash_in",
  "status": "paid",
  "amount": 99.90,
  "fee": 3.99,
  "net_amount": 95.91,
  "customer": {
    "name": "João Silva",
    "email": "joao@email.com",
    "document": "12345678900"
  },
  "pix_data": {
    "end2end_id": "E12345678202501071055..."
  },
  "metadata": {
    "order_id": "123",
    "product": "Curso Online"
  },
  "paid_at": "2026-01-07T11:00:15.000000Z",
  "created_at": "2026-01-07T10:55:21.000000Z"
}
Payload — withdrawal.completed · json
{
  "event": "withdrawal.completed",
  "transaction_id": "a2f5aeca7762c4b1fbd65ef0f0ee6014",
  "withdrawal_id": "a2f5aeca7762c4b1fbd65ef0f0ee6014",
  "external_id": "WITHDRAW-707-1780261199",
  "status": "completed",
  "amount": 22.69,
  "updated_at": "2026-05-31T18:00:32-03:00",
  "pix_data": {
    "end2end_id": "E29477089202602270626111199e7408",
    "recipient_name": "NOME SOBRENOME"
  }
}
Payload — card.payment.confirmed · json
{
  "event": "card.payment.confirmed",
  "transaction_id": "API-1-1704654321-xYz12AbC",
  "type": "cash_in",
  "status": "paid",
  "payment_method": "card",
  "amount": 149.90,
  "net_amount": 142.41,
  "customer": {
    "name": "João Silva",
    "email": "joao@email.com",
    "document": "12345678900"
  },
  "metadata": { "order_reference": "PEDIDO-456" },
  "paid_at": "2026-01-07T11:00:15.000000Z",
  "created_at": "2026-01-07T10:55:21.000000Z"
}
Payload — chargeback.created · json
{
  "event": "chargeback.created",
  "transaction_id": "API-1-1704654321-xYz12AbC",
  "type": "cash_in",
  "status": "paid",
  "payment_method": "card",
  "amount": 149.90,
  "customer": { "name": "...", "email": "...", "document": "..." },
  "metadata": { },
  "created_at": "..."
}