Skip to Content

Beyond the Balance: GRNI Reconciliation and Gross Profit Reporting in MatchPoint

How we extended MatchPoint with Stock Billing Links to give finance teams receipt-to-bill matching alongside their balance sheet sign-off
21 May 2026 by
Beyond the Balance: GRNI Reconciliation and Gross Profit Reporting in MatchPoint
Davin Fowler

How we extended MatchPoint with Stock Billing Links to give finance teams a complete picture — not just the account balance, but the receipt-to-bill matching behind it

The previous article in this series introduced MatchPoint as a tool for balance sheet sign-off: a structured workflow that replaces emailed spreadsheets with a proper prepare-and-approve process, full audit trail, and real-time visibility for the controller.

For most balance sheet accounts, that workflow is the whole story. The GL balance comes in from your ERP, the preparer documents the reconciling items, the approver signs off. Done.

GRNI is not most accounts.

The problem the balance sheet workflow cannot solve

The GRNI account — Goods Received Not Invoiced — carries a balance that represents stock you have received from suppliers but not yet been invoiced for. In a well-run business, this balance clears each period as invoices arrive. In practice, it accumulates complexity: partial receipts, partial bills, price variances, FX revaluations, old lines that were never properly resolved.

The earlier articles in our GRNI series covered how to break this balance down — first by Purchase Order, then by item. Those saved searches are useful. They tell you the GRNI balance is, say, £42,000 and that it sits across seventeen open Purchase Orders.

What they cannot tell you is this: for a specific PO line that has been received in three separate shipments and billed in two separate invoices, which receipt does the outstanding balance actually relate to? The saved search can sum everything correctly, but it cannot draw the line between a specific receipt and a specific bill.

That matters. Without that link, you cannot:

  • Tell an auditor exactly which receipt a bill covers
  • Identify whether an outstanding GRNI item is genuinely unpaid or a data problem
  • Calculate your true gross profit using the actual cost of the goods that were sold

This is the problem that Stock Billing Links was built to solve — and that we subsequently incorporated into MatchPoint.

What Stock Billing Links does

Stock Billing Links (SBL) is a system built in SuiteScript that runs inside NetSuite. As transactions are processed — item receipts, vendor bills, sales order fulfilments, invoices — SBL creates allocation records for each transaction line, then runs a FIFO matching engine to link stock allocations to billing allocations.

The result is a set of explicit link records. Each link connects:

  • A specific stock allocation (a receipt line, or a fulfilment line for sales)
  • A specific billing allocation (a vendor bill line, or an invoice line)
  • The quantity matched between them
  • The stock value and billing value
  • The variance between the two

These links are permanent, auditable records. They are not calculated at query time — they are written when the matching runs and updated as new transactions arrive.

For the GRNI account specifically, the unmatched stock allocations — receipt lines that have not yet been fully linked to a bill — represent exactly what is in the GRNI balance. Not an approximation. The actual lines.

How this integrates into MatchPoint

NetSuite pushes the SBL data to MatchPoint via API. This includes the order line summaries and the allocations. MatchPoint stores this in its own database and runs the same FIFO linking logic, keeping the two systems in sync.

Within MatchPoint, this creates two additional workspaces alongside the standard balance sheet reconciliation workflow.

The GRNI Workspace. When a preparer opens the GRNI reconciliation in MatchPoint, they see more than just the GL balance. Beneath the balance, the GRNI Workspace shows every open line — broken down by transaction, with the quantities ordered, fulfilled, and billed, the values on each side, the variance, and the current matching status. They can drill into any line to see the individual allocations and the links that have been established.

For lines where the matching needs to be refreshed — because a new bill has arrived since the last sync — there is a relink action that re-runs the FIFO engine for that line without requiring any intervention in NetSuite.

The result is that the preparer reconciling the GRNI account can see, in the same application, both the GL balance they are certifying and the underlying receipt-to-bill matching that explains it. The auditor, with read-only access, can do the same.

The Gross Profit Report. The same matching that resolves GRNI also powers gross profit reporting on the sales side. When goods are invoiced, the SBL links connect the invoice line back to the specific item receipt that supplied the goods. That means you know the actual cost — not the average cost, not the standard cost, but the cost of those specific units from that specific receipt.

MatchPoint surfaces this as a Gross Profit Report: revenue by sales order line, actual FIFO cost from the linked receipts, variance between the two, and GP percentage. The report covers standard sales orders and return authorisations, including the cost side of customer returns.

What the comparison view catches

There is a third component worth mentioning: a comparison view that shows where the MatchPoint SBL data differs from what NetSuite holds.

This matters because SBL runs inside NetSuite but MatchPoint holds its own copy of the data. If a receipt is reversed in NetSuite after the sync, or a bill is amended, the comparison view surfaces the discrepancy. Finance teams can see at a glance where the two systems have drifted and trigger a resync for the affected records.

In practice, this view functions as an integrity check on the reconciliation itself. If MatchPoint says the GRNI balance is £42,000 and NetSuite says it is £42,000 but the comparison view shows three lines that differ, you know the balance is correct in total but the composition may not be. That is the kind of signal that gets missed when you are working from a saved search alone.

The complete picture

The GRNI reconciliation article series started with a simple observation: the account balance tells you there is a problem, not where it is. Each article added a layer:

  • Part 1: Break the balance down by Purchase Order
  • Part 2: Break it down further by item, using the stock account as a proxy
  • Part 3 (coming soon): Scale the reporting using Map/Reduce and a Suitelet when saved searches hit their limits
  • This article: Move from reporting to reconciliation — replace the proxy approach with explicit, auditable receipt-to-bill links, and surface those links within the sign-off workflow

MatchPoint with Stock Billing Links is the endpoint of that journey. The GRNI account balance lands in the reconciliation workflow. The preparer can see not just what the balance is but why, line by line. The approver can review and sign off with confidence. The auditor can follow every link from the account balance back to the source transactions.

And alongside that, the same data that resolves GRNI also tells you what your margins actually are — not what the average cost calculation suggests, but what you actually paid for the specific stock you sold.


Fowlers Consulting Services Ltd are an AI-first NetSuite consultancy based in the UK. MatchPoint and Stock Billing Links are available as part of our client engagements. If you are dealing with a GRNI balance that won’t reconcile, or you want to move from estimated margins to actual FIFO costs — get in touch.

Explore MatchPoint at clarative.co.uk

This article is part of a series on GRNI reconciliation in NetSuite. Start from the beginning: Part 1 — Why the Account Balance Isn’t Enough