Skip to main content

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).

Purchase Order Balances list


Columns

ColumnMeaning
SupplierVendor on the PO.
P.O. NumberSource purchase order.
Date OrderWhen the PO was confirmed.
Ukesho No.Internal acknowledgement number.
Item CodeInternal product code.
Part NumberVendor part name.
Due DatePlanned delivery date for the line.
QuantityOriginally ordered quantity.
ReceivedNet received — received minus returns (Odoo standard qty_received).
ReturnedSum of done returns to vendor flagged for refund. Visibility column.
CancelledGap between ordered and received when the PO has no remaining open pickings.
Order BalanceWhat's still expected to be received (see below).
Unit PricePO line unit price.
AmountOrder Balance × Unit Price — open dollar value.
CurrencyPO currency.
Delivery DatesHistory 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:

QuantityReceivedReturnedCancelledBalance
60,00030,0000030,000

30,000 still expected from vendor.

Over-validation corrected via Path A (return + backorder):

QuantityReceivedReturnedCancelledBalance
60,00030,00030,000030,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):

QuantityReceivedReturnedCancelledBalance
60,00030,00030,00030,0000

PO is closed at the corrected 30K. Drops off the default view.

Path B in progress (return done, but remaining qty not yet cancelled):

QuantityReceivedReturnedCancelledBalance
60,00030,00030,000030,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,000 on 04/15 — original receipt validated
  • -30,000 on 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.