Dynamics 365 Finance & Supply Chain Management · agent · the other end of procure-to-pay

The accrual nobody can explain. Listed, explained, fixed with a yes.

The Aged GRNI Investigation Agent is an AI agent for Dynamics 365 Finance & Supply Chain Management that explains the old goods-received-not-invoiced balance instead of leaving it to a spreadsheet at close. It lists the uninvoiced receipts by age and value, works out why each one is stuck, a duplicate receipt, a normal partial delivery, a vendor that has not invoiced, shows the evidence behind that reading, proposes the fix, and cancels a duplicate receipt only after a person approves it, then reads the result back. It runs on test data in a demonstration environment today. With the PO Receipt Chase Agent it covers both ends of procure-to-pay: receipts that were never posted, and receipts that were posted and never invoiced.

Aged GRNI, classified

Illustration · test data
ReasonLinesOldest, days
Duplicate receipt374
Partial delivery941
Vendor not invoiced1263

Proposed fix

Duplicate receipt on one delivery note · the second receipt shown in full · cancel

Waiting for your yes before anything posts.

The problem

The accrual everyone explains by hand

Goods arrive, the receipt is posted, and the vendor invoice never matches. The line sits in goods received not invoiced, GRNI, as an accrued liability. That is correct accounting. It is also a balance that ages, and every month-end someone has to say, line by line, why it is still there.

The reasons differ, and the fix differs with them. A duplicate receipt should be cancelled. A partial delivery is normal and should be left alone. A vendor that has not invoiced needs a nudge, and sometimes the invoice is sitting unmatched for a reason nobody has looked at. Telling those apart means opening the order, the receipts, the invoices and the vendor record for each line, which is why the controller's GRNI review is the slowest hour of close.

Dynamics 365 holds every fact needed to explain each line. It does not do the explaining.

The duplicate

Two receipts posted for one delivery. The invoice matched one; the other will never be invoiced. Safe to cancel, once someone is sure.

The partial

The vendor shipped half and will ship the rest. The receipt is right, the invoice is coming. Nothing to fix, only to recognise.

The silent vendor

Goods received, no invoice for sixty days. The accrual is real and the vendor needs chasing, which is a different job from the first two.

The mechanism

How it works, in four steps

The agent reads Dynamics 365 live, through Microsoft's own surface, under the roles it is given. People talk to it in plain language: “Show me GRNI older than sixty days.”

  1. 01

    List

    It pulls the uninvoiced receipts and groups them by age band and value, so the largest and oldest exposure is at the top rather than wherever the report sorted it.

  2. 02

    Explain

    For each line it reads the order, the receipts against it, any invoice in the queue and the vendor record, and classifies why the line is stuck: duplicate receipt, partial delivery, vendor not yet invoiced.

  3. 03

    Show

    It shows the evidence behind the classification, the two receipts with the same delivery note, the open remainder on the line, the days since receipt with no invoice, so the person can disagree.

  4. 04

    Fix

    It proposes the fix. For a duplicate it shows the exact receipt it will cancel and waits for a yes; only then does it cancel it in Dynamics 365 and read the result back. For the other two it drafts the next step for a person to take.

Nothing posts, cancels or reverses without a named person’s yes. The output is a GRNI list where every line has a reason, an owner and a next step, which is what the auditor wanted to see in the first place.

The pair

Two ends of procure-to-pay, one approval model

Goods arrived but nobody posted the receipt: the invoice cannot match and payment slips. Goods posted but never invoiced: the accrual sits and ages. The PO Receipt Chase Agent works the first; this agent works the second. Both read Dynamics 365 live, both show the exact record before anything changes, both wait for a yes, both read back.

Status, stated exactly

Where it stands today, exactly

A status against everything we show.

List aged GRNI by age and value, classify each line with evidence

Working

Runs today on test data in a demonstration environment.

Propose and, after approval, cancel a duplicate receipt and read it back

Working

