Stripe Payment Integration for Healthcare Marketplaces
How OpenMyPro integrates Stripe Connect for marketplace payments and Stripe Subscriptions for SeekerPro. Webhook architecture, payout flows, and revenue patterns generating six-figure ARR.
See this stack in production. 150K+ users. six-figure ARR.
Free forever. Upgrade only when you're ready.
150K+ users · Ex-Amazon Engineer · Healthcare Innovation
No card charged today · 150K+ users · $0 to start
Payments are where marketplaces live or die. A clunky checkout flow kills conversions. A slow payout schedule drives providers away. At OpenMyPro, Stripe Connect handles our two-sided marketplace payments while Stripe Subscriptions powers the SeekerPro $15.99/month provider plan. Here is the architecture that generates six-figure ARR.
Two Revenue Streams
OpenMyPro has two distinct payment flows. First, marketplace transactions where patients pay providers for appointments. Stripe Connect handles these as connected account payments — the patient pays, OpenMyPro takes a platform fee, and the provider receives the remainder directly in their Stripe account. Second, SeekerPro subscriptions at $15.99/month for premium provider features. Stripe Subscriptions handles billing, invoicing, and dunning for these recurring payments.
This dual model maximizes revenue capture. Transaction fees generate revenue on every booking. Subscriptions generate predictable monthly recurring revenue. Together, they create the six-figure ARR that funds Blossend's operations.
Stripe Connect Architecture
We use Stripe Connect with Express accounts, which gives providers a streamlined onboarding experience. When a provider signs up for OpenMyPro, they complete Stripe's identity verification flow once. After that, every patient payment is automatically split — our platform fee goes to our Stripe account, and the provider's portion goes directly to theirs.
The payment flow is: patient enters card details using Stripe Elements embedded in our booking form, Stripe creates a PaymentIntent with a transfer to the connected account, and upon success we confirm the booking in our database. If the payment fails, the booking is not created — maintaining data consistency between Stripe and our system.
Webhook-Driven Architecture
Stripe webhooks are the backbone of our payment system. Instead of polling Stripe for payment status, we receive real-time notifications for every payment event. Our webhook handler processes events including payment_intent.succeeded, payment_intent.payment_failed, invoice.paid, customer.subscription.updated, and account.updated.
Each webhook event triggers specific actions in our system. A successful payment confirms the booking, sends confirmation emails to both patient and provider, and updates analytics. A failed payment notifies the patient, releases the appointment slot for others, and logs the failure for our monitoring dashboard.
We verify webhook signatures using the Stripe webhook secret to ensure events are genuinely from Stripe. Events are processed idempotently using the event ID as a deduplication key — if Stripe retries a webhook, we do not process the same event twice.
SeekerPro Subscription Management
The SeekerPro $15.99/month plan uses Stripe Subscriptions with automatic billing. When a provider upgrades, we create a Stripe Customer and Subscription. Stripe handles the billing cycle, generates invoices, processes payments, and manages failed payment retries (dunning).
Subscription status changes flow through webhooks. When a subscription is created, we enable premium features in the provider's database record. When a payment fails, we send a grace period notification. When a subscription is cancelled, we downgrade the account after the current period ends. All of this is event-driven — our application reacts to Stripe events rather than polling for status.
Payment Security
We never handle raw card numbers. Stripe Elements renders the card input inside an iframe hosted on Stripe's domain, meaning card data never touches our servers. This dramatically simplifies PCI compliance — we self-certify with SAQ-A (the simplest PCI questionnaire) instead of the full SAQ-D that handling card data would require.
For connected account payouts, Stripe handles KYC (Know Your Customer) verification during provider onboarding. Providers submit identity documents directly to Stripe, and we only receive a verification status — we never see or store their identity documents. This protects both providers and Blossend from identity data exposure.
Revenue Analytics
Our dashboard aggregates Stripe data with internal booking data to show real-time revenue metrics. Monthly recurring revenue from SeekerPro, transaction volume and average ticket size, platform fee revenue, provider payout totals, and churn metrics are all derived from Stripe webhook data stored in our analytics tables. This gives us a live view of business health without querying the Stripe API directly.