diff --git a/parachain/Cargo.lock b/parachain/Cargo.lock
index cdd75da2ce..b4b5f05aae 100644
--- a/parachain/Cargo.lock
+++ b/parachain/Cargo.lock
@@ -6002,6 +6002,7 @@ dependencies = [
"pallet-evm-precompile-dispatch",
"pallet-evm-precompile-ed25519",
"pallet-evm-precompile-modexp",
+ "pallet-evm-precompile-omni-bridge",
"pallet-evm-precompile-parachain-staking",
"pallet-evm-precompile-score-staking",
"pallet-evm-precompile-sha3fips",
@@ -8211,6 +8212,30 @@ dependencies = [
"num",
]
+[[package]]
+name = "pallet-evm-precompile-omni-bridge"
+version = "0.1.0"
+dependencies = [
+ "core-primitives",
+ "derive_more 0.99.18",
+ "fp-evm",
+ "frame-support",
+ "frame-system",
+ "hex-literal",
+ "libsecp256k1",
+ "pallet-evm",
+ "pallet-omni-bridge",
+ "pallet-timestamp",
+ "parity-scale-codec",
+ "precompile-utils",
+ "scale-info",
+ "serde",
+ "sha3",
+ "sp-core",
+ "sp-runtime",
+ "sp-std",
+]
+
[[package]]
name = "pallet-evm-precompile-parachain-staking"
version = "0.1.0"
@@ -9502,6 +9527,7 @@ dependencies = [
"pallet-evm-precompile-guardian",
"pallet-evm-precompile-investing-pool",
"pallet-evm-precompile-modexp",
+ "pallet-evm-precompile-omni-bridge",
"pallet-evm-precompile-parachain-staking",
"pallet-evm-precompile-pool-proposal",
"pallet-evm-precompile-score-staking",
diff --git a/parachain/Cargo.toml b/parachain/Cargo.toml
index 1ff000ba2f..5630ed85fc 100644
--- a/parachain/Cargo.toml
+++ b/parachain/Cargo.toml
@@ -35,6 +35,7 @@ members = [
'precompiles/collab-ai/guardian',
'precompiles/collab-ai/pool-proposal',
'precompiles/collab-ai/investing-pool',
+ 'precompiles/omni-bridge',
'precompiles/parachain-staking',
'precompiles/score-staking',
'runtime/litentry',
@@ -293,6 +294,7 @@ pallet-teebag = { path = "pallets/teebag", default-features = false }
pallet-vc-management = { path = "pallets/vc-management", default-features = false }
pallet-evm-precompile-assets-erc20 = { path = "precompiles/assets-erc20", default-features = false }
pallet-evm-precompile-bridge-transfer = { path = "precompiles/bridge-transfer", default-features = false }
+pallet-evm-precompile-omni-bridge = { path = "precompiles/omni-bridge", default-features = false }
pallet-evm-precompile-parachain-staking = { path = "precompiles/parachain-staking", default-features = false }
pallet-evm-precompile-score-staking = { path = "precompiles/score-staking", default-features = false }
diff --git a/parachain/precompiles/bridge-transfer/src/lib.rs b/parachain/precompiles/bridge-transfer/src/lib.rs
index fad4fbe283..17396e5d55 100644
--- a/parachain/precompiles/bridge-transfer/src/lib.rs
+++ b/parachain/precompiles/bridge-transfer/src/lib.rs
@@ -1,3 +1,18 @@
+// Copyright 2020-2024 Trust Computing GmbH.
+// This file is part of Litentry.
+//
+// Litentry is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Litentry is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Litentry. If not, see .
#![cfg_attr(not(feature = "std"), no_std)]
use fp_evm::{PrecompileFailure, PrecompileHandle};
diff --git a/parachain/precompiles/omni-bridge/Cargo.toml b/parachain/precompiles/omni-bridge/Cargo.toml
new file mode 100644
index 0000000000..1ac9a11c4d
--- /dev/null
+++ b/parachain/precompiles/omni-bridge/Cargo.toml
@@ -0,0 +1,54 @@
+[package]
+authors = ["Trust Computing GmbH "]
+edition = '2021'
+name = "pallet-evm-precompile-omni-bridge"
+version = '0.1.0'
+
+[dependencies]
+precompile-utils = { workspace = true }
+
+frame-support = { workspace = true }
+frame-system = { workspace = true }
+pallet-omni-bridge = { workspace = true }
+parity-scale-codec = { workspace = true }
+scale-info = { workspace = true, features = ["derive"] }
+sp-core = { workspace = true }
+sp-runtime = { workspace = true }
+sp-std = { workspace = true }
+
+fp-evm = { workspace = true }
+pallet-evm = { workspace = true }
+
+core-primitives = { workspace = true }
+
+[dev-dependencies]
+derive_more = { workspace = true }
+hex-literal = { workspace = true }
+libsecp256k1 = { workspace = true, features = ["std"] }
+serde = { workspace = true }
+sha3 = { workspace = true }
+precompile-utils = { workspace = true, features = ["std", "testing"] }
+pallet-timestamp = { workspace = true, features = ["std"] }
+parity-scale-codec = { workspace = true, features = ["std"] }
+sp-runtime = { workspace = true, features = ["std"] }
+
+[features]
+default = ["std"]
+std = [
+ "core-primitives/std",
+ "fp-evm/std",
+ "frame-support/std",
+ "frame-system/std",
+ "libsecp256k1/std",
+ "pallet-omni-bridge/std",
+ "pallet-evm/std",
+ "pallet-timestamp/std",
+ "parity-scale-codec/std",
+ "precompile-utils/std",
+ "scale-info/std",
+ "serde/std",
+ "sha3/std",
+ "sp-core/std",
+ "sp-runtime/std",
+ "sp-std/std",
+]
diff --git a/parachain/precompiles/omni-bridge/OmniBridgeInterface.sol b/parachain/precompiles/omni-bridge/OmniBridgeInterface.sol
new file mode 100644
index 0000000000..18131ed0e3
--- /dev/null
+++ b/parachain/precompiles/omni-bridge/OmniBridgeInterface.sol
@@ -0,0 +1,14 @@
+// SPDX-License-Identifier: GPL-3.0-only
+pragma solidity >=0.8.3;
+
+interface IOmniBridge {
+ /// @notice Used to transfer assets through token bridge.
+ /// @param amount: The amount of tokens to be transferred.
+ /// @param dest_id: The destination chain id indicator
+ /// @param native: Indicator of if asset is native. If true, asset_id will be ignored
+ /// @param asset_id: Resource indicator of type of assets transferred (In substrate runtime it is u128)
+ /// @param recipient: Recipient address, typically H160/H256
+ /// @custom:selector 0xef185624
+ /// payIn(uint256,uint8,bool,uint256,bytes)
+ function payIn(uint256 amount, uint8 dest_id, bool native, uint256 asset_id, bytes calldata recipient) external;
+}
\ No newline at end of file
diff --git a/parachain/precompiles/omni-bridge/src/lib.rs b/parachain/precompiles/omni-bridge/src/lib.rs
new file mode 100644
index 0000000000..f35e0f3199
--- /dev/null
+++ b/parachain/precompiles/omni-bridge/src/lib.rs
@@ -0,0 +1,91 @@
+// Copyright 2020-2024 Trust Computing GmbH.
+// This file is part of Litentry.
+//
+// Litentry is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Litentry is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Litentry. If not, see .
+#![cfg_attr(not(feature = "std"), no_std)]
+
+use fp_evm::{PrecompileFailure, PrecompileHandle};
+
+use core_primitives::AssetId;
+use frame_support::{
+ dispatch::{GetDispatchInfo, PostDispatchInfo},
+ traits::fungible::NativeOrWithId,
+};
+use pallet_evm::AddressMapping;
+use precompile_utils::prelude::*;
+use sp_runtime::traits::Dispatchable;
+
+use sp_core::U256;
+use sp_std::{marker::PhantomData, vec::Vec};
+
+use pallet_omni_bridge::{ChainType, PayInRequest};
+
+pub struct OmniBridgePrecompile(PhantomData);
+
+type BridgeBalanceOf = ::Balance;
+
+#[precompile_utils::precompile]
+impl OmniBridgePrecompile
+where
+ Runtime: pallet_omni_bridge::Config> + pallet_evm::Config,
+ Runtime::RuntimeCall: Dispatchable + GetDispatchInfo,
+ Runtime::RuntimeCall: From>,
+ ::RuntimeOrigin: From