Skip to content

Currency fees in QryptoPay

QryptoPay can add a separate fee for paying in each cryptocurrency on top of the order amount — a percentage of the amount, with optional lower and upper thresholds. The setting is shared across the whole module: turn on the master switch, set a percentage for the currencies you need, and the fee starts applying to new payments.

ℹ️ Why this matters

The customer's money doesn't always land directly in your final wallet — on some networks, sweeping the funds you've received costs a network fee. The extra payment fee helps offset that cost. It's also a way to steer the flow of payments toward the currencies you care about, without disabling the rest entirely.

Three ways to split this cost

How you cover the transfer cost is up to you, and there are three options:

  • Absorb it yourself. The price in your store doesn't change, and the transfer cost is deducted from your wallet each time. It isn't fixed — it depends on which currency the customer picks.
  • Build it into your store price. You raise the item's price yourself, by an average estimate of the cost. This is a single approach across currencies: the store passes QryptoPay the final payment amount, and the customer picks the specific currency only at the payment step. Simple and predictable, but the actual transfer cost differs by currency, while the price doesn't.
  • Hand the calculation to QryptoPay — the option this article covers. Only here can you set a different fee for each currency and steer the payment flow accordingly: a higher fee for currencies that work against you, and a lower or zero fee for the ones that work in your favor. The fee is added to the amount at the final payment step and is visible to the customer only there, not in the item's price.

QryptoPay can't tell the first two options apart — from its side, both are simply "fee disabled." The only difference is how you build the price in your own store.

How the fee is calculated

The fee is a percentage of the order amount. But for small payments, a percentage alone may not be enough to reliably cover the network cost — that's what the lower threshold is for: the minimum fee amount in USD. For large payments the opposite logic applies: the upper threshold caps the fee so the purchase stays worthwhile for the customer. Keep in mind that on some networks the transfer fee is fixed and doesn't depend on the transfer amount. Either threshold can be left unset, in which case there's no limit on that side.

💡 Be careful with thresholds

A threshold set too high or too low can confuse the customer at checkout. For example, on a 10 USD order with a 2 % fee and a 5 USD lower threshold, the final fee is 5 USD, not 0.20 USD — the threshold kicked in. Before setting thresholds, estimate them against a typical order amount for your store. Or set a minimum amount for crypto payments at the store level instead.

ℹ️ The fee applies per currency, not per network or merchant

USDT on Ethereum and USDT on Tron get the same fee — you can't configure them separately. The setting is also shared across the whole module: if you have several merchants, the fee applies the same way to all of them, with no per-merchant settings.

The fee is locked in once — at the moment the invoice is issued to the customer. If you change the percentage or the thresholds later, already-issued invoices aren't affected — the new values apply only to subsequent payments.

What the customer sees

The amount due on the payment page already includes the fee — you don't need to add it separately. The fee is labeled next to each payment method and next to the order amount, so the customer can compare currencies themselves and pick the one with the lower fee.

What the merchant gets

The payment notification shows the fee separately from the order amount, so you always know how much the customer paid, how much of that was withheld, and how much you're left with.

⚠️ Review your payment reconciliation

If your integration compares the payment amount to the order amount, turning on the fee changes that comparison: the payment amount becomes larger than the order amount by the size of the fee. Reconcile against the new notification fields, not just the original amount.

How to set up your store

For your store to handle fees correctly, reconcile the order against the amount the store actually received, not the full amount that came from the customer. Below is an excerpt from the payment notification — just the fields you need for this (a 49 USD order, a 5 USD fee):

{
  "payment_result": "success",   // payment result
  "amount_fiat": "54.00",        // total received from the customer: order and fee
  "surcharge_fiat": "5.00",      // fee withheld
  "amount_fiat_net": "49.00"     // what the store gets — reconcile the order against this amount
}

The first figure always equals the sum of the other two: amount_fiat = amount_fiat_net + surcharge_fiat.

Both fee fields are always present, even when the fee is disabled: in that case surcharge_fiat is 0.00 and amount_fiat_net matches amount_fiat. So existing integrations don't break, and you can switch to the new fields ahead of time — before you turn the fee on.

This is only an excerpt: the full notification payload and how to validate it are covered in the QryptoPay setup guide.

Automate only successful payments

The notification includes a result flag: the payment went through normally, the wrong amount arrived, or there was no invoice issued for the payment at all (see QryptoPay setup guide for more on each case). This affects the fee too: it can only be calculated precisely for a normal payment, and the other two cases are safer to handle by hand — a top-up payment, a refund, or a decision to leave it as is.

Bitcoin and Litecoin — the cost works differently

For Bitcoin and Litecoin, accepting a payment itself costs nothing — the money lands directly with you, with no separate transfer from the customer's address. The cost shows up later, when you withdraw the money you've accumulated: the network bundles previously received payments into a single transaction, and the cost of that transaction grows with the number of payments bundled together, not with their total amount.

So the withdrawal cost in these currencies depends on how many payments you've received, not on the amounts. A fee turned on for Bitcoin or Litecoin doesn't reflect this cost directly — as with any other currency, it's your own decision, not a recalculation of actual costs.

How to enable it

Fees are configured in QryptoPay"Settings""Currencies", in the "Fees" block: the master switch turns the fee on or off for the whole module, and clicking a currency opens the percentage and both thresholds for it individually.

💡 No fee by default

Until you explicitly set a percentage, the fee for a currency is zero — turning on the master switch by itself doesn't change the cost of payments.

BeAdmin © 2025. All rights reserved.