Shop, Revenue and Payouts

Sell items for V-Coins, manage prices and availability on the Items page, read Shop Analytics and Revenue, and connect Stripe to receive payouts.

8 min read

How money flows through a Vastopia game#

Players buy V-Coins from the platform with real money, then spend those coins in your game's premium store. Every sale is split between you and the platform, your share is held for a chargeback buffer, and once it settles it is paid to a Stripe account you connect from the dashboard.

The pieces you manage are spread across the editor and three dashboard pages:

TaskWhere
Create store items, link them to game items, upload iconsEditor: ToolsStore Tool
Enable or disable items, change pricesDashboard game page → ShopItems
Coin revenue, conversion, top items, recent purchasesDashboard game page → ShopShop Analytics
Real Stripe revenue attributed to the game, refunds and disputesDashboard /dashboard/{gameId}/revenue (Owner and Finance only)
Stripe Connect onboarding, balance, earnings historyDashboard sidebar → Payouts (/dashboard/payouts)

The split, in numbers#

  • The platform fee is 30% of each sale by default (the figure shown in the dashboard at the time of a sale is the one that applies). Fee coins are rounded down, so a 100 V-Coin item pays the platform 30 coins and earns you 70.
  • Creator earnings convert to USD at the platform's coin rate: 1,000 V-Coins = $30, so each coin of earnings is worth $0.03. The 70 coins above become $2.10.
  • Earnings sit as pending for 30 days after the purchase, then become available. A payout job moves available funds to your Stripe account automatically once the available balance reaches the payout threshold (the platform default is $50).
  • A refund or chargeback writes a reversal against the original sale.

The revenue share and holds are also described in the Creator Terms on the website.

Create store items (in the editor)#

Store items are authored in the editor and written straight to the platform, so the dashboard and the in-game store always see the same catalog. You must be signed in to the platform and the project must be linked to a game you own (see Create your first game).

  1. Open the Tools editor and click Store Tool ("Edit your premium V-Coin store items").
  2. Click + Add Store Item. Enter an Item ID (a slug such as sword_skin: letters, digits, _ and - only) and a Name, then click Create.
  3. With the entry selected, fill in the form:
    • Granted game item - the item from your project's item list that the player receives; its icon is uploaded as the store icon. Double-click an entry in the Game Items browser on the right to link it.
    • Name and Description.
    • Price (V-Coins) - a whole number from 1 up to 10,000,000.
    • Type (fixed after create) - cosmetic, consumable or permanent.
    • Category - free text, for example cosmetics.
    • Stock (-1 = unlimited).
    • Active (listed in store) - off hides the item without deleting it.
    • Icon path override - an optional local PNG, WebP or JPG used instead of the linked item's icon. Icons are capped at 512 KiB.
  4. Click Save.

Right-click an entry in the store list for Duplicate and Delete.

TypeBehavior at runtime
permanent / cosmeticOwned once per player; a second purchase is refused as already owned. A refunded item can be bought again.
consumableCan be bought repeatedly and consumed one charge at a time.

The dashboard also recognizes two further types, currency_pack and subscription, shown as Currency and Subscription badges if a catalog contains them, but the Store Tool only offers the three above.

Items page (dashboard)#

ShopItems on the game page lists the catalog. As the page itself says, items are created in the editor; here you enable or disable them and adjust prices, and the in-game store overlay updates automatically. It needs the shop.manage capability (Owner and Developer roles).

Columns are Item (icon, name and the slug you chose as the Item ID), Type, Price, Stock (a dash means unlimited), Sold, Status (Active or Inactive) and Actions.

To change a price:

  1. Edit the number in the Price field (the c suffix stands for V-Coins).
  2. A Save price button appears as soon as the value differs from the saved price. Click it.

The page rejects negative or non-numeric values, and the platform rejects anything outside 1 to 10,000,000 coins. Prices are authoritative on the server: the price recorded at the moment of purchase is what the player pays and what your share is computed from.

To take an item off sale without deleting it, click Disable; click Enable to list it again. An empty catalog shows "No items yet" with a reminder to create items in the editor.

Shop Analytics#

ShopShop Analytics (also shop.manage) covers sales in coins. A range switch at the top right offers 7d, 30d and 90d (30 days by default).

CardMeaning
Creator earningsYour net share over the range, in USD
PurchasesSuccessful purchases
Unique buyersDistinct players who bought something
ConversionPurchases divided by store opens, as a percentage; a dash until the store has been opened

