01
2023-2025
Web
Embedded Checkout
Embedded checkout is a project I worked on at Brilliant—an interactive learning platform that teaches math, CS, and data through guided bite-sized lessons.

Vinson Gotingco — Design Lead
Caroline Sudduth — PM
Jonathan Chiu — Dev

PROJECT INFO

Our legacy payment processor, Chargebee, was constraining both our technical capabilities and business growth

Our legacy payment processor was holding us back—both technically and in terms of business growth. From an engineering perspective, Chargebee code was messy and painful to work with. On the user side, payment options were limited, with no support for Apple Pay or Google Pay, and the system offered little flexibility to customize the checkout experience to align with our brand.

Goal

Migrating to Stripe unlocked more technical flexibility, expanded payment options, and aimed to improve metrics

Migrating to Stripe unlocked greater technical flexibility, expanded payment options, and set us up to improve key metrics. It was the first step toward simplifying our payments system and codebase, enabling us to build new features faster in the future. While Stripe provided everything we needed, our goal wasn’t just to maintain parity—we wanted to ensure the migration drove meaningful improvements in results.

Key Metrics

Our key metrics were tracking subscribes and average revenue per user

Challenges
research

We wanted to prioritize a seamless user experience and brand alignment that made checkout feel native to Brilliant

Our Chargebee checkout lacked branding, creating a disconnect from the pre-checkout experience. In exploring comps, we were inspired by Duolingo’s approach—branded checkout that used simplified pricing, clear information to put users at ease, and use of design system components. This was the direction we wanted to move toward for our own checkout experience.

Our users

To avoid jeopardizing trial conversions, we began the Stripe migration with mature users, ensuring a lower-risk, smoother rollout

When a new user signs up, they're considered a trial user. After 48 hours, they become mature users, which mainly changes the upsell messaging they see. Since trial users represent high-value leads, we focused the migration on mature users first—who already had accounts with us—to avoid jeopardizing trial conversions while still ensuring a smooth rollout.

Understanding stripe

Understanding Stripe's documentation and constraints enabled more effective collaboration with engineering throughout the project

Visual design
solution

With a desired end goal in mind, we split our A/B testing into 3 main phases

  1. Chargebee vs Stripe Hosted Checkout
  2. Stripe Hosted vs MVP Embedded Checkout
  3. MVP Embedded Checkout vs Branded Embedded Checkout

Phase 1

Chargebee vs Stripe Hosted Checkout

We used Stripe's standard low-code payment form as a low-effort way to test the platform and get signal on its performance.

Phase 2

Stripe Hosted vs MVP Embedded Checkout

We built a minimal custom checkout using Stripe components to  test self-hosted performance and eventually enable PayPal

Phase 3

MVP Embedded Checkout vs Branded Embedded Checkout

Our final phase applied extensive branding to achieve a checkout experience that felt authentically Brilliant

Exploration

We explored color and layout options to maintain consistency with pre-checkout screens while finding the optimal way to present payment fields, purchase details, and value propositions.

Layout exploration

Color exploration

Adding our mascot

Though we hesitated to use Koji in checkout for fear it might feel too playful, exploring this direction unlocked the design solution we felt strongest about.

We went through many iterations of layouts and colors but struggled to land on a design that felt right. A breakthrough came when we explored incorporating our mascot, Koji—something we had initially avoided out of concern it might make checkout feel too playful at a moment when users needed to feel secure sharing payment information. Surprisingly, bringing Koji into the flow opened up new creative directions that balanced trust with personality, ultimately leading us to the design we felt most confident about.

Results

Branded embedded checkout drove a +9.7% increase in subscribes and +7% increase in average revenue per mature user 🎉🎉🎉

Challenge: Mobile

Mobile screens were underperforming, leading us to a two-page checkout solution that defied our initial assumptions—driving a +8.6% lift in subscribes and +9.6% in average revenue per mature user

Though overall results netted out positive, most of the gains came from desktop while mobile underperformed. On mobile, we initially shipped checkout without value props since combining them with payment details on a single page felt cluttered, and we assumed a two-step flow would hurt conversion. In a follow-up experiment, however, we tested a two-step mobile checkout flow—and it led to improved performance.

Challenge: PayPal

Since many international users rely on PayPal, we worked around Stripe’s US restriction by placing PayPal above express checkout—appearing unified while remaining technically separate.

Since PayPal existed outside Stripe's express checkout component, we had to ensure our solution handled the edge cases of multiple payment options

PayPal drove: +16.5% increase in subscribes, and 18.7% boost in average revenue per mature user

Retrospect

Leveraging Proven Tools, Staying Aligned, and Building Incrementally Were Key to a Successful Migration

Migrating to Stripe highlighted the power of proven solutions—even Stripe’s out-of-the-box checkout drove immediate wins. To fully unlock its potential, I invested time in thoroughly reading the documentation, which clarified Stripe’s capabilities and limitations while enabling stronger collaboration with engineering.

Rather than rushing to the finish line, we took an incremental approach, breaking the migration into phases and structured experiments that reduced risk while steadily building toward our vision. And because so many experiments were running in parallel, frequent syncs with cross-functional partners became essential for keeping results in context, surfacing issues quickly, and ensuring alignment across the team.