How we retired a 15-year-old payment form without hurting conversion
More than 98% of all service payments went through this form.
Context
The company was changing its billing system so it could respond to new business goals faster. One part of this change was retiring the old payment form.
I took the Project Manager role on this project, and I am very thankful to my colleagues for their trust. At the same time, I continued working on the project as a Product Designer.
Goals
- fix critical problems in the new form that were costing the company money;
- move all required payment flows to the new form;
- make it possible to embed the form into payment flows inside the products;
- retire the old form;
- keep the same conversion rate during the migration.
At the start
* We also had an ambitious project and a shared wish to finally retire the old form!
What we were missing
- a full picture of all user flows connected to the form and subscriptions;
- clear ownership between the development teams and designers working on the new form;
- enough extra time for several rounds of experiments.
Which side of this case study would you like to read?
The context has been the same up to this point. From here, one version is about project management, and the other is about designing a system of states. You can start with either one.
My role as a
Product Designer
I was the lead designer for the core billing teams and one of the people maintaining shared context across payment flows and the interface. I was responsible for the following areas:
Main responsibility
Keep one consistent model across user flows, the interface, and teams.
Investigate and validate
Research
I gathered and validated information about payment flows, constraints, and existing behavior.
What moved to the next step
- User flows
- Constraints
- Actual behavior
Make complexity visible
Visualization
I translated the logic into scenario maps, interface states, and the structure of the billing kit.
What moved to the next step
- Scenario map
- States
- Billing kit
Bring everyone to one decision
Alignment
I aligned the main flows, corner cases, and boundaries of responsibility across teams.
What moved to the next step
- Corner cases
- Ownership
- Final decisions
Maintain shared context
Synchronization
I maintained shared context through weekly syncs with developers, Product Owners, and the other billing designer.
What moved to the next step
- Weekly sync
- Design review
- Next steps
Collaboration between
two Product Designers
Together with the designer from an adjacent billing team, I worked on one shared billing kit.
teams
team
One billing kit
Together, we were responsible forDivided the work on the billing kit.
Shared components with other design teams.
Tested and validated design decisions.
Tested flows in staging and production, and corrected inconsistencies.
The boundary between us matched the boundary between our teams — shown below.
One form: three zones, two teams
One screen has three zones with two owners. PCI DSS defines the boundary between the teams.
Changing subscription plan
Buying extra projects
Change your plan?
You still have Business active until February 13, 2027
You still have a paid period of your current subscription left. Changing the plan now will mean losing it.
If you have any questions, contact us.
Pro$139.95 /mo
Quantity−1+
Next chargei$139.95
BillingEvery month
Total$15.00 /mo
BillingEvery 1 month
Card••1711
Your card has insufficient funds.
Today’s chargei$60.64
Today’s chargei$60.64$6.50
All prices are in US dollars and include tax.
Partner team
- Price and subscription information
- Billing frequency
- Payment amount and button
- And other reference information
My team
- Card input fields
- Processing form data
- Providing reference information to the partner team
Payment scenario map
I described all possible types of payment scenarios and put them in one map to make work on the project easier.

One map for shared context
The map helps the team quickly see all scenarios, consider their connections, and make decisions.
full-screen map
Billing kit
Documentation and public components
For each component, we described how the interface changes under different conditions.
For each component, we defined
We built a base form from components
We could use its controls to select any state for the required scenario.

Working on the interface in parallel
Teams worked on their parts of the interface in parallel, then combined them into one scenario.

