• Stefy Lanza (nextime / spora )'s avatar
    Fix Stripe charge settling: attach PM to customer on add, use CIT for subscription upgrades · 7237e508
    Stefy Lanza (nextime / spora ) authored
    When a card was added via billing page, it was only stored in the DB — never
    attached to the Stripe customer. This meant every charge was on an unattached
    PM, which Stripe processes differently.
    
    For subscription upgrades the user is actively present, so off_session=True
    was incorrect: it marks the charge as a Merchant-Initiated Transaction (MIT)
    which settles slower than Customer-Initiated (CIT). Other sites that use
    Stripe's frontend SDK do CITs, which is why their charges clear faster.
    
    - dashboard_add_payment_method_stripe: attach PM to Stripe customer and set
      as customer default immediately when the card is added
    - auto_charge: add off_session parameter (default True for existing auto
      top-up/renewal callers); document the distinction
    - dashboard_subscribe_tier: pass off_session=False so the upgrade charge is
      processed as a CIT and settles at normal speed
    7237e508
main.py 632 KB