‼️ Fee shortfall recovery

‼️ Fee shortfall recovery

What walllet.com does when a user reaches the last screen of a send and cannot cover the network fee.

What walllet.com does when a user reaches the last screen of a send and cannot cover the network fee.

Role

Product Designer

Industry

Finance, Banking

Year

2024

What I changed about the failure state, and what I left alone?

A failure state can be rescued in a lot of ways that all look reasonable in a mockup: a modal that explains, a help article, a link to buy. Each of them takes the user further from the transaction they were trying to complete. The constraint I set was that recovery had to happen without the send leaving the screen.


What I chose

What I cut

Why

The exact shortfall, named in dollars and token

"Insufficient balance for gas"

A named amount is an errand. A category is a research project the user has to run themselves.

Recovery inline, in the checkout

An error screen or modal

Leaving the checkout means rebuilding four decisions. Keeping the transaction visible is what makes the fix feel small.

Two routes:
top up, or buy in the app

Sending the user to an exchange

Someone who leaves to buy ten cents of ETH elsewhere has left. Whether they return is no longer a design decision.

The send button stays, disabled

Removing or replacing it

A disabled button says paused. An absent one says over. The whole screen has to read as a transaction waiting, not a transaction lost.



What I owned on the shortfall state?

What I owned
The shortfall state itself and the rule behind it, a failure the product can solve is not allowed to be a message. The exact amount, named in both dollars and the token, with headroom above the current fee. The inline action and its copy. The two recovery routes. Keeping the transaction resident so the user returns to a checkout that still holds their asset, network, recipient and amount rather than an empty form.


An error the product can fix should not be a sentence describing the problem.


How the checkout handles not having enough

The failure is reported in the row that caused it. The fee line turns red and says what is wrong beside the number it is wrong about, no banner across the top, no modal, nothing that has to be dismissed before the user can look at their own transaction.


Directly below, the recovery is styled as an action rather than an alarm, the same blue as the product's primary controls, with a plus rather than a warning icon. It states the asset by name and an approximate amount, deliberately above the fee it needs to cover, so a user who fixes this once does not land back here when gas moves a few cents.

What holds it together is the state underneath. The recipient, the amount, the asset and the network stay resident while the user goes and gets what they need, so recovery ends where it started rather than at the beginning of the flow.