Skip to main content
Three events share the payment resource. They are delivered in the Standard-Webhooks envelope; the fields below describe the data object. Every event requires the read:self scope. app.payment.* events cover both one-time purchases and subscription charges; branch on billing_reason to tell them apart. The money and the access state are separate events: a subscription’s initial charge emits both app.payment.succeeded (with billing_reason: subscription_initial) and app.subscription.activated.

Payment resource

data.object is "payment" for all three events.

Examples

app.payment.succeeded (subscription initial charge)

A one-time purchase looks the same with "billing_reason": "one_time" and a purchase_reference carrying the appotp_ prefix; a renewal uses "billing_reason": "subscription_renewal".

app.payment.pending

app.payment.failed

Reconciling

Payments can be re-read by invoice number: data.id matches the invoiceNumber path parameter on the app payments endpoints. See Reconciliation.