Checkout webhooks use a different payload shape from the platform event webhooks (New Follower, Purchase Received, etc.). They wrap a resource object in a Standard-Webhooks envelope. See Event envelope. The platform event webhooks keep their original flat payloads.
One subscription, both webhook families
Checkout webhooks and the platform event webhooks (follow.new, message.*, purchase.new, subscription.*, tip.new) are delivered over the same creator-tenant subscription. There is no separate receiver to configure for each family.
Which events actually reach you depends on how you subscribed (see Configuring checkout webhooks):
- Zapier: each Zap subscribes to a single trigger, so add one Zap per event you want to act on.
- API or app: you choose exactly which events to subscribe to, so to receive both families include the platform event types and the
checkout_link.*/payout.paidtypes. A subscription only delivers the events it was created with, so one set up for platform events alone won’t start sending checkout events until you add them.
Two entry points, depending on who you are. App builders add an endpoint and tick the events (including the Checkout links group) in the App Store Events tab; see Webhooks Overview. Creators and no-code integrators use Configure webhooks in the dashboard (Zapier or the connector API), see Configuring checkout webhooks. Both authorize with
read:creator and deliver the same events to the creator’s tenant.type (and, for checkout events, on data.object) to route each delivery to the right handler.
Next steps:
- Configuring checkout webhooks: set up a receiver via Zapier or the API, and verify signatures.
- Attribution: attach your own
client_reference_idandmetadatato every event.
Amounts and currency
All monetary amounts are integers in the currency’s minor units (for USD, cents, so9999 means $99.99). Each resource carries its own currency (ISO 4217), which may be null when not yet known.
For Buy Now, Pay Later (BNPL) sales, the processing currency is the currency the fan is charged; the BNPL provider settles to Fanvue in USD. See BNPL installments.
Event envelope
Every checkout webhook is delivered as an HTTPPOST with this envelope:
id: unique event id, stable across delivery retries (use it to dedupe). Also delivered as the Standard-Webhookswebhook-id. Everycheckout_link.*andpayout.*event carries a per-event id, so it is safe as an idempotency key, see Delivery, Retries and Idempotency.type: the event name (one of the topics in Available events).timestamp: ISO 8601 time the event was emitted.data: the resource object.data.objecttells you the resource type (payment,subscription,refund,dispute,installment,plan,payout).
data are snake_case.
Available events
All checkout events require theread:creator OAuth scope. Each group below links to a reference page with full field definitions and example payloads.
Payments (reference)
checkout_link.payment.pending: a checkout payment is awaiting confirmationcheckout_link.payment.succeeded: a checkout payment succeeds (one-off, initial subscription, or renewal)checkout_link.payment.failed: a checkout payment fails
Subscriptions (reference)
A subscription is a fan’s active, recurring access to a product sold through a checkout link.checkout_link.subscription.activated: a subscription becomes activecheckout_link.subscription.deactivated: a subscription ends (expired or otherwise deactivated)checkout_link.subscription.cancel_at_period_end_changed: auto-renew is turned off or back on
Refunds and disputes (reference)
checkout_link.refund.created: a checkout payment is refundedcheckout_link.dispute.flagged: an early chargeback warning, before a formal disputecheckout_link.dispute.created: a formal dispute (chargeback) is opened
BNPL installments (reference)
Repayments on a Buy Now, Pay Later (BNPL) financed sale are financing movement, not new sales (see BNPL financing).checkout_link.installment.paid: a BNPL repayment (installment2..N) is collectedcheckout_link.installment.failed: a BNPL repayment attempt failscheckout_link.plan.completed: a BNPL plan is fully paid off
Payouts (reference)
payout.paid: a creator payout is paid out (creator-level, not link-scoped)
BNPL financing
BNPL is currently powered by Splitit.
- The sale is a normal
checkout_link.payment.succeededwithpaid_in_full: falseandinstallment: { number: 1, of: N }. - The later repayments (installments
2..N) arrive ascheckout_link.installment.paid(or.failed), not as newpayment.succeededevents. - When the plan is fully repaid you receive
checkout_link.plan.completed.