Receiving Purchase Orders

Recording what actually arrived, receiving in more than one delivery, closing an order short — and why what you owe is the received value and never the ordered value.

10 min read · Updated 10 Sep 2026

On this page

Receiving is where a purchase order stops being a plan. You count what the driver brought in, you type those numbers, and Kassly moves the stock and works out what you owe.

The one rule to take away from this page: you owe for what arrived, not for what you ordered.

Receiving needs the Inventory Pro add-on (₱400 per branch each month), the same one that carries purchase orders themselves. Receiving into a warehouse additionally needs Warehouse & Commissary (₱500 per branch each month).

An Owner, a Manager, or anyone holding the Receive stock capability through a custom role can receive. That is the point of the split — the person on the dock does not need the keys to your finances.

Bill from received, not from ordered

A purchase order goes through three money states, and only the last one is real:

PO state Stock What you owe
Draft Nothing Nothing
Submitted Nothing Nothing — a commitment, not a debt
Partial Whatever arrived so far Nothing yet
Received or Closed Everything that arrived The received value

The received value is each line's quantity received × unit cost, added up. Kassly stores it on the PO as its received amount and it is the figure that reaches your books.

This matters because short deliveries are ordinary. You order 100 cases, 80 arrive, the supplier's invoice is for 80. If Kassly had booked ₱-for-100 when you submitted the order, your payables would be permanently overstated and someone would have to hunt the difference down every month. It does not, so they do not.

The consequence to plan around: nothing at all reaches your expense reports or your books until a PO is finalised — either fully received, or short-closed. A PO sitting on Partial for three weeks is invisible to your profit figures.

Recording a receipt

Open a Submitted or Partial PO and click Receive Items. A dialog lists every line with what is still outstanding.

Field Required Notes
Qty to Receive Yes What arrived on this delivery. Must be greater than zero. Decimals allowed.
Batch # No Up to 100 characters.
Expiry Date No Feeds expiry alerts.

Click Confirm Receipt. For each line Kassly:

  1. adds the quantity to the line's received total,
  2. raises the stock at the branch,
  3. writes a stock movement stamped with the unit cost, the batch number and the expiry date, and referencing the PO number,
  4. tells the POS terminals at that branch about the new quantity.

The stock movement is the record. Nothing changes a number silently. See Stock levels and Batch and expiry.

You cannot receive more than you ordered. Ask for 30 when 10 are outstanding and Kassly refuses, naming the product and the remaining quantity. An over-delivery has to be handled either as a separate PO or as a stock adjustment — see Stock adjustments.

Receiving is safe to retry. The mobile and web clients send an idempotency key with the request, so a receive that times out and gets resent does not put the stock away twice.

Partial receipts

Receive less than the full outstanding quantity on any line and the PO moves to Partial. The stock you received is already yours and already on the shelf; the rest is still expected.

You can receive against a Partial PO as many times as the deliveries take. Each receipt accumulates onto the same line. When the last unit lands the PO flips to Received, stamps the received date, and the payable is recognised.

When a short receipt needs a manager

A short delivery that is out of the ordinary raises a receiving variance item in the approvals queue.

The test runs per line, on the shortfall against what was outstanding:

Threshold Default
Units more than 5 units short
Percentage more than 10% short

Either one being exceeded is enough. Only one variance approval is open per PO at a time, so a second short receipt on the same PO does not queue a duplicate.

The thresholds are defaults, and there is no screen for changing them. They are stored as business settings and can be moved, but not from the Settings pages as they stand.

Approving a variance annotates the record; it does not reverse anything. The stock moved when you received it. Approval marks the PO as accepted with variance, with who accepted it and when; rejecting records the reason. Neither touches your stock or the payable — those are settled by receiving and by short-closing. See Approvals and promotions.

On the phone, a short receipt over the threshold comes back as Short-receive exceeded the tenant threshold. A manager must approve the variance. with a View approvals link.

Close Short

Sometimes the rest is never coming. The supplier is out of stock, the season is over, or you have simply moved on.

Close Short finalises a Partial PO at the quantity received so far. Open the PO and click Close Short. The confirmation tells you exactly what you are agreeing to:

  • how many units remain and will no longer be expected,
  • the Payable figure the PO will be finalised at.

Confirm and the PO moves to Closed, with the received date stamped and the payable recognised at the received value.

