Presenting the quote
A quote is not a price. It is a promise. It is time-sensitive, auditable, and finite. Your design must reflect that. Present it with precision:- Show the exact input and output
- State the rate, not as a flourish, but as a fact
- Indicate when this promise expires, with a countdown, not a guess
The expiration of a promise
When a quote expires, it should not be possible to proceed. This is non-negotiable. The interface must:- Prevent the user from acting on outdated information
- Invite them to fetch a new quote, deliberately
- Make the boundary between valid and invalid unmistakable
Confirming the trade
The moment of confirmation is not a tap. It is a contract. Reflect the progression honestly:- “Validating quote…”
- “Verifying wallet balance…”
- “Executing trade…”
- “Crediting wallet…”
About inputs
Precision is not optional. You are not working with ideas. You are working with money. Never allow a user to enter:- A floating-point guess
- A poorly formatted currency
- A broken assumption about units
- Show BTC in sats
- Show stablecoins in cents or dollars
- Show NGN in whole naira
- Normalize, correct, confirm, before submission