Show what was paid.
Separate studio revenue, credited player prizes, withdrawal transactions and completed transfers.
Studio IAP revenue#
Configure your payout wallet before paying with your own studio key. IAP’s Playmos fee is 1%; use the receipt’s exact amount, fee and net rather than rounding displayed cents into a ledger. A studio pool has its own immutable split; its studio share is paid to the configured sink at entry.
Legacy round payout notices#
rounds.payoutNotices({ roundId, wallet }) reads GET /v1/rounds/:id/payout-notices. The optional wallet filter must be a 20-byte address. Top-level status is the round’s status; each notice has its own status and integer amountMicro.
| Notice | What the player sees |
|---|---|
| claimable, positive amount | Available to withdraw. No transfer to the player is proven. |
| funded, positive amount, valid nonzero txHash | A recorded funding transaction; reconcile that transfer. |
| Zero amount | No prize, even if a notice row exists. |
| Missing or invalid funding hash | Unverified; do not label paid. |
The shared sandbox’s documented path uses pull credits (prizepool_pull_credit). A settled round can still have claimable prizes. Never infer payment from notices.length.
Player withdrawals#
Read the balance through an RPC pinned to the key’s chain. The player uses rounds.withdraw for legacy PrizePool or epochs.withdraw for EpochPrizePool. The round notice route has no epochs twin; epochs use epochs.prize for the pot and withdrawable(wallet) for the pool’s credited balance.
Render pending, confirmed and failed withdrawal outcomes separately. A returned hash is not confirmation. Never turn an unavailable amount read into $0.00.
Operator push#
rounds.pushWinnings is a secret-key operation for settled legacy rounds and replays recorded notices. A 409 means the round is not settled. Calling it does not guarantee a funded notice; the pull-credit path stays claimable until a player withdrawal.
Bank payouts are not available#
Wallet revenue uses the configured payout address. SDK 0.3.20’s payouts.setMode('usdc') does not forward the service-required payoutWalletAddress; do not use that helper as a complete wallet setup. Configure IAP through POST /v1/studio/payout, or explicitly send both mode and payoutWalletAddress to POST /v1/payouts/mode on your backend. The SDK exposes createOnboardingLink and fiat mode, but the sandbox’s Bridge bank onboarding/off-ramp is a stub. Do not offer it as working ACH/SEPA or infer bank completion from a returned link.