payment resource. They are delivered in the
Standard-Webhooks envelope; the
fields below describe the data object.
Event (type) | Fires when |
|---|---|
checkout_link.payment.pending | A payment is created and awaiting confirmation |
checkout_link.payment.succeeded | A payment succeeds |
checkout_link.payment.failed | A payment fails |
checkout_link.payment.succeeded covers one-off purchases, initial subscription
payments, and renewals. Branch on billing_reason to tell them apart.
Payment resource
| Field | Type | Description |
|---|---|---|
object | string | Always "payment" |
id | string | Fanvue invoice number (e.g. FV-12345) |
status | string | pending | succeeded | failed |
billing_reason | string | one_time | subscription_initial | subscription_renewal |
gross | integer | Gross amount in minor units |
net | integer | null | Creator net after fees, in minor units |
fees | object | { fanvue_fee, transaction_fee } in minor units (each may be null) |
currency | string | null | ISO 4217 currency code |
paid_in_full | boolean | Whether the full amount has been collected (see BNPL installments) |
installment | object | null | { number, of } for a BNPL financed sale; null for a normal payment |
subscription | object | null | { uuid } when the payment is tied to a subscription |
client_reference_id | string | null | Your passthrough reference (see Attribution) |
transaction_id | string | null | Processor transaction id |
created_at | string | null | ISO 8601 creation time |
paid_at | string | null | ISO 8601 time the payment was paid (null until paid) |
checkout_link | object | { uuid, name, product_uuid, product_price_uuid } |
purchaser | object | { uuid, email } of the buyer (email may be null) |
creator | object | { uuid } of the creator |
metadata | object | Your passthrough metadata map |
BNPL installments
When a fan finances a purchase with Buy Now, Pay Later (BNPL), Fanvue is paid upfront, so the sale still arrives as a singlecheckout_link.payment.succeeded.
The only difference is that it is marked as a financed sale:
paid_in_fullisfalse, andinstallmentis{ "number": 1, "of": N }(the first ofNinstallments).
2..N) are financing movement, not
new Fanvue sales. Fanvue has already been paid. Those repayments arrive as
checkout_link.installment.paid / .failed events,
not as further payment.succeeded events, and the plan finishing emits
checkout_link.plan.completed.
For a normal (non-financed) payment, installment is null and paid_in_full
is true once collected.
Examples
checkout_link.payment.succeeded
checkout_link.payment.succeeded (BNPL financed sale)
The initial financed sale carries paid_in_full: false and
installment: { number: 1, of: N }. gross is the full sale amount; currency
is what the fan is charged (the processing currency). Repayments 2..N then
arrive as installment events.