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.
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/2026, Prague, remote.
context
A checkout built for the backend, not the buyer.
Volume grew from $63M to $750M a year in three years, ~60% of prop trading payments worldwide.
One flow carried all of it, reverse-engineered from the crypto invoice spec.
Hard backend dependencies made the flow itself untouchable.
Analytics couldn’t see the leak. I mapped it by hand.
$680M a year failed to convert across only three steps, too few for analytics to isolate causes.
I mapped every screen, ran workshops with Sales, Engineering and Product, and reviewed Customer Support complaints.
The loudest complaint became the starting point: the back button didn’t work.
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, one irreversible invoice: you’re out.
Tap one selects a token; tap two selects a network, locks the rate, and creates the invoice.
Invoices cannot be deleted or reversed, by design: a payment landing on a dead invoice is lost.
Users trying to preview their total were pushed to a new screen with no way back. The trigger was the problem, not navigation.
Payment ID
inviwBEdCBwRxFX
12.01 EUR
Pay with
Search for a cryptocurrency...
USD Coin
11.285432 USDC
Select →
Tether USD
11.285143 USDT
USDG
11.279854 USDG
Bitcoin
0.00017606 BTC
Ether
0.00402551 ETH
Back to Merchant
Invoice expires in 08m 24s
Payment ID
inviwBEdCBwRxFX
Select network to send USD Coin (USDC)
Ethereum
Processing fee 0.000876 USDC
Solana
Processing fee 0.000791 USDC
Arbitrum
Processing fee 0.000834 USDC
Polygon
Processing fee 0.000811 USDC
Optimism
Processing fee 0.000859 USDC
The amount in crypto may differ slightly after you have made your choice.
Back to Merchant
Invoice expires in 08m 24s
Payment ID
inviwBEdCBwRxFX
Send USDC on the Ethereum blockchain, otherwise your funds will be lost. ?
Total to pay
11.284667 USDC
Ethereum address:
0x52DF1440197F618Bc704814 1e32D8150E641cf7b
Invoice expires in 08m 24s
The obvious fix was to change the trigger: create the invoice once the user commits. But the invoice is load-bearing. Three quarters of a billion dollars a year ran through it. Its guarantees keep an irreversible payment from missing its target. Rebuilding it mid-flight was a risk nobody would take. The backend was off-limits. Whatever I found had to live in the frontend.
iteration
At a 9% baseline, shipping fast was nearly free.
Every surface pain point became a shipped iteration, evaluated on live signal.
The biggest bet failed: breadcrumb navigation taught users they could go back while the mechanics still forbade it.
Users ended up stuck again, now with added frustration.
Payment ID
inviwBEdCBwRxFX
Send USDC on the Ethereum blockchain, otherwise your funds will be lost. ?
Total to pay
11.284667 USDC
Ethereum address:
0x52DF1440197F618Bc704814 1e32D8150E641cf7b
Connected wallet: 0xCCe9...C8C47
Invoice expires in 08m 24s
QR code|Pay from Wallet|Manual
To avoid losing funds ensure you send USDC on the Ethereum Network.
Pay with Trust Wallet
Connected wallet: 0xCCe93...C8C47
123
10guaranteed rate
USD Coin11.284667USDC
Total12.06EUR
solution
Taps saved in the frontend, the invoice delayed until commit.
Taps now save the selection locally; users preview any token-network pairing without triggering the backend.
A new button holds that state and moves the flow forward only when tapped.
On commit, the saved selection is sent wrapped as the original trigger.
ASLEEPnothing chosen yet
select token
WAKINGtoken picked, network pending
11.284667 USDC
select network
LIVEready, waiting on user
11.284667 USDC
onEthereum network
(ERC20)
craft
One button anchors all three steps.
Step one: it stores the selection and advances the flow when the user is ready.
Step two: it carries the money: fiat price, exchange, conversion, and total to pay.
Step three: it stays on screen as a reference while the payment completes.
Return
En
Select token
Payment selection requires two steps. A crypto token and a network to carry it. You must send the token on the network you select.
TokenNetwork
Popular
USDC
6 networks
USDT
7 networks
USDG
2 networks
Bitcoin
2 networks
Ethereum
1 networks
Purchase price12.01 EUR
select token
By using this service, you agree to our Cookie Policy.
Return
En
Select network
Payment selection requires two steps. A crypto token and a network to carry it. You must send the token on the network you select.
TokenNetwork
Ethereum
Processing fee 0.000876 USDC
Solana
Processing fee 0.000791 USDC
Arbitrum
Processing fee 0.000834 USDC
Polygon
Processing fee 0.000811 USDC
Optimism
Processing fee 0.000859 USDC
Purchase price12.01 EUR
11.284667 USDC
select network
By using this service, you agree to our Cookie Policy.
Return
En
Select network
Payment selection requires two steps. A crypto token and a network to carry it. You must send the token on the network you select.
TokenNetwork
Ethereum
Processing fee 0.000876 USDC
Solana
Processing fee 0.000791 USDC
Arbitrum
Processing fee 0.000834 USDC
Polygon
Processing fee 0.000811 USDC
Optimism
Processing fee 0.000859 USDC
Purchase price12.01 EUR
11.284667 USDC
onEthereum network
(ERC20)
By using this service, you agree to our Cookie Policy.
Exit
En
Payment
Select USDC on the Ethereum network when making the payment. Funds sent on a different network will be lost.
Wallet ConnectManual Payment
Pay with Trust Wallet
Connected wallet: 0xCCe9...C8C47
Purchase price12.01 EUR
Processing fees00.000876 USDC
Exchange rate1 EUR ~ 1.000401 USDC
Total to pay(12.06 EUR) 11.284667 USDC
11.284667 USDC
onEthereum network
(ERC20)
Waiting payment 08:24
Exit
En
You can close this window now.
Paid!
Your payment has reached the merchant. Thank you for using Confirmo.