Work / Invoice Experience

Improving the invoice experience

Rethinking how freelancers and SMBs create, send, and track invoices. Making the end-to-end billing flow faster, clearer, and built for cross-border payments.

My Role

Lead Product Designer

Company

Sorbet

Timeline

3 weeks (2026)

Team

6 cross-functional

Responsibilities

User Research Interaction Design Visual Design Prototyping

Overview

Invoicing is how Sorbet's users get paid

For freelancers and SMBs using Sorbet, invoicing isn't a nice-to-have. It's the primary way they request and receive payments from clients. The invoice flow needed to handle cross-border complexity like multiple currencies, stablecoin settlement, and varying payment rails while feeling as simple as sending a text. Every extra step or unclear label was a reason for a client not to pay.

The Problem

The existing invoice flow was built for launch, not for daily use

The MVP invoice experience shipped with the minimum viable set of fields and flows. It worked, but users were hitting friction in key areas. There was no way to set up recurring invoices, the table lacked clear indicators for amounts received, and the overall flow didn't support the way freelancers and SMBs actually bill.

Old invoice UI showing limited functionality

No recurring invoices

Users could only create one-time invoices. There was no option to set up recurring billing for retainer clients or subscription-based work

No amount received flags

The invoice table had no visual indicators showing how much had actually been received against each invoice, leaving users to manually track partial payments

Limited invoice types

No distinction between one-time and recurring invoices meant users couldn't tailor their billing to different client relationships

Research

We looked at how Stripe, Acctual, and Wallex handle invoicing

We benchmarked against established invoicing tools like Stripe, Acctual, and Wallex, analysing how each structured their invoice creation and payment flows. Some of the gaps we noticed in our own experience became clear:

Invoice type selection

Competitors let users choose the type of invoice upfront. One-time, recurring, or milestone-based. Our flow had no such distinction

Currency control

Users could expressly choose the currency they wanted the invoice to be denominated in. Our flow defaulted without giving control

Payment preview

Proper details on the preview showed exactly how the client would pay the invoice. Payment method, amount in their currency, and settlement details were all visible upfront

Competitor analysis, Acctual invoice creation flow

I mapped out the invoice flows to cover both paths, one-time and recurring. The flows branch early based on invoice type, with each path handling its own set of inputs before converging at the preview and send steps.

One-time invoice user flow

One-time invoice flow

Recurring invoice user flow

Recurring invoice flow

Solution

An invoice flow that feels fast, clear, and built for repeat use

The redesigned experience focuses on three things: speed of creation, clarity of status, and transparency for the recipient. Invoices can be created in under a minute with smart defaults. A clear status pipeline shows draft, sent, viewed, paid, and overdue states. And the recipient gets a clean payment page where they choose to pay via stablecoin or fiat, with local currency context so they know exactly what they're paying.

open_in_fullClick any video to expand and watch the full interaction

One-time invoice

Recurring invoice

Invoice details

Client view

Design System

Built a design system to keep things consistent as we scaled

I created a shared component library with colour tokens, typography, spacing, and reusable patterns. This meant the engineering team could build new screens without guessing, and everything stayed visually consistent across the product.

120+ atoms Product tokens Auto layout rules Motion system RTL support
Design system

Impact

Faster invoicing, clearer status, fewer support tickets

The new invoice flow cut creation time significantly and gave users real-time visibility into payment status. Support tickets related to invoicing dropped, and the payment completion rate from recipients improved as the payment experience became clearer.

60%

Faster creation

Avg time to send

45%

Fewer tickets

Invoice-related support

28%

Higher completion

Recipient pay rate

Reflections

Invoicing sits at the intersection of two user experiences: the sender creating the invoice, and the recipient paying it. Designing for both audiences simultaneously meant every decision had a dual impact. A field that made the sender's life easier could confuse the recipient, and vice versa. The key was finding the right balance. Enough detail for the sender to feel in control, enough simplicity for the recipient to just pay.

Cross-border payments add a layer of complexity that most invoicing tools ignore. Currency conversion, settlement timing, and payment rail selection all happen behind the scenes, but the design needs to communicate enough about these processes to build trust without overwhelming the user with technical details.

More case studies

Other projects I've worked on

Sorbet · B2B Stablecoin · 2026

Redesigning the send funds experience

A wallet built for the way people actually move money.

Sorbet · Internal Tool · 2026

Building Sorbet Studio

An internal tool where anyone on the team can create on-brand posts using templates.