Testing

Everything runs in test mode: no real money moves and your backend must keep test orders separate from production entitlements.

Test cards

CardResult
4242 4242 4242 4242Approved
4000 0000 0000 0002Declined: balance unchanged
4000 0027 6000 31843-D Secure challenge, then approved after Authenticate

Any future expiry and any 3-digit CVC. Real card numbers are rejected on the client and the server, and full card numbers are never stored.

Apple Pay / Google Pay: simulated buttons in test mode.

Checks worth automating

  1. A purchase credits your player once (watch your order_id dedupe).
  2. A declined card leaves the balance unchanged.
  3. A replayed player token is refused.
  4. Outage: stop your webhook endpoint, buy, start it again. The coins arrive after it comes back, exactly once.
  5. Refund from Studio → Orders: your backend gets order.refunded, so revoke (never below zero).

Studio → Integration → Send test event sends a probe webhook that grants nothing.