All posts
Functional4 min read

Managing Partial Receipts and Backorders in Odoo Purchasing

Handle partial vendor deliveries in Odoo - creating backorders for outstanding quantities, tracking expected completion dates, and reconciling partial receipts against original purchase orders.

Partial Receipts and Backorders in Odoo#

Vendors don't always deliver all ordered quantities in one shipment. Odoo handles partial deliveries by creating backorders - keeping the original PO active and tracking the outstanding quantities until fully received.

Receiving a Partial Delivery#

When a vendor delivers 60 of 100 ordered units:

Purchase → [PO] → Receipt:

  1. The receipt is pre-filled with 100 units (demand)
  2. Change quantity to 60 (actually received)
  3. Click Validate
  4. Odoo prompts: "Some products have not been received. What do you want to do?"

- Create Backorder: keeps the remaining 40 units pending

- No Backorder: closes the receipt (remaining quantity is lost - use only if intentional)

Select Create Backorder → a new receipt is created for 40 units with a linked PO reference.

Backorder Visibility#

Purchase → [PO] → Receipt button: now shows 2 receipts:

  • Receipt 1: 60 units - Done
  • Receipt 2 (Backorder): 40 units - Waiting

The PO status remains In Progress until all quantities are received.

Setting Expected Delivery Dates on Backorders#

Open the backorder receipt:

  • Scheduled Date: update to the date the vendor committed to delivering the remaining 40 units
  • Add a note in the chatter: "Vendor confirmed remaining 40 units on 2027-10-05"

Operations can track the outstanding backorder on the receipt calendar.

Partial Invoice Matching (3-Way Match)#

When the vendor bills for the 60 units delivered:

  • Create a vendor bill for 60 units at the PO price
  • Match to the partial receipt: 60 units @ $10 = $600
  • The bill can be posted without waiting for the backorder

When the remaining 40 units arrive and the vendor bills:

  • Second bill for 40 units
  • Matched to the backorder receipt
  • 3-way match complete for the full PO

Closing Backorders#

If the vendor cannot fulfill the remaining quantity:

  • Open the backorder receipt → Validate with quantity = 0
  • Select No Backorder → the receipt closes
  • Update the PO if the vendor permanently reduces the quantity: PO → [Line] → Quantity → 60
  • PO status becomes Fully Billed after the 60-unit invoice is posted

Reporting on Open Backorders#

Purchase → Reporting → Purchase Analysis → filter by Receipt Status = Partial:

  • All POs with outstanding backorders
  • Quantities remaining per product
  • Scheduled date for backorder completion

Use this to follow up with vendors on outstanding deliveries and plan production or sales around expected stock arrivals.

Try ERPeek on your own Odoo module - ask questions, scaffold tests, and explore your codebase in plain language.

Get started free