money_balance_usd from coin conversions, they can request a PayPal payout directly from your app. Your game calls the withdrawal endpoint with the amount and the player’s PayPal email address, and your team reviews and processes the request in the admin panel.
Check the player's USD balance
The player’s current
money_balance_usd is part of their profile. Before showing the withdrawal UI, confirm the balance is at or above the minimum withdrawal amount.To fetch the minimum withdrawal amount, call GET /v1/app-settings and read the minimum_withdrawal_amount field. Do not hardcode this value — it can change and varies by deployment.Only present the withdrawal option if:money_balance_usdis greater than zero, andmoney_balance_usdis at or aboveminimum_withdrawal_amount.
Submit the withdrawal request
Call A successful request returns HTTP
POST /v1/withdrawals with the player’s Bearer token, the requested amount in USD, and the PayPal email address where payment should be sent.201 with the withdrawal record:money_balance_usd_after is the player’s remaining balance after the deduction.Track the withdrawal status
Every withdrawal moves through the following lifecycle:
You can surface this status in your app to keep players informed.
| Status | Meaning |
|---|---|
pending | The request has been created and the amount has been deducted from the player’s balance. It is waiting for admin review. |
paid | An admin has marked the withdrawal as paid. The player should receive the PayPal payment shortly. |
failed | An admin has marked the withdrawal as failed. The amount is not automatically refunded — contact your PlaySmart admin if a refund is needed. |
Error handling
| HTTP status | Error code | Meaning |
|---|---|---|
422 UNPROCESSABLE | insufficient_balance_or_user_not_found | The player’s money_balance_usd is less than amount_usd, or the authenticated user could not be found. |
400 BAD_REQUEST | invalid_payload | The request body failed validation — for example, paypal_email is not a valid email address, or amount_usd is zero or negative. |
401 UNAUTHORIZED | — | The Bearer token is missing or invalid. |
