vermilion
getting started

Test cards & sandbox

The sandbox includes a deterministic test PSP (the simulator) plus real Stripe, Adyen and Shift4 test modes. Everything below is scripted and repeatable — perfect for CI.

Simulator (method sim_card)

The last two digits of the amount select the outcome:

amount ends inoutcome
…05declined — insufficient_funds
…51declined — card_declined
…613DS challenge — requires_action
…19technical failure — psp_timeout (ambiguous: payment held in processing, no fallback)
…99technical failure — psp_error (ambiguous: payment held in processing, no fallback)
anything elsesuccess — captured (or authorized with manual capture)

Example: 4000 captures, 4005 declines, 4019 times out. A timeout is ambiguous — the charge may exist at the PSP — so the payment is held in processing for reconciliation instead of being retried on another provider (see routing & fallback). To exercise your fallback chain, disable a connection or point one at an unreachable host.

Stripe test mode (method card)

stripe.tokenoutcome
pm_card_visasuccess
pm_card_chargeDeclinedInsufficientFundsinsufficient_funds
pm_card_threeDSecure2Required3DS challenge

Full catalogue: the Stripe testing docs — every token works through Vermilion unchanged.

Adyen test mode (method card)

Use Drop-in-style encrypted fields with Adyen's test_ convention:

fieldvalue
adyen.encryptedCardNumbertest_4111111111111111
adyen.encryptedExpiryMonthtest_03
adyen.encryptedExpiryYeartest_2030
adyen.encryptedSecurityCodetest_737

Deterministic refusals: add adyen.testAcquirerResponseCode"12" yields insufficient_funds, "6" an expired card, "2" a generic refusal.

Environments