Help & policy
FAQ & troubleshooting
Quick answers first, then every error code the app can show, with what it means and what to do. Whenever OHKO shows an error it also offers the recovery action listed here and, for transactions, the signature with an explorer link.
Questions
Do I need a wallet to play?
No. Free battles, practice against the bot, replays and spectating need no wallet. You only need one for staked matches, tournaments, the faucet, quests rewards and the shop.
Are these tokens worth anything?
No. OHKO runs on Solana devnet, a test network. SOL, USDC and $OHKO on devnet have no value and cannot be exchanged for real money.
My wallet says I am on the wrong network
Wallets keep a network setting per app or globally. Switch your wallet to devnet (the steps for each wallet are in Getting started; the wrong network banner opens the same guide). OHKO sends every transaction to devnet itself, so nothing can reach mainnet by accident.
The SOL airdrop failed
The public devnet airdrop is rate limited per IP address and often refuses. The Faucet then sends a small drip from OHKO's faucet wallet, and links to faucet.solana.com for more. Each asset can be claimed once every 12 hours.
What happens to my stake if the server crashes?
Your stake is in the on-chain escrow, not with OHKO. A battle in progress is rebuilt from its saved inputs when the server comes back. If the match is never settled before its deadline, anyone can refund both players in full; the app shows a Claim refund button. See refund guarantees.
My opponent never deposited
You have nothing to do if you were second: nothing moved. If you deposited first, press Cancel and refund, or wait: once the join deadline passes, OHKO refunds you automatically.
My transaction expired or was dropped
OHKO rebuilds and re-signs it with a fresh blockhash and a priority fee, up to three times, before it gives up with a clear message. Nothing is charged for a transaction that never landed.
My deposit confirmed but the match did not continue
OHKO watches the chain for every open match, so it finds your deposit even if the app lost the connection. If it has not seen it after a few seconds, the notice offers Refresh status.
Can I lose more than my stake?
No. A staked match moves exactly your stake into escrow, plus a tiny network fee (and, the first time, the rent for your OHKO profile account). The rake comes out of the winner's payout, never from the loser's wallet.
Is the battle rigged in OHKO's favour?
OHKO does not play, and the battle seed is committed on-chain before your opponent joins. Anyone can re-run any staked match and compare it with the chain; see Provably fair.
Why is my chat limited?
Staked matches and tournaments only allow quick-chat emotes, to stop scams and harassment where money is involved. Free battles allow short text, with links blocked and profanity masked.
How do I report a player?
Open the battle menu and choose Report opponent. Reports go to OHKO's moderators, who can mute, freeze queue access or ban; every admin action is logged.
How do I limit my play?
Set daily stake limits or exclude yourself on Your limits. See Responsible play.
Something else went wrong
Every error notice has a Copy request ID button. Send that ID to support@ohko.fun so we
can find exactly what happened.
Error codes
Every code OHKO can show, grouped by area. You can link to a code directly, for example
/docs/faq#error-blockhash-expired.
Wallet and chain
- WALLET_NOT_INSTALLED
- No Solana wallet was found in this browser.
- What to do: Install Phantom, Solflare or Backpack, or open OHKO inside your wallet app on mobile.
- The app offers: Get a wallet
- WALLET_NOT_CONNECTED
- Your wallet is not connected.
- What to do: Connect your wallet to continue.
- The app offers: Connect wallet
- WALLET_DISCONNECTED
- Your wallet disconnected in the middle of this step.
- What to do: Reconnect your wallet. Nothing was sent, so you can safely try again.
- The app offers: Reconnect wallet
- WRONG_NETWORK
- Your wallet is on a different Solana network.
- What to do: OHKO runs on devnet. Switch your wallet to Devnet in its settings, then try again.
- The app offers: How to switch
- USER_REJECTED
- You rejected the request in your wallet.
- What to do: Nothing was signed or sent. Try again when you are ready.
- The app offers: Try again
- INSUFFICIENT_SOL_FOR_FEES
- You do not have enough SOL to pay network fees.
- What to do: Top up a little devnet SOL from the faucet, then try again.
- The app offers: Open faucet
- INSUFFICIENT_STAKE_BALANCE
- Your balance is lower than the stake.
- What to do: Get more from the faucet or pick a smaller stake.
- The app offers: Open faucet
- BLOCKHASH_EXPIRED
- The transaction expired before it was confirmed.
- What to do: We rebuilt and retried it automatically. If it keeps failing, try again in a moment.
- The app offers: Try again
- TX_DROPPED
- The network dropped the transaction.
- What to do: We retried it with a higher priority fee. If this keeps happening, try again shortly.
- The app offers: Try again
- TX_FAILED
- The transaction failed on-chain.
- What to do: Check the transaction in the explorer for details, then try again.
- The app offers: View transaction
- RPC_RATE_LIMITED
- The Solana RPC is rate limiting requests.
- What to do: Wait a few seconds and try again.
- The app offers: Try again shortly
- TX_NOT_SEEN_BY_SERVER
- Your transaction confirmed, but our server has not seen it yet.
- What to do: We are reconciling with the chain now. This usually takes a few seconds.
- The app offers: Refresh status
- PROGRAM_ERROR
- The OHKO program rejected the transaction.
- What to do: Check the transaction in the explorer. If you think this is a bug, contact support.
- The app offers: View transaction
Matchmaking and battles
- QUEUE_TIMEOUT
- No opponent was found in time.
- What to do: Try again, widen your stake, or create a challenge link to invite someone.
- The app offers: Search again
- OPPONENT_LEFT_BEFORE_JOIN
- Your opponent left before joining the match.
- What to do: Your stake is refundable. Search again to find a new opponent.
- The app offers: Find another opponent
- MATCH_ALREADY_JOINED
- Someone else joined this match first.
- What to do: Nothing was charged. Find another match.
- The app offers: Find another match
- ACTIVE_MATCH_EXISTS
- You already have an active staked match.
- What to do: Finish or rejoin your current match first.
- The app offers: Go to my match
- WS_DISCONNECTED
- Connection to the game server was lost.
- What to do: Reconnecting automatically. Your battle state will be restored.
- The app offers: Reconnecting…
- OPPONENT_DISCONNECTED
- Your opponent disconnected.
- What to do: They have a short grace period to come back. If they do not, you win by forfeit.
- The app offers: Waiting for opponent
- INVALID_CHOICE
- That move is not valid right now.
- What to do: Your battle was resynced with the server. Pick again.
- The app offers: Resync
- BATTLE_DESYNC
- Your battle view went out of sync.
- What to do: We reloaded the battle state from the server.
- The app offers: Resync
- BATTLE_RESUMING
- The game server restarted during your battle.
- What to do: Your battle is being restored from the saved log. It will continue in a moment.
- The app offers: Restoring battle…
- REFEREE_DELAYED
- Settlement is taking longer than usual.
- What to do: We keep retrying. If the deadline passes, you can claim a full refund on-chain.
- The app offers: Waiting for settlement
- REFUND_AVAILABLE
- This match was not settled before its deadline.
- What to do: Claim a full refund. The program returns both stakes with no fee.
- The app offers: Claim refund
- ALREADY_IN_BATTLE
- You are already in a battle.
- What to do: Finish or forfeit your current battle before starting another one.
- The app offers: Rejoin battle
- BATTLE_ENDED
- This battle is already over.
- What to do: Watch the replay, or start a new battle.
- The app offers: Watch replay
- CHAT_LINK_BLOCKED
- Links are not allowed in battle chat.
- What to do: Links are blocked to protect players from scams. Send your message without it.
- The app offers: Edit message
- CHAT_TEXT_DISABLED
- Text chat is off in this battle.
- What to do: Use the quick-chat emotes instead.
- The app offers: Use an emote
- SESSION_EXPIRED
- Your session expired.
- What to do: Reload the page to start a fresh session. Running battles are kept for you.
- The app offers: Reload
App and API
- VALIDATION_FAILED
- Some of the information you entered is not valid.
- What to do: Fix the highlighted fields and try again.
- The app offers: Review form
- UNAUTHENTICATED
- You need to sign in with your wallet.
- What to do: Sign the message in your wallet to prove it is yours. It costs nothing.
- The app offers: Sign in
- FORBIDDEN
- You do not have access to this.
- What to do: Switch to a wallet with access, or go back home.
- The app offers: Go home
- NOT_FOUND
- We could not find what you were looking for.
- What to do: Check the link, or head back to the home page.
- The app offers: Go home
- RATE_LIMITED
- You are going a little too fast.
- What to do: Wait a moment, then try again.
- The app offers: Try again shortly
- OFFLINE
- You are offline.
- What to do: Check your internet connection. We will reconnect automatically.
- The app offers: Waiting for connection
Sign-in, staking and faucet
- SIGN_IN_FAILED
- We could not verify your wallet signature.
- What to do: Sign the message again in your wallet. Make sure the page address matches the one shown in the wallet.
- The app offers: Sign in again
- SIGN_IN_EXPIRED
- That sign-in request expired.
- What to do: Sign-in requests are valid for five minutes. Start a new one.
- The app offers: Sign in again
- SIGN_IN_UNSUPPORTED
- This wallet cannot sign messages.
- What to do: Use Phantom, Solflare or Backpack, which support Sign-In With Solana.
- The app offers: Get a wallet
- WALLET_REQUIRED
- Staked matches need a signed-in wallet.
- What to do: Connect your wallet and sign in. Signing in is free and sends no transaction.
- The app offers: Sign in
- WALLET_MISMATCH
- Your wallet changed accounts.
- What to do: Sign in again with the account you want to play with, or switch back in your wallet.
- The app offers: Sign in again
- STAKE_NOT_ALLOWED
- That stake is not one of the table amounts.
- What to do: Pick one of the listed stakes for this currency.
- The app offers: Pick a stake
- DEPOSIT_WINDOW_CLOSED
- The time to deposit for this match has run out.
- What to do: Nothing was charged unless you deposited. Any deposit can be refunded from this page. Find a new opponent to play.
- The app offers: Find a new opponent
- STAKE_MISMATCH
- The on-chain match does not match what was agreed.
- What to do: The battle will not start. The creator can cancel the match for a full refund.
- The app offers: Cancel and refund
- OPPONENT_DID_NOT_DEPOSIT
- Your opponent did not deposit in time.
- What to do: If you deposited, cancel the match for a full refund, then find a new opponent.
- The app offers: Find a new opponent
- SETTLEMENT_PENDING
- The referee is still settling this match on-chain.
- What to do: This usually takes a few seconds. Payouts are sent automatically.
- The app offers: Please wait
- FAUCET_COOLDOWN
- You already claimed this recently.
- What to do: Each wallet can claim once per cooldown period. Come back when the timer runs out.
- The app offers: Come back later
- AIRDROP_RATE_LIMITED
- The public devnet airdrop is rate-limited.
- What to do: Use the OHKO faucet drip below, or request devnet SOL at faucet.solana.com.
- The app offers: Open faucet options
- REFERRAL_INVALID_LINK
- This referral link is not valid.
- What to do: Ask your friend for their link again, or paste their wallet address on the Referrals page.
- The app offers: Check the address
- REFERRAL_TX_NOT_FOUND
- We could not find your referrer registration on-chain yet.
- What to do: If your wallet confirmed the transaction, wait a few seconds and refresh. Your referrer is stored on-chain either way.
- The app offers: Refresh
- BUYBACK_QUOTE_FAILED
- The buyback could not get a swap quote.
- What to do: The keeper retries on its next run. Funds stay in the buyback vault until then.
- The app offers: Wait for the next run
- BUYBACK_PRICE_IMPACT
- The buyback was skipped because the swap would move the price too much.
- What to do: The keeper buys back in smaller steps on its next runs.
- The app offers: Wait for the next run
- VERIFY_FAILED
- This match could not be verified.
- What to do: One or more checks failed. The details below show which value did not match.
- The app offers: Report it
- ASSET_LOAD_FAILED
- An image failed to load.
- What to do: A placeholder is shown instead. Reload to try again.
- The app offers: Reload
Teams, challenges, tournaments, quests and shop
- TEAM_REQUIRED
- This format needs a team you built.
- What to do: Pick one of your saved teams, or build one in the teambuilder.
- The app offers: Open teambuilder
- TEAM_NOT_FOUND
- That team was not found.
- What to do: It may have been deleted. Pick another saved team.
- The app offers: Open teambuilder
- TEAM_INVALID
- That team is not legal in this format.
- What to do: Fix the problems listed in the teambuilder, then save it again.
- The app offers: Fix team
- TEAM_LIMIT_REACHED
- You have reached the maximum number of saved teams.
- What to do: Delete a team you no longer use, then save again.
- The app offers: Manage teams
- CHALLENGE_NOT_FOUND
- This challenge link does not exist.
- What to do: Check the link, or open the lobby to find another opponent.
- The app offers: Open lobby
- CHALLENGE_EXPIRED
- This challenge has expired.
- What to do: Ask for a new link, or create your own challenge.
- The app offers: Open lobby
- CHALLENGE_CLOSED
- This challenge is no longer open.
- What to do: Someone else accepted it or the creator cancelled it. Find another one in the lobby.
- The app offers: Open lobby
- CHALLENGE_LOCKED
- This challenge is reserved for another wallet.
- What to do: Only the wallet chosen by the creator can accept it.
- The app offers: Switch wallet
- CHALLENGE_OWN
- You cannot accept your own challenge.
- What to do: Share the link with an opponent instead.
- The app offers: Share link
- CHALLENGE_CREATOR_AWAY
- The challenger is not online right now.
- What to do: Their challenge can be accepted as soon as they are back. Try again in a moment.
- The app offers: Try again
- CHALLENGE_LIMIT_REACHED
- You already have the maximum number of open challenges.
- What to do: Cancel one of your open challenges first.
- The app offers: Manage challenges
- STAKE_OUT_OF_RANGE
- That stake is outside the allowed range.
- What to do: Pick an amount between the minimum and maximum shown for this currency.
- The app offers: Change amount
- TOURNAMENT_NOT_FOUND
- That tournament was not found.
- What to do: Open the tournament list to pick another one.
- The app offers: Tournaments
- TOURNAMENT_NOT_REGISTERING
- Registration for this tournament is closed.
- What to do: Join the next open table on the tournament page.
- The app offers: Tournaments
- TOURNAMENT_ALREADY_REGISTERED
- You are already registered for this tournament.
- What to do: Wait for the bracket to start. It begins as soon as every seat is taken.
- The app offers: Waiting for players
- TOURNAMENT_IN_PROGRESS
- You are still playing in a tournament.
- What to do: Finish your tournament run before queueing for other battles.
- The app offers: Open tournament
- QUEST_NOT_COMPLETE
- This quest is not complete yet.
- What to do: Play the battles it asks for, then claim the reward.
- The app offers: Keep playing
- QUEST_ALREADY_CLAIMED
- You already claimed this quest today.
- What to do: New quests start at 00:00 UTC.
- The app offers: Come back tomorrow
- SHOP_ITEM_NOT_FOUND
- That item is not in the shop.
- What to do: Reload the shop and pick another item.
- The app offers: Reload shop
- SHOP_ITEM_OWNED
- You already own this item.
- What to do: Equip it from your collection instead.
- The app offers: Equip item
- SHOP_ITEM_NOT_FOR_SALE
- This item cannot be bought.
- What to do: It is earned through daily quests.
- The app offers: See quests
- SHOP_ITEM_NOT_OWNED
- You do not own this item yet.
- What to do: Buy it in the shop first, then equip it.
- The app offers: Buy item
- SHOP_ORDER_NOT_FOUND
- That order was not found.
- What to do: Start the purchase again from the shop.
- The app offers: Reload shop
- SHOP_ORDER_EXPIRED
- This order expired before it was paid.
- What to do: Start the purchase again. Nothing was burned for an expired order.
- The app offers: Buy again
- SHOP_PAYMENT_PENDING
- Your burn transaction is not visible on-chain yet.
- What to do: Wait a few seconds and check again. Your order stays reserved for 15 minutes.
- The app offers: Check again
- SHOP_PAYMENT_INVALID
- That transaction does not pay for this order.
- What to do: Pay with the button in the shop, which burns the exact amount with the order reference.
- The app offers: Pay again
- NAME_TAKEN
- That name is already taken.
- What to do: Pick a different display name.
- The app offers: Change name
Responsible play, moderation and admin
- AGE_CONFIRMATION_REQUIRED
- Staked matches are for adults only.
- What to do: Confirm that you are 18 or older before your first staked match.
- The app offers: Confirm age
- HUMAN_CHECK_REQUIRED
- Please confirm you are human before staking today.
- What to do: A quick check runs once a day before your first staked match.
- The app offers: Run the check
- HUMAN_CHECK_FAILED
- The human check did not pass.
- What to do: Run the check again. If it keeps failing, reload the page or try another browser.
- The app offers: Try again
- STAKE_LIMIT_REACHED
- This stake would go over your daily stake limit.
- What to do: Pick a smaller stake, wait until 00:00 UTC, or review your limits.
- The app offers: Review limits
- SELF_EXCLUDED
- You have excluded yourself from staked play.
- What to do: Your self-exclusion is still running and cannot be shortened. Free battles stay available unless the exclusion is permanent.
- The app offers: See my settings
- LIMIT_INCREASE_PENDING
- Your higher limit is not active yet.
- What to do: Raising a limit takes effect after a 24-hour cooling-off period. Lower limits apply at once.
- The app offers: See my limits
- ACCOUNT_BANNED
- This account has been suspended by a moderator.
- What to do: You can still view replays and claim refunds. Contact support if you think this is a mistake.
- The app offers: Contact support
- QUEUE_FROZEN
- Queue access for this account is paused by a moderator.
- What to do: You cannot search for matches, accept challenges or enter tournaments until the pause ends.
- The app offers: Contact support
- CHAT_MUTED
- You are muted in chat.
- What to do: A moderator muted this account. Quick-chat and messages are blocked until the mute ends.
- The app offers: OK
- ADMIN_TX_INVALID
- That transaction is not an admin action of this program.
- What to do: Send the change from the admin panel and report the confirmed signature again.
- The app offers: Try again
- INTERNAL_ERROR
- Something went wrong on our side.
- What to do: Try again. If it keeps happening, report it with the request ID.
- The app offers: Copy request ID
Escrow program errors
- PROGRAM_PAUSED
- OHKO has paused new staked matches and tournaments.
- What to do: Running matches still settle and refunds always work. Try again later, or play a free battle meanwhile.
- The app offers: Try again later
- PROGRAM_RAKE_ABOVE_CAP
- That fee is above the 10% hard cap.
- What to do: Set every rake to 10% (1,000 bps) or less.
- The app offers: Review config
- PROGRAM_INVALID_SPLITS
- The fee split does not add up to 100%.
- What to do: Adjust the treasury, buyback and season shares so they sum to 10,000 bps.
- The app offers: Review config
- PROGRAM_INVALID_DISCOUNT_TIERS
- The holder discount tiers are not valid.
- What to do: Tiers need rising $OHKO thresholds and must never raise the rake.
- The app offers: Review config
- PROGRAM_INVALID_STAKE_LIMITS
- The stake limits are not valid.
- What to do: Each currency needs a minimum above zero (at least 0.001 SOL for SOL) and a maximum at or above it.
- The app offers: Review config
- PROGRAM_INVALID_WINDOW
- A deadline is outside the allowed range.
- What to do: Use a value between 1 minute and 30 days.
- The app offers: Review config
- PROGRAM_INVALID_REFERRAL_CONFIG
- The referral settings are outside the allowed range.
- What to do: The referral share can be at most 50% of the treasury cut and last at most one year.
- The app offers: Review config
- PROGRAM_INVALID_PRIZE_SPLIT
- The tournament prize split is not valid.
- What to do: Prize shares must add up to 100% and must not increase from 1st place down.
- The app offers: Review config
- PROGRAM_WRONG_MINT
- That token is not accepted for this table.
- What to do: Stake with the devnet USDC or $OHKO token from the faucet.
- The app offers: Open faucet
- PROGRAM_STAKE_BELOW_MINIMUM
- The stake is below the table minimum.
- What to do: Pick a higher stake.
- The app offers: Change stake
- PROGRAM_STAKE_ABOVE_MAXIMUM
- The stake is above the table maximum.
- What to do: Pick a lower stake.
- The app offers: Change stake
- PROGRAM_INVALID_FORMAT_ID
- That battle format is not recognised.
- What to do: Pick a format from the list and try again.
- The app offers: Pick a format
- PROGRAM_MATCH_NOT_OPEN
- This match is no longer open.
- What to do: Someone joined it first, or it was cancelled. Nothing was charged. Find another match.
- The app offers: Find another match
- PROGRAM_MATCH_NOT_ACTIVE
- This match is not in progress.
- What to do: It may already be settled or refunded. Refresh to see its final state.
- The app offers: Refresh status
- PROGRAM_JOIN_DEADLINE_PASSED
- This match expired before you joined.
- What to do: Nothing was charged. Find another opponent or create a new challenge.
- The app offers: Find another match
- PROGRAM_CANNOT_JOIN_OWN_MATCH
- You cannot join your own match.
- What to do: Share your challenge link with someone else, or queue for a public match.
- The app offers: Find a match
- PROGRAM_OPPONENT_NOT_ALLOWED
- This challenge is reserved for a different wallet.
- What to do: Ask the creator for an open challenge, or find another match.
- The app offers: Find another match
- PROGRAM_SETTLE_DEADLINE_PASSED
- The settlement deadline for this match has passed.
- What to do: The match can no longer be settled. Claim your full refund instead.
- The app offers: Claim refund
- PROGRAM_NOT_EXPIRED
- The deadline has not passed yet.
- What to do: Refunds unlock once the deadline passes. Check back then.
- The app offers: Wait for the deadline
- PROGRAM_INVALID_WINNER
- The reported winner is not a player in this match.
- What to do: Settlement is retried automatically. If the deadline passes, claim a full refund.
- The app offers: Waiting for settlement
- PROGRAM_SELF_REFERRAL
- You cannot use your own wallet as your referrer.
- What to do: Use a referral link from another player.
- The app offers: Change referrer
- PROGRAM_REFERRER_ALREADY_SET
- You already have a referrer.
- What to do: A referrer is permanent once registered, so nothing changed.
- The app offers: Go home
- PROGRAM_MISSING_TOKEN_ACCOUNT
- A token account this transaction needs is missing.
- What to do: Try again. OHKO creates missing token accounts for you automatically.
- The app offers: Try again
- PROGRAM_INVALID_TOKEN_ACCOUNT
- A token account in this transaction belongs to someone else or holds a different token.
- What to do: Reload and try again from your own wallet.
- The app offers: Reload
- PROGRAM_INVALID_REFERRER_ACCOUNT
- The referrer account does not match the match record.
- What to do: Settlement is retried automatically with the right accounts.
- The app offers: Waiting for settlement
- PROGRAM_ACCOUNT_MISMATCH
- An account in this transaction does not match the on-chain record.
- What to do: Reload the page and try again.
- The app offers: Reload
- PROGRAM_MATH_OVERFLOW
- The amounts are too large to process.
- What to do: Use a smaller amount.
- The app offers: Change amount
- PROGRAM_INVALID_TOURNAMENT_SIZE
- Tournaments must have 8 or 16 players.
- What to do: Pick 8 or 16 players.
- The app offers: Change size
- PROGRAM_TOURNAMENT_FULL
- This tournament is already full.
- What to do: Nothing was charged. Join the next one.
- The app offers: Find another tournament
- PROGRAM_ALREADY_REGISTERED
- You are already registered in this tournament.
- What to do: It starts automatically as soon as every seat is filled.
- The app offers: Waiting for players
- PROGRAM_TOURNAMENT_NOT_REGISTERING
- This tournament is no longer taking registrations.
- What to do: It has started or expired. Nothing was charged. Join another one.
- The app offers: Find another tournament
- PROGRAM_TOURNAMENT_NOT_ACTIVE
- This tournament is not in progress.
- What to do: Refresh to see its current state.
- The app offers: Refresh status
- PROGRAM_INVALID_BRACKET_MATCH
- That bracket match cannot be reported yet.
- What to do: Its players are not decided yet. The referee retries automatically.
- The app offers: Waiting for results
- PROGRAM_MATCH_ALREADY_REPORTED
- That bracket match was already reported.
- What to do: Refresh to see the latest bracket.
- The app offers: Refresh bracket
- PROGRAM_TOURNAMENT_NOT_COMPLETE
- The tournament has not finished yet.
- What to do: Prizes are paid as soon as the final is reported.
- The app offers: Waiting for the final
- PROGRAM_INVALID_RECIPIENT
- The prize recipient does not match the tournament result.
- What to do: Reload and try again.
- The app offers: Reload
- PROGRAM_INVALID_REFUND_RECIPIENT
- That entry was already refunded or is not part of this tournament.
- What to do: Refresh to see which entries are still refundable.
- The app offers: Refresh status
- PROGRAM_INSUFFICIENT_VAULT_BALANCE
- The vault does not hold enough for this amount.
- What to do: Enter a smaller amount.
- The app offers: Change amount
- PROGRAM_SEASON_UNDERFUNDED
- The season vault does not hold the published prize totals.
- What to do: Lower the totals to the current pool, or wait for the pool to grow.
- The app offers: Review totals
- PROGRAM_TOO_MANY_SEASON_ENTRIES
- The season payout list has too many entries.
- What to do: Publish between 1 and 64 entries.
- The app offers: Review list
- PROGRAM_INVALID_MERKLE_PROOF
- This payout is not on the published season list.
- What to do: Rebuild the payout batch from the published list.
- The app offers: Rebuild batch
- PROGRAM_ALREADY_PAID
- This season entry was already paid.
- What to do: Skip it and continue with the remaining entries.
- The app offers: Refresh status
- PROGRAM_SEASON_OVERDISTRIBUTED
- These payouts exceed the published season totals.
- What to do: Check the payout list against the published totals.
- The app offers: Review list
- PROGRAM_INVALID_SLOT_HASHES
- The network's recent slot data could not be read.
- What to do: Try again in a few seconds.
- The app offers: Try again
- PROGRAM_INVALID_AMOUNT
- The amount must be greater than zero.
- What to do: Enter a positive amount.
- The app offers: Change amount
- PROGRAM_UNSUPPORTED_CURRENCY
- That currency is not supported for this action.
- What to do: Pick SOL or USDC.
- The app offers: Change currency
- PROGRAM_NO_PENDING_ADMIN
- No admin transfer is waiting for this wallet.
- What to do: Ask the current admin to start the transfer to this wallet first.
- The app offers: Go home
- PROGRAM_RECIPIENT_NOT_RENT_EXEMPT
- The recipient wallet is empty and cannot receive such a small SOL amount.
- What to do: Send the recipient a little SOL first, then retry the payout.
- The app offers: Retry payout
- PROGRAM_INVALID_REMAINING_ACCOUNTS
- The transaction lists the wrong number of accounts.
- What to do: Rebuild the transaction and try again.
- The app offers: Try again