App Billing Transactions
App Billing
App Billing Transactions
List and inspect per-charge billing transactions for an installed app.
GET
App Billing Transactions
Every Stripe webhook the platform handles produces a row inDocumentation Index
Fetch the complete documentation index at: https://docs.launchmystore.io/llms.txt
Use this file to discover all available pages before exploring further.
AppBillingTransactions. 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 (@Auth(MERCHANT)).
List transactions
GET /apps/billing/transactions
Page number.
Page size (max 250).
Filter by status:
pending, paid, refunded, failed.Filter to one app’s transactions. Pass the
appId UUID.Array of transaction objects (see schema below).
Transaction object
| Field | Type | Description |
|---|---|---|
transactionId | UUID | Primary key. |
appId | UUID | The app this charge is for. |
storeId | UUID | The merchant store that paid. |
installationId | UUID | Links to the AppInstallation row. |
amount | decimal | Total charged to the merchant (e.g. 9.99). |
commissionAmount | decimal | Platform commission withheld (typically 20%). |
developerAmount | decimal | What the developer earned: amount - commissionAmount. |
currency | string | ISO-4217 (default USD). |
type | enum | subscription, one_time, or usage. |
status | enum | pending, paid, refunded, failed. |
stripeInvoiceId | string | Stripe in_… id (subscription / usage charges). |
stripePaymentIntentId | string | Stripe pi_… id (one-time charges). |
billingPeriodStart | datetime | Start of the billed period (subscription / usage only). |
billingPeriodEnd | datetime | End of the billed period. |
createdAt | datetime | Row creation time = webhook-receipt time. |
updatedAt | datetime | Last status change (e.g. paid → refunded). |
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 bytransactionId 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 firescharge.refunded, the webhook handler:
- Marks the transaction as
status: refunded. - Inserts a negative ledger entry on the developer’s earnings balance.
- Fires
app/subscription/refundedto the app.
Error codes
| Code | Description |
|---|---|
401 | Missing or invalid merchant JWT. |
403 | The merchant has no installed apps. |
400 | Invalid status filter — must be one of pending, paid, refunded, failed. |