The card simulators stand in for a card acquirer in UAT. They never contact a card network: the result comes from the request itself, so the same request always gives the same outcome.
This page calls them the Simplified Simulator and the Simulator.
Simplified Simulator or Simulator
| Simplified Simulator | Simulator | |
|---|---|---|
| Provider service | simplified-card-simulator |
card-simulator |
| Use it for | Everyday integration testing. Pair it with the 3DS Authentication Simulator and pick the outcome with a test card. | Advanced cases: 3DS action-required, declined 3DS authentication, and the Google Pay and Apple Pay redirect page. |
| Payment methods | card, saved_card, google-pay, apple-pay |
card, saved_card, google-pay, apple-pay |
Both are card providers, so both take the same authorize and manage requests. They differ only in what authorize can return.
| Authorize behaviour | Simplified Simulator | Simulator |
|---|---|---|
| Result (approved or declined) | Yes | Yes |
simulate_redirect |
Yes | Yes |
simulate_form_submit |
Yes | Yes |
3DS action required (simulate_authentication_required) |
No | Yes |
| Declined 3DS authentication | No | Yes |
| Google Pay and Apple Pay redirect page | No | Yes |
| Reconciliation test extension | No | Yes |
In short: the Simplified Simulator has three outcomes (result, redirect, form-submit) and never goes through 3DS itself. The Simulator has the same three plus the 3DS and wallet-redirect branches.
Wallets on the Simplified Simulator
google-pay and apple-pay are still offered by the Simplified Simulator. They get no special redirect page: the request is handled like any other, from its metadata.
Default routing
Test configurations are routed to the Simplified Simulator by default. If you need to test extended behaviours (3DS action-required, a declined 3DS authentication, or the Google Pay and Apple Pay redirect page), please let us know and we will route you to the Simulator.
Control the outcome
Send these keys in the request's metadata. All values are strings.
| Key | Effect |
|---|---|
response_code |
A gateway processing code, for example TRX_STATUS_DECLINED. Default TRX_STATUS_APPROVED. |
response_message |
Message returned with the result. Default approved. |
approval_code, reference_number |
Returned as sent. Random six letters if omitted. |
payment_provider_status, payment_provider_response_code, payment_provider_response_message |
Returned as sent. Default approved. |
simulate_redirect |
Returns a redirect to this URL instead of a result. |
simulate_form_submit |
JSON string {"url": "...", "data": {...}}. Returns a form_submit. |
If both simulate_redirect and simulate_form_submit are set, simulate_redirect wins.
Common response_code values:
| Value | Status | Code |
|---|---|---|
TRX_STATUS_APPROVED |
APPROVED |
0000 |
TRX_STATUS_DECLINED |
DECLINED |
1000 |
TRX_STATUS_FAILED |
DECLINED |
1001 |
TRX_STATUS_PENDING |
PENDING |
1002 |
TRX_STATUS_CANCELED |
CANCELED |
1003 |
TRX_STATUS_DECLINED_INSUFFICIENT_FUNDS |
DECLINED |
1004 |
Capture, void and refund
Management requests (capture, void, refund) are answered from the transaction's metadata with the same keys as above. With no metadata they are approved.
Test cards
With the Simplified Simulator, a test card number picks the outcome, so no metadata is needed. For example, 4000000000000002 (Visa) or 5200000000000007 (Mastercard) gives a frictionless, approved payment. The full list of scenarios and card numbers is on the 3DS Authentication Simulator page.
These cards need the simplified authentication simulator
The card number is read by the simplified-authentication-simulator authentication service on the terminal, paired with the simplified-card-simulator card provider. The card provider itself answers from metadata.
Test card for the Simulator
The Simulator does not map card numbers to outcomes: any valid-format card works, and the result comes from the request metadata. For 3DS, the authentication outcome comes from the simulated_flow metadata of the full 3DS simulator (default VERSIONING_FINGERPRINT_Y_CHALLENGE, a challenge).
A card you can use:
| Card number | CVV | Expiry |
|---|---|---|
4111111111111111 |
123 |
10/2030 |
With no simulated_flow, this card gets the default challenge flow. See Advanced: metadata-driven simulator for the other simulated_flow values.