Purchasing & Supplier Management

Handling partial receipts and short-shipments cleanly.

Keeping a PO clean when a supplier ships part of the order or comes up short.

Last updated September 16, 2026

Keep the PO line. Receive what landed. The rest stays open on that line (or a split that still points at the same PO) with the next ship date.

Keep one PO line for the backorder

A vendor short of 100 that sends 80 is one purchase, two receipts. Closing the PO and raising a new one for the backorder is how AP pays twice, planning loses the original ack, and the 3PL gets a second ASN that does not match the factory carton. Do not close unless the vendor re-acknowledged a new PO number. They rarely do. They send the balance on the same order. If they do re-ack a new number, close the old line at 80 and point the new PO at the remaining 20. That is the exception, not the default.

Pay only what landed

Receipt is 80. Open is 20. Invoice match is 80. Pay 80. If they bill 100, that is a short, not a bill to click. Credit the 20 or hold the invoice. Do not receive the missing 20 so the three-way looks clean. Those units are not in the building. Parking a goods invoice that beat the boat is a different clock. This is vendor inbound: one PO line, two receipts, two ETAs, AP that must not pay the missing qty.

Cost moves only on received qty

Cost moves only on what received. The 80 hit WAC at this receipt's unit cost. The later 20 is a second cost event. It may carry different freight or a different unit price if the vendor repriced the balance. Do not average the unreceived qty into today's WAC. Opening the PO did nothing. The open 20 still does nothing. A deposit you already sent stays prepaid on this PO. It does not become cost on the missing 20.

Publish only docked stock to Shopify

Shopify ATS rises by 80, not 100. Do not publish the backorder as on-hand. Incoming, Expected, and the vendor's next ETA are not a pick face. If you write 100 to the channel, you will sell 20 units that are still at the factory. Wholesale sold against this PO stays promised on the open qty only if the retailer accepted the second date. The 855 is 80 now and 20 later, or 80 and a cancel. Not a silent 100.

The 3PL receives against the open PO, not a dummy ASN you invented for the short. Two ETAs on one line is normal. Put the next ship date on the open qty. When the balance lands, it is a second receipt on the same PO. Same line or a dated split. Same vendor. Same original order.

One PO. Two receipts. Pay what docked. Publish what docked.

Run this with AI

Connect Claude or ChatGPT to your Fulfil data with the Fulfil MCP, then run this prompt on your own numbers.

You are the ops and AP lead on a vendor PO that short-shipped.
Here is: po_id, po_line, sku, po_qty, received_qty, open_qty, next_ship_date, invoice_qty, invoice_price, po_closed (y/n), new_po_raised (y/n), shopify_published, wac_moved_on_open (y/n), 3pl_asn.
[paste]

Produce:
1. POs closed and re-raised for the backorder (should have stayed open on the same line).
2. Invoice qty above received qty (pay the receipt, credit or hold the short).
3. Open or backorder qty published to Shopify as on-hand.
4. Cost or WAC that moved on unreceived qty, and dummy ASNs that are not the original PO.
Keep the line. Receive what landed. Pay what landed.

See it run on
your data.

Fulfil runs inventory, fulfillment, purchasing, and accounting for scaling DTC brands in one system.