Three things to know:

  • It cannot be undone. There is no reopen.
  • It moves no stock. Receiving already put the goods away; Close Short is purely the closing-out step.
  • It is only available on a Partial PO. A Submitted PO with nothing received cannot be short-closed — there is nothing to finalise at. Cancel it instead.

That gives you a clean rule for abandoning an order:

Situation What to use
Nothing has arrived Cancel
Some arrived, the rest never will Close Short
Some arrived, the rest is still coming Leave it on Partial

What lands in your books

When a PO is finalised — fully received or short-closed — Kassly creates one approved expense:

Field Value
Category Procurement, created automatically the first time you need it
Amount The received value
Reference The PO number
Description Purchase Order PO-000001 — Supplier Name
Date Your business day at the branch, not UTC
Status Approved, with the person who finalised it recorded as approver

The business date matters if you receive late: a delivery signed for after closing time is still today's expense, not tomorrow's.

On the accounting side the received value is capitalised as inventory and recognised as a payable — a debit to Merchandise Inventory and a credit to Accounts Payable, dated the received date and referenced by PO number, described as Inventory received from supplier. Paying the approved expense then relieves Accounts Payable against cash. Because both legs are sized to the received value, a short-closed PO nets cleanly instead of leaving a stub in payables. See Books of accounts and Chart of accounts.

Receiving does not update the product's own cost price. The price you paid is stamped on the movement and used for the payable and for valuation, but the product's standing cost stays as you set it. If a supplier's price has changed for good, edit the product.

Receiving into a warehouse

If the PO's Deliver To was a warehouse, receiving behaves differently in three ways:

  • Stock lands at warehouse level, not at a branch, so no POS terminal is notified.
  • Kassly writes a Goods Receipt — a GRN, numbered GRN-000001 — recording the warehouse, the PO, who received it and when, with one line per product including its batch number and expiry date.
  • Each delivery gets its own GRN. Receive a warehouse PO in three deliveries and you have three goods receipts against one PO.

Everything else is the same: the over-receive guard, the accumulation of received quantities, the variance approval, the statuses, and the payable at the received value.

If the warehouse has been deleted since the PO was raised, receiving is refused with The delivery warehouse for this PO no longer exists. — because otherwise the stock would be put away somewhere nothing can see it.

GRNs are listed on the warehouse's own page. There is no bin- or zone-level putaway step; stock lands at the warehouse as a whole. See Warehouses.

Receiving on the phone

The mobile app has a receiving screen for the dock: Receive PO, reached from the Inventory or Oversight menus.

It lists your Submitted and Partial POs. Open one and each outstanding line shows Ordered, Received and Outstanding, with two inputs:

Field Notes
Received now What arrived.
Variance note (optional) e.g. box damaged, short-shipped. Carried into the approvals queue.

There is a Scan to jump button that reads a barcode and scrolls to that line, which is faster than hunting a long delivery by eye. Scanning something that is not on the order says That product is not on this PO.

Then Submit receive. If everything on the order has already been received, the screen says All items fully received.

Receiving does not work offline. Unlike the POS, a receipt cannot be queued. Offline, the list screen warns Receiving requires a connection. and the PO screen Reconnect to submit a receive. — and the quantity and note boxes, the scan button and the submit button are all disabled until you are back on a connection.

That is deliberate: a receipt has to check the outstanding quantity on the server before it can be trusted, and two people receiving the same delivery on two phones offline would over-receive it. If you are in a stockroom with no signal, count on paper and enter it when you have a bar of signal. See What works offline.

The phone screen also does not collect batch numbers or expiry dates. If you track expiry, receive that delivery on the web instead.

What receiving deliberately does not do

Two things people expect here are genuinely not built, and it is better you know now than discover it at audit.

There is no three-way matching. Kassly matches the purchase order against the goods receipt. It does not hold the supplier's invoice as a document, and there is no screen that compares PO to receipt to invoice, flags a price variance between the PO cost and the invoiced cost, or blocks a payment over a mismatch. The payable is sized from your receipt at your PO unit costs. If the supplier bills a different price, you reconcile that yourself and adjust the expense.

There is no BIR treatment on the purchasing side. Receiving does not capture input VAT separately, produce a purchase journal in the BIR format, or handle withholding tax on your supplier payments. The BIR features in Kassly cover your sales — see BIR compliance. Purchases reach your books as a Procurement expense and nothing more.

Both were deliberately left out of this release rather than half-built. Do not plan a process around them.

Where to go next