Dozie Uzoechi[→] Reach out

[07] 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.

Year
2026
Role
Lead Product Designer
Company
Sorbet
Timeline
3 weeks (2026)
Team
6 cross-functional
Delivery
User Research, Interaction Design, Visual Design, Prototyping

(01) 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.

(02) 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.

The MVP invoice table and creation flow
  • 01No recurring invoicesUsers could only create one-time invoices. There was no option to set up recurring billing for retainer clients or subscription-based work.
  • 02No amount received flagsThe invoice table had no visual indicators showing how much had actually been received against each invoice, leaving users to manually track partial payments.
  • 03Limited invoice typesNo distinction between one-time and recurring invoices meant users couldn't tailor their billing to different client relationships.

(03) 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 in our own experience became clear:

  • 01Invoice type selectionCompetitors let users choose the type of invoice upfront: one-time, recurring, or milestone-based. Our flow had no such distinction.
  • 02Currency controlUsers could expressly choose the currency they wanted the invoice to be denominated in. Our flow defaulted without giving control.
  • 03Payment previewProper 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.
Invoice flows from Stripe, Acctual and Wallex

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

(04) 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.

Creating a one-time invoice
Setting up a recurring invoice
Tracking an invoice’s status
What the client sees when paying

(05) 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
Overview of the Sorbet design system: colours, typography and components

(06) 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 creationAvg time to send
45%
Fewer ticketsInvoice-related support
28%
Higher completionRecipient pay rate

(07) 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.

Other projects