Event reference

Every event spuke can send, with the payload shape.

Event reference

Checkout Sessions

Event When
checkout.session.completed Buyer completed payment successfully.
checkout.session.async_payment_succeeded Async method (SEPA, Klarna) cleared.
checkout.session.async_payment_pending Async payment awaiting clearing.
checkout.session.async_payment_failed Async payment failed after auth.
checkout.session.expired Session was not paid within its window.
checkout.session.canceled Merchant or buyer cancelled the session.

Payments & refunds

Event When
payment.succeeded Payment captured.
payment.failed Attempt failed.
charge.refunded Full or partial refund issued.

Disputes

Event When
charge.dispute.created Chargeback opened. Status: needs_response.
charge.dispute.updated Evidence uploaded or spuke changed status.
charge.dispute.closed Case closed. Payload includes outcome: won | lost | warning_closed.

Invoices

Event When
invoice.finalized Invoice sent to customer.
invoice.paid Customer paid.
invoice.payment_succeeded Renewal charge for a subscription succeeded.
invoice.payment_failed Payment attempt on the invoice failed. Advances dunning.
invoice.voided Merchant voided the invoice.

Subscriptions

Event When
customer.subscription.created Subscription created (usually incomplete until first payment).
customer.subscription.updated Status, price, quantity, or cancel_at_period_end changed.
customer.subscription.deleted Subscription ended (immediately or at period end).
customer.subscription.trial_will_end Fires 3 days before a trial ends.
customer.subscription.paused Collection was paused.
customer.subscription.resumed Collection resumed after a pause.

Dunning stages

When a renewal fails, spuke advances the subscription through three dunning stages before giving up. Each stage triggers invoice.payment_failed with a dunning_stage in metadata:

Stage Trigger Merchant action
notice 1st failure Notify the customer, update payment method.
warning 2nd failure Second reminder. Subscription becomes past_due.
final 3rd failure Final notice. Subscription moves to unpaid if retries are exhausted.

Payouts

Event When
payout.paid Bank payout landed.
payout.failed Bank payout was rejected — investigate bank details.

Sample payload

{
  "id": "evt_01H…",
  "object": "event",
  "type": "checkout.session.completed",
  "created": 1735689600,
  "livemode": true,
  "data": {
    "object": {
      "id": "cs_01H…",
      "object": "checkout.session",
      "amount": 4990,
      "currency": "eur",
      "status": "complete",
      "reference": "ORDER-12345",
      "customer_name": "Jane Doe",
      "customer_email": "jane@example.com",
      "payment_method": "card",
      "metadata": {}
    }
  }
}

The resource always lives at data.object — its shape mirrors the object created by the corresponding API endpoint.