17
main states can be built from one main component
Component properties let us build any required state for any paywall or payment form scenario.
Changing subscription plan
Buying extra projects
Change your plan?
You still have Business active until April 6, 2027
You still have a paid period of your current subscription left. Changing the plan now will mean losing it.
If you have any questions, contact us.
Pro$139.95 /mo
Quantity−1+
Next chargei$139.95
BillingEvery month
Total$15.00 /mo
BillingEvery 1 month
Card••2250
Your card has expired.
Today’s chargei$46.65
Today’s chargei$46.65$5.00
All prices are in US dollars and include tax.
Changing subscription plan
Buying extra projects
Change your plan?
You still have Business active until April 6, 2027
You still have a paid period of your current subscription left. Changing the plan now will mean losing it.
If you have any questions, contact us.
Pro$139.95 /mo
Quantity−1+
Next chargei$139.95
BillingEvery month
Total$15.00 /mo
BillingEvery 1 month
Card••2250
Your card has expired.
Today’s chargei$46.65
Today’s chargei$46.65$5.00
All prices are in US dollars and include tax.
Changing subscription plan
Buying extra projects
Change your plan?
You still have Business active until April 6, 2027
You still have a paid period of your current subscription left. Changing the plan now will mean losing it.
If you have any questions, contact us.
Pro$139.95 /mo
Quantity−1+
Next chargei$139.95
BillingEvery month
Total$15.00 /mo
BillingEvery 1 month
Card••2250
Your card has expired.
Today’s chargei$46.65
Today’s chargei$46.65$5.00
All prices are in US dollars and include tax.
Changing subscription plan
Buying extra projects
Change your plan?
You still have Business active until April 6, 2027
You still have a paid period of your current subscription left. Changing the plan now will mean losing it.
If you have any questions, contact us.
Pro$139.95 /mo
Quantity−1+
Added unitsi$89.99 /mo
Next chargei$139.95
BillingEvery month
Total$15.00 /mo
BillingEvery 1 month
Card••2250
Your card has expired.
Today’s chargei$46.65
Today’s chargei$46.65$5.00
All prices are in US dollars and include tax.
Changing subscription plan
Buying extra projects
Change your plan?
You still have Business active until April 6, 2027
You still have a paid period of your current subscription left. Changing the plan now will mean losing it.
If you have any questions, contact us.
Pro$139.95 /mo
Quantity−1+
Next chargei$139.95
Next charge dateApril 6, 2027
BillingEvery month
Total$15.00 /mo
BillingEvery 1 month
Card••2250
Your card has expired.
Today’s chargei$0.00
Today’s chargei$46.65$5.00
All prices are in US dollars and include tax.
Changing subscription plan
Buying extra projects
Change your plan?
You still have Business active until April 6, 2027
You still have a paid period of your current subscription left. Changing the plan now will mean losing it.
If you have any questions, contact us.
Pro$139.95 /mo
Quantity−1+
Added unitsi$89.99 /mo
Next chargei$139.95
BillingEvery month
Total$15.00 /mo
BillingEvery 1 month
Card••2250
Your card has expired.
Today’s chargei$46.65
Today’s chargei$46.65$5.00
All prices are in US dollars and include tax.
Changing subscription plan
Buying extra projects
Change your plan?
You still have Business active until April 6, 2027
You still have a paid period of your current subscription left. Changing the plan now will mean losing it.
If you have any questions, contact us.
Pro$139.95 /mo
Quantity−1+
Next chargei$139.95
BillingEvery month
Total$15.00 /mo
BillingEvery 1 month
Card••2250
Your card has expired.
Today’s chargei$46.65
Today’s chargei$46.65$5.00
All prices are in US dollars and include tax.
Subscribing to
Buying extra projects
Change your plan?
You still have Business active until April 6, 2027
You still have a paid period of your current subscription left. Changing the plan now will mean losing it.
If you have any questions, contact us.
Custom offer$139.95
Quantity−1+
Next chargei$139.95
BillingEvery month
Total$15.00 /mo
BillingEvery 1 month
Card••2250
Your card has expired.
Today’s chargei$46.65
Today’s chargei$46.65$5.00
All prices are in US dollars and include tax.
Changing subscription plan
Buying extra projects
Change your plan?
You still have Business active until April 6, 2027
You still have a paid period of your current subscription left. Changing the plan now will mean losing it.
If you have any questions, contact us.
Pro$139.95 /mo
Quantity−1+
Next chargei$139.95
BillingEvery month
Total$15.00 /mo
BillingEvery 1 month
Card••2250
Your card has expired.
Today’s chargei$46.65
Today’s chargei$46.65$5.00
All prices are in US dollars and include tax.
Changing subscription plan
Buying extra projects
Change your plan?
You still have Business active until April 6, 2027
You still have a paid period of your current subscription left. Changing the plan now will mean losing it.
If you have any questions, contact us.
Pro$139.95 /mo
Quantity−1+
Next chargei$139.95
BillingEvery month
Total$15.00 /mo
BillingEvery 1 month
Card••2250
Your card has expired.
Today’s chargei$46.65
Today’s chargei$46.65$5.00
All prices are in US dollars and include tax.
Changing subscription plan
Buying extra projects
Change your plan?
You still have Business active until April 6, 2027
You still have a paid period of your current subscription left. Changing the plan now will mean losing it.
If you have any questions, contact us.
Pro$139.95 /mo
Quantity−1+
Next chargei$139.95
BillingEvery month
Total$15.00 /mo
BillingEvery 1 month
Card••2250
Your card has expired.
Today’s chargei$46.65
Today’s chargei$46.65$5.00
All prices are in US dollars and include tax.
Changing subscription plan
Buying extra projects
Change your plan?
You still have Business active until April 6, 2027
You still have a paid period of your current subscription left. Changing the plan now will mean losing it.
If you have any questions, contact us.
Trial period used. You can continue using the product at its full price.
Pro$139.95 /mo
Quantity−1+
Next chargei$139.95
BillingEvery month
Total$15.00 /mo
BillingEvery 1 month
Card••2250
Your card has expired.
Today’s chargei$46.65
Today’s chargei$46.65$5.00
All prices are in US dollars and include tax.
Changing subscription plan
Buying extra projects
Change your plan?
You still have Business active until April 6, 2027
You still have a paid period of your current subscription left. Changing the plan now will mean losing it.
If you have any questions, contact us.
Trial period used. You can continue using the product at its full price.
Pro$139.95 /mo
Quantity−1+
Added units$0.00 /mo
Your new plan will not include previously added units. You can also .
Next chargei$139.95
BillingEvery month
Total$15.00 /mo
BillingEvery 1 month
Card••2250
Your card has expired.
Today’s chargei$46.65
Today’s chargei$46.65$5.00
All prices are in US dollars and include tax.
Changing subscription plan
Buying extra projects
Change your plan?
You still have Business active until April 6, 2027
You still have a paid period of your current subscription left. Changing the plan now will mean losing it.
If you have any questions, contact us.
Pro$139.95 /mo
Quantity−1+
Next chargei$139.95
BillingEvery month
Total$15.00 /mo
BillingEvery 1 month
Card••2250
Your card has expired.
Today’s chargei$46.65
Today’s chargei$46.65$5.00
All prices are in US dollars and include tax.
Changing subscription plan
Buying extra projects
Change your plan?
You still have Business active until April 6, 2027
You still have a paid period of your current subscription left. Changing the plan now will mean losing it.
If you have any questions, contact us.
Pro$139.95 /mo
Quantity−1+
Next chargei$139.95
Next charge dateApril 6, 2027
BillingEvery month
Total$15.00 /mo
BillingEvery 1 month
Card••2250
Your card has expired.
Today’s chargei$0.00
Today’s chargei$46.65$5.00
All prices are in US dollars and include tax.
Changing subscription plan
Buying extra projects
Change your plan?
You still have Business active until April 6, 2027
You still have a paid period of your current subscription left. Changing the plan now will mean losing it.
If you have any questions, contact us.
Pro$139.95 /mo
Quantity−1+
Next chargei$139.95
BillingEvery month
Total$15.00 /mo
BillingEvery 1 month
Card••2250
Your card has expired.
Today’s chargei$46.65
Today’s chargei$46.65$5.00
All prices are in US dollars and include tax.
Subscribing to
Buying extra projects
Change your plan?
You still have Business active until April 6, 2027
You still have a paid period of your current subscription left. Changing the plan now will mean losing it.
If you have any questions, contact us.
Custom offer$139.95
Quantity−1+
Next chargei$139.95
BillingEvery month
Total$15.00 /mo
BillingEvery 1 month
Card••2250
Your card has expired.
Today’s chargei$46.65
Today’s chargei$46.65$5.00
All prices are in US dollars and include tax.
Nesting and parallel work
One form consisted of variants, blocks, and nested components. This structure defined ownership boundaries and let teams update their parts in parallel.
Let's share together
Offer type8, Has card=No
2nd trial, Has card=Yes
1st Trial, Has card=No
1st Trial, Has card=Yes
Standard, Has card=No
Standard, Has card=Yes
Form variants use the same properties as the kit
- Level 1
Form variants
States started with the same properties defined in the billing kit.
- Level 2
Blocks from two teams
Each variant was built from blocks with separate owners: my team owned the payment fields, and the partner team owned the buttons.
- Level 3
Nested components
Inside each block were separate components with their own owners and agreed update rules.
- Level 1
Form variants
States started with the same properties defined in the billing kit.
Let's share together
Offer type8, Has card=No
Summary blockPayment block2nd trial, Has card=Yes
Summary blockPayment block1st Trial, Has card=No
Summary blockPayment block1st Trial, Has card=Yes
Summary blockPayment blockStandard, Has card=No
Summary blockPayment blockStandard, Has card=Yes
Summary blockPayment blockForm variants use the same properties as the kit - Level 2
Blocks from two teams
Each variant was built from blocks with separate owners: my team owned the payment fields, and the partner team owned the buttons.

