Getting started
Test mode
Every DottsPay account has a test mode and a live mode. Build and test everything in test mode, where no real money moves, then switch keys to go live.
Test and live
The mode comes from the key you use. There is no separate URL.
| Test mode | Live mode | |
|---|---|---|
| Secret key | sk_test_… | sk_live_… |
| Money | Simulated. Nothing is charged or paid out. | Real charges and real payouts. |
| Availability | Straight away, after sign-up. | After your account is approved. |
| Data | Test transactions, links and customers only. | Live data only. |
| Webhooks | Sent to your test URL, signed with the test secret. | Sent to your live URL, signed with the live secret. |
| mode field | "test" | "live" |
- Secret key
- Test mode
sk_test_… - Live mode
sk_live_… - Money
- Test modeSimulated. Nothing is charged or paid out.
- Live modeReal charges and real payouts.
- Availability
- Test modeStraight away, after sign-up.
- Live modeAfter your account is approved.
- Data
- Test modeTest transactions, links and customers only.
- Live modeLive data only.
- Webhooks
- Test modeSent to your test URL, signed with the test secret.
- Live modeSent to your live URL, signed with the live secret.
- mode field
- Test mode
"test" - Live mode
"live"
Test and live data never mix. A test key cannot read a live transaction, and asking for one returns 404 not_found. Every object carries a mode field so you can always tell which one you are looking at.
Test card
On a test checkout page, pay with this test card. It goes through the full flow, including the PIN and OTP steps, without moving any money.
- Card number
- 4084 0840 8408 4081
- Expiry
- Any future date, for example 12/30
- CVV
- 408
- PIN
- 0000
- OTP
- 123456
Test details only work in test mode
This card will not work on a live checkout. Never use real card details in test mode.
To see what happens when a payment does not complete, start a checkout and leave the page without paying. Make sure your callback page and your order records handle a reference whose status is not success.
What to test before going live
- A successful payment, end to end, including your callback page.
- Server-side verification with Verify a transaction, including a check that the amount matches.
- Your webhook endpoint: signature check, a fast 2xx reply, and safe handling of a duplicate delivery.
- A failed or abandoned payment, so customers see a sensible message.
- A refund, if you plan to offer them.
Going live
- Complete account verification in the dashboard. Live mode is switched on once it is approved.
- Copy your live secret key from Dashboard → Developers into your production environment.
- Add a live webhook URL and store its new secret.
- Make a small real payment and refund it.
Calling the API with a live key before live mode is on returns 403 merchant_not_live.