Upwork / Transactions

Turning transaction frustration into a leap in satisfaction.

The Challenge

Upwork's transaction history hadn't been touched in 7 years.

The experience was confusing and opaque. Users saw multiple rows for a single contract, cryptic reference IDs, and information that didn't connect to their actual goals. In the years before redesign, more than 20,000 CS tickets had been logged about transaction history and invoicing alone.

Two questions summed up the frustration: "How can I understand the transactions I've made?" and "How can I better understand my spending or earnings?"

As product design lead, I partnered with product, engineering, UX research, and the payments team to rebuild the experience from the ground up.

Results
Clients
0%
Ease of use · ▲24.0 pts (49.1 → 73.1)
0%
CSAT · ▲25.6 pts (52.4 → 78)
Freelancers
0.0%
Ease of use · ▲6.9 pts (84.4 → 91.3)
0.0%
CSAT · ▲7.1 pts (85.3 → 92.4)
Research & Discovery

Getting to the root of a deeply broken experience.

Qualitative insights

Working with UXR, we synthesized years of support tickets, feedback, and stakeholder interviews. Contextual inquiries showed how clients and freelancers actually used TH — managing projects, reconciling invoices, preparing taxes.

Clients reported spending hours piecing together transaction lines and receipts. Freelancers felt the page was built for accountants, not for them. We benchmarked freelance-economy platforms and banking apps to identify best practices.

Quantitative analysis

Most users never scrolled past the first few rows. Filtering was limited, so CSV exports had become the workaround for making sense of finances.

We quantified transactions per invoice and the share of support cases tied directly to TH confusion, establishing a baseline to design against.

Original Upwork Transaction History
Users weren't struggling with payments — they were struggling with understanding payments. The data existed; the clarity didn't.
Design Principles

A foundation to design upon.

I collaborated with stakeholders to articulate a shared set of principles that would guide exploration and keep the team aligned when trade-offs arose. With more problems than one release could solve, we also used an effort/impact matrix to sequence the work so the highest-friction issues shipped first.

01Reduce cognitive load
Display only the information needed for the task. Hide details unless explicitly requested. Use clear positive/negative indicators rather than accounting notation.
02Collate related information
Group transaction details into cohesive units so clients see a single row per milestone or invoice, not an explosion of line items.
03Separate escrow flows
Since most users didn't care about escrow, move escrow transactions to their own tab. Reduce clutter in the main view and isolate complexity.
04Support the core audience first
Prioritize marketplace clients and freelancers. Design for the mainstream case; plan to extend to agencies and enterprise clients in later waves.
05Design for flexibility
Build patterns that can support wallet features, value-added services, and future payment products without requiring a full rethink.
06Make it internationally friendly
Use month names instead of numeric dates, UTC timestamps, and invoice formats that meet common international requirements.
Client task flow
Freelancer task flow

Distilling the flows to their simplest form made it clear how straightforward users' actual needs were, and gave the team a shared focus for what the redesign had to deliver.

Feature prioritization matrix

With scope too large to ship at once, we used an effort/impact matrix to sequence work across releases, ensuring the highest-friction problems were addressed first.

The Solution

Clarity through consolidation.

Milestones and invoices consolidated into single parent rows with expandable details. Fees and taxes rolled in. Reference IDs removed from the primary view, still available in downloads, but no longer competing for attention.

01
Contract & project filters: Users can now isolate spending or earnings for specific jobs without exporting to CSV.
02
Top-level totals that adapt to filters: A persistent summary shows exactly what you've spent or earned within the selected scope.
03
Unified invoice summary page: Streamlined invoices with a single summary view, replacing the fragmented receipts experience.
04
Dedicated escrow tab: Escrow transactions moved out of the main view entirely, with contextual links only when escrow was active on a contract.
We didn't just redesign a page.
We gave people their time back.
Adaptive filters & totals Select filters to update totals
847 transactions
Earnings +$142,350.00
Fees −$14,235.00
Taxes −$4,271.00
Net total +$123,844.00

An example of some of the filters available. Where users once had to export to CSV just to answer a basic question about their finances, they could now get to exactly what they needed in seconds, totals updating live as they refined their view.

Under the Hood

Remapping hundreds of transaction types into language users could actually understand.

The most consequential and least visible part of this project: mapping hundreds of backend transaction types to language users could actually understand. The existing system surfaced raw accounting codes directly in the UI, with no way to interpret what they were seeing. Engineering also reported faster page loads as a direct result, a benefit of the consolidated API calls the new information architecture enabled.

I built a comprehensive taxonomy mapping every transaction category to how it should surface in the product. Working with engineering, we restructured TH's IA, grouping related items intuitively and standardizing terminology. The taxonomy became the shared language for future payment products.

Transaction type taxonomy spreadsheet

A portion of the taxonomy mapping raw transaction types to display labels, grouping logic, and contextual descriptions, the source of truth for engineering and content alike.

Strategic Role

Design as the connective tissue.

I drove strategic direction by partnering with product and engineering leadership, framing trade-offs between user needs and system complexity through design explorations, technical reviews, and prioritization discussions.

The goal: simplify the experience without sacrificing flexibility for future products. The result: changes that redefined how users navigate, interpret, and trust their financial records.

The biggest unlock wasn't a UX/UI decision — it was the alignment work. Payments touched finance, compliance, legal, and multiple engineering teams. Getting everyone to agree on what "done" looked like was as important as getting the design right.
Reflection

Simplifying financial transparency.

This redesign was about more than cleaning up a page. It was about restoring confidence in Upwork's financial experience. By listening closely to users and delivering in focused waves, we turned a source of frustration into something clients and freelancers actually rely on.

The gains in ease of use and satisfaction confirm that clarity and simplicity drive loyalty, setting the foundation for supporting larger segments and new financial products going forward.

Clients
0%
Ease of use · ▲24.0 pts
0%
CSAT · ▲25.6 pts
Freelancers
0.0%
Ease of use · ▲6.9 pts
0.0%
CSAT · ▲7.1 pts
Back to
Upwork overview
All Upwork case studies