On this page
Fees
An Omniassets transfer has one source-chain payment:
total quote = LayerZero message fee + Omnisea flat protocol feeBoth parts are returned together by quoteSendOriginal or quoteSendOFT.
Pay the exact quote
On the current supported EVM deployments, the endpoint fee is paid in the source chain's native token. Pass the complete quote as msg.value:
const fee = await publicClient.readContract({
address: omnisea,
abi: omniseaAbi,
functionName: "quoteSendOriginal",
args,
});
await walletClient.writeContract({
account,
address: omnisea,
abi: omniseaAbi,
functionName: "sendOriginal",
args,
value: fee,
});The contract accepts neither a buffer nor a refund request. If msg.value differs from the live quote, the transaction reverts with InvalidFee.
Read fee configuration
These getters expose the current configuration:
function fixedProtocolFee() external view returns (uint256);
function fixedFeeTokenProtocolFee() external view returns (uint256);
function endpointNativeToken() external view returns (address);fixedProtocolFee() is denominated in the source chain's native token. endpointNativeToken() returns the zero address for a native-token endpoint. The fee-token getters exist for LayerZero endpoints that use an ERC-20 fee token; they are not needed for the current supported EVM mesh.
Use the quote function as the source of truth. Fee configuration and LayerZero prices can change, so hard-coded fee values will become stale.
What changes the LayerZero fee
The LayerZero part can vary with:
- source and destination;
- destination receive gas;
- first deployment versus an existing Omniasset;
- optional destination composition;
- current endpoint and executor pricing.
The token amount does not change the protocol fee. See LayerZero for execution options.
Approval gas is separate
An original ERC-20 usually requires an approval transaction before the transfer. Its gas is paid to the source chain by the user and is not included in the Omniassets quote. Omniasset transfers do not require an ERC-20 approval.