Ah yes, good point, this is somewhat clumsy. However, it works as expected.
The fee in this case is the fee reported by CoinPayments, not the blockchain fee.
I know this is not consistent with other uses of the fee column, but there’s not much I can do about it.
The IPN “fee” is actually “The fee deducted by CoinPayments (only sent when status >= 100)” (see here).
So, in case of CoinPayments deposits, the fee column holds the fee retained by CoinPayments, not the blockchain fee.
For Bitcoin, the platform retains a fee of 0.05%, and therefore the fee of 6000 satoshi is 30 satoshi. This is on the amount remaining after the blockchain fee is paid to the miners.
I guess you could hack something together that, when seeing a deposit, contacts a bitcoin wallet and finds out the network fee for this transaction and replaces this column. But this would be difficult, error-prone, and would only work for a few coins, it would require the ability to contact a different full node wallet or block explorer for each coin, and would require a lot of maintenance. Moreover, it would defeat the whole purpose of using CoinPayments, which is to not use a wallet. This is why the value reported by the IPN is used.
Consider this: Your deposit could theoretically be a transaction to multiple outputs (such as the transactions originating from another exchange). The blockchain fee belongs to the entire transaction, not just your deposit.
Hope this is clear. Let me know if you have any more questions.
P.S. I am moving this to the CoinPayments forum.