How to handle USDT underpayments
Why a USDT payment arrives short, what the partial status means, how to decide between asking for the difference and refunding, and how to prevent it with clearer checkout wording.

Sooner or later a customer sends slightly less USDT than the order needs. It is the most common small problem in stablecoin payments, and it is easy to handle if you have decided in advance what happens. This guide explains why payments arrive short, what Qvard does in that case, and how to choose between asking for the difference and refunding.
Why a payment arrives short
A short payment is rarely a trick. The usual causes:
- An exchange withdrawal fee was taken out of the amount. The customer asks the exchange to withdraw the exact order amount, and the exchange deducts its fee from it, so less arrives. This is the cause most of the time.
- A typing mistake. The customer entered the amount by hand and dropped a decimal.
- Paying from two sources. The customer sends part of the amount from one wallet and plans to send the rest later.
- A wrong amount in the first place. The customer copied an old figure instead of the one on the payment page.
The network fee of the transfer itself is paid by the sender on top of the amount and normally does not reduce what arrives. The exchange fee is different, because many exchanges subtract it.
What Qvard does with a short payment
A payment has four statuses: wait (created, not paid), partial (less than the full amount arrived), completed (the full amount arrived) and rejected.
When less than the full amount arrives, the payment gets the partial status. The completion webhook is sent only when a payment is completed, so a partial payment does not trigger it, and your system should not treat the order as paid. Check such a payment in your Qvard cabinet and keep the order on hold. The exchange rate on the payment page is fixed for one hour, so the required amount does not move while the customer is paying; the shortfall is a real difference in the amount sent.
Ask for the difference, or refund
Once you know a payment is short, you have two sound options. Decide which one is your rule before it happens.
- Ask for the difference. Keep the order on hold, tell the customer exactly how much is missing and let them send it. This is the better option when the shortfall is a few dollars or an exchange fee, and the customer still wants the order.
- Refund and cancel. If the customer does not respond, or the shortfall is large, cancel the order and send back what arrived.
- Accept a small shortfall. Some merchants fulfil the order when the gap is trivial. That is a business decision you make by hand; do not build it as an automatic rule that treats any payment as paid.
Whatever you choose, show the customer the status on the order page, with the exact missing amount, and say how long you will keep the order.
How to refund
A crypto payment cannot be reversed by the sender or pulled back by you, so a refund is a new transfer that you send. Ask the customer for the refund address and the network, because USDT on TRON, Ethereum and BNB Smart Chain are separate rails and funds sent on the wrong one do not arrive. Take the address from the customer, not from the original payment, which may belong to an exchange.
The funds sit on your Qvard balance, and you withdraw them to a crypto address; the withdrawal costs only the network fee. A refund to a bank account in fiat is not available. Record the refund against the original order for your books.
How to prevent it
Most short payments are avoidable with better wording.
- Say which amount must arrive. On the order page and in emails write that the exact amount shown must arrive, not just be sent, and that exchange withdrawal fees come on top.
- Show the amount on the payment page. The customer should copy it, not type it, and see the asset and network next to it.
- Preselect the method if you want to steer everyone to one network, so the page opens with it chosen. On the payment page the customer sees the network and address together.
- Give a status page. A customer who sees "received 95 of 100, 5 missing" fixes it at once. A silent "pending" generates a support ticket.
A related guide covers the same ground for invoices: how to recover underpaid crypto invoices.
A checklist
- Treat
partialas "not paid"; never fulfil on it. - Decide your rule in advance: ask for the difference, refund, or accept a small shortfall by hand.
- Keep the order on hold and tell the customer the exact missing amount.
- Refund by a new transfer, to an address and network the customer confirms.
- Word the checkout so that the amount that must arrive is clear.
For the basics of accepting USDT, see how to accept USDT TRC20 payments; for webhooks, how to secure crypto payment webhooks.
FAQ
Why did my customer pay less than the invoice?
Most often an exchange withdrawal fee was deducted from the amount they sent. Sometimes the amount was typed by hand with a mistake, or part of it is still to come from another wallet.
Do I get a webhook when a payment is short?
The completion webhook is sent only when the payment is completed, so a short payment does not trigger it. Treat the order as unpaid and check the payment in your cabinet.
Can I accept a small shortfall?
That is your decision, made by hand. Do not mark orders paid automatically on a partial payment.
How do I refund a customer?
By sending a new crypto transfer from your balance to an address and network the customer confirms. A refund to a bank account in fiat is not available.