At period-end, extract all goods-receipt or service-receipt records from the ERP that have been received but not yet matched to a vendor invoice, filtering to the current period using the receipt_date and invoice_matched_flag fields.
For each open receipt, retrieve the purchase order line to obtain the ordered unit price and unit of measure; compute the accrual amount as received_quantity multiplied by PO unit price.
Aggregate accruals by GL account (determined from the PO line's expense account or inventory account mapping), cost center, and entity to produce a journal entry summary.
Post a period-end accrual journal entry: debit the expense or inventory account and credit the accounts payable accrual (goods-received-not-invoiced, GRNI) liability account, using the period-end date and a standardized memo that includes the receipt IDs for traceability.
At the start of the next period, automatically reverse the accrual entry so that when the actual vendor invoice is matched and posted, it replaces the accrual without double-counting.
Run a GRNI aging report after posting to identify receipts that have been accrued for more than a configurable number of days without a matching invoice, and route them to the AP team for follow-up.
Known gotchas
Partial receipts against a PO (received quantity less than ordered quantity) must accrue only the received quantity at PO price, not the full PO line value; ensure the extraction logic uses received_quantity, not ordered_quantity.
If the vendor invoice arrives with a price different from the PO (a price variance), the variance must be posted to a purchase price variance account rather than adjusting the original expense account; the accrual reversal must not silently absorb the variance.
ERP period-lock timing can cause an accrual to post in the wrong period if the reversal entry is dated the first of the following month but that month's period is not yet open; validate the target period status before posting both the accrual and its reversal.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp