Skip to main content

Overview

Eleven events cover quote-to-cash. The four quote events fire when a customer acts on a quote’s hosted page, or when the quote expires. The seven billing events come from the workspace’s own Stripe account as Stripe reports them, plus a daily check for overdue invoices. Every event carries recordId: the customer record the quote or invoice belongs to. A billing event Custral can’t link to one of the workspace’s customer records is not delivered. A quote being sent or voided starts workflows but delivers no webhook.

Quote events

string
required
The quote. Pass it to GET /v1/quotes/{id}.
string
The label a person reads, such as Q-0007.
string
viewed, accepted, declined or expired, matching the event.
string
required
The customer record the quote is for.
string
The quote’s hosted page.
string
Who the quote is addressed to.
string
Their email.
string
On quote.declined, what the customer wrote, if anything.

Invoice events

payment.succeeded, payment.failed and invoice.overdue share one shape. Amounts are in minor units (cents).

Subscription events

subscription.started, subscription.updated, subscription.canceled and trial.ending share one shape.
A field Stripe left empty (a customer name, say) is null rather than missing. daysOverdue, attemptCount and changedFields appear only on the events named above.

Listening with the SDK

Delivery is at-least-once, so make listeners idempotent. A billing event can arrive before or after the quote event that led to it; don’t depend on the order. See Bill from your product for the full flow.

The Quote object

Create, send and read quotes from your own code.

Billing

Read a customer’s subscriptions and invoices back.