# Received Not Invoiced (GRNI): How to Accrue and Clear It at Month End Without Guesswork

> A GRNI balance that only grows hides missing invoices, wrong receipts and stale POs. See how to accrue received-not-invoiced goods and clear it every month.

- Source: https://parserai.co/blog/grni-accrual-received-not-invoiced-month-end-accounts-payable
- Published: 2026-10-16

---
The goods are on the shelf, the receipt is posted, and the supplier's invoice is still in the mail. At month end that receipt is a liability you owe, with no bill to prove it. Goods received not invoiced, or GRNI, is where it waits. This post covers how the accrual works, why the balance drifts, and how to clear it with evidence instead of carrying it forward.

Key takeaways

- Goods received not invoiced (GRNI) is the liability for goods or services you have received but not yet been billed for; it belongs on the balance sheet at month end even without an invoice.
- A healthy GRNI account turns over every month: lines older than 60 to 90 days are almost never real unbilled liabilities, but receipts posted wrong, invoices matched to the wrong PO, or orders that should have been closed.
- Clearing GRNI depends on matching each vendor invoice to the exact receipt lines it bills, by PO number, line, quantity and unit price, which needs those fields read off every invoice.
- Invoices that arrive in the first days of the next month are the best evidence for the month-end accrual: they confirm which receipts were really unbilled and at what price.

## What GRNI is and why it exists

Accrual accounting says an expense belongs to the period in which you received the goods or services, not the one in which the bill arrived. Purchasing systems handle this with a clearing account. When a warehouse posts a goods receipt against a purchase order, the system debits inventory or expense and credits GRNI at the PO price. When the invoice arrives and is matched to that receipt, GRNI is debited and the vendor payable is credited. For each receipt, the two entries should cancel out.

So at any moment the GRNI balance is meant to be the value of receipts that are still waiting for their invoice. At month end it sits on the balance sheet as an accrued liability, and auditors read it that way. That is only true if every line in it is a real receipt that is really unbilled at roughly the right price. In many ledgers, a good share of the balance is none of those things.

2

entries per receipt: receipt credits GRNI, matched invoice debits it

4

aging buckets to review, charted below

5

reasons a line stays open, listed in this post

## Why the balance only grows

GRNI clears line by line. Any difference between the receipt and the invoice that matches it leaves a remainder, and remainders do not age out on their own. These are the usual sources.

### Invoices matched to the wrong PO or line

When an invoice is matched to a different order, or posted without a PO at all, the right receipt stays open and a second liability is created elsewhere. The expense is counted twice until someone notices.

### Price and quantity differences

