Investigate why a customer's charges are failing
When to use: Customer says 'my card was declined 3 times'. You want to see what actually happened on Stripe's side.
Prerequisites
- Stripe restricted API key with read on charges/customers — dashboard.stripe.com/apikeys → Restricted keys → grant Read on Customers, Charges, Payment intents
Flow
-
Find the customerFind the Stripe customer with email '[email protected]'. Show their default payment method and total spend.✓ Copied→ Customer record with payment method details
-
Pull recent failed chargesList this customer's charges in the last 30 days where status != 'succeeded'. For each, show the failure code and message.✓ Copied→ Failure list with
card_declined/expired_card/etc. codes -
Explain and recommend actionWhat's the actual issue? Recommend what to tell the customer (e.g., 'card expired — please update', or 'fraud block — try a different card').✓ Copied→ Clear customer-facing explanation
Outcome: Resolved support ticket with the actual cause, not 'try again later'.
Pitfalls
- Looking at charges only — misses Payment Intents that never made it to a charge — Also check Payment Intents with status 'requires_payment_method' or 'canceled'
- Customer says 'declined' but it was 3DS abandonment — 3DS challenges that the user closes show as
requires_actionthen expire; check timeline