It depends on the volatility of the currency pair. With a stable currency pair, I've seen it is set on monthly basis. But for a currency that is highly volatile, I've seen it is set daily.
In the past, I had to develop a custom field in the PO/Invoice object for the user to enter exchange rate manually. It is specified as agreed by the two parties in the contract (e.g. exchange rate will be based on a rate listed by certain bank on the date of invoice etc.)
------------------------------
Viet Tran
Relia App Development & Consulting
https://relia.app------------------------------