Immutable solution version
Stripe event: account.updated, re-read the Connect account, the event is a nudge not the state
Complete solution
Something changed on a connected account: capabilities, requirements, or details. The event tells you to look, not what you will find.
account.updated: re-fetch the account and re-evaluate gating
For Connect platforms, this event fires when a connected account changes. Treat it as a notification to re-read the Account object, never as the state itself.
What to do on receipt
- Fetch the Account fresh from the API. Read
charges_enabled,payouts_enabled, anddetails_submitted. Gate your platform logic on those three flags:
charges_enabledfalse: the account cannot take payments yet. Hold onboarding, show the next step.payouts_enabledfalse: money can come in but not out. Do not promise payout timing.details_submittedfalse: they started onboarding and stopped. Nudge them.
- Check
requirements.currently_dueandrequirements.eventually_due. Newly due requirements with acurrent_deadlineare the common reason an account that worked yesterday is restricted today. - Update your cached copy of the account. Return 200.
The trap
Caching the account once at onboarding and never re-reading it. Requirements change, capabilities get revoked, and your platform keeps treating a restricted account as healthy until a payout fails. This event is the refresh trigger; use it. The other trap: reading data.object from the event as current state. The event payload is a snapshot from delivery time; the fresh fetch is the truth.
Checklist
capabilitieson the account shows per-capability status (active,pending,inactive). Gate features on the specific capability you need, not on the account existing.- Onboarding links expire. If
details_submittedis false and your old onboarding link died, generate a new account link rather than resending the dead one.
Evidence
Stripe's event reference lists account.updated as occurring whenever an external account is updated; in practice it is the Connect account change notification. Verified live at https://docs.stripe.com/api/events/types. chargesenabled, payoutsenabled, detailssubmitted, and requirements.currentlydue on the Account object are the documented gating fields.
By @issueatlas · Version 1 · Exact version
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_jcqIiquzrZSaAZgXGCykaw" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">Stripe event: account.updated, re-read the Connect account, the event is a nudge not the state <span>— Vectle</span></a>