Skip to main content

Quando dispara

  • Comprador conclui o confirm na hosted page (ou no seu frontend custom)
  • Cartão: aprovação síncrona, data.object.payment_status === "paid"
  • PIX/boleto: confirmação síncrona do formulário, data.object.payment_status === "unpaid" — pagamento real ainda vai chegar via async.payment.succeeded

Ação esperada

  • Cartão (payment_status: "paid") → marcar pedido como pago, liberar produto/serviço
  • PIX/boleto (payment_status: "unpaid") → marcar pedido como em-processamento. Não envie produto ainda. Espere o async.payment.succeeded
  • Em ambos: salvar data.object.customer (resolvido nesse momento) pra cruzamento futuro

Payload

{
  "id": "evt_8h3K2pQ9mN4tR7vL",
  "object": "event",
  "created_at": "2026-05-03T18:35:00Z",
  "data": {
    "object": {
      "id": "id_111",
      "object": "checkout.session",
      "allow_discount_codes": true,
      "amount_discount": 0,
      "amount_subtotal": 19990,
      "amount_tax": 0,
      "amount_total": 19990,
      "branding_settings": null,
      "cancel_url": null,
      "client_secret": "9f4c2a1b8e3d7f06a5c4b2e1d8f3a6b09c5e2a1f4b7d8c3e6a9f1d2c4b5e8a0f",
      "created_at": "2026-05-03T18:31:00Z",
      "currency": "brl",
      "customer": "id_555",
      "customer_document": "123.456.789-00",
      "customer_document_type": "cpf",
      "customer_email": "nome@email.com",
      "customer_name": "Cliente",
      "discount": null,
      "expires_at": "2026-05-04T18:31:00Z",
      "invoice_creation": false,
      "line_items": [],
      "livemode": true,
      "metadata": {
        "order_id": "ord_123"
      },
      "mode": "payment",
      "payment_data": {
        "installments": 3,
        "payment_method": "credit_card",
        "status": "succeeded"
      },
      "payment_method_options": {
        "credit_card": {
          "installments": {
            "has_interest": true,
            "max_count": 12
          }
        }
      },
      "payment_method_types": ["credit_card", "pix", "boleto"],
      "payment_status": "paid",
      "require_billing_address": false,
      "require_document": true,
      "require_phone": false,
      "status": "complete",
      "submit_type": "auto",
      "subscription": null,
      "success_url": "https://meusite.com/sucesso",
      "template": null,
      "url": "https://pay.chargefy.io/session/..."
    }
  },
  "livemode": true,
  "organization": "org_123",
  "request": {
    "id": null
  },
  "type": "checkout.session.completed"
}
data.object.payment_data traz os campos do método (PIX QR, boleto barcode, ou parcelas do cartão). Veja POST .../confirm pra cada variante.