How does Waffo get from my order amount to my settlement amount?
Every transaction goes through the same four steps, in this order:- Taxes and fees are inclusive (deducted from the order amount), not added on top. The base for both the tax and the fee calculation is the order amount as transacted, not the amount net of the other one. They are not compounded.
- The clearing amount is produced first, and tax and fee are then each computed through their own currency pair. So a fee billed in a third currency is not derived from the already-converted settlement figure — see the case tables below.
What decimal precision does my settlement use, and can I change it?
Settlement Decimal Place is set on your merchant profile when you are signed
up. It has two possible values — 2 decimal places or 6 decimal places —
and it cannot be changed afterwards.
Regardless of the setting:
- Exchange rates always carry 8 decimals, zero-padded if the rate is shorter.
- The settlement summary figure is always 2 decimals. Money moves in 2 decimals.
Which currency pair and which rounding rule apply to my transactions?
Three currencies are in play: your order currency, the fee currency your contract bills in, and your settlement currency. Which pair is used, and how many conversions happen, depends only on which of the three are equal. The customer-facing rounding rules, as they apply on a 2-decimal account, are:
On a 6-decimal account the fee (and the fixed chargeback and failure fees) is
rounded half up at 6 decimals rather than up — the round-up rule exists to
protect a 2-decimal figure from under-collection, and at 6 decimals the residual
is tracked instead. Everywhere the case tables below say
ROUNDUP2, read
“round half up at 6 decimals” if you are on a 6-decimal account.
Case A — order = fee = settlement currency
No conversion.Forex Currency Pair and Forex Rate are empty.
Worked example with an illustrative 2% rate (not a quoted rate), all currencies USD:
Case B — order = fee currency, different settlement currency
Forex Currency Pair = SettlementCurrency/OrderCurrency
Worked example with an illustrative 2% rate, order and fee in USD, settlement in HKD, pair
HKD/USD at
0.12770000:
Case C — fee currency differs, order = settlement currency
Forex Currency Pair = SettlementCurrency/FeeCurrency
This is the case that surprises people: your order currency equals your
settlement currency, yet
Forex Currency Pair and Forex Rate are populated,
because the fee had to be converted. feeRate here may also carry a minimum
or a fixed component.
Worked example with an illustrative 2% rate, order and settlement in HKD, fee in USD, pair HKD/USD at
0.12770000:
Case D — order currency differs, fee = settlement currency
Forex Currency Pair = SettlementCurrency/OrderCurrency
Worked example with an illustrative 2% rate, order in HKD, fee and settlement in USD, pair
USD/HKD at
7.83010000:
Case E — order, fee and settlement currencies are all different
Two pairs are needed:SettlementCurrency/OrderCurrency to produce the clearing
amount, and SettlementCurrency/FeeCurrency to produce the fee. Neither is
derived from the other:
Fee Amount (Settlement Currency) by
Order Amount (Settlement Currency) and you should land on your contracted rate,
subject only to rounding.
Why is my fee different from rate × amount? (minimum and maximum fee)
Your contract may carry aminFee, and either a maxFee (an absolute cap) or a
maxFeeRatio (a percentage cap). maxFee and maxFeeRatio never both apply
to the same fee item. The checks run in a fixed order, and a check that trips
replaces the computed fee rather than adjusting it:
minFeeis checked first. If the computed fee in the fee currency is belowminFee, both the fee-currency and the settlement-currency figures are recomputed fromminFee, rounding up. The recomputation uses the rawminFeevalue as its input, not the already-rounded computed fee.- Then the maximum is checked — whichever of the two your contract carries.
maxFee: if the computed fee in the fee currency exceedsmaxFee, both figures are recomputed frommaxFee, rounding down.maxFeeRatio: iffee deducted (settlement currency) / clearing amount (settlement currency)exceedsmaxFeeRatio, both figures are recomputed as the order amount timesmaxFeeRatio, rounding down.
minFee is always contracted at 2 decimal places or fewer, so it
needs no rounding of its own when it is applied.
The practical consequence for small-ticket transactions: below a certain order
amount, your fee stops being proportional and becomes flat at minFee, and the
effective percentage rises as the ticket falls. This is the single most common
cause of “the fee on this transaction looks wrong”.
What is a Return Fee, and how is it calculated?
A Return Fee returns part of the original payment fee to you when you refund. It exists only if your contract includes it — the default is a refund without fee return, covered in Refund FAQ. Where it applies, the refund row’s settlement amount gains it as a positive component:
Two things to note:
- The refund row’s
Fee Amountis negative. That is the Return Fee, not a charge — a negative fee on a refund row is expected, not a data error. - The refund’s own fee (
refund fee rate) and the Return Fee are separate contract items. A refund can carry a refund fee and return part of the payment fee.
Do I get my VAT back when I refund?
No. A refund does not return VAT. In the clearing steps above, the tax step is simply skipped for a refund transaction — there is no VAT computation on the reverse leg, so there is nothing to return. This is separate from the payment fee question: the payment fee may come back if your contract carries a Return Fee, but the tax does not, under any contract configuration.Can the fee currency change, and what can it be?
The fee currency must be either your settlement currency or the order currency, and it cannot be changed on the same day — the request is rejected by validation. This is why the five cases above are exhaustive in practice for a single transaction.My settlement period netted out negative. What happens?
Nothing moves that day, and nothing is written off.- A settlement is only initiated when the net settlement amount is greater than zero. A period whose refunds and chargebacks outweigh its payments produces no payout and no funds transfer.
- The negative amount carries forward and accumulates. It is added to the next period, and the next, until the running total turns positive — at which point the whole accumulated amount settles as one transfer.
- The same rule applies when a chargeback is what pushed the period negative: the chargeback is not charged against any other account, it simply waits for later transactions.