Figures on this page verified 2026-08-11; sources listed under “Sources of truth” at the end.
Implemented rules
Thresholds and limits
The payout amount is floored, and any remainder below ¥1 stays in your diamond balance:
Validation order on submission
The server validates in a fixed order and rejects on the first failure:- Is the feature open? →
WITHDRAWAL_NOT_OPEN(currently always stops here) - Is the amount positive? →
Amount must be positive - Have 3 requests already been made in 24 hours? →
WITHDRAWAL_RATE_LIMIT: Maximum 3 withdrawal requests per 24 hours - Does the amount meet the minimum? →
Minimum withdrawal amount is 10000 - Is the withdrawable balance sufficient? →
Insufficient balance
State machine
Three properties worth knowing:
- Record first, then deduct. A
pendingrow is inserted before the balance is deducted. If the deduction fails, that row is markedfailed— so there is never a state where money left the balance with no record of it. - Transitions are conditional updates. Every transition carries
WHERE status = <expected>, so concurrent operations like double-approving or approving after a rejection fail rather than overwrite. - Refunds reverse both sides. Rejection and payout failure both roll back the balance and the cumulative-withdrawn counter, so reporting figures never inflate.
Why the freeze period exists
Revenue passes through a freeze period between being earned and being withdrawable:- A user pays to use your Expert
- The platform computes your share based on your level, and diamonds land in a frozen state
- Frozen diamonds cannot be withdrawn (30 days by default)
- At the end of the freeze period they automatically become withdrawable
- You submit a withdrawal request
Balance states
FAQ
Why does clicking Withdraw do nothing, or return an error?
Why does clicking Withdraw do nothing, or return an error?
Withdrawals are not open; the server hard-blocks the request. See the warning at the top of this page.
Why is my entire balance 'frozen'?
Why is my entire balance 'frozen'?
Newly earned sales revenue must clear the freeze period (30 days by default) before becoming withdrawable — a window for refunds and disputes. The conversion is automatic; no action is needed from you.
Can I still earn the 'First Withdrawal' achievement?
Can I still earn the 'First Withdrawal' achievement?
Not currently. Withdrawals cannot be submitted, and the background achievement worker has no code path that writes progress for
first_withdrawal. Both will be wired up when withdrawals open. See Bounties and Achievements.If my request is rejected, do I lose the diamonds?
If my request is rejected, do I lose the diamonds?
No. Rejection and payout failure both refund the full amount to your withdrawable balance, along with a stated reason. You can correct the issue and reapply.
Is there a withdrawal fee?
Is there a withdrawal fee?
There is no fee-deduction logic in the code today — the payout is simply the floored conversion at the exchange rate. If a fee is introduced when withdrawals open, this page will be updated.
Tax note
Sources of truth
Verified 2026-08-11. Sources:
- Hard-block constant, the 3-per-24h frequency cap, validation order, state machine, and refund logic:
services/core/src/db/service/withdrawal.ts - Defaults for the 10,000-diamond threshold, 30-day freeze periods, and 100:1 exchange rate:
services/core/src/db/service/platform-config.ts(DEFAULT_WITHDRAWAL_RULES)
Next steps
Revenue System
Revenue share rates and level thresholds
Analytics
Data-driven revenue optimisation

