Buggy code:
public class CryptoTransaction { private String transactionHash ; private String blockHash ; private BlockchainNetworkType blockchainNetworkType ; private CryptoAddress addressFrom ; private CryptoAddress addressTo ; private CryptoCurrency cryptoCurrency ; private long btcAmount ; private long fee ; private long cryptoAmount ; private CryptoStatus cryptoStatus ; private String op_Return ; private CryptoTransactionType cryptoTransactionType ; private int blockDepth ; public CryptoTransaction ( String transactionHash , BlockchainNetworkType blockchainNetworkType , CryptoAddress addressFrom , CryptoAddress addressTo , CryptoCurrency cryptoCurrency , long cryptoAmount , CryptoStatus cryptoStatus ) { } public CryptoTransaction ( ) { } public static CryptoTransaction getCryptoTransaction ( BlockchainNetworkType blockchainNetworkType , Transaction transaction ) { } private static CryptoAddress getAddressFrom ( Transaction transaction ) { } private static CryptoAddress getAddressTo ( Transaction transaction ) { } public static CryptoStatus getTransactionCryptoStatus ( Transaction transaction ) { } private static String getBlockHash ( Transaction transaction ) { } private static String getOpReturn ( Transaction transaction ) { } public static List < CryptoTransaction > getCryptoTransactions ( BlockchainNetworkType blockchainNetworkType , Wallet wallet , Transaction transaction ) { List < CryptoTransaction > cryptoTransactions = new ArrayList < > ( ) ; try { for ( TransactionOutput output : transaction . getWalletOutputs ( wallet ) ) { CryptoTransaction incomingCryptoTransaction = CryptoTransaction . getBaseCryptoTransaction ( transaction , blockchainNetworkType ) ; incomingCryptoTransaction . setCryptoTransactionType ( INCOMING ) ; incomingCryptoTransaction . setBtcAmount ( output . getValue ( ) . getValue ( ) ) ; <START_BUG> incomingCryptoTransaction . setCryptoAmount ( ( ( incomingCryptoTransaction . getBtcAmount ( ) ) + ( incomingCryptoTransaction . getFee ( ) ) ) ) ; <END_BUG> incomingCryptoTransaction . setAddressTo ( new CryptoAddress ( output . getAddressFromP2PKHScript ( transaction . getParams ( ) ) . toString ( ) , CryptoCurrency . BITCOIN ) ) ; incomingCryptoTransaction . setAddressFrom ( CryptoTransaction . getAddressFrom ( transaction ) ) ; cryptoTransactions . add ( incomingCryptoTransaction ) ; } for ( TransactionInput input : transaction . getInputs ( ) ) { TransactionOutput output = input . getConnectedOutput ( ) ; if ( output == null ) continue ; if ( output . isMine ( wallet ) ) { for ( TransactionOutput outputs : transaction . getOutputs ( ) ) { if ( ! ( outputs . getScriptPubKey ( ) . isSentToAddress ( ) ) ) continue ; CryptoTransaction outgoingCryptoTransaction = CryptoTransaction . getBaseCryptoTransaction ( transaction , blockchainNetworkType ) ; outgoingCryptoTransaction . setCryptoTransactionType ( OUTGOING ) ; outgoingCryptoTransaction . setBtcAmount ( output . getValue ( ) . getValue ( ) ) ; outgoingCryptoTransaction . setCryptoAmount ( ( ( outgoingCryptoTransaction . getBtcAmount ( ) ) + ( outgoingCryptoTransaction . getFee ( ) ) ) ) ; outgoingCryptoTransaction . setAddressFrom ( new CryptoAddress ( output . getAddressFromP2PKHScript ( transaction . getParams ( ) ) . toString ( ) , CryptoCurrency . BITCOIN ) ) ; outgoingCryptoTransaction . setAddressTo ( new CryptoAddress ( outputs . getAddressFromP2PKHScript ( transaction . getParams ( ) ) . toString ( ) , CryptoCurrency . BITCOIN ) ) ; cryptoTransactions . add ( outgoingCryptoTransaction ) ; } } } } catch ( Exception e ) { e . printStackTrace ( ) ; } return cryptoTransactions ; } private static CryptoTransaction getBaseCryptoTransaction ( Transaction transaction , BlockchainNetworkType blockchainNetworkType ) { } private static int getBlockDepth ( Transaction transaction ) { } private static long getCryptoTransactionFee ( Transaction transaction ) { } public String getTransactionHash ( ) { } public String getBlockHash ( ) { } public BlockchainNetworkType getBlockchainNetworkType ( ) { } public CryptoAddress getAddressFrom ( ) { } public CryptoAddress getAddressTo ( ) { } public CryptoCurrency getCryptoCurrency ( ) { } public long getCryptoAmount ( ) { } public CryptoStatus getCryptoStatus ( ) { } public String getOp_Return ( ) { } public void setOp_Return ( String op_Return ) { } public void setTransactionHash ( String transactionHash ) { } public void setBlockHash ( String blockHash ) { } public void setBlockchainNetworkType ( BlockchainNetworkType blockchainNetworkType ) { } public void setAddressFrom ( CryptoAddress addressFrom ) { } public void setAddressTo ( CryptoAddress addressTo ) { } public void setCryptoCurrency ( CryptoCurrency cryptoCurrency ) { } public void setCryptoAmount ( long cryptoAmount ) { } public void setCryptoStatus ( CryptoStatus cryptoStatus ) { } public CryptoTransactionType getCryptoTransactionType ( ) { } public void setCryptoTransactionType ( CryptoTransactionType cryptoTransactionType ) { } public int getBlockDepth ( ) { } public void setBlockDepth ( int blockDepth ) { } public long getFee ( ) { } public void setFee ( long fee ) { } public long getBtcAmount ( ) { } public void setBtcAmount ( long btcAmount ) { } }

Fix:
incomingCryptoTransaction . setCryptoAmount ( incomingCryptoTransaction . getBtcAmount ( ) ) ;