Reproduce the failure on one named invoice and record the full problem text plus the record involved. Verify: the invoice is on exchange rate variance hold in Oracle Payables and the hold reason names the rate variance, so the failure is reproduced on demand.

Check the source rates before changing anything. Verify: compare the invoice currency and rate, the PO currency and rate, and the daily rate in the system for the invoice date against a similar foreign currency invoice that matched without a hold.

Check the variance tolerance for that currency and supplier. Verify: the tolerance amount or percent is noted, and the actual variance is calculated so you can tell whether this is a wrong rate or a tolerance that is too tight.

Apply the specific fix described in the TL;DR on that single invoice first, with the required approval for any rate or tolerance change. Verify: the single failing invoice now matches, the hold is released, or the corrected output is visible on the record.

Check neighbouring foreign currency invoices for the same supplier and currency that share the same PO rate source, because this class of failure rarely affects only one item. Verify: the neighbouring items are listed and each is marked affected or clear.

Rerun matching on the previously failing scope, watching for the same hold rather than assuming success from a quiet log. Verify: the task completes and the original hold does not appear on the corrected invoices.

Record the fix, the triggering rates and the verification result on the run log so the next occurrence is recognised immediately. Verify: the record names the problem, the fix applied and the rerun result, and it is saved with the run.