    struct CreatedCrossChainTx {
        uint256 txid;
        string from_chain;
        string to_chain;
        address from;
        uint256 to;
        address from_token;
        uint256 to_token;
        uint256 amount;
        CrossChainTxStatus status;
    }
create_cross_txs[txid] = CreatedCrossChainTx(
                txid,
                chain,
                to_chain,
                msg.sender,
                to,
@>              address(this), // @audit - this should be the global variable `token`
                to_token,
                amount,
                CrossChainTxStatus.Pending
            );
event CrossChainLocked(
        uint256 indexed txid,
        address indexed from,
        uint256 indexed to,
        string from_chain,
        string to_chain,
        address from_token,
        uint256 to_token,
        uint256 amount,
        SettlementMode mode
    );
emit CrossChainLocked(
            txid,
            msg.sender,
            to,
            chain,
            to_chain,
@>          address(this), // @audit - this should be the global variable `token`
            to_token,
            amount,
            mode
        );
fn cross_chain_erc20_settlement(ref self: ContractState, to_chain: felt252, to_handler: u256, to_token: u256, to: u256, amount: u256) -> felt252{
__SNIP__
            let tx: CreatedCrossChainTx = CreatedCrossChainTx{
                    tx_id: tx_id,
                    from_chain: from_chain,
                    to_chain: to_chain,
                    from: get_contract_address(),
                    to: to,
@>                  from_token: self.token_address.read(), // proper token address passed
                    to_token: to_token,
                    amount: amount,
                    tx_status: CrossChainTxStatus::PENDING
                };
__SNIPP

            self.emit(
                    CrossChainLocked{
                        tx_id: tx_id,
                        from: get_caller_address(),
                        to: to,
                        from_chain: get_tx_info().unbox().chain_id,
                        to_chain: to_chain,
                        from_token: self.token_address.read(), // proper token address passed
                        to_token: to_token,
                        amount: amount
                    }
                );
            return tx_id;
        }
diff --git a/solidity/handler/contracts/ChakraSettlementHandler.sol b/solidity/handler/contracts/ChakraSettlementHandler.sol
index 5d31ef9..b9cbd6d 100644
--- a/solidity/handler/contracts/ChakraSettlementHandler.sol
+++ b/solidity/handler/contracts/ChakraSettlementHandler.sol
@@ -157,7 +157,7 @@ contract ChakraSettlementHandler is BaseSettlementHandler, ISettlementHandler {
                 to_chain,
                 msg.sender,
                 to,
-                address(this),
+                token,
                 to_token,
                 amount,
                 CrossChainTxStatus.Pending
@@ -215,7 +215,7 @@ contract ChakraSettlementHandler is BaseSettlementHandler, ISettlementHandler {
             to,
             chain,
             to_chain,
-            address(this),
+            token,
             to_token,
             amount,
             mode
