Stripe payments hub — balance, payouts, and disconnect in one place
Settings → Payments has a new hub at /coach/settings/payments. It pulls live data from Stripe and renders it server-side, so it loads fast and works in every browser regardless of cookie or storage rules.
What's in the hub:
- Balance. Available and pending funds across every currency you hold. Empty currencies are muted so a real balance pops at a glance.
- Recent payouts. The last 5 transfers Stripe sent to your bank, color-coded by status — paid is green, in transit is blue, scheduled is amber, failed is red.
- Manage on Stripe. One click mints a fresh Account Link so you can edit business details, bank account, identity, and tax forms on Stripe's secure page. The link asks only for fields that are currently due — Stripe won't re-prompt for things you've already submitted. When you return, a toast confirms the update and the page re-fetches your latest data.
- Disconnect. Permanently remove the Stripe connection. Refused if Stripe is still holding funds for you — we surface the actual currency-specific amount so you know which payout to wait for.
If Stripe needs more information from you (verification, missing fields), a banner at the top tells you and links straight to the manage page. The status badge in your settings now correctly prioritizes blocking issues (past-due, currently-due) over soft warnings.
Behind the scenes we also tightened up the Stripe content-security policy, hardened the payments page against Stripe API outages with a graceful fallback, and made sure the disconnect flow no longer reports balances in the wrong currency.