Skip to main content
creator.payment.succeeded fires when an on-platform payment to the creator settles: a paid post, a locked (PPV) message, a media purchase, a tip, or a profile-subscription charge. It is the successor to the legacy purchase.new and tip.new events, carrying the full money breakdown in one payload. creator.reward.created and creator.reward.reversed report a different kind of earning, affiliate and referral commission, and use their own resource. See Reward resource. All three require the read:creator scope. Delivered in the Standard-Webhooks envelope; the fields below describe the data object.
Subscription money arrives here too. A profile subscription’s initial charge and every renewal fire creator.payment.succeeded with source: "subscription" and billing_reason subscription_initial / subscription_renewal, alongside the access-state event on creator.subscription.*. Join the two with subscription.id.Checkout-link sales are a separate surface and fire checkout_link.payment.succeeded instead.
creator.payment.pending and creator.payment.failed are reserved names. No Fanvue code path emits them today, and they cannot be subscribed to, do not build against them.

Payment resource

Attribution

Unlike the checkout-link surface, creator.payment.succeeded does not carry your passthrough attribution: client_reference_id is always null, metadata is always {}, and transaction_id is always null. The keys are present for shape parity only. Attribution that was captured at signup survives on the subscription events, which do echo real values.

Purchaser

handle and display_name are omitted from the payload rather than sent as null, so treat an absent key as “not resolved”.

Tracking

tracking is null when the buyer carries neither a tracking parameter nor an impression on one of this creator’s links. When present: Because link_url is last-touch across the whole platform while metadata is creator-scoped, the two can legitimately disagree, a fan who arrived through creator A’s link and later buys from creator B reports A’s link here.

Example: creator.payment.succeeded (paid message)

Example: creator.payment.succeeded (subscription renewal)

The renewal charge for a profile subscription. subscription.id is the subscription’s initial-payment invoice number, the same token creator.subscription.renewed carries as its id.

Example: creator.payment.succeeded (tip on a post)

A tip sent on a post carries post_uuid and tip_context: "post". A tip sent anywhere else reports tip_context: "message" with post_uuid: null, Fanvue does not record which surface a fan tipped from, so message here means “not on a post” and is not evidence of a chat origin.
message_uuid is not a way to tell a chat tip from a post tip. Every paid tip writes a TIP chat message into the thread, but that write happens after this event’s invoice snapshot is taken, so message_uuid is absent here even though GET /insights/earnings reports it for the same transaction. Use tip_context and post_uuid.

Reward resource

Used by creator.reward.created and creator.reward.reversed. These are account-level affiliate and referral earnings, not a sale to the creator’s own fans, so there is no purchaser.
  • creator.reward.created fires when a commission invoice is generated for the earner, a referral commission for a referrer, or an affiliate commission for an affiliate-link owner.
  • creator.reward.reversed fires when that commission is clawed back because the underlying sale was refunded or charged back. It carries the same id.

Example: creator.reward.created

creator.reward.reversed uses the identical shape with "type": "creator.reward.reversed" and the same id as the original creator.reward.created.