Customers Can't Pay on My Website
Customers are trying to buy something on your website and the payment isn't going through. Maybe they see an error, the page spins forever, or the payment button does nothing when clicked. Every minute this is broken, you're losing real money.
Payment problems are especially frustrating because there are so many possible causes — your payment provider (Stripe, PayPal, Square), your website code, your hosting, or even the customer's bank could all be the problem. And unlike other bugs, you often won't know about this one until customers complain or you notice sales have dropped to zero.
The good news is that most payment issues have straightforward fixes once you identify which part of the chain is broken.
Error Messages You Might See
Common Causes
- Using test API keys in production — Your app is still using Stripe or PayPal test/sandbox keys instead of live keys, so real payments silently fail
- API keys expired or revoked — Your payment provider credentials stopped working and need to be updated
- SSL certificate missing — Payment providers require HTTPS. If your SSL expired, payments will be blocked
- Payment form not loading — The payment widget (Stripe Elements, PayPal button) fails to load due to a JavaScript error
- Currency or region mismatch — Your Stripe account is set to one currency but your website is trying to charge in another
- 3D Secure failing — European customers need extra bank verification (3DS) and your app doesn't handle it
How to Fix It
- Test a payment yourself — Try to make a purchase on your own site to see exactly what error appears
- Check your payment provider dashboard — Log into Stripe, PayPal, or your payment provider to see if there are failed charges or error logs
- Verify you're using live API keys — Make sure your production site uses live/production keys, not test/sandbox keys
- Check the browser console for errors — Press F12 and look for red error messages when the payment fails
- Verify SSL is active — Make sure your URL shows the padlock icon (HTTPS). Payment forms won't work on HTTP
- Contact your payment provider's support — They can see exactly why payments are being declined on their end
Real developers can help you.
Describe what's wrong in plain English. No technical knowledge needed.
Get HelpFrequently Asked Questions
How do I know if I'm using test keys vs live keys?
Stripe test keys start with 'sk_test_' and live keys start with 'sk_live_'. Check your website's settings or environment variables. If you see 'test' in the key, that's your problem — payments will appear to work but no real money is charged.
A customer says they were charged but I don't see the order. What happened?
The payment went through on Stripe's side but your website failed to record the order. Check your Stripe dashboard for the charge. This usually means there's an error in the code that runs after the payment succeeds.