Choosing Webhook Events
Flint can emit several events from one business flow. A successful invoice payment for a subscription might create:
payment_intent.succeededorder.payment_succeededinvoice.paidsubscription.payment_succeededbalance_transaction.created
That is intentional. Each event describes the same flow at a different level of the product model. Subscribe to the event closest to the job your system owns.
Payment Reconciliation#
Use payment intent and money movement events when your system needs payment-rail state or ledger reconciliation.
Good fits:
payment_intent.succeededpayment_intent.payment_failedpayment_intent.requires_actionbalance_transaction.createdbalance_transaction.updated
Fetch the payment intent or balance transaction before posting irreversible ledger entries if you receive an older delivery after a newer one.
Order Fulfillment#
Use order events when your system ships goods, commits inventory, starts service delivery, or mirrors an OMS.
Good fits:
order.createdorder.updatedorder.closedorder.payment_succeededorder.inventory_exception.createdorder.inventory_exception.resolvedorder.reconciliation_exception.createdorder.fulfillment.status_changed
Use resource_updated_at to discard stale order mirror updates. Payment-driven order money changes have dedicated order payment events; generic order.updated is for material order edits. Fetch the order when you need the full current shape before taking an irreversible action.
Invoicing, AR, And Dunning#
Use invoice events when your system owns accounts receivable, invoice sync, or collection follow-up.
Good fits:
invoice.createdinvoice.openedinvoice.updatedinvoice.payment_failedinvoice.payment_attempt_canceledinvoice.payment_attempt_expiredinvoice.collection_blockedinvoice.collection_block_resolvedinvoice.paidinvoice.voided
invoice.sent is an email delivery signal. Use invoice.opened when you need to know that an invoice is collectible.
Subscription Entitlements#
Use subscription events when your system grants, suspends, or removes recurring entitlements.
Good fits:
subscription.createdsubscription.activatedsubscription.payment_succeededsubscription.payment_failedsubscription.past_duesubscription.pausedsubscription.resumedsubscription.canceled
Prefer subscription events over invoice or payment intent events when the action is about access to a recurring product.
Saved Billing Credentials#
Use payment method events when your system manages saved cards or off-session billing readiness.
Good fits:
payment_method.savedpayment_method.failedpayment_method.removed
payment_method.failed means an asynchronous setup flow failed and the saved method did not become usable.
Platform Merchant Readiness#
Use merchant readiness and capability events when your platform needs to know whether a managed merchant can accept payments, receive payouts, or complete onboarding requirements.
Good fits:
merchant.readiness.updatedcapability.updated
merchant.readiness.updated is the broader platform-facing signal. It uses Flint readiness vocabulary for payments, payouts, and onboarding requirements. Do not depend on processor-shaped booleans.
Checkout Recovery And Cart Cleanup#
Use checkout session events when your system manages hosted checkout links, cart recovery, or pending reservations.
Good fits:
checkout_session.completedcheckout_session.closedcheckout_session.expiredcheckout_session.invalidated
An invalidated session can mean the buyer is actively using a newer checkout session. Check reason and superseding_checkout_session_id before treating it as abandonment.
When In Doubt#
Use the highest-level event that directly matches the action your system will take. Fetch the public resource before irreversible side effects, and use resource_updated_at or a version field to ignore stale deliveries.
