Skip to content

Stripe Embedded Onboarding for new sellers from Canada#4337

Draft
ershad wants to merge 7 commits intomainfrom
deploy-embedded-stripe-onboarding
Draft

Stripe Embedded Onboarding for new sellers from Canada#4337
ershad wants to merge 7 commits intomainfrom
deploy-embedded-stripe-onboarding

Conversation

@ershad
Copy link
Copy Markdown
Member

@ershad ershad commented Apr 6, 2026

Originally built by @hchhabra.

What

Replace the custom payments onboarding flow with Stripe's Embedded Onboarding for new Canadian sellers. When enabled via the stripe_embedded_onboarding feature flag, new sellers from Canada who
don't yet have a Stripe account see Stripe's ConnectAccountOnboarding component instead of the custom bank account form and verification section.

This is Phase 1 of #4021 — scoped to new Canadian sellers only, with the plan to expand to other countries and existing sellers in later phases.

Changes:

  • Add StripeEmbeddedOnboarding React component wrapping Stripe's ConnectAccountOnboarding with Gumroad's ToS/privacy URLs and eventually_due collection
  • Extend StripeAccountSessionsController to support account_onboarding component type, creating a minimal Stripe custom account on first request
  • Sync bank accounts and debit cards from Stripe to local records via account.updated webhook (sync_external_accounts_from_stripe)
  • Gate on feature flag + Canada-only + no existing Stripe account
  • Hide Verification section when embedded onboarding is active
  • Mark merchant accounts created through this flow with stripe_embedded_onboarding: true to distinguish onboarding paths
  • Skip HandleNewBankAccountWorker for bank accounts synced from Stripe (already have a stripe_bank_account_id)

Why

The custom onboarding flow maintains 100+ country-specific bank account models, custom compliance forms, and complex validation logic. Stripe's embedded component handles identity verification,
bank account collection, and tax info in one step — reducing support tickets and maintenance burden. Starting with Canada to validate the approach before expanding.

Test results

Tests added for:

  • Account session creation with account_onboarding component
  • Stripe account creation, reuse, and resume for unverified accounts
  • Bank account and debit card syncing from webhook
  • External account replacement and deletion
  • show_stripe_embedded_onboarding? gating logic (feature flag, country, account state)

Generated with Claude Opus 4.6

@ershad ershad self-assigned this Apr 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants