Underpayment
What happened
Less arrived than quoted, beyond the tolerance band. Usually an exchange deducted its withdrawal fee from the amount sent.
Status
underpaid, with confirmed_amount against expected_amount.1
Ask for a top-up
The address stays valid, and a second transfer to it is picked up and added.This is a manual conversation today — there is no automatic prompt to the customer. One is designed and coming.
2
Fulfil anyway
For a shortfall of a few cents, usually cheaper than the support conversation.
3
Refund what arrived
To an address the customer supplies. Refunds.
Overpayment
More arrived than quoted. The full amount lands in your pool. Fulfil the order and refund the difference, or credit it, depending on what you sell. Nothing is stuck.Wrong token
The customer sent a token you haven’t enabled — often USDT when you accept USDC, on the right chain. The funds reach the address and surface aswrong_token. They’re recoverable, but not automatically converted. Contact the customer and either refund from your own wallet in that token, or arrange a correct payment.
Late payment
The quote expired, then the money arrived.The payment still counts. Expiry locks the price, not the address. The chain is the source of truth, not our timer.
expired_paid_late. What you decide depends on how far the price moved — for stablecoin pricing, usually nothing has changed and you simply fulfil.
Payment with no matching order
Someone paid an address from an old order, or reused one they had saved. The funds aren’t lost — they sit at an address that can only pay your pool — but working out which customer they belong to needs a human.Held for compliance
If you’ve enabled payer screening and a payment trips it, it shows asheld_sanctioned pending review rather than settling silently. Sanctions.
Quick reference
In every row the money is safe. These are attribution and policy problems, not loss events. The forwarder address commits to your pool, so funds sent to it can only ever reach you.