Inside are blocks from two teams - Level 3
Nested components
Inside each block were separate components with their own owners and agreed update rules.

Inside each block are components, each with its own owner
Two designers and four teams could work independently because they updated their modules using rules agreed in advance.
A shared language for design and development
The project now had two connected artifacts.

21+
conditional branches in the shared logic
- has card?
- is trial?
- downgrade?
- error
- success
- waiting
- processing

A shared scenario vocabulary
Names
We used one naming rule to keep the names consistent.
The name of each state came from the conditions of its scenario.

The same conditions in components
Component properties used the same conditions.
Each state on the map had an exact match in the billing kit. We did not need to turn it into a mockup or explain it to the team in words.

Search
Developers could find the required component configuration by its name.
Designers could check that it matched the scenario.
QA could use the same name when describing a bug.

One form
at different payment points
We separated the purchase context from the payment itself.
Changes with the scenario
- Offer (plan name)
- Total amount
- Action(for example,Pay/Update)
- Scenario context (pricing, upgrade, limits, paywall, payment page)
Stays shared
- Payment fields
- Saved cards
- Validation
- Loading states
- Error handling
Changing subscription plan
Buying extra projects
Change your plan?
You still have Pro active until August 7, 2027
You still have a paid period of your current subscription left. Changing the plan now will mean losing it.
If you have any questions, contact us.
Business$499.95 /mo
Quantity−4+
Next chargei$499.95
BillingEvery month
Total$40.00 /mo
BillingEvery 1 month
Card••0475
Your card’s security code is incorrect.
Today’s chargei$83.33
Today’s chargei$83.33$6.67
All prices are in US dollars and include tax.
The system was tested in production
We retired the old form only after we confirmed that the new payment foundation worked reliably and kept the key conversion rates.
The first A/B test gave mixed results
Form submission attempts increased, but conversion to the first payment fell. The participant split between groups also raised questions.
- Form submission attempt
- 2 357→3 032
- +15.32%
- First payment
- 78→61
- −29.89%
We checked measurement with an A/A test
Both groups saw the same interface. We checked randomization and settings before continuing the experiment.
- Form submission attempt
- 9 794→9 902
- +1.59%
- Successful submission
- 7 378→7 447
- +1.42%
- Trial
- 4 185→4 169
- +0.10%
The check confirmed that the measurement system was correct. We could restart the experiment.
The second A/B test showed similar conversion
The second test ran for three weeks. The group split was normal. We assessed the result against the “no loss in conversion” criterion.
- Form submission attempt
- 2 762→3 103
- +5.74%
- Successful submission
- 2 675→2 869
- +0.95%
- Trial
- 2 276→2 416
- −0.09%
- Paying users
- 88→107
- +14.44%
- First payment
- 13→21
- +52.04%
+52.04% for first payments means 13 events versus 21. With this sample size, the result of the experiment is conversion parity.
We continued the migration and retired the old form
Together with the analysts, we decided to release the form. We completed the gradual move of traffic to the new payment foundation.
Conversion parity reached.
Old form retired.The migration continued without a noticeable loss in conversion.
The cards show event counts for the original and new versions. In the A/A test, they show counts for two groups with the same interface. Δ is the change in conversion from the reports, not the increase in event counts.
What I took on as PM
Project management
setting up the migration project and posting weekly updates in the internal project management system;
Communication
setting up communication channels for everyone involved;
Reporting
reporting to managers and other stakeholders;
Team coordination
keeping teams moving towards the result and resolving cross-team blockers.
Uncertainty and planning
At the start of the project, it became clear that decisions could take too long because many teams had overlapping areas of responsibility. It was not always clear who should join a discussion, who made the final decision, and who only needed an update.
To reduce this risk, I created a map of stakeholders, ownership, and decision making. For each type of question, I wrote down:
- who needed to be involved;
- who made the final decision;
- who needed progress updates;
- what reports to share, how often to share them, and in what format.
The map helped people understand the path to a decision faster. It also helped us see cross-team dependencies that could affect the timeline.
Then we held several meetings with the billing teams, set the main stages, and estimated the resources we needed.
Where the project started to slow down
Dependencies between teams were the main challenge. We could retire the old form only after we updated the payment flows inside the products.
When developers moved to other critical tasks, teams started blocking each other. One team could not continue without the result from another team.
Updating the timeline was another difficult point. To make a new forecast, we had to collect information about developer availability again and compare the project with the quarterly goals of several teams.
Making decisions
To stay on schedule, we defined the minimum amount of work needed to retire the old form completely. We reviewed other problems by looking at user risk, traffic, and the cost of a fix.
We separated the places where this problem could happen. In the payment form, traffic was much higher, so we included the fix in the required project scope. Inside the products, the risk was lower, so we left this part for separate testing through experiments.
Another group of decisions was about cross-team dependencies. In one case, a developer from another team took some of the tasks after offering to help. After that, we agreed on ownership and the order of work again, and the teams could continue the project. I am especially thankful to him for joining work outside his main area of responsibility.
Managing the timeline and risks
We kept the main roadmap in Monday together with projects from the other billing teams. Managers could see dependencies, the current status, and the files linked to each stage.

