Redesigning HighLevel’s invoice builder into a high-velocity billing workspace
This project wasn’t about redesigning an editor. It was about redesigning trust.
Date
January, 2026
Role
Product Designer, Leading Payments
Company
HighLevel
Services
Product design for complex billing and financial workflows
Context
HighLevel is an all-in-one platform used by agencies and businesses to manage CRM, marketing automation, payments, and revenue workflows at scale. Invoicing sits at the center of that system, it’s where work turns into cash.
When I took on the invoice builder redesign, the problem wasn’t visual inconsistency. It was fragility.
Creating and managing invoices was slow, click-heavy, and anxiety-inducing, especially for users dealing with partial payments, recurring billing, taxes, reminders, and accounting sync. Small configuration mistakes could delay payments or break automation across the system.
This project was about rebuilding trust in one of the most revenue-critical workflows in HighLevel.
The real problem
The existing invoice experience suffered from a set of systemic issues:
Users had to leave the editor to configure payment methods, reminders, layouts, or accounting sync, breaking flow mid-draft.
Global and invoice-level settings were not clearly separated, creating fear around changing anything.
Payment schedules and partial payments required repetitive manual input, increasing the chance of error.
Automation existed, but users couldn’t clearly see or trust what would happen.
Errors didn’t just frustrate users, they delayed or blocked real payments.
The problem wasn’t “users need fewer fields.”
It was that too many systems were fragmented across too many surfaces.
Design principle
I anchored the redesign on a single principle:
Everything required to create, customize, automate, and send an invoice should live in one uninterrupted workspace, without sacrificing correctness.
This principle guided every decision, from layout to interaction models to where automation lives.
The solution: one screen, many systems
A single, persistent workspace
The redesigned invoice builder is a single screen where drafting, configuration, automation, and preview all happen together.
Left: authoring and configuration
Right: live invoice preview (PDF-accurate)

The preview isn’t decorative. It’s a real-time representation of what the customer will receive. Every change updates instantly, reinforcing trust and reducing send anxiety.
The toolbar as a control surface
Instead of navigating away to settings pages, I redesigned the top toolbar as a command layer for invoice-specific actions:
Record payment
Payment settings
Invoice layouts
Accounting sync
Invoice reminders
Recurring invoice settings
Each action opens inline, in context, without disrupting the draft.

This keeps users in flow while still exposing powerful configuration when they need it.
Designing for financial reality
Line items, taxes, and totals - safely
Adding products, discounts, and stacked taxes happens inline, with totals recalculated immediately. The system supports complex tax combinations while keeping the UI readable and predictable.


Populated invoice with taxes and discount
Deposits and payment schedules without math anxiety
One of the hardest problems was supporting deposits and split payments without manual calculation.
The redesigned flow allows users to:
Apply an upfront deposit
Automatically split the remaining balance into scheduled payments
See the exact breakdown reflected in the invoice preview

Populated payment schedule and deposit
The UI communicates not just amounts, but intent, removing guesswork while ensuring financial correctness, including penny-rounding edge cases.
Recording payments where the work happens
Recording payments, whether charging a card or logging an offline payment, happens directly inside the editor via a sidebar.

This avoids context switching and makes payment state visible immediately, reinforcing trust in the system.
Invoice-level payment overrides
Global payment rules are powerful, and dangerous.
To solve this, I designed invoice-level overrides for:
Partial payments
Late fees
Tips
Processing fees
Allowed payment methods

This lets users handle special-case invoices without fear of breaking automation elsewhere.
Automation without fear
Layouts with live preview and template customization
Users can switch between invoice layouts and customize them inline to match their brand — without ever leaving the editor.
Each layout supports brand-level customization such as:
Logo placement
Brand colors
Typography and visual hierarchy
All changes are reflected instantly in the live preview.

Invoice layout selector and layout customization / brand settings

Different invoice styling layouts
There are no reloads and no separate configuration screens. The preview updates in real time, showing exactly how the final invoice will look when sent to a customer.
This allows agencies and businesses to maintain brand consistency at the point of billing, while still moving quickly through invoice creation.
What users see is exactly what their customers receive.
Accounting sync that’s visible and explicit
Accounting integrations (QuickBooks, Xero, Wave) live directly in the editor, showing connection status and allowing manual sync when needed.

This avoids silent failures and gives users confidence that data is flowing correctly.
Invoice reminders, decoupled safely
Reminder schedules are configured at the invoice level, not hidden in global settings.

Users can clearly see:
When reminders trigger
How many will be sent
Which templates are used
Automation becomes predictable instead of scary.
Recurring invoices with guardrails
Recurring invoices are configured inline, with clear rules and constraints that prevent invalid states.

The UI communicates system behavior upfront, reducing surprises later.
The invoice dashboard: managing at scale
The redesign didn’t stop at creation. It extended into how invoices are managed day to day.
A dashboard that reflects financial reality
The invoice dashboard surfaces:
Invoices due, sent, overdue, and paid
Total amounts at each state
Clear status indicators
Accounting sync status per invoice

This allows business owners to understand cash flow at a glance.
Empty states that drive action
For new users, the empty state doesn’t just say “no invoices.” It explains why and guides them toward setup.

Quick actions without friction
Contextual actions like edit, resend, clone, delete, and convert to template are accessible directly from the list.
This supports speed without sacrificing control.
Payment history transparency
Each invoice exposes a full payment history, making partial and recurring payments easy to audit.

This is critical for trust, especially in long-running or subscription-based billing.
Outcome and impact
This redesign transformed invoicing from a fragile, multi-page flow into a high-velocity billing workspace.
While exact metrics vary by account, the impact included:
Reduced time to draft and send invoices
Fewer support issues related to invoice configuration and sync
Increased confidence using automation features
Clearer understanding of payment state and cash flow
Most importantly, users could move faster without fear of breaking things.
Reflection
This project reinforced a core belief I have as a product designer:
Designing financial systems isn’t about simplifying UI, it’s about making correctness feel effortless.
The hardest part wasn’t layout or interaction polish. It was designing interfaces that respected money, edge cases, and real-world workflows while still feeling approachable.
If I were to continue iterating, I’d explore:
Bulk invoice actions at scale
Deeper reporting and forecasting views


