Skip to main content
GET
App Billing Transactions
Every Stripe webhook the platform handles produces a row in a billing-transaction ledger. A transaction represents one charge event for an installed app — a subscription renewal, a one-time charge, or a usage- based invoice line. The transaction is the source of truth for developer revenue (after the platform commission). When developer payouts are computed, the payout service sums developerAmount over transactions in status: paid whose createdAt falls in the payout period. Auth: merchant JWT.

List transactions

GET /apps/billing/transactions
integer
default:"1"
Page number.
integer
default:"50"
Page size (max 250).
string
Filter by status: pending, paid, refunded, failed.
string
Filter to one app’s transactions. Pass the appId UUID.
array
Array of transaction objects (see schema below).
object

Transaction object

Example response


Get a transaction summary

GET /apps/billing/transactions/summary returns aggregated totals across all of the merchant’s app charges. Useful for dashboards.
totalSpent, totalCommission, and totalToDevelopers are reported in the merchant’s default currency. Transactions originally booked in other currencies are converted at the FX rate at receipt time and the rate is frozen onto the row — re-running the summary later returns the same totals.

Get one transaction

There is no per-id endpoint. Filter the list call by transactionId if you need a single row:

Refunds

Refunds are issued either through the Stripe Dashboard (manual ops) or programmatically by the developer via the Stripe API. When Stripe fires charge.refunded, the webhook handler:
  1. Marks the transaction as status: refunded.
  2. Inserts a negative ledger entry on the developer’s earnings balance.
  3. Fires app/subscription/refunded to the app.
The original transaction is not deleted — historical reporting stays intact.

Error codes