Skip to main content
Summary webhooks reduce the size of invoice and subscription webhook payloads by sending a lightweight version of the core resource. When enabled, invoice payloads exclude line items and pricing details, and subscription payloads include only essential identification and status fields.
This feature is enabled per-account. Contact your Orb representative to enable summary webhooks for your account. All invoice and subscription webhook event types are affected when this feature is turned on.

Affected event types

Invoice events

The following invoice event types will send summary payloads when summary webhooks are enabled:
  • invoice.issued
  • invoice.edited
  • invoice.invoice_date_elapsed
  • invoice.issue_failed
  • invoice.payment_processing
  • invoice.payment_succeeded
  • invoice.payment_failed
  • invoice.manually_marked_as_paid
  • invoice.manually_marked_as_void
  • invoice.undo_mark_as_paid
  • invoice.sync_succeeded
  • invoice.sync_failed
  • invoice.accounting_sync_succeeded
  • invoice.accounting_sync_failed
  • invoice.dunning_schedule_created
  • invoice.dunning_schedule_ended
  • invoice.dunning_schedule_reset
  • invoice.dunning_schedule_step_executed

Subscription events

The following subscription event types will send summary payloads when summary webhooks are enabled:
  • subscription.created
  • subscription.edited
  • subscription.started
  • subscription.ended
  • subscription.plan_changed
  • subscription.plan_version_change_scheduled
  • subscription.plan_version_changed
  • subscription.fixed_fee_quantity_updated
  • subscription.usage_exceeded
  • subscription.cost_exceeded
  • subscription.trial_ended
  • subscription.plan_change_scheduled
  • subscription.cancellation_scheduled
  • subscription.cancellation_unscheduled
  • subscription.accounting_sync_succeeded
  • subscription.accounting_sync_failed

Invoice payload

Fields included

FieldTypeDescription
idstringInvoice ID
invoice_numberstringAuto-generated invoice number
invoice_datedatetimeThe scheduled date of the invoice
currencystringISO 4217 currency string or credits
statusstringdraft, issued, paid, synced, or void
invoice_sourcestringsubscription, partial, or one_off
totalstringTotal after discounts and minimums
amount_duestringFinal amount to be charged
due_datedatetimeWhen payment is due
customerobjectMinified customer (id, external_customer_id)
subscriptionobjectMinified subscription (id)
created_atdatetimeWhen the invoice was created
hosted_invoice_urlstringCustomer-facing invoice portal URL
invoice_pdfstringLink to download the invoice PDF
memostringFree-form text on the invoice PDF
will_auto_issuebooleanWhether the invoice will be automatically issued
eligible_to_issue_atdatetimeWhen the invoice becomes eligible to issue
shipping_addressobjectShipping address
billing_addressobjectBilling address
customer_tax_idobjectCustomer tax ID
customer_balance_transactionsarrayCustomer balance transactions
credit_notesarrayAssociated credit note summaries
payment_attemptsarrayPayment attempt history
metadataobjectCustom metadata
issued_atdatetimeWhen the invoice was issued
paid_atdatetimeWhen the invoice was paid
voided_atdatetimeWhen the invoice was voided
scheduled_issue_atdatetimeScheduled issue time
auto_collectionobjectAuto-collection configuration
issue_failed_atdatetimeWhen the invoice failed to issue
sync_failed_atdatetimeWhen external sync failed
payment_failed_atdatetimeMost recent payment failure time
payment_started_atdatetimeMost recent payment attempt start time

Fields excluded

The following fields are omitted from the summary invoice payload. Notably, line_items is the primary source of payload bloat for invoice webhooks.
FieldTypeDescription
line_itemsarrayThe full breakdown of prices
subtotalstringTotal before discounts and minimums
discountobjectDeprecated invoice-level discount
discountsarrayInvoice-level discounts
minimumobjectInvoice-level minimum
minimum_amountstringMinimum amount
maximumobjectInvoice-level maximum
maximum_amountstringMaximum amount
To retrieve the full invoice including line items, use the GET /invoices/{id} endpoint.

Subscription payload

Fields included

FieldTypeDescription
idstringSubscription ID
namestringSubscription name
statusstringactive, ended, or upcoming
start_datedatetimeWhen billing starts
end_datedatetimeWhen billing ends (null if ongoing)
created_atdatetimeWhen the subscription was created
planobjectPlan summary: id, external_plan_id, name
customerobjectCustomer summary: id, external_customer_id
metadataobjectCustom metadata

Fields excluded

The following fields are omitted from the summary subscription payload. The customer and plan fields are replaced with minified versions containing only identification fields.
FieldTypeDescription
current_billing_period_start_datedatetimeCurrent billing period start
current_billing_period_end_datedatetimeCurrent billing period end
trial_infoobjectTrial configuration
active_plan_phase_orderintegerCurrent plan phase
fixed_fee_quantity_schedulearrayFixed fee quantity schedule
default_invoice_memostringDefault memo for invoices
auto_collectionbooleanAuto-collection setting
net_termsintegerPayment terms
redeemed_couponobjectCoupon redemption
billing_cycle_dayintegerBilling cycle anchor day
billing_cycle_anchor_configurationobjectBilling cycle anchor config
invoicing_thresholdstringInvoicing threshold amount
price_intervalsarrayPrice intervals
adjustment_intervalsarrayAdjustment intervals
discount_intervalsarrayDiscount intervals (deprecated)
minimum_intervalsarrayMinimum intervals (deprecated)
maximum_intervalsarrayMaximum intervals (deprecated)
pending_subscription_changeobjectPending subscription change
To retrieve the full subscription, use the GET /subscriptions/{id} endpoint. With summary webhooks enabled, we recommend the following pattern for webhook handlers:
  1. Receive the webhook event.
  2. Read the event type and resource id from the payload.
  3. Fetch the full resource via API if detailed data is needed.
  4. Process accordingly.
This ensures your handler always acts on the most current state of the resource, avoiding issues with stale data in webhook payloads.
Even without summary webhooks, fetching the latest resource state via API before processing is a best practice. Webhook payloads represent the resource state at the time the event was emitted, which may differ from the current state if subsequent changes have occurred.