Same environment, same demonstration.

Teams approval card and a SharePoint evidence library for each line

Designed

Designed on Microsoft-documented capabilities; not built yet.

Vendor follow-up drafts for the silent-vendor lines

Built to order

Engineering we do on your environment; no packaged app for it.

The boundary

What it will not do

An agent that can cancel a receipt is judged on what it refuses.

It will notBecause
Cancel anything unapprovedThe receipt it proposes to cancel is shown in full and cancelled only on an explicit yes from a person.
Touch a partial deliveryA receipt that is simply waiting for the rest of the shipment is classified as normal and left alone.
Post or match the invoiceInvoice matching stays with accounts payable and the workflow already in Dynamics 365.
Write to a closed periodIt works in open periods only; a line in a closed period is reported, not changed.
Act outside its roleIt runs under a security role you assign. Microsoft’s MCP server adds no privileges to it.
GuessWhen the evidence does not settle the reason, it says so and hands the line to a person with what it found.

The same approval boundary runs through everything we build on Dynamics 365. It is argued in full on the agentic ERP hub and sits beside Microsoft’s own agents in the Dynamics 365 agent catalog.

Questions people actually type

Aged GRNI and the agent, answered plainly

What is aged GRNI in Dynamics 365?
Goods received not invoiced is the accrued liability created when a product receipt is posted before the vendor invoice is matched. Aged GRNI is the part of that balance that has sat beyond a normal invoicing cycle, typically thirty or sixty days. In Dynamics 365 Finance & Supply Chain Management it is reviewed line by line at close, because each line has a different reason for being there.
Why do GRNI lines get stuck?
Three reasons cover most of them: a duplicate product receipt was posted for one delivery, so one receipt will never be invoiced; the delivery was partial and the rest is still to come; or the vendor has not sent the invoice, or sent it and it is sitting unmatched. The agent classifies each line into one of those and shows the evidence, so the fix can be the right one.
Does the agent cancel receipts on its own?
No. It proposes the cancellation of a duplicate receipt, shows exactly which receipt and why, and cancels it only after a named person confirms. It then reads the result back from Dynamics 365. Partial deliveries are never touched, and nothing in a closed period is changed.
How is this different from the PO Receipt Chase Agent?
They work opposite ends of the same gap. The PO Receipt Chase Agent finds goods that arrived with no receipt posted and posts the receipt behind an approval, so the invoice can match. The Aged GRNI Investigation Agent takes receipts that were posted and never invoiced and explains why. Together they cover procure-to-pay from the dock to the matched invoice.
How is this different from Microsoft’s Account Reconciliation Agent?
Microsoft’s agent reconciles subledgers to the general ledger and flags differences. GRNI investigation is a procurement-side job: it reads purchase orders, receipts and the vendor invoice queue to explain one accrual line at a time. They sit at different points of close and can run together.
What does it need from our environment?
A sandbox copy of your Finance & Supply Chain Management environment, a security role for the agent scoped to purchase order and receipt inquiry plus receipt cancellation, and your vendor master. We run it there first, on your own GRNI, before anyone talks about production. The readiness review checks the version, environment tier and allowed clients the MCP server needs.
Where does it stand today?
It runs on test data in a demonstration environment: listing, classification with evidence, proposing the fix, cancelling a duplicate after approval and reading it back. The Teams approval card and the SharePoint evidence library are designed on Microsoft-documented capabilities and not built yet. We say so on every page.

Turning agents on in Dynamics 365, in detail

Readiness, piloting, governance and audit, and what Microsoft's own agents cover versus a build on your customized F&O.

Browse all engineering writing

See it explain the list, then run it on your own GRNI.

A demonstration on test data first. Then a sandbox copy of your Finance & Supply Chain Management environment and your own aged GRNI, with every cancellation behind your approval. If your GRNI is clean, we will say so and stop.

AI in Dynamics 365

Talk to a Dynamics engineer

Schedule a call