When it fires
The confirmation token has already been redeemed. Tokens are single-use: the first successful confirm invalidates the token so a replay cannot submit the trade again.Why it happens
- A retry layer that re-confirms without checking the trade’s status first (most common).
- Two concurrent confirm calls from your side.
- A double-click in an approval UI.
How to fix
- Check the trade with
GET /v1/trades/{id}. If its status is pastpending_confirmation, the earlier confirm succeeded. - Make retries safe: read the trade’s status first and only confirm while
status === 'pending_confirmation'. - In UIs, disable the confirm button as soon as it is clicked.
Related codes
TRADE_NOT_AWAITING_CONFIRMATION— the same situation detected through the trade’s status