Skip to main content
Customers may sometimes send slightly less than they need to — for example, because they entered the amount incorrectly or didn’t account for a fee deducted by their wallet or exchange. In your merchant settings, you choose what CryptoProcessing does in such cases: Accept underpayments or Reject & refund automatically. You can change the setting at any time. It takes effect immediately and applies to all current and future payment requests.

Accept underpayments

If receiving the exact requested amount is not critical for your business, you can configure an underpayment tolerance to accept payments below the requested amount. There are two common ways to use this feature:
  • Accept as fully paid. Accept an underpaid payment request as successfully completed and consider the customer’s payment obligation fulfilled, as long as the amount is within your configured tolerance.
  • Credit the actual paid amount. If you use payment requests to top up customer balances, you can credit the amount the customer actually paid instead of the requested amount. You can find the received amount in the currency_received.amount parameter of the payment request callback.
In both cases, CryptoProcessing credits your merchant balance with the actual received amount, not the originally requested amount. If your customer pays the processing fee, the received amount will include this fee. Make sure to subtract it before crediting the customer’s balance. You can set the tolerance as a percentage of the total (e.g., allow underpayments up to 2%) or as the EUR amount (e.g., allow underpayments up to 10 EUR). You can also combine the two values so that the percentage caps at a certain limit (e.g., allow underpayments up to 2% but no more than 10 EUR).
Here’s how a combined rule of 2% / 10 EUR applies to different payment requests:
  • 100 EUR expected → at least 98 EUR required (underpayment up to 2%)
  • 1000 EUR expected → at least 990 EUR required (underpayment capped at 10 EUR)
CryptoProcessing keeps waiting for the full expected amount until the payment request times out. If the payment is not complete by then, the paid amount is checked against the tolerance. If it’s within the tolerance, the payment request gets the Paid status, and the actual paid amount is reported in the API callback (see the Integration guide). Otherwise, it gets the Failed status, and CryptoProcessing initiates an automatic refund for the received funds minus a refund fee. To enable this behavior:
1
Go to Settings → Payment requests.
2
On the Payment handling rules tab, click Manage.
3
Select Accept underpayments.
4
Specify the Underpayment tolerance.You can enter the percentage, the maximum EUR amount, or both.
5
Enter your 2FA code and click Save changes.

Reject & refund automatically

This is the default behavior we set for all merchants. If there is not enough funds received when the payment request times out, it gets the Failed status. CryptoProcessing initiates an automatic refund for the received funds minus a refund fee. To enable this behavior:
1
Go to Settings → Payment requests.
2
On the Payment handling rules tab, click Manage.
3
Select Reject & refund automatically.
4
Enter your 2FA code and click Save changes.
Last modified on October 15, 2026