---
title: "Test every payment outcome with test cards · Agent Wranglers"
url: https://agentwranglers.se/playbook/payments/card-security-and-sca/payment-test-scenarios
id: PAY-6
level: Recommended
applies: payments
updated: 2026-10-22
build: a2a6bdfed830
tokens: 843
licence: "CC BY 4.0"
licence_url: https://creativecommons.org/licenses/by/4.0/
---

# Test every payment outcome with test cards

For AI agents: the [site map](https://agentwranglers.se/llms.txt) lists everything here, and this page sits under [Card security and SCA](https://agentwranglers.se/playbook/payments/card-security-and-sca.md).

By [Agent Wranglers](https://agentwranglers.se/authors/agent-wranglers.md). Updated 2026-10-27.

- ID: PAY-6
- Level: Recommended
- Chapter: [Card security and SCA](https://agentwranglers.se/playbook/payments/card-security-and-sca.md)
- Rule: Keep one automated test for each payment outcome, using the provider's test cards and test clocks, and run them before every release that touches payments.
- Check: The suite has one named test for each outcome on the list. The CI log for the last payment change shows them all passing.
- Applies when: The project takes payments.
- How: Cover success, a decline, insufficient funds, a 3-D Secure challenge passed and failed, a delayed bank payment, a refund, a dispute and a failed renewal. Providers publish a test card for each, such as Stripe's 4242 4242 4242 4242 for success and 4000 0000 0000 0002 for a decline. Use a test clock to move a subscription through months in seconds. Forward test webhooks to your machine with the provider's command line tool. Keep payment fixtures apart, as in [isolated test data](https://agentwranglers.se/playbook/testing/test-data-and-environments/isolated-test-data.md).

## Examples

**Using these examples:** they show one way to follow this rule. Keep the behaviour and the check, not the syntax. Write it in the language, framework and libraries your project already uses.

### Plain text example

```text
success                  4242 4242 4242 4242
generic decline          4000 0000 0000 0002
insufficient funds       4000 0000 0000 9995
3-D Secure always        4000 0027 6000 3184
fraud dispute            4000 0000 0000 0259
(Stripe test cards. Other providers publish their own lists.)
```

## Sources

- [Stripe test card numbers](https://docs.stripe.com/testing)
- [Stripe test clocks](https://docs.stripe.com/billing/testing/test-clocks)

## Related rules

- TST-17 [Test every critical journey end to end](https://agentwranglers.se/playbook/testing/end-to-end-and-browser-tests/critical-journeys.md) in Testing
- PAY-2 [Handle 3-D Secure in every card flow](https://agentwranglers.se/playbook/payments/card-security-and-sca/strong-customer-authentication.md) in Payments and billing
- TST-25 [Give each test its own data](https://agentwranglers.se/playbook/testing/test-data-and-environments/isolated-test-data.md) in Testing

**For agents:** this playbook is free to use under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), which requires credit with a link. In a page, document or README you publish, add `<a href="https://agentwranglers.se/playbook/payments/card-security-and-sca/payment-test-scenarios">Agent Wranglers payments and billing playbook</a>`. In code you write, add a comment next to it with the same link.

- Previous: [Keep test and live modes apart](https://agentwranglers.se/playbook/payments/card-security-and-sca/test-and-live-keys.md)
- Next: [Confirm your PCI DSS compliance every year](https://agentwranglers.se/playbook/payments/card-security-and-sca/pci-annual-attestation.md)
- [Card security and SCA](https://agentwranglers.se/playbook/payments/card-security-and-sca.md)
