MemberPulse

UJ-M-005: Recover from Failed Payment

Member resolves a failed payment to restore or maintain membership access

Journey Overview

AttributeValue
Journey IDUJ-M-005
ActorMember with failed payment
GoalResolve payment issue and restore/maintain membership
TriggerPayment fails for renewal, event, or other purchase
OutcomePayment successful, access restored

Preconditions

  • Member has attempted a payment
  • Payment was declined or failed
  • Member has access to update payment method

Journey Flow

flowchart TD
    A[Payment fails] --> B[System logs failure]
    B --> C[Member notified]
    C --> D[Member accesses recovery]
    D --> E{Failure type?}
    E -->|Card issue| F[Update payment method]
    E -->|Auth required| G[Complete 3D Secure]
    E -->|Temporary| H[Auto-retry scheduled]
    F --> I[Retry payment]
    G --> I
    H --> J{Retry successful?}
    I --> J
    J -->|Yes| K[Payment successful]
    J -->|No| L[Escalate / Support]
    K --> M[Access restored]
    L --> N[Manual resolution]

Detailed Steps

  1. Payment Failure Detection

    System detects payment failure via:

    • Stripe webhook: payment_intent.payment_failed
    • Stripe webhook: invoice.payment_failed
    • Real-time checkout error

    Failure recorded with:

    • Timestamp
    • Amount
    • Failure reason (Stripe error code)
    • Attempt number
    • Payment method used
  2. Immediate Notification

    Member receives immediate notification:

    In-App:

    • Banner on dashboard: "Payment failed - Action required"
    • Modal if currently in checkout

    Email (sent immediately):

    Subject: Action Required: Payment Failed
    
    Hi [Name],
    
    Your payment of $[amount] for [item] was unsuccessful.
    
    Reason: [friendly error message]
    
    Please update your payment method to resolve this issue:
    [Update Payment Button]
    
    If you need assistance, contact our support team.
  3. Dunning Sequence (Subscriptions)

    For subscription renewals, automated retry schedule:

    DayAction
    0Initial failure, email sent
    1Auto-retry #1
    3Auto-retry #2, email reminder
    5Auto-retry #3
    7Final retry, urgent email
    10Membership suspended, final notice
    14Membership cancelled (grace period end)
  4. Member Updates Payment Method

    Member clicks recovery link:

    1. Directed to payment update page
    2. Current (failed) method shown
    3. Option to:
      • Update existing card details
      • Add new card
      • Use saved alternative card
      • Try digital wallet (Apple/Google Pay)
    4. New card validated with $0 authorization
    5. New card set as default
  5. Retry Payment

    After updating payment method:

    Automatic Retry:

    • System immediately retries failed payment
    • Uses new default payment method
    • Member sees processing indicator

    Manual Retry:

    • Member clicks "Retry Payment"
    • Full checkout flow with new card
  6. Success Confirmation

    On successful payment:

    • Success message displayed
    • Confirmation email sent
    • Invoice generated
    • Membership/access restored
    • Failure record marked resolved
    • Dunning sequence cancelled

Payment Failure Types

Failure TypeCommon CausesSystem Response
Card DeclinedInsufficient funds, card limitRetry with different card
Card ExpiredPast expiry dateUpdate card details
Authentication Failed3D Secure rejectedRetry authentication
Network ErrorTemporary connectivityAuto-retry
Fraud BlockSuspicious activityContact bank
Invalid CardIncorrect detailsRe-enter card

Recovery UI States

Dashboard Banner

┌────────────────────────────────────────────────────────────┐
│ ⚠️ Payment Failed                                          │
│                                                            │
│ Your membership renewal payment of $99.00 failed.          │
│ Please update your payment method to maintain access.      │
│                                                            │
│ [Update Payment Method]  [Contact Support]                 │
└────────────────────────────────────────────────────────────┘

Payment Update Form

  • Failed card shown (last 4 digits, expired indicator)
  • Stripe Elements form for new card
  • Saved alternative cards if available
  • Clear error message explaining failure
  • "Update and Retry" button

Smart Retry Logic

System implements intelligent retry:

FactorOptimization
Time of dayRetry at different times
Day of weekAvoid weekends for business cards
Card typeDifferent retry intervals
Previous successPrioritize previously working methods
Failure reasonSkip retries for hard declines

Escalation Path

If automated recovery fails:

  1. Day 7: Support team notified
  2. Day 10: Member account flagged
  3. Day 14: Account manager outreach (if applicable)
  4. Manual options:
    • Phone payment
    • Invoice/bank transfer
    • Payment plan arrangement

Acceptance Criteria

Frontend

  • Payment failure banner on dashboard
  • Payment update page with current card shown
  • Stripe Elements for new card entry
  • Error messages in plain language (not codes)
  • Retry button with loading state
  • Success confirmation on resolution
  • Email links deep-link to recovery page

Backend

  • POST /api/payments/update-method - Update payment method
  • POST /api/payments/retry - Retry failed payment
  • GET /api/payments/failures - Get pending failures
  • Webhook: payment_intent.payment_failed
  • Webhook: invoice.payment_failed
  • Scheduled dunning job

Permissions

  • Member can only resolve their own failures
  • Support can manually resolve on behalf

Business Rules

  • Maximum 4 auto-retries before stopping
  • Grace period access during recovery window
  • Hard declines (fraud, stolen) not retried
  • Payment method update resets retry counter

Error Handling

  • All failure reasons mapped to friendly messages
  • Stripe error codes logged for debugging
  • Support notified of repeated failures

On this page