HomeConfirmo

Tripled conversion, barely scratched the surface.

Confirmo moves three quarters of a billion dollars a year through a checkout with a 9% success rate, running on a backend that couldn’t be touched. And without touching it, I tuned the flow into an extra $135M yearly.

9%43%
$750M
43%success, key markets
3xfrom 9 to 27%
$135Madded yearly
0backend changes

Product Design Lead, the company’s first designer. The full product surface, buyer and merchant, plus brand and website. I built the component library and design system from scratch, and moved design to the front of product with the CPO. 2025-26.

context

A flow hardened over the years.

Confirmo grew its yearly volume from 63 to 750 million dollars in three years, and today powers around 60% of prop trading payments worldwide. All through a single flow, built to keep up with crypto’s technical requirements.

Reverse-engineered from the product, a crypto invoice, the flow was never tailored to humans. A sequence of inputs mandated by spec became stiff, with so many hard dependencies we simply couldn’t afford to change.

PAYMENT · v2.4blocks: 4
total.crypto precision: 8dp
PAYMENT · v11.1blocks: 14
warn.banner tooltip.hint total.fiat precision: 6dp fiat.ref: EUR xr.rate window: 15 min qr.render(addr) addr.copy wrap: 2 lines btn.payWallet fallback: manual
PAYMENT · v21.8blocks: 26
warn.banner match(asset,net) tooltip.expand asset: USDC (ERC-20) network: Ethereum contract: 0xa0b8…6eb48 recovery.fee no.guarantee total.fiat precision: 6dp fiat.ref: EUR xr.table rate.locked product.price network.fees qr.render(addr) format: EIP-681 addr.copy checksum: EIP-55 wrap: 2 lines btn.payWallet deeplink: wc:// fallback: manual timer.expire on.zero: invoice.void footer.locale

discovery

Looking for trouble.

We were failing to convert 680 million dollars a year. A leak this big had many holes to patch. And with just three steps to the flow, analytics didn’t have enough data to paint a full picture.

So I added layers. Mapping and reviewing every single screen, looking for wins. Running workshops with Sales, Engineering and Product, logging pain points and opportunities. And finally, my favorite source for insight: Customer Support.

With a clear picture and my priorities in place, I started on the loudest complaint: the impossible back button.

priorities

01Back button(impossible tho)
02Users sending wrong funds
03Users sending wrong amount
04Multi-method payments
05No feedback on fail
06Can’t connect wallet

root cause

Two taps, you’re out.

It turns out, the back button was really impossible. Once an Invoice is created, it listens for payment until ultimately expiring. Deletion or reversal is purposely absent to avoid payments landing on a dead invoice, rendering funds irreversibly lost.

The flow starts with a list of tokens, a tap selects one, revealing networks. The second tap selects a network, but triggers five events in total. The selected pair locks the rate, the rate creates an invoice, and the invoice is final: the selection can no longer change, so the user is pushed out.

expected ONE TAP token selected ONE TAP network selected pair saved rate locked invoice created pushed to Payment

Users simply trying to see a preview of total to pay were now stuck on a new screen. But the problem wasn’t navigation, it was triggering an invoice on network selection.

iteration

Ship fast, get signal.

With the flow set in stone, I turned to the surface, transforming every pain point into an improved experience. Iterating. Shipping fast. At 9%, risk was negligible and the signal worth it.

The first iterations got many things right, except my biggest bet: breadcrumb navigation. First tap teaches users the push forward, so by the second it’s expected. But the mechanics hadn’t changed. That same first tap also tells users they can go back. Except by the second tap they were stuck again, with added frustration.

solution

With no way back, I showed users the way forward.

Everyone wanted a back button. But I knew the problem was creating an invoice, from a selection tap. A mismatch between action and outcome. With the triggers off-limits in the backend, I looked to manipulate the flow from the frontend, capturing the action, and postponing the outcome.

Selection taps would be saved on the frontend, reflecting state on the new button. This allowed the user to preview multiple pairings, without triggering the backend.

ASLEEPnothing chosen yet

select token

WAKINGtoken picked, network pending

11.284667 USDC
select network

LIVEready, waiting on user

11.284667 USDC
on Ethereum network
(ERC20)

This gave users agency over the transition. Once they tapped to proceed, the saved selection was sent to the backend wrapped as the old trigger-happy network tap.

user experience

Running a tight ship.

The new button became the anchor of the journey. In the first step it saves your selection and moves you forward when you’re ready. In the second it carries the money: fiat price, exchange, conversion, and total to pay. In the last, it’s a reference, ensuring peace of mind.

impact

3x success.

Traditional checkouts have success rates of 90% and above. Crypto is trickier, averaging closer to 24%. Confirmo trailed the industry at 9%, wasting over half a billion dollars a year in abandoned payments.

The redesign delivered. Reaching a 43% success rate in key markets, and 27% overall. It tripled the initial rate, and surpassed the industry average.

START OVERALL KEY MARKETS INDUSTRY 9% 27% 43%

Without a single backend change, design alone added 135 million dollars a year, raising total converted payments to $202M. This type of validation gave credence to the impact that can be derived from human behaviour analysis, which I followed up with the world’s first crypto subscription service. The first Confirmo project built with design and AI right from the start.

Cesar Garcia · Product Design Lead · Confirmo