Most invoice procedures fail in the same two ways: they describe the clean path in detail and the exceptions not at all, and they describe actions without naming who performs them. Both failures make the document useless exactly when somebody reaches for it, which is when something unusual has happened and the usual person is not available.
Name the role for every step
Not the invoice is matched, but the payables clerk matches the invoice against the order and the goods receipt. Passive descriptions hide the steps where the answer is whoever notices, and the goods receipt is nearly always one of those. Naming roles is what turns a description into something enforceable and trainable.
Cover the exceptions in the same detail
No purchase order, price mismatch, quantity mismatch, unrecognised supplier, dispute, duplicate. Each needs a route and an owner. These branches are the majority of the effort and almost always the minority of the document, which is exactly backwards. A new joiner needs the branches more than the spine.
Keep it short enough to be maintained
Two or three pages. A procedure nobody updates diverges from practice and then people stop trusting all of it, including the parts that are still right. Review it when something changes and once a year regardless, and have the people doing the work review it rather than only the person who owns the control.
Questions people ask about invoice procedure
Who should own the invoice procedure?
Whoever owns the payables control, written with the people doing the work. A procedure written only by management describes what should happen.
How detailed should it be?
Detailed enough that a new joiner could follow it. That is a more useful test than any page count.
Should it include the software steps?
Reference them rather than reproducing screens, which date quickly. The procedure should survive a change of tooling.