There are two ways a tax discrepancy on a Canadian invoice can get resolved. It can be caught at intake, before the bill is coded and posted, where fixing it means adjusting the invoice once and moving on. Or it can be caught at close, after the bill has already flowed into the general ledger, where fixing it means a journal entry, a note to explain the adjustment, and a conversation about why the number was wrong in the first place.
Both paths arrive at the same correct number eventually. They are not equivalent in cost. The intake correction takes minutes and happens once. The close correction takes longer, involves more people, and tends to repeat every month because the underlying process that let the discrepancy through in the first place has not changed.
Building a workflow where tax variance is caught before the ERP is less about better tax rules and more about where in the process the comparison actually happens.
What Gets Compared, and When
The core mechanic is a comparison between what was extracted from the invoice and what the expected line level tax treatment should be, given the vendor, the province, and the nature of each line item.
At intake
When an invoice arrives, Finofo extracts the tax detail line by line and compares it against the expected treatment based on entity, province, and line type. Any variance, whether a rate mismatch, a rounding difference, or a treatment that does not match expectation, surfaces immediately, with the invoice still open and the full context available.
At close, without this step
Without intake level comparison, the same variance surfaces during the reconciliation between the AP subledger and the GL, typically as part of month end close. By this point the invoice has already been coded and posted. Someone has to trace the discrepancy back to its source, determine the correct treatment, and book an adjusting entry, all under the time pressure that close inherently carries.
Why This Changes What Close Actually Looks Like
Controllers who have managed a recurring tax reconciliation task at close tend to describe it as low severity but persistent, never a crisis, always present. Removing that task from close because the underlying variances were already caught and resolved at intake changes the shape of the close checklist itself. It is one less recurring item competing for attention during the busiest week of the accounting calendar.
This also changes the quality of the AP data available to controllers before close even starts. Bills that have already been through variance detection carry coding, tax treatment, and approval context together, rather than requiring reconstruction after the fact if a question comes up.
What This Looks Like End to End
An invoice arrives and is ingested with line level extraction. Tax detail is compared against expected treatment for that vendor, province, and line type. Where everything matches, the bill proceeds through approval and posts to the ERP cleanly. Where a variance exists, whether a mismatch in rate, a rounding difference, or an unexpected treatment, it is flagged for review before the invoice moves further, with the specific line and the expected versus extracted values shown together.
The result reaching the ERP has already been through this check. What lands in NetSuite, Intacct, or whatever system the finance team runs is coded bill data that reflects a resolved, correct tax treatment, not a number that still needs to be verified during close.
Start Here
If tax variance on AP invoices is something your team currently finds during reconciliation rather than during processing, the fix is not a better reconciliation process. It is moving the check earlier.
Finofo compares extracted tax against expected line level treatment before the bill posts, so variance gets caught once, at intake, instead of every close.





