Tolerance — small shortfalls settle anyway
Each merchant has an underpayment tolerance of up to 2% (configured by Qint — contact support to adjust yours). A payment short by no more than the tolerance is treated as paid in full and settles normally. Typical dust-level shortfalls never bother you or the buyer.Beyond tolerance — the underpaid flag
When the shortfall exceeds the tolerance, the payment is flagged underpaid. Two important properties:- It’s a flag, not a status. The intent’s status doesn’t change on detection — a
pendingpayment stayspending. - The payment stays payable while its 15-minute window is open. The buyer can top up by sending the remaining amount to the same deposit address; if the full amount arrives in time, the payment proceeds to settle normally.
payment.status webhook is re-emitted with underpaid: true, expectedCryptoAmount and receivedCryptoAmount, and the checkout page shows the buyer what’s still owed.
Expired underpaid — your review queue
If the window closes while the payment is still short, the intent expires and enters your review queue in the dashboard. The merchant’s Owner and Admin users are notified by email that a payment came up short. For each queued payment you see the fiat amount, the asset, the expected and received crypto amounts, and the linked invoice or payment link. You decide:| Decision | Effect |
|---|---|
| Accept as paid | The one sanctioned expired → settled transition. Full settlement side effects run: balance credit, payment.status webhook (settled), receipt email, and a linked invoice flips to Paid. |
| Decline | The intent stays expired. The resolution (and your optional note) is recorded. |
Resolving review items requires the Owner, Admin or Finance role — the same
policy as payouts.
What your integration should do
- Handle the flag. On
underpaid: truefor a non-terminal payment, hold fulfilment (the WooCommerce plugin puts the order on hold). - Trust
settled, however it arrives. An accepted review item emits the samesettledwebhook as a normal payment — one code path fulfils both. - Treat
expired+underpaidas “pending a human decision”, not as a hard failure, until the review is resolved.