Hi Brian,
Stripe.js doesn’t actually test the card against the card networks, it just makes sure that the inputs are valid (so the cvc is 3 or 4 digits, expiration is in the future, and the card passes the luhn check).
If they typo their card number it will likely fail a luhn check hence Stripe.js will catch it.
Normally as soon as you get a card number you are gonna want to either make a charge or save it to a stripe customer. (Since tokens are only guaranteed for 5 minutes).
When you save a card to a customer, Stripe does check it against the card networks and will error if something is wrong. With this error you can then tell your customer to refill out their credit card form.
Checkout.js can be configured to actually test the card against the card network. All you have to do is set an “amount” in Checkout and it will do the checks for you. Note however that when you try to charge the full amount, the charge may still be declined.
--
Matt Arkin
Kollective Solutions