Skip to main content

ERPNext how-to & fixes

ERPNext Purchase Order: Partial Receipts, Status & the Fixes (2026)

Why a Purchase Order sticks on To Receive and Bill, how partial receipts and over-receipt allowance work, rate drift, and when to Close instead of chase.

Updated 12 Oct 202610 min readBy ManojFirst published 28 Jul 2026

Most ERPNext Purchase Order questions are really one question: why won't the status move? A PO that stays on "To Receive and Bill" after the goods arrived, a receipt ERPNext refuses because the supplier shipped extra, a rate that drifts even though "Maintain same rate" is ticked: these trace to how ERPNext computes the received and billed percentages, and to a few settings. This guide predicts the status from your numbers and gives the fix for each stall.

A Purchase Order reaches "Completed" only when both received and billed reach 100%, so every "stuck PO" ticket is one of those two numbers falling short. I am Manoj, and I lead ERPNext and Frappe programmes at MithTech, a team of Frappe specialists in Bengaluru. The buying cycle is core to every distribution and manufacturing programme we run.

Why won't the status move?

An ERPNext Purchase Order carries two computed percentages: how much has been received and how much has been billed. The status follows from them: both at 100% is Completed; otherwise you see To Receive, To Bill or To Receive and Bill. So a PO that looks done but reads "To Receive and Bill" has one of those numbers short of 100%: a line billed at zero, a rounding remainder, or a Purchase Receipt that didn't link every row.

CalculatorPO Status Predictor

Enter ordered, received and billed quantities to see exactly which status ERPNext will show and why.

% Received

60%

% Billed

0%

ERPNext status

To Receive and Bill

A PO only reaches Completed when BOTH received and billed hit 100%. Stuck on “To Receive and Bill” with everything physically done usually means a zero-rate line or an unlinked row — or manually Close it if the balance isn’t coming.

Which stall are you hitting?

InteractivePO Status Decider

Select the Purchase Order behaviour you're seeing to get its cause, the GitHub issue that documents it, and the fix.

Pick the Purchase Order behaviour you’re seeing.

The "stuck after full receipt" case

This is the most reported one: every box arrived, the Purchase Receipt says Completed, but the PO still reads "To Receive and Bill". Check the billed percentage first. A line received at a zero rate may never bill to 100% (#35371), so the PO can't complete; bill it (even at zero) or Close the PO. Other reported causes: a Purchase Receipt cancelled and amended (#27514), and goods received through a Purchase Invoice with Update Stock above the ordered quantity (#44016).

How do you handle each case?

Code recipePartial · Over-receipt · Rate · Close

Copy-paste step recipes for partial receipts, allowing over-receipt, maintaining the same rate, and closing a stuck PO.

Receive in instalments against one PO.

steps
1. From the submitted PO: Create > Purchase Receipt.
2. Edit the received qty down to what actually arrived.
3. Submit. The PO shows "To Receive and Bill" with
   per_received < 100%.
4. Repeat for later shipments; each Receipt pulls the
   remaining qty. Bill via Purchase Invoice the same way.
1

Receive partially against one PO

Create → Purchase Receipt, edit the received quantity to what actually arrived, submit. The PO stays open on the balance; each later shipment pulls the remaining quantity.

2

Allow the supplier's over-shipment

Set an Over Delivery/Receipt Allowance (%) in Stock Settings (or per item on the Item master). Receipts up to that percentage above the ordered quantity are then accepted.

3

Hold the rate steady

Turn on Buying Settings → Maintain same rate throughout the purchase cycle so the receipt and invoice rates equal the PO rate. If it still drifts, you may be on a build with the regression in #40159; check your patch level.

4

Close a PO the supplier can't finish

Use the PO's Status → Close to take it off the open-commitments list. Prefer this to cancelling when part was already received; re-open later if the balance shows up.

Should you chase the balance, or close it?

Chase to completionClose it now
The remaining goods are still comingThe supplier has confirmed they can't fulfil the balance
A zero-rate / unbilled line is the only blockerThe open qty is distorting your commitment reports
Receipts and invoices just need matching upThe PO has sat part-received for months
Completion is days awayYou'll re-order the balance on a fresh PO anyway

At a glance

ReceivedBilled
Below 100%Below 100%To Receive and Bill
100%Below 100%To Bill
Below 100%100%To Receive
100%100%Completed
Closed by youClosed (re-open if the balance arrives)

FAQ

+Why is my ERPNext Purchase Order stuck on To Receive and Bill?

Because either the received or the billed percentage hasn't reached 100%. A PO only completes when both do. The usual cause is a line received at a zero rate that never gets billed, or a Purchase Receipt that didn't link every PO row. Check each line's received and billed percentage, clear the straggler, or manually close the PO.

+How do I receive more than the ordered quantity in ERPNext?

Set an Over Delivery/Receipt Allowance (%) in Stock Settings, or per item on the Item master. Without an allowance, ERPNext blocks any Purchase Receipt quantity above the ordered amount. With, say, 5% allowed, a receipt up to 105% of the PO quantity is accepted.

+How do I close a Purchase Order in ERPNext?

Use the Status action on the submitted PO and choose Close. It stops the PO counting toward open purchase commitments without cancelling it. Re-open it later if the remaining goods arrive. Prefer Close over Cancel when part of the PO has already been received, because a PO with linked receipts can't be cancelled cleanly.

+Why does the rate change even though Maintain same rate is on?

The setting should keep the Purchase Receipt and Invoice rates equal to the PO rate, but some early v15 builds had a regression where it didn't (#40159, since closed). Confirm the setting is on in Buying Settings, check your patch level, and set the rate by hand to match the PO until you're on a fixed release.

+Can one Purchase Order have multiple Purchase Receipts?

Yes. Receive in instalments: each Purchase Receipt pulls the remaining quantity from the PO, and the PO's received percentage climbs with each one until it reaches 100%. This is the normal way to handle staggered deliveries against a single order.

+Does this apply to ERPNext v14, v15 and v16?

Yes. The received/billed percentage model, over-receipt allowance, and Close action work the same across v14, v15 and v16. Specific bugs like the Maintain-same-rate regression (#40159) are build-specific, so check your patch level when a behaviour looks wrong.

What is the bottom line?

A Purchase Order in ERPNext is driven by two numbers. Read the received and billed percentages, clear whichever one is short (often a zero-rate line), and use Close instead of Cancel when a supplier can't finish. Do that and "why won't this PO complete" stops coming back.

Your next step

Open POs piling up and nobody trusts the commitment report?

Next step · ERPNext how-to & fixes

Now see what an audit finds in yours

When the same problems keep coming back, tick what you see and get an audit of the ERPNext you have, then fixes in order of what costs you most.

Comments & ratings

No comments yet. Start a new discussion.

0

Manoj · Published on 28 July 2026

Worked with us? Leave a Google review

Questions about this? Talk to the team.

Book a 30-minute Google Meet, WhatsApp us, or send a message. The engineer who works on this replies.

Send us a message
Your details go to our team's CRM and are used only to reply.