Testing Stripe Terminal

Learn how to effectively test your Terminal integration.

The best way to achieve a successful Terminal deployment is to test every part of your integration. We provide testing tools for each stage:

  1. Before ordering a reader, test your integration with the reader simulator.
  2. Test your complete hardware integration with a physical test card.

Simulated reader

The Stripe Terminal SDK comes with a built-in simulated card reader, so you can develop and test your app without connecting to physical hardware. Whether your integration is complete or you’re just starting out, use the simulated reader to emulate all the Terminal flows in your app: connecting to a reader, updating reader software, and collecting payments.

Note that the simulated reader does not provide a UI. After connecting to it in your app, you can see it working when calls to the Stripe SDK succeed.

Simulated test cards

The simulated reader can be configured to use a simulated test card, enabling you to test different flows within your point of sale application. Currently, this is only available in our JavaScript SDK.

Before collecting a payment method, configure the simulated reader to use one of the following test card numbers or test payment methods to produce specific responses.

Standard test cards

Test Card Number Test Payment Method Brand
4242424242424242 visa Visa
4000056655665556 visa_debit Visa (debit)
5555555555554444 mastercard Mastercard
5200828282828210 mastercard_debit Mastercard (debit)
5105105105105100 mastercard_prepaid Mastercard (prepaid)
378282246310005 amex American Express
371449635398431 amex2 American Express
6011111111111117 discover Discover
6011000990139424 discover2 Discover
3056930009020004 diners Diners Club
36227206271667 diners_14digits Diners Club (14 digit card)
3566002020360505 jcb JCB
6200000000000005 unionpay UnionPay
4506445006931933 interac Interac

Test cards for specific error cases

Test Card Number Test Payment Method Result
4000000000000002 charge_declined Charge is declined with a card_declined code.
4000000000009995 charge_declined_insufficient_funds Charge is declined with a card_declined code. The decline_code attribute is insufficient_funds.
4000000000009987 charge_declined_lost_card Charge is declined with a card_declined code. The decline_code attribute is lost_card.
4000000000009979 charge_declined_stolen_card Charge is declined with a card_declined code. The decline_code attribute is stolen_card.
4000000000000069 charge_declined_expired_card Charge is declined with an expired_card code.
4000000000000119 charge_declined_processing_error Charge is declined with a processing_error code.
4000000000005126 refund_fail Charge succeeds but refunding a captured charge fails asynchronously with a failure_reason of expired_or_canceled_card. Note that because refund failures are asynchronous, the refund will appear to be successful at first and will only have the failed status on subsequent fetches. We also notify you of refund failures using the charge.refund.updated webhook event.

Physical test card

Test payments with your Stripe Terminal reader using a physical test card. You can purchase readers and physical test cards from the Terminal tab of the Stripe Dashboard.

This physical test card supports both chip entry and contactless payments. It only works with Stripe’s pre-certified readers, and only against the Stripe API in test mode. If you attempt to use your physical test card in live mode, the Stripe API returns an error. Unless stated otherwise, use the PIN 1234 when prompted.

When creating payments using a physical test card, use amounts ending in the following values to produce specific responses:

Decimal Result
00 Payment is approved.
01 Payment is declined with a call_issuer code.
02 (Contactless only) Payment is declined with an offline_pin_required code. Enter the PIN 1234 to complete the transaction.
03 (Contactless only) Payment is declined with an online_or_offline_pin_required code. Enter any 4-digit PIN to complete the transaction.
05 Payment is declined with an generic_decline code.
55 Payment is declined with an incorrect_pin code.
65 Payment is declined with an withdrawal_count_limit_exceeded code.
75 Payment is declined with an pin_try_exceeded code.

For example, a payment processed using a physical test card for the amount $25.00 succeeds; a payment processed for the amount $10.05 is declined.

Next steps