Skip to main content
Three events share the payment resource and describe every charge your app bills a creator for, one-time or recurring, against your pricing plans. Every event requires read:self. Each arrives in the envelope, and the tables below describe data. app.payment.* events cover one-time purchases and subscription charges alike, so branch on billing_reason to tell them apart. 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. Amounts are integers in USD cents. Risk-screening declines report reason: "other", and the raw processor message is never forwarded.

Billing reasons

Examples

app.payment.succeeded (subscription initial charge)

A one-time purchase carries "billing_reason": "one_time" and an appotp_ purchase reference, and a renewal carries "billing_reason": "subscription_renewal".

app.payment.pending

app.payment.failed

Reconciling

data.id matches the invoiceNumber path parameter on GET /apps/{appUuid}/payments/{invoiceNumber}. The event id hashes your app, the invoice number and the topic, so a re-emitted charge carries the same id and deduplicates on it. See Reconciliation.