Every payment path in the account experience ends at the same question: how do you want to pay? I designed the shared component that answers it — used across FastPay, Payment Center, SplitPay, AutoPay, and add-on purchases, where a single improvement compounds across all of them.
What I ownedI led one designer. I defined the flows and the full state inventory, got six payments flows to agree on one component instead of forking it, and coached the build day to day. I decided which states were launch-blocking.
Single-line tender, multi-account payment, installment payoff, AutoPay, TXT-2-PAY enrollment and add-on purchases all run on the same selection pattern.
What a customer can store — enough for a personal card, a business card, and a bank account, without a list that needs scanning.
AutoPay research showed about a third of method changes stalled at selection — customers believed they were done. That finding reshaped the commit step.
A single improvement to method selection propagates to every flow that collects money, instead of being rebuilt five times.
Paying a bill, enrolling in AutoPay, settling a SplitPay share, adding device protection, buying a data pass — every one of those journeys converges on the same moment: choose a payment method, or enter a new one.
Historically, each flow solved it slightly differently. Different layouts, different card-entry behavior, different error handling, different rules about saving. That inconsistency cost twice: customers relearned the interaction in every context, and every fix had to be made five times.
The design bet: treat payment method selection as infrastructure rather than a screen. Build it once, handle the hard states properly, and let every flow inherit the improvements.
Without saved profiles, returning customers retyped card details every cycle — a large source of avoidable friction in payment.
The same task looked and behaved differently depending on where a customer encountered it, forcing them to relearn it each time.
Selecting a method and committing it are different actions — and when the component blurred them, customers left transactions unfinished.
Component work is unglamorous and disproportionately valuable. This one carries authenticated, semi-authenticated, and fully unauthenticated contexts; card, bank, and digital wallet; saved and one-time methods; consumer and business accounts. Getting it right means every payment flow gets better at once.
Selection, entry, validation, and confirmation states shared across FastPay, Payment Center, SplitPay, AutoPay, and add-on purchase flows.
Up to three saved methods per customer, extended into SplitPay — which measurably improved completion for returning payers.
The component behaves correctly whether the customer is fully authenticated, in a semi-authenticated flow, or entirely unauthenticated in FastPay.
Card declines, expired methods, bank sign-in attempt limits, unsaved-card warnings, merchant fee disclosure, and deletion consequences.
The AutoPay research showed what happens when those blur — roughly a third of customers stopping at selection, believing they were done.
Extended to card-on-file for fiber and AIA, business accounts, and rewards redemption without fragmenting the pattern.
A shared component has more stakeholders than any feature. I set the pattern and the rules, got every payments team to commit to one component instead of their own fork, and coached the designer building it out day to day.
Team: 1 designer · Partners: Payments Product, Fraud & Risk, Engineering, Content & Legal, Third-party partners, Research, Fiber & AIA
Defined the flows and the full state inventory — saved, expiring, expired, declined, last-card, system failure — across authenticated, 1FA, and unauthenticated contexts.
Presented the component strategy to Business, Product, and senior leadership partners and secured approval to consolidate instead of rebuilding it per flow.
Ran daily working sessions with the designer, plus design critiques, peer reviews, and Design Standards reviews so the component held up in every context.
Gave the design green light at release checkpoints and decided which states were launch-blocking — because a payment component is judged on its worst day.
Each release extended the same component into another context rather than spawning a new one — which is how a shared pattern earns its keep.
Customers can store up to three payment profiles, turning a repeated data-entry task into a single selection for returning payers.
C.360Saved profiles reached the SplitPay flow, immediately improving completion and setting up one-click payment for returning line owners.
C.045Merchant fee disclosure in the selector modal, bank sign-in safeguards, and fraud protections designed in without adding steps for legitimate customers.
C.345The AutoPay investigation quantified what happens when the component lets customers believe selection equals commitment — ~35% silent failure. Separating the two cut it roughly in half.
C.120Extended across product lines and onto the modern stack, unifying payment method handling for wireless, fiber, AIA, and business accounts. All six flows now run on the component, it is expanding into the shopping experience, and the average consumer account now stores two payment methods. It spreads easily because a flow only needs a button that opens the component in a modal or drawer.
C.120Months from kickoff · partial since last box · C. = heading · ! to !!! = danger
The visible component is a list and a form. The design work is the surrounding set of states — saved, expired, declined, unsaved, deleted, ineligible — that determine whether a payment succeeds.
For a returning customer, the component never opens as a form. It opens as a confirmation — the saved method is already chosen, named, and shown with its last four digits, with Change payment method as a quiet secondary link rather than a required step.
That in-page summary is the whole argument. Most people pay with the same card every month, so the default path should be reading one line and pressing Pay $1,000.00. Only the minority who need to switch ever open the full list.
When they do, the modal carries the states that decide whether a payment succeeds. A selected card gets a filled border and tint — not just a checkmark. An expiring card carries an amber warning icon and “Your card is about to expire!” inline, where the customer is choosing, rather than as a decline three days later. Card networks are shown by logo so the list is scannable by recognition instead of reading.
Two details worth naming. Long nicknames truncate rather than wrap, which keeps every row the same height and the list scannable at a glance. And Add a new payment method sits below a divider marked OR, deliberately separated from Continue and Cancel — it's a different kind of decision and shouldn't compete with committing to a choice already made.
The Norton Secured badge beside the label answers the trust question our FastPay research surfaced: customers hesitated at handing over financial details without visible reassurance.
Adding a bank account is the hardest continuity problem in the component. The customer leaves our interface for a third-party verification partner — and if that handoff feels like being dumped onto another company's website, the payment doesn't happen.
So the handoff is designed, not defaulted. Every step here happens inside our modal, over our page, with our close control. The partner does the verification; we keep the frame.
The fork comes first. Before any credentials are requested, the customer chooses: Sign in to your bank for instant verification, or Enter details manually for anyone unwilling to hand bank credentials to a third party. Offering both is what keeps the reluctant customer in the flow instead of abandoning it.
Verification returns data, not a dead end. Routing and account numbers come back pre-filled and masked, and the only thing left is to name the account. The nickname field carries its own reason — “Please enter a nickname to save your bank details” — so the ask never feels arbitrary.
Back, not Cancel. The escape hatch returns to method selection rather than dropping the customer out of the payment entirely. Someone who opens bank entry and changes their mind is still trying to pay us.
The contextual message slot at the top of every step is deliberate component architecture: one reserved region rendering info, warning, or alert states — attempt limits, verification failures, maintenance notices — so those messages never get bolted on later in an inconsistent spot.
A payment component is judged on its worst day, not its best one. Cards expire. Deletions fail. Someone tries to remove the only method keeping their service on. None of that is exceptional — at this volume it's daily, and every one of these states had to be drawn, written, and specified rather than left to a generic error page.
The colour system does the triage. Amber means act soon — a card approaching expiry, still usable today. Red means act now — already expired, will not process. Green means done, nothing more needed. A customer scanning this list should know the severity before reading a single word.
Warnings live inside the row they describe. “Your card is about to expire!” sits under the card it belongs to, not in a banner at the top of the modal. Global banners get dismissed and forgotten; a warning attached to the object survives scrolling and still makes sense three cards down.
The last-card state is the one most teams miss. Deleting your only saved method isn't the same action as deleting one of five — so it gets different copy: “You have only one payment method saved.” Same button, materially different consequence, and the interface says so before the tap rather than after.
And when the system itself fails, the message stays useful: “We were not able to delete your card at this moment. You can try again now or later.” It names what happened, offers a next step, and keeps the confirmation in place so nobody loses their position in the flow.
The payoff of component work is only visible when you line up the contexts. Every screen here is the same payment method module — same Norton badge, same card summary, same Change payment method affordance — doing a materially different job each time.
What changes is the authority around it. A SplitPay payer sees Your balance and a fixed date, because they control one line and nothing else. An account holder sees Total balance, an account switcher and an editable date. An installment payoff adds reward points and a plan balance; TXT-2-PAY attaches the method to a text channel instead of a button. The component absorbs every one of those without forking.
That consistency is the product. A customer who learns to read the card summary once never relearns it — and because the pattern is shared, the expiring-card warning from the edge cases appears automatically in a flow nobody rebuilt to support it. Fix one state, improve every journey.
Screens use placeholder (FPO) content and fictional account data.
The clearest evidence is what happened to SplitPay when saved profiles arrived.
Where payment method selection appears across the account experience.
Unauthenticated — no saved profile can be assumed
Semi-authenticated — pays only their designated portion
Authenticated — recurring commitment with real consequences
In-flow — payoff amounts and text-channel enrollment
Returning payers move from full data entry to a single selection.
Most of the design effort lives here, not in the happy path.
Selection mistaken for commitment — ~35% of AutoPay method changes
Deleted or expired methods still attached to recurring payments
The same task behaving differently in each flow, forcing customers to relearn it
A shared component has more stakeholders than any single feature — every team that touches money has an opinion about it, and any change ripples into flows I don't own. Most of my work here is negotiating a pattern that serves all of them without becoming a compromise that serves none.
Just showing the ability to save the payment method seems to have already had a positive impact on SplitPay completion rates. Next month we should see an organic increase as these users come back and now have a one click payment experience.
— Lead Digital Customer Growth, on saved payment profiles
Card-on-file expansion across fiber, AIA, and business accounts, tighter integration with AutoPay's redesigned guided flow, and continued migration onto the modern stack so every surface inherits the same behavior.
The goal is a customer who saves a payment method once and never thinks about it again — in any flow, on any product, at any authentication level.