Below the cards:

  • Daily revenue (V-Coins, creator's net) - an area chart of your daily net coins.
  • Top items - the best-selling items with units sold and coin revenue, taken from the most recent day in the range. "No data yet" means nothing sold that day.
  • Recent purchases - the last 25 purchases with item name, time, status (pending, succeeded, failed or refunded) and coin price.

CCU, retention and other non-shop metrics live on the separate Analytics page.

Revenue page#

The Revenue page at /dashboard/{gameId}/revenue shows real Stripe revenue attributed to this game - the money players paid for coin packages while buying inside your game - rather than coin-denominated store sales. It is not listed in the game sidebar; open it from global search (Ctrl+K / Cmd+K, then "Revenue") or by URL. It requires revenue.read, which only the Owner and Finance roles carry (see Members, roles and staff).

Overview tab#

Pick a range: Today, 7d, 30d (default) or 90d. Figures refresh every 60 seconds while the tab is visible.

TileMeaning
GrossTotal charged, with the purchase count beneath
NetGross minus refunds and Stripe fees, with the fee total beneath
RefundsRefunded amount and its share of gross
PayersDistinct paying users; notes open disputes when there are any
ARPPUAverage revenue per paying user

Gross over time charts the range daily (weekly for 90d). Two tables follow: By SKU (the coin package bought, with purchases, gross and net) and By country (purchases and gross per country code, Unknown when Stripe reported none). An empty range shows "No revenue in this range" with a hint to test a Stripe purchase and wait about 30 seconds for the webhook.

Refunds tab#

Three filters cover the last 90 days: Eligible (successful purchases you can refund), Refunded and Disputed. Each row shows when, the SKU, amount, country and status; refunded rows carry the refund amount and reason, disputed rows the dispute reason.

To refund a purchase:

  1. On Eligible, type a reason of at least 3 characters (up to 500) in the row's Refund column.
  2. Click Refund. The "Issue refund?" dialog repeats the customer ID, amount, SKU and reason, and warns that refunds are irreversible and go back to the customer through Stripe.
  3. Click Issue refund.

Payouts#

Payouts in the left sidebar (/dashboard/payouts) is account-level: it aggregates your share of every store sale across all games you own. Older per-game payout links redirect here. The page has three parts.

Stripe Connect card#

Until you connect an account the card says you need to connect a Stripe account before you can receive payouts, notes it takes two to three minutes, and that Stripe handles tax forms (1099-NEC) and KYC.

  1. Click Connect Stripe. You are sent to Stripe's hosted onboarding and returned to the dashboard when done.
  2. If Stripe still needs something, the card shows an In progress or Under review badge, lists up to five outstanding requirements, and offers Continue onboarding.
  3. When the badge reads Ready ("Payouts enabled") with your country and currency beneath, Open Stripe dashboard opens your Express account in a new tab for bank details, tax documents and payout history.

Balance cards#

CardMeaning
Pending (n)Earnings inside the 30-day hold; n is the number of ledger rows
Available (n)Settled earnings waiting for the next automatic payout
Paid outLifetime amount transferred to Stripe
ReversedEarnings taken back by refunds or chargebacks

Earnings history#

The table lists your 50 most recent ledger rows with Date, Kind (sale, payout or reversal), State (pending, available, paid or reversed), Game (linked to the game page when you still have access to it), Coins, USD and Available (the date a sale becomes payable). Payout rows are negative entries that net the paid sales out of your balance.

If a request fails, a Try again button reloads the page's data.

Permissions summary#

PageCapabilityRoles
Items, Shop Analyticsshop.manageOwner, Developer
Revenue (including refunds)revenue.readOwner, Finance
PayoutsYour own account (the legacy per-game route is gated by shop.payout)Owner, Finance

Troubleshooting#

  • Store Tool says it needs a platform game_id. Sign in from the Publish tab and link the project to a game you own; the Store Tool writes to the platform, not to project files.
  • An item is missing in game. Check it is Active on the Items page, that it has stock left, and that the player does not already own it (permanent and cosmetic items).
  • Shop Analytics shows sales but Payouts is empty. Earnings appear in the ledger immediately as pending; the Available card only moves after the 30-day hold, and Paid out after an automatic payout, which needs a Ready Stripe account and a balance over the threshold.
  • Revenue is zero but players bought items. The Revenue page counts Stripe coin-package purchases made inside your game, not coin spend. Coin spend is on Shop Analytics.
Spotted a mistake or something missing?Tell us on Discord