Input tax credit depends on your suppliers doing their part. If a supplier has not reported an invoice, the credit does not appear in your auto-populated statement, and claiming it anyway creates an exposure. Finding the gaps is a matching exercise across two datasets that rarely agree on formatting.
The matching itself is the hard part, and it is hard for unglamorous reasons. Invoice numbers get entered with different prefixes, spacing or leading zeros. Dates differ by a day. Amounts differ by rounding. An exact-match join finds a fraction of what a human would recognise as the same invoice.
A workable system therefore matches in tiers. Exact match on supplier tax number, invoice number and amount first. Then fuzzy matching on normalised invoice numbers within a tolerance on amount and date. Then a human queue for what remains. The goal is not full automation — it is reducing the human queue to something a person can clear in an afternoon.
Normalisation deserves its own attention. Stripping spaces, standardising case, removing common prefixes and comparing amounts within a small tolerance resolves a large share of apparent mismatches before any clever matching logic is needed.
The output that matters is not a reconciliation report. It is a list of suppliers to contact, ranked by the credit at stake, with the specific invoices named. A report that says the books do not agree is information; a list that says which three suppliers owe you a correction and how much it is worth gets acted on.
Build the follow-up into the workflow. Tracking which supplier was contacted, when, and whether the invoice subsequently appeared turns a monthly scramble into a process, and gives procurement something concrete when a supplier does this repeatedly.