A receipt accrued at the PO price of 3.10 and invoiced at 3.15 clears all but the variance; an invoice for 120 units against a receipt of 150 leaves 30 open. Each is right on its own terms, and the small remainders pile up. These are the same differences that surface as [three-way match exceptions](https://parserai.co/blog/three-way-match-exceptions-po-receipt-invoice-accounts-payable).

### Receipts that should not be there

Receipts posted twice, returns never recorded, and services receipted in full at order time when only part was delivered all create GRNI that no invoice will ever clear.

### Orders nobody closed

A supplier ships short and cancels the rest, or bills the remainder on a credit-adjusted invoice. The open PO and its receipt line stay in the system, still waiting.

### Invoices that never reached AP

Some lines are real: the invoice was sent to a buyer, a branch or an old address. Those are the ones that matter most, because they are also missing from the vendor's view of your account and will show up as overdue on the next [vendor statement](https://parserai.co/blog/vendor-statement-reconciliation-supplier-ledger-accounts-payable).

_Illustrative GRNI balance by age of the receipt line, as a share of the total. Numbers are examples, not measured results._

In a healthy account most of the balance is younger than a month, because invoices follow receipts within a few weeks. The bucket worth attention is the tail. A line older than 90 days is rarely a supplier who has forgotten to bill; it is almost always one of the errors above.

## Building the month-end accrual from evidence

The system report of open receipts is the starting point, not the answer. Three sources of evidence turn it into a number you can defend.

- **Invoices received after the cut-off.** Anything dated on or before month end that arrives in the first days of the next month confirms which receipts were really unbilled, and at what price. Matching these early is the single most useful step.
- **Vendor statements.** A statement listing an invoice your ledger does not have points to a receipt that should be accrued, or to an invoice lost on the way in.
- **Receiving documents.** Delivery notes and packing slips show what physically arrived when a receipt quantity is in doubt.

Value open lines at the invoice price where an invoice exists, and at the PO price where it does not. Book freight and charges that are not on the PO as a separate accrual, so they do not hide inside the variance. Lines that the evidence shows to be wrong are corrected at the source, by reversing the receipt or closing the order line, not by a manual journal on the GRNI account.

## Matching invoices to receipt lines

Clearing GRNI is a matching problem at line level, so the invoice has to be read at line level. The fields that matter are the PO number, the PO line or item code, quantity, unit price and amount for each line, plus invoice date, freight and the total. Defined once in your [extraction schema](https://parserai.co/blog/extraction-schema-design-field-types-versioning), they let each invoice be compared directly to the open receipts on its PO.

grni-match.json — example invoice matched to open receipts

```
{
  "invoice": {
    "vendor_name": "Example Industrial Supply",
    "invoice_number": "INV-77410",
    "invoice_date": "2026-09-29",
    "received_date": "2026-10-03",
    "po_number": "PO-41207",
    "currency": "USD",
    "lines": [
      { "po_line": 1, "sku": "BRG-6204", "description": "Ball bearing 6204",
        "quantity": 400, "unit_price": 3.15, "amount": 1260.00 },
      { "po_line": 3, "sku": "BLT-A42", "description": "V-belt A42",
        "quantity": 120, "unit_price": 7.80, "amount": 936.00 }
    ],
    "freight": 85.00,
    "total": 2281.00
  },
  "receipts_open_at_2026_09_30": [
    { "receipt": "GR-9031", "po_line": 1, "quantity": 400, "po_unit_price": 3.10, "accrued": 1240.00 },
    { "receipt": "GR-9044", "po_line": 3, "quantity": 150, "po_unit_price": 7.80, "accrued": 1170.00 }
  ],
  "result": {
    "line_1": "matched, price variance 20.00",
    "line_3": "matched 120 of 150, 30 units remain open",
    "freight": "not on PO, accrue or code separately",
    "september_accrual_supported": 2196.00,
    "left_in_grni": 234.00
  }
}
```

In this example an invoice dated September 29 arrives on October 3, after the September close has started. Line 1 clears receipt GR-9031 with a 20.00 price variance, which goes to purchase price variance or back to the buyer. Line 3 bills 120 of the 150 units received, so 30 stay in GRNI until the next invoice or a correction. The 85.00 of freight was never on the PO and is booked on its own. The invoice supports 2,196.00 of the September accrual and shows exactly what is left and why.

Work the tail before the total

Reviewing GRNI by total balance invites a plug. Reviewing it by line age, oldest first, finds the duplicate receipts, the wrong PO matches and the orders to close, and the total corrects itself.

## A monthly GRNI routine

- Extract every invoice on arrival with PO number, PO line, quantity, unit price and amount per line.
- Hold the close for invoices dated before month end that arrive in the first days after it.
- Match invoice lines to receipt lines, not invoice totals to PO totals.
- Value open lines at invoice price when an invoice exists, PO price otherwise.
- Accrue freight and charges not on the PO separately from GRNI.
- Age open receipt lines and review everything over 60 days, oldest first.
- Fix wrong lines at the source: reverse the receipt, close the PO line, rematch the invoice.
- Compare vendor statements to open receipts to find invoices that never reached AP.

The routine also feeds other checks. Line-level fields are what make [duplicate invoice detection](https://parserai.co/blog/duplicate-invoice-detection-near-match-vendor-invoices-accounts-payable) reliable, and an open credit applied against a receipt, as in [credit memo matching](https://parserai.co/blog/vendor-credit-memo-matching-open-invoices-accounts-payable), often explains a remainder that otherwise looks like a missing invoice.

## Where extraction fits

Most GRNI work is reading: which PO, which line, how many, at what price. When that reading is done by hand in the last days of the close, it is done on totals, and the line-level remainders roll forward. Parser extracts each [invoice](https://parserai.co/solutions) into structured JSON against the fields you define, including the PO number and every line's quantity, unit price and amount, through upload, e-mail or the [API](https://parserai.co/api-docs). Your ERP or matching tool can then clear receipts line by line as invoices arrive, so the month-end accrual is a review of what is genuinely open rather than a reconstruction.

Accounts Payable

## Bring a real invoice.

An invoice parser for accounts payable: invoices and bills arrive by upload, e-mail or API, and the fields you define are extracted and checked against your validation rules before they reach your system.

[Book a demo](https://parserai.co/demo?icp=ap)
## FAQ

### What is GRNI in accounting?

GRNI stands for goods received not invoiced. It is an accrued liability, often a clearing account, that records the value of goods or services received against a purchase order before the supplier invoice arrives. When the invoice is matched to the receipt, the GRNI entry is reversed and replaced by a payable to the vendor.

### How do you calculate the GRNI accrual at month end?

Take every receipt line posted on or before the last day of the month that has no matched invoice, and value it at the purchase order unit price times the received quantity. Then adjust with evidence: invoices dated before month end that arrived after it, price differences they reveal, and receipts that turn out to be wrong or duplicated.

### Why does a GRNI balance keep growing?

Usually because receipts are posted and never cleared. Common causes are invoices matched to a different PO or line, quantity or price differences that leave a small remainder, receipts entered twice, returns not recorded, and services receipted in full when only part was delivered. Each leaves an open line that rolls forward month after month.

### Is GRNI the same as accrued expenses?

It is a kind of accrued liability, but a narrower one. GRNI covers receipts against purchase orders, so it can be built line by line from the receiving records. Other accrued expenses, such as utilities or professional fees without a PO, are estimated separately and usually reversed the following month.

