PayNow can send each completed order to ServerStats as a webhook. That adds the game context a store dashboard cannot see: how long a buyer played, whether they returned, and which server they used. A completed order is counted as revenue; refunds and chargebacks reverse it for net revenue. Keep PayNow as the source of truth for settlement, payment fees and taxes.
Connect PayNow to ServerStats
- Install the ServerStats agent on your game server, then open Store connections as an organisation owner or admin. Add PayNow and copy the unique webhook URL from the connection.
- In the PayNow dashboard, open Webhooks. Create JSON webhook subscriptions pointing to that URL for
ON_ORDER_COMPLETED,ON_REFUND,ON_CHARGEBACK,ON_CHARGEBACK_CLOSEDandON_PAYMENT_FAILED. - PayNow assigns a separate signing secret to each subscription. Save all of the secrets in the ServerStats connection, up to eight. ServerStats checks signatures before recording events and refuses requests older than five minutes.
- PayNow does not send an initial validation ping. The connection changes to receiving after a real order or a resend from PayNow's webhook history. Check the status in ServerStats after that first event.
Do not paste a Tebex secret into a PayNow connection: the signing rules and event names differ. If a delivery is refused, compare the exact webhook URL and the secret for that subscription, then use PayNow's webhook history to resend. PayNow documents its event types and webhook setup.
Revenue and player questions this answers
On Operator and Network, the Store view reports net revenue, refund and chargeback rates, average order, paying share, ARPU, ARPPU and revenue per player-hour. Package and server breakdowns can reveal whether a large checkout spike came from one product or whether repeat players are doing most of the spending. The player view puts spend beside playtime and retention. Signed, repeated webhook deliveries are deduplicated so a retry does not double count an order.
PayNow orders arrive in ServerStats without a creator code. Do not use a creator-code breakdown as a PayNow campaign report. When the game agent captures the hostname of a player's first join (Minecraft Java, Velocity or Hytale), you can compare lifetime value across hostnames instead. This does not automatically connect an individual tracked-link click to a buyer. A campaign with its own hostname gives you a measurable group; see the Minecraft growth guide for that workflow.
Matching and plan limits
The sale-to-player join works only when PayNow's buyer game ID matches the ID the agent sees in game. This means a UUID for Minecraft Java or Hytale, or SteamID64 on a supported Steam game. For FiveM, set the agent to Cfx ID mode with serverstats_id_type fivem. Bedrock purchases currently remain in store totals without a player link. If identifiers differ, the order can still be counted, but player-level reports cannot attribute it.
Incoming store webhooks are retained on the Free plan. Operator and Network unlock the Store analytics view. ServerStats does not read or store buyer email, name, IP or address from PayNow's payload. For another provider's setup, see Tebex or CraftingStore; for an explanation of metrics, see the revenue tracking guide.