Developer Payouts
Developer
Developer Payouts
Earnings summary, payout history, and payout details for an app developer.
GET
Developer Payouts
A payout is a scheduled disbursement of a developer’s accrued earnings, sent to the destination configured at Payout Methods. LaunchMyStore is the merchant of record: when a merchant pays for an installed app, the charge clears against the platform’s Stripe account; the platform takes its commission, and the residualDocumentation Index
Fetch the complete documentation index at: https://docs.launchmystore.io/llms.txt
Use this file to discover all available pages before exploring further.
developerAmount accumulates on the
developer’s ledger. The payout job runs on a fixed cadence (monthly by
default) and sweeps the ledger to a single payout row per developer.
The developer-facing endpoints below are read-only from the developer’s
perspective — payouts cannot be initiated from this API (use the admin
endpoint for SWIFT/PayPal manual ops, or wait for the scheduled cron).
Auth: developer JWT (@Auth(MERCHANT)). The developerId is read from
the token, not from the URL.
Earnings summary
GET /apps/developer/earnings
Returns the developer’s running ledger — total earned, total paid out, and
balance remaining.
Lifetime sum of
developerAmount across all paid transactions.Lifetime sum of
amount across paid payouts.Unpaid balance =
totalEarned − totalPaidOut − inFlight.Amount sitting in
pending / processing / in_transit payouts.ISO-4217 currency code. Single currency — multi-currency apps roll up to USD by default.
ISO date the next scheduled payout will run.
null when the developer has no payout method configured.Threshold below which a payout is rolled into the next cycle. Default
25.00 USD.List payouts
GET /apps/developer/payouts
Paginated payout history, newest first.
Max 250.
Filter to
pending, processing, in_transit, paid, or failed.Payout rows.
{ page, limit, total, hasMore }.Payout object
| Field | Type | Description |
|---|---|---|
payoutId | UUID | Primary key. |
developerId | UUID | Owning developer account. |
amount | decimal | Gross payout amount (in currency). |
currency | string | ISO-4217. |
status | enum | pending, processing, in_transit, paid, failed. |
payoutMethodType | enum | Snapshot of the method type used: bank (SWIFT) or paypal. |
externalReference | string|null | Wire reference (SWIFT) or PayPal payout id. Filled when status becomes in_transit. |
periodStart | datetime | First day of the earnings window. |
periodEnd | datetime | Last day of the window. |
transactionIds | string[] | UUIDs of AppBillingTransactions rows aggregated into this payout. |
failureReason | string|null | Reason for failed status. |
paidAt | datetime|null | When the payout cleared. |
createdAt | datetime | When the payout row was created (sweep time). |
Status lifecycle
pending: row created by the sweep; queued for processing.processing: dispatcher locked the row, building the bank/PayPal request.in_transit: SWIFT wire submitted or PayPal payout dispatched; awaiting external confirmation.externalReferenceis set at this transition.paid: external system confirmed receipt.paidAtis set.failed: irrecoverable error;failureReasonis set; balance is refunded to the ledger so the next cycle re-attempts.
Example response
Get one payout
GET /apps/developer/payouts/:payoutId
Returns the same payout object plus the full list of contributing
transactions inlined.
The payout row.
Inlined
AppBillingTransactions — { transactionId, appId, storeId, amount, developerAmount, currency, createdAt }.Requesting a payout
There is no developer-facing “request payout” endpoint. Payouts are swept on a fixed cadence:- Monthly on the 1st (default cadence, configurable per-developer to weekly / fortnightly via support).
- Only swept when
balance >= minimumPayoutAmount. - Below threshold balances roll into the next cycle.
POST /apps/admin/payouts/process-scheduled or
manually marks an in-transit payout paid via
POST /apps/admin/payouts/:payoutId/mark-paid (admin-only). Developers
cannot trigger these themselves.
Stripe Connect (Express / Standard) payouts that disburse directly to a
developer’s connected account on a schedule are on the roadmap. The
current implementation uses LaunchMyStore as merchant of record with
manual SWIFT / PayPal dispatch — see
payout.controller.ts for the
canonical wire format.Error codes
| Code | Description |
|---|---|
401 | Missing or invalid developer JWT. |
404 | Payout not found, or belongs to a different developer. |
400 | Invalid status filter. |