I have enabled the always-confirm-transfers feature for my wallet, just to see the proposed transaction fee before I confirm the transaction. I have noticed that it sometimes fluctuates quite heavily from one minute to another. Real example:

[wallet 4*****]: transfer 2 <address> 100
The transaction fee is 0.040000000000, of which 0.010000000000 is dust from change.
Is this okay?  (Y/Yes/N/No)n
Error: transaction cancelled.
[wallet 4*****]: transfer 3 <address> 100
The transaction fee is 0.020000000000.
Is this okay?  (Y/Yes/N/No)y

Here, I changed the <mixin_count> from 2 to 3, and I was proposed a lower transaction fee. Sometimes I see a proposed transaction fee of 0.075 XMR, and then a bit later, I can do the transaction for 0.02 XMR or so. What influences this proposed fee? I suspect it has to do something with the memory pool …

FYI: This occurs with version, but noticed the same with before.

Update: Additional example, with just 5 minutes in between:

[wallet 4*****]: transfer 3 <address> 100
The transaction fee is 0.045000000000, of which 0.015000000000 is dust from change.
Is this okay?  (Y/Yes/N/No)n
Error: transaction cancelled.
[wallet 4*****]: transfer 3 <address> 100
The transaction fee is 0.010000000000.
Is this okay?  (Y/Yes/N/No)y
Money successfully sent, transaction <transaction-id>
[wallet 4*****]: 

3 Answers 3


Output selection is random. That is, simplewallet will pick one random output in your available outputs list, then again, and again, until the total is enough to satisfy the amount to send plus the fee.

This means that, depending on what outputs are selected first, you may need either a large set of outputs (if you pick small values ones first), or a small one. The fee is proportional to the size of the transaction, so the more inputs, the higher the fee.

When RingCT is enabled, the code will try to find one or two inputs of the right size to satisfy the amount and fee, leading to a decrease in the use of larger transactions.


It all depend how much outputs are needed to build-up you transactions.

A higher mixin transactions can result in a smaller size transactions because it so happened that it needed less outputs to build it.

Even if the amount are very close simplewallet might have needed a complete different set of outputs. Sometimes resulting in widely different transactions size to the point (I guess) it has negated the benefit of a smaller mixin.

  • Not sure I understand this correctly. The different fee proposals even happen with the same <mixin_count>. So, the only thing that I would think can influence it is the memory pool? Or also transactions in past blocks (to mix with)?
    – dpzz
    Commented Sep 21, 2016 at 22:09

The mixin value changes the transaction fee, higher mixin value means higher fee, mixin = n means you use n other peoples outputs to mix with your transaction outputs, this means the transaction will be bigger and the cost for this larger transaction in the blockchain are the fees (0.002 XMR per kB). Other factor that contribute in the fee value is obviously the amount to be sent.

  • 3
    In @dpzz's example, a higher mixin leads to a lower fee and that's why he is surprised.
    – Clement J.
    Commented Sep 21, 2016 at 9:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.