2024
edX In-App Payments
Native in-app purchases that turned the edX mobile apps into a $700K+ revenue channel in year one.
I led product definition for in-app payments on iOS and Android at edX, working across mobile engineering, payments infrastructure, and the commerce platform to bring course upgrades natively into the app, validated first, then built and launched across thousands of courses.
Role
Product lead
Launch
3,000+ courses
Year 1 revenue
$700K+
The Challenge
A purchase path that sent mobile intent somewhere else
Mobile learners could discover courses, enroll, and learn inside the edX app, but they couldn’t complete a paid upgrade without leaving it. Buying meant exiting to a browser, signing in again, and working through a multi-step web checkout.
For a platform with millions of mobile learners, that gap mattered: people were showing purchase intent on mobile, and the app was routing it away at exactly the moment it needed to hold on to it.
Bring the payment experience into the app, and get from upgrade intent to purchase in as few taps as possible.
Approach
Validating intent before building anything
Painted door test
Surfaced the upgrade option inside the learning experience to see if learners would engage with it at all.
Positive signal
The experiment showed meaningful purchase intent from mobile learners, enough to justify real investment.
Native build greenlit
Moved forward with a full native in-app purchase implementation for iOS and Android.
Leading product across two platforms and three systems
I owned product definition for both iOS and Android, working across mobile engineering, payments infrastructure, and the edX commerce platform. The build ran through Apple App Store and Google Play’s in-app purchase checkout flows, which meant designing around each platform’s rules for digital content, purchase handling, refunds, entitlements, and review approval.
- Defined the purchase flow, entitlement logic, and failure states with engineering and commerce, so a failed or refunded payment never left a learner stuck mid-course
- Shaped the post-purchase experience so an upgrade felt instant and confirmed, not just “payment received”
- Partnered with the data team from the start to define conversion and revenue tracking, so mobile purchases were attributed correctly at launch instead of retrofitted after
The constraint that shaped everything
Thousands of courses, not one store product at a time
edX.org’s course library was large and constantly changing, so creating a dedicated App Store or Play Store product for every course wasn’t a scalable path.
We shifted the strategy to consumable products on the mobile stores, letting the app support thousands of course upgrades without a one-to-one mapping between every edX course and a dedicated store product.
What made it complex
Not just a checkout feature
01
Platform compliance
Adapting edX’s web-first commerce system to Apple and Google’s in-app purchase rules, so payments, failures, refunds, and entitlement activation all worked without breaking the learner experience.
02
Catalog scale
Thousands of eligible courses meant the solution couldn’t rely on manually configuring every course as its own store product. The consumable-product strategy kept it operationally manageable at that scale.
03
Measurement
A new revenue channel needed reliable analytics from day one, so we defined events, revenue attribution, and conversion tracking before launch, not after.
Outcome
A new, measurable revenue channel
In-app payments launched across 3,000+ courses on both iOS and Android.
The feature generated over $700,000 in its first year, and turned the mobile app from a learning-only surface into a real monetization channel for edX.
$700K+
Revenue generated in the first year
3,000+
Courses enabled for native in-app purchase
iOS + Android
Launched natively across both platforms
A clear example of product work where the value was measurable: validated learner intent, solved for platform and catalog complexity, cut checkout friction, and unlocked revenue the app couldn’t capture before.