Handling of fees in internal transactions

Hi All,

Continuing this closed thread: Fees are not subtracted from total withdrawal to match deposist

From the posts I found it seems like you’re working hard on improving the internal transactions.

My two cents: The current handling of fees could be supplemented with a receiver pays / sender pays option to make everyone happy.
Receiver pays: Transferring 100 from wallet X to Y with 0.1 fees should match -100.0 in wallet X and +99.9 in wallet Y.
Sender pays: Transferring 100 from wallet X to Y with 0.1 fees should match -100.1 in wallet X and +100.0 in wallet Y.


Thank you for your feedback, I will forward it to our team. Thanks for helping Accointing to be a better platform!

We do not subtract fees, we add them. The only way we could subtract fees is if they are in the same currency as the asset being transferred. It does not make sense to change this so no matter what all fees get added to the amount transferred.

So if you were transferring 100 USDT on the Binance network, then the transaction would look like this…. 100 USDT + .001 BNB (fee) —> 100 USDT

If it was in the same currency it would look like this…. 1 BNB + .001 BNB (Fee) —> 1 BNB

It does not make sense to subtract the fee.

Let me disagree here and provide some more background on why I think this is a good feature to have for your second case, i.e. fees in same currency.

I encountered this issue when trying to match internal transactions , which I have had nothing but issues with in the - admittedly short - time I have used accointing.

Example: Transferring 7 SOL from Coinbase Pro to Solflare wallet means debiting -7 on Coinbase Pro and crediting 6.999995 on Solflare.
This transaction is then - at least in my experience - not matched by accointing at all and leads to incorrect balances because the fees are considered in the wrong wallet, i.e. in Coinbase instead of Solflare. The only workaround I found is to only enter amounts ex fees and add fees manually as separate transactions. Very clunky.
Perhaps I am doing it wrong but I spent quite a lot of time on trying to make this work any other way with no luck.

The transactions should work currently as they are.

In this example, you would actually be transferring 99.9 not 100 so the transaction should look like… 99.9 + .1(fee) → 99.9.
it would also work like this… 100 → 99.9 without specifying the fee.

this would be the same as well… 100 → 100 + .1(fee) OR 100 → 100.1 (without fee)

if you specify a fee, it’ll subtract that fee from your total balance and classify that as a transaction fee for tax purposes. If you don’t specify the fee, it’ll count as a loss when you receive it in your other wallet.

in this example, this transaction should be able to be classified as internal without specifying the transaction fee. It should connect even if you classify the fee also, but it might say something about missing funds if you do.

I have noticed an error that some fees may create a Missing Funds Alert error message and I am having the team look into that issue now, is that the issue you are experiencing, @secondaryrealms ?

Thanks for checking Matt, and yes that is the error that I am seeing.

1 Like

Thanks, Alan. Appreciate the thorough explanation. Might be me, but not 100% sure this works in practice.

I did a quick check w/ two manual wallets I created for test purposes.

  • Created -7 (withdraw) and +6.999995 (deposit) transactions in wallet 1 and 2 respectively
  • The transactions were indeed found by the “Identify internals” function and one new “Internal” transaction was created. But this is not the case for the real transaction between my Coinbase Pro exchange (connected via API) and Solflare (manual wallet). Could that have something to do with the API connection on one side?
  • Adding the 0.000005 fee to the newly created “Internal” transaction changes the receiver amount to +7, which leads to the wrong balance in wallet 2.

So, I am still not sure how internal transactions w/ fees can be correctly entered, except the clunky way with separate “fee” transactions.

You also have the option to edit the internal transaction, remove the fee, then create a new transaction for the wallet affected, and then classify that manual transaction as a fee.

This might be related to you not being able to add fees onto deposits. Fees are always paid on the withdraw side. so in your example if you change the withdraw to 6.999995 with a .000005 fee, it should work just fine and provide the same result.

if you transfer 7 and receive less than that, the new wallet never received the difference so you cant classify it on that side or it will always give you a missing funds error.

1 Like