Test mode
Test mode lets you build and verify your integration without processing real money. Use it during development and for end-to-end tests in CI.
What test mode does
When you use a test API key (starts with sk_test_):
- No real cards are charged
- No real crypto is sent to your wallet
- Webhooks fire as normal so you can test your handlers
- The dashboard shows test data in a separate view from live
- Test sessions and live sessions live in completely separate scopes
Test cards
Use these card numbers in test mode:
| Card | Result |
|---|---|
4242 4242 4242 4242 | Always succeeds |
4000 0000 0000 0002 | Generic decline |
4000 0000 0000 9995 | Insufficient funds |
4000 0000 0000 9987 | Lost card |
4000 0000 0000 0069 | Expired card |
4000 0000 0000 3220 | 3DS challenge required |
5555 5555 5555 4444 | Mastercard, succeeds |
3782 822463 10005 | Amex, succeeds |
For all test cards, use any future expiration date and any 3-digit CVC (4-digit for Amex).
Test scenarios
Patterns we recommend testing before going live:
- Happy path: successful payment, webhook received, order fulfilled.
- Card decline: make sure your UI shows a useful error and the customer can retry.
- 3DS challenge: verify your redirect logic still works after the customer completes 3DS.
- Webhook retry: return a 500 from your webhook endpoint and verify Skiro retries (you'll see this in the dashboard delivery log).
- Session expiry: let a session sit for over an hour, then try to pay it. Confirm your error handling.
- Idempotency: send the same webhook twice (replay from the dashboard) and verify you only fulfill the order once.
Switching modes
The mode is determined entirely by the API key prefix:
sk_test_*: test modesk_live_*: live mode
To go live, swap the test key for the live key in your environment. Same for webhook secrets: each environment has its own.
Never use test keys in production
Test keys can't process real money. If a customer hits your live site and the backend is configured with a test key, every payment will fail. Always double-check your env vars before deploying.