At the same time, I kept a separate and more detailed project roadmap. It showed what was complete, what we were working on, and what should start next. It helped anyone on the project quickly understand the current context.
- Every week – meetings with developers and Product Owners about progress, blockers, and next steps;
- Every month – a report for all billing teams;
- Every quarter – a shared presentation for stakeholders.
The Head of Product and CPO were the main people who received regular progress reports.
The team stayed almost the same. We agreed early that one developer would do most of the work, while other specialists would join at certain stages. For example, backend developers joined tasks related to PCI DSS. Near the end of the project, we also added specialists who managed setup and releases to pre-production and production environments.
We updated the timeline once. After a new estimate, I moved the forecast by one month and added extra time. We completed technical development before the new deadline.
What we achieved
We retired the old payment form and moved all required flows to the new one. It now supported the main types of purchases, additional and custom offers, trials with promo codes, and payment data updates. We also embedded the new form into upgrade and extra purchase widgets inside the products.
We fixed a critical flow where a user could accidentally replace an existing subscription and lose saved limits. For users with an unpaid subscription, we added a clear warning about what would happen if they bought a new plan.
We now had one form instead of two. Changes to taxes, payment processing, and the interface no longer had to be made twice. It also became easier to find the causes of payment incidents.
Our first attempt to test the new form did not give a reliable result. Data from different metrics did not match. After checking the analytics, we started the experiment again.
We found no statistically significant drop in key conversion rates. After discussing the results with analysts, we released the new form to all traffic in the tested flow. Then we completed the gradual traffic migration and finally retired the old form.
I did not have updated MRR data after we fixed the subscription replacement problem. So I cannot say how successful the fix was. But the main point did not change: we had to migrate the form, and we did it.
What I learned about myself and the PM role
Before this project, much of PM work seemed like a simple series of meetings: collect expectations, write a summary, and agree on next steps with another group. In this project, I saw the value of these basic actions at scale. When several teams depend on each other, shared context, clear ownership, and written decisions directly affect the project’s progress.
It was hard for me to start tasks with a lot of uncertainty, and I noticed that fear made me delay the first steps. It was especially hard to say that the deadline could change and we might need a new estimate. I learned that a PM should raise this kind of uncertainty early enough, even when there is no ready solution yet.
I also learned that a PM does not have to solve every blocker alone. The PM’s job is to make the problem clear, bring the right people together, and create the conditions for a solution. In one such case, a developer from another team offered to help and removed a cross-team blocker.






