Aztec Contract isn't recognizing private token balance

Does anyone tried to send Tokens using transfer_in_private from an account to a contract ?

Calling check_private_Balance is showing that tokens from account decreased ,but my contract still has 0 balance.

This is my contract function i am using:

 #[private]
    fn create_trade(trade_hash: Field, seller: AztecAddress, asset_address: AztecAddress, amount: u128, nonce: Field) {
        let config = storage.config.read();
        assert(context.msg_sender() == config.trade_oracle);

        Token::at(asset_address)
            .transfer_in_private(seller, context.this_address(), amount, nonce)
            .call(&mut context);

        let new_status = StatusNote::new(STATUS_ESCROW, config.payment_oracle);
        let trade_slot = storage.trades.at(trade_hash);

        trade_slot
            .initialize(new_status)
            .emit(encode_and_encrypt_note(&mut context, config.payment_oracle, context.msg_sender()));

        let event = TradeCreated {
            trade_hash,
            seller,
            asset_address,
            amount,
        };

        event.emit(encode_and_encrypt_event(&mut context, context.msg_sender(), context.msg_sender()));
        event.emit(encode_and_encrypt_event(&mut context, config.regulator, context.msg_sender()));
    }