All work

05.26 – 06.26

QuickBooks Payments and Bill Pay Rate Tables

Turning a pricing system with dozens of parameters into a fee table merchants can read in seconds.

Overview

Every fee a merchant pays, in a readable table.

The products

QuickBooks Payments and Bill Pay

Payments charges merchants to take payments. Bill Pay charges them to pay suppliers.

The requirement

Show every fee, clearly

Merchants and agents needed the exact fees for a plan in QuickBooks, sales flows and the website.

The solution

A table that grows without a redesign

A fixed column and row order, collapsible sections, and one structure for desktop and mobile. Try the live table ↓

01 — The challenge

Simple parts, many combinations.

Every fee uses the same few parts: a flat amount, a percentage, caps and sometimes an offer. Which parts apply depends on the payment.

Key design challenge

How can a merchant find their fee among dozens of combinations, in seconds?

02 — Context

Money in, money out: two products, one merchant.

Take a florist on QuickBooks. Payments charges a fee when customers pay for bouquets. Bill Pay charges a fee when the florist pays suppliers.

  • Bills and Subscriptions in QuickBooks
  • Sales agent flows
  • QuickBooks website
  • Desktop and mobile
Before

A short pop-up that left most fees out.

Existing QuickBooks Payments pop-up: a short list with the bank payment fee, check fees and an RTP charge.
PaymentsA few fees, no structure.
Existing QuickBooks Bill Pay Basic pop-up: plan price, bank payment fee, check fees and an estimated total.
Bill PayPlan price first, fees second.
03 — Requirements

From pricing tool to table.

Fees live in Intuit's pricing tool as rows of parameters. Not every parameter applies to every charge, so the table shows only what matters and makes room for new ones.

  1. Payment modePayment method column
  2. Network type + transaction typeOne shared column
  3. Transaction rangeTransaction range column
  4. List price + % feeFee, such as “$10 + 0.75%”
  5. Strikethrough price, % and discountOld price struck through, with an offer badge
  6. CapUnder the fee, such as “(Min $10 and Max $100)”

Bill PayPayment method, receiving method and fee, grouped by how the merchant pays.

752px
Constraint

Every table had to fit Intuit's standard modal.

The table opens in a 752px modal. Every extra column squeezes the rest, so the column count shaped every decision.

Market review

How payment platforms present their fees.

I reviewed fee pages from Stripe, PayPal, Square, Melio and Bill.com, and Intuit's own pop-ups. They set the row and column order.

04 — Design

From a complete table to a clear one.

  1. Market reviewExisting pop-ups and five fee pages
  2. FigmaFour rounds of structure and layout
  3. ClaudeCoded prototype with icons and collapsible sections
  4. HandoffPrototype and Figma files to engineering
Iterations

Four rounds of structure, each within the modal.

V1

Mirror the pricing tool

Every parameter for every charge, laid out as it is set up. Accurate, but very long.

Version 1: card payment fees with every pricing attribute listed beside fixed and percentage fees for each transaction range.
V2

Minimal styling

Lighter type and spacing on the same structure. Easier on the eye, but just as long.

Version 2: the same breakdown with lighter, minimal styling.
V3

A column grammar

One table per charge type, with the payment method first and the fee last.

Version 3: card payments table with payment method, network type, transaction type and fee columns.
V4

Separate columns

Each attribute in its own column, tested with flat and tiered card fees.

Version 4: card payments with separate columns for network type, transaction type and transaction range.
Final

Fewer, clearer columns

Network and transaction type share a column, and caps sit under the fee, so four columns fit the modal.

Final: card payments with payment method, network and transaction type together, transaction range, and the fee with caps underneath.
Structure

The method stays first and the fee stays last.

New attributes slot in between. When they no longer fit the modal, related attributes share a column.

Decision 1

Fewer, wider columns, within a 752px modal

Chose
Four columns: method, network and transaction type together, range, then the fee with caps beneath.
Over
One column per attribute, or every attribute combined under the payment method.
Why
One column per attribute crowded the 752px modal. Combining everything hid the structure.
Decision 2

A fixed row order, over the order the data arrives in

Chose
Card payments first, then bank payments, buy now pay later, return charges and other fees.
Over
The order the pricing data returns, which has none.
Why
The most-checked, simplest fees come first, based on the existing pop-ups and the market review.
Final design

Four columns in a 752px modal, with icons and collapsible sections.

Switch products, fold sections, or see mobile, where the table swipes with the method pinned.

Final rate table for QuickBooks Payments: card fees by payment method, network and transaction type, and transaction range, with caps under each fee, then other charges.

A representation of the real work, rebuilt for this portfolio with illustrative fees.

05 — Reflection

Team, and what I learned.

Team
  • My contributionMarket review, table structure, four rounds of iteration, final designs, coded prototype and handoff
  • Principal product designerDesign direction and reviews
  • Product managerRequirements and scope
  • EngineeringBuilding the table from pricing data
What I learned
  • Structure is the design

    Column and row order did more for clarity than any styling.

  • Design with the data

    Columns built from attribute names let the table grow without new code.

  • Remove on purpose

    Every column we cut made the right fee faster to find.

Also check out