Test mode for developers

How a test key runs your integration in the sandbox on the same base URL, how test and live data stay apart, the livemode flag, emails in test mode, what isn't simulated, and test values for cards, 3D Secure, declines, disputes and bank payments.

Overview

Test mode is a sandbox beside your live business. With a test key, your whole integration runs there: checkout sessions, the checkout page, payments, refunds, disputes and webhooks behave like live, and no real money moves. Test keys work before your business is approved, so you can build while it is reviewed.

To see your test data in the dashboard, turn on the Test mode switch in VezmoPay: Test mode and live mode explains the switch and what your customers see.

The key picks the mode

  • One base URL. Test and live calls both go to https://api.vezmo.com/api/v1. There is no test URL, flag or header: a test key makes test objects, a live key live ones.

  • Test data stays in test. A test key sees only test objects, and a live key only live ones. Asking for an object of the other mode answers 404, and the message says so, for example "a similar object exists in live mode, but a test mode key was used to make this request".

  • livemode on everything that moves money. Every payment and every payment event carries livemode: false in test, true in live. Check it before you ship an order.

  • A rate limit per key. A test key allows 25 requests a second by default, a live key 100. See Rate limits.

Payment links, invoices and proposals you make with a test key are test ones too, and their events carry livemode: false. The ones you make in the dashboard are always live.

What test mode covers

Works like liveNot in test mode
Checkout sessions, the hosted and embedded checkout and card fieldsPayouts. Test payments build up a balance, but nothing is paid out to a bank.
Cards, 3D Secure, declines and bank payments, with the test values belowAgreements. They have no test mode. A test key can make drafts only; agreement events always carry livemode: true.
Refunds and disputes
Webhooks, with livemode: false

One webhook endpoint receives both test and live events, signed with the same secret. Your handler tells them apart by livemode.

Emails in test mode

Emails about test objects (invoices, proposals, receipts, subscriptions) go only to the addresses of your business's team. Any other address, such as a customer's, is skipped. Use a teammate's address when you want to see one.

The bank verification email is the exception: it goes to the address entered at checkout. In a test bank payment, use an address of your own.

Test cards

Use any future expiry date, any security code and any ZIP code.

Card numberWhat happens
4242 4242 4242 4242The payment succeeds.
4000 0000 0000 3220The bank asks for 3D Secure. Complete the test challenge and the payment succeeds.
4000 0000 0000 30553D Secure without a challenge.
4000 0000 0000 0002Declined. payment.failed carries declineCode: "generic_decline".
4000 0000 0000 9995Declined for insufficient funds.
4000 0000 0000 0259The payment succeeds, then is disputed as fraudulent. dispute.created usually follows within seconds; allow up to 10 minutes.

A declined test payment sends payment.failed with the same decline details as a live one: reason, declineCode, and a decline object with its message, category, source and whether a retry may work (retriable). See Webhooks in the API reference.

To answer a test dispute, submit evidence on it in the dashboard with Test mode on: you then receive dispute.updated. See Disputes in the API reference.

Test bank payments (ACH)

In a test checkout, choose Bank, then enter the account details by hand.

DetailsWhat happens
Routing 110000000, account 000123456789The payment waits for bank verification (payment.awaiting_verification).
Deposit amounts 32 and 45Verifies the bank: the payment moves to processing, then succeeds.
Routing 110000000, account 000555555559The payment succeeds, then is disputed and lost (dispute.created, then dispute.closed).

The verification email and the verify page work as in live. See Bank payments in the API reference.

In the dashboard

Once VezmoPay is approved for your business, Developers › API keys shows only your test keys while Test mode is on.

Developers with Test mode on: the orange banner, the note Live keys are hidden while Test mode is on, switch it off to manage them, and the Test keys card with the active key Website checkout (test).
With Test mode on, live keys are hidden.

Go live

Swap the test key for a live key. Nothing else changes in your code: same base URL, same calls, same webhook endpoint. The Go-live checklist lists what to check first.

Questions

My test payment doesn't show in VezmoPay

Turn on Test mode in VezmoPay. The switch is kept per browser, so a teammate or another browser may still show live data.

Do I need a separate webhook endpoint for test events?

No. The same endpoint receives both. Check livemode in each event.

Can I test a payout?

No. Payouts happen in live mode only.

Facts checked against the product on 9 Nov 2026.

Was this page helpful?