Purchase Order Balances
The Purchase Order Balances report answers a single operational question: "What's still expected to come in from vendors?"
It lists every confirmed purchase order line where the ordered quantity hasn't been fully received, with the open balance and dollar value.
Navigation: Purchase → Reporting → Purchase Order Balances
Default view: grouped by Supplier, filtered to With Order Balance (lines where balance > 0).

Columns
| Column | Meaning |
|---|---|
| Supplier | Vendor on the PO. |
| P.O. Number | Source purchase order. |
| Date Order | When the PO was confirmed. |
| Ukesho No. | Internal acknowledgement number. |
| Item Code | Internal product code. |
| Part Number | Vendor part name. |
| Due Date | Planned delivery date for the line. |
| Quantity | Originally ordered quantity. |
| Received | Net received — received minus returns (Odoo standard qty_received). |
| Returned | Sum of done returns to vendor flagged for refund. Visibility column. |
| Cancelled | Gap between ordered and received when the PO has no remaining open pickings. |
| Order Balance | What's still expected to be received (see below). |
| Unit Price | PO line unit price. |
| Amount | Order Balance × Unit Price — open dollar value. |
| Currency | PO currency. |
| Delivery Dates | History of done moves. +qty = receipt, -qty = return to vendor. |
How the balance is computed
Order Balance = Quantity − Received − Cancelled
Returns are already netted into Received by Odoo's standard qty_received calculation, so the formula doesn't subtract Returned separately — that would double-count.
The Cancelled subtraction handles the case where a return was made and the remaining PO quantity was closed out — see Path B in Receipt Over-Validation Fix.
Reading common situations
Normal pending PO:
| Quantity | Received | Returned | Cancelled | Balance |
|---|---|---|---|---|
| 60,000 | 30,000 | 0 | 0 | 30,000 |
30,000 still expected from vendor.
Over-validation corrected via Path A (return + backorder):
| Quantity | Received | Returned | Cancelled | Balance |
|---|---|---|---|---|
| 60,000 | 30,000 | 30,000 | 0 | 30,000 |
Net 30,000 received (60K validated − 30K returned). Backorder is still open for the remaining 30,000. The Returned column makes the correction visible.
Over-validation corrected via Path B (return + cancel remainder):
| Quantity | Received | Returned | Cancelled | Balance |
|---|---|---|---|---|
| 60,000 | 30,000 | 30,000 | 30,000 | 0 |
PO is closed at the corrected 30K. Drops off the default view.
Path B in progress (return done, but remaining qty not yet cancelled):
| Quantity | Received | Returned | Cancelled | Balance |
|---|---|---|---|---|
| 60,000 | 30,000 | 30,000 | 0 | 30,000 |
Looks like 30K is still pending — but operationally nothing is coming. Finish Path B by cancelling remaining quantity on the PO.
Reading Delivery Dates
The history string uses signed quantities so you can see at a glance what happened:
04/15/2026(+60,000), 04/27/2026(-30,000)
+60,000on 04/15 — original receipt validated-30,000on 04/27 — return to vendor validated
If you only see + entries, the PO is purely on the inbound path. Any - entry means a return to vendor happened for that line.
Related guides
- Sales Order Balances — the equivalent report on the selling side.
- Receipt Over-Validation Fix — both Path A and Path B affect what shows here.