Skip to main content
When a fan pays for a checkout sale with Buy Now, Pay Later (BNPL), Fanvue is paid the full amount upfront by the BNPL provider. The fan then repays the BNPL provider over N installments. These events track that repayment schedule. They are delivered in the Standard-Webhooks envelope; the fields below describe the data object.
BNPL is currently powered by Splitit.
Event (type)ResourceFires when
checkout_link.installment.paidinstallmentA BNPL repayment (installment 2..N) is collected
checkout_link.installment.failedinstallmentA BNPL repayment attempt fails
checkout_link.plan.completedplanA BNPL plan is fully paid off
A fan repaying an installment is financing movement, not a new Fanvue sale. Fanvue has already been paid in full at checkout. The initial financed sale arrives as a normal checkout_link.payment.succeeded with paid_in_full: false and installment: { number: 1, of: N }. Installments 2..N then arrive as checkout_link.installment.paid, so do not count them as additional revenue.

Currency

Amounts are integers in the minor units of the resource’s currency (ISO 4217). For BNPL, the processing currency is the currency the fan is charged; the BNPL provider settles to Fanvue in USD. Reconcile installment amounts in the fan’s processing currency, not in the creator’s payout currency.

Installment resource

Shared by checkout_link.installment.paid and checkout_link.installment.failed.
FieldTypeDescription
objectstringAlways "installment"
idstringInstallment id
statusstringpaid | failed
reasonstring | nullOn failed: charge_failed | retry_failed | delayed; null when paid
installment_numberintegerWhich installment this is (2..N)
number_of_installmentsintegerTotal installments in the plan (N)
amountintegerThis installment’s amount in minor units
currencystring | nullISO 4217 currency code (the fan’s processing currency)
outstanding_amountinteger | nullAmount still outstanding on the plan after this installment, in minor units
process_datestring | nullISO 8601 date the installment was (or was to be) processed
plan_idstringId of the parent BNPL plan
payment_idstringInvoice number of the original financed payment
checkout_linkobject{ uuid, name, product_uuid, product_price_uuid }
purchaserobject{ uuid, email } of the fan (email may be null)
creatorobject{ uuid } of the creator
metadataobjectYour passthrough metadata map
reason tells the three failure paths apart on checkout_link.installment.failed: charge_failed (the scheduled charge was declined), retry_failed (a retry of a previously failed charge was declined), and delayed (the charge was deferred rather than declined outright).
{
  "id": "f1a2b3c4-aaaa-4a2b-9c3d-aaaaaaaaaaaa",
  "type": "checkout_link.installment.paid",
  "timestamp": "2026-07-09T08:39:33.139Z",
  "data": {
    "object": "installment",
    "id": "inst_2",
    "status": "paid",
    "reason": null,
    "installment_number": 2,
    "number_of_installments": 3,
    "amount": 10000,
    "currency": "EUR",
    "outstanding_amount": 10000,
    "process_date": "2026-07-09T08:39:33.000Z",
    "plan_id": "plan_abc",
    "payment_id": "FV-12350",
    "checkout_link": {
      "uuid": "ck-uuid",
      "name": "Premium Bundle",
      "product_uuid": "prod-uuid",
      "product_price_uuid": "pp-uuid"
    },
    "purchaser": { "uuid": "fan-uuid", "email": "fan@example.com" },
    "creator": { "uuid": "creator-uuid" },
    "metadata": { "affiliate_id": "aff_123", "campaign": "spring" }
  }
}
{
  "id": "f1a2b3c4-bbbb-4a2b-9c3d-aaaaaaaaaaaa",
  "type": "checkout_link.installment.failed",
  "timestamp": "2026-08-09T08:39:33.139Z",
  "data": {
    "object": "installment",
    "id": "inst_3",
    "status": "failed",
    "reason": "charge_failed",
    "installment_number": 3,
    "number_of_installments": 3,
    "amount": 10000,
    "currency": "EUR",
    "outstanding_amount": 10000,
    "process_date": "2026-08-09T08:39:33.000Z",
    "plan_id": "plan_abc",
    "payment_id": "FV-12350",
    "checkout_link": {
      "uuid": "ck-uuid",
      "name": "Premium Bundle",
      "product_uuid": "prod-uuid",
      "product_price_uuid": "pp-uuid"
    },
    "purchaser": { "uuid": "fan-uuid", "email": "fan@example.com" },
    "creator": { "uuid": "creator-uuid" },
    "metadata": { "affiliate_id": "aff_123", "campaign": "spring" }
  }
}

Plan resource

checkout_link.plan.completed fires once, when the final installment of a BNPL plan is collected and the plan is fully paid off.
FieldTypeDescription
objectstringAlways "plan"
idstringBNPL plan id
statusstringAlways "completed"
number_of_installmentsintegerTotal installments in the plan (N)
total_amountintegerTotal financed amount in minor units
currencystring | nullISO 4217 currency code (the fan’s processing currency)
payment_idstringInvoice number of the original financed payment
checkout_linkobject{ uuid, name, product_uuid, product_price_uuid }
purchaserobject{ uuid, email } of the fan (email may be null)
creatorobject{ uuid } of the creator
metadataobjectYour passthrough metadata map
{
  "id": "f1a2b3c4-cccc-4a2b-9c3d-aaaaaaaaaaaa",
  "type": "checkout_link.plan.completed",
  "timestamp": "2026-09-09T08:39:33.139Z",
  "data": {
    "object": "plan",
    "id": "plan_abc",
    "status": "completed",
    "number_of_installments": 3,
    "total_amount": 30000,
    "currency": "EUR",
    "payment_id": "FV-12350",
    "checkout_link": {
      "uuid": "ck-uuid",
      "name": "Premium Bundle",
      "product_uuid": "prod-uuid",
      "product_price_uuid": "pp-uuid"
    },
    "purchaser": { "uuid": "fan-uuid", "email": "fan@example.com" },
    "creator": { "uuid": "creator-uuid" },
    "metadata": { "affiliate_id": "aff_123", "campaign": "spring" }
  }
}