Test mode vs live mode
Updated June 29, 2026
Passmint has two modes. Test mode is a free sandbox for building and trying things out. Live mode is for the real passes you send to real people. They keep their data separate, so nothing you do while experimenting can affect your production passes or your bill.
What's different in test mode
- Passes are watermarked. Every test pass shows a [TEST] label on the organization name, so it's obvious at a glance that it isn't a production pass.
- They're free. Test passes never count toward your plan's active-pass limit and never appear on an invoice. Iterate as much as you like.
- They use shared credentials. In test mode, Passmint signs Apple and Google passes with its own shared credentials, so you can try the full flow before setting up your own. For live Google passes you'll need to connect your own issuer; for Apple, Passmint's certificate covers live issuance on most plans, with the option to use your own on Pro and Scale.
Live mode is the mirror image: no watermark, passes count toward your plan, and Apple or Google passes are signed with the credentials connected to your account.
Switching modes
The dashboard has a single mode switch. The dashboard opens in test mode by default, and your choice is remembered as you move around.
On the developer side, your API keys are mode-specific. A key beginning with
pmk_test_ always operates in test mode, and a key beginning with pmk_live_
always operates in live mode. There's no separate switch for the API; the key you
use decides the mode.
Test and live passes don't mix. A pass issued with a test key can't be looked up with a live key, and the watermark can't be removed after the fact. Re-issue in live mode when you're ready for the real thing.
Why your counts can look different
Because test passes are excluded from billing, the active-pass count on your billing page reflects live, installed, non-voided passes only. If you've been testing heavily, you may see plenty of activity in the dashboard while your billed active-pass count stays at zero. That's expected. For exactly what counts, see what counts as an active pass.