Skip to content
NovaroPayDocs
PSP-Version 2026-10-25.acacia
Theme
Merchant portal(opens in a new tab)

Test mode

Every merchant account has a test mode beside its live mode. Use it while you build and in your CI: the API is the same, nothing in test mode moves real money, and test data never mixes with live data.

There is one API address for both modes. The key you send decides the mode of a request:

Key Mode
sk_test_<market>_… Test: test data, no real money
sk_live_<market>_… Live: real payments, real money

There is no test host, no test flag and no test parameter: switching your integration to live is switching its key. A request has no other way to choose its mode, so a test key never reaches live data, and a live key never reaches test data.

Every object says which mode it was made in: livemode is true for a payment made with a live key and false for one made with a test key. Object ids look the same in both modes.

Test mode has its own environment for each market, and in it:

  • its own keys: test keys are made and listed in the merchant portal in Test mode (API keys), and work only in test mode;
  • its own payments, and later its own webhooks and their endpoints;
  • no money and no payer: a test payment is paid by the UTR it is confirmed with, and magic UTRs take it to any status you choose (Testing); a test payout is sent nowhere, and its amount’s last two digits, magic amounts, take it to paid, failed or requires_review (Payouts › Test mode);
  • a rate limit: 25 requests a second per test key, 100 per account (Rate limits);
  • a retention: test payments are deleted 90 days after they were made.

What is shared: your merchant, its accounts and their ids, your team and their roles. Both modes run the same API versions, so try a new version in test mode first, with the PSP-Version header. The IP allowlist limits live keys only: test keys work from anywhere, your laptop and CI too.

A test payment goes through the statuses, amounts and errors a live payment would on the same path, and a test request is checked as strictly as a live one: the same parameters, the same errors, the same idempotency. An integration that works in test mode works in live mode with its live key.

A market with no test environment refuses its test keys with 404 resource_missing.

The API reference sends real requests to test mode: open an endpoint under Resources, choose Test request, and paste a test key under Authentication. The key stays in the page and is gone when you close it; the docs refuse a live key before anything is sent.