DocsTest mode

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:

CardResult
4242 4242 4242 4242Always succeeds
4000 0000 0000 0002Generic decline
4000 0000 0000 9995Insufficient funds
4000 0000 0000 9987Lost card
4000 0000 0000 0069Expired card
4000 0000 0000 32203DS challenge required
5555 5555 5555 4444Mastercard, succeeds
3782 822463 10005Amex, 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:

  1. Happy path: successful payment, webhook received, order fulfilled.
  2. Card decline: make sure your UI shows a useful error and the customer can retry.
  3. 3DS challenge: verify your redirect logic still works after the customer completes 3DS.
  4. Webhook retry: return a 500 from your webhook endpoint and verify Skiro retries (you'll see this in the dashboard delivery log).
  5. Session expiry: let a session sit for over an hour, then try to pay it. Confirm your error handling.
  6. 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 mode
  • sk_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.
Last updated: May 30, 2026