Skip to main content
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 residual 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. 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.
number
Lifetime sum of developerAmount across all paid transactions.
number
Lifetime sum of amount across paid payouts.
number
Unpaid balance remaining on the ledger.
number
Amount sitting in pending / processing / in_transit payouts.
number
Threshold below which a payout is rolled into the next cycle. Default 25.00 USD.
array
Per-app earnings breakdown.

List payouts

GET /apps/developer/payouts Paginated payout history, newest first.
integer
default:"1"
integer
default:"50"
Max 250.
string
Filter to pending, processing, in_transit, paid, or failed.
array
Payout rows.
object
{ page, limit, total, hasMore }.

Payout object

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. externalReference is set at this transition.
  • paid: external system confirmed receipt. paidAt is set.
  • failed: irrecoverable error; failureReason is 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.
object
The payout row.
array
Inlined billing transactions — { 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.
For ad-hoc payouts (out-of-cycle SWIFT/PayPal disbursement), platform ops calls the admin endpoint 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.

Error codes