When sending a message via the endpoint send() you must pass a value so LayerZero is compensated for the extra gas required to deliver the transaction to the destination chain.
This msg.value refers to the parameter of the transaction that sends the native gas token.
The parameters for estimateFees and send() MUST be the same
Rule of Thumb: if you have an estimateFee value that works, try to send a transaction with (value - 1). it should revert.