Audit Shield · Receiving
Nothing becomes inventory until a person says so.
Most shortages are created the moment a delivery is accepted unverified. The receiving firewall imports the manifest, scans what arrived, applies New York's transfer-variance rules to every line and holds each discrepancy as a case until a named person decides what happens to the goods.
- Hudson Valley Kush 3.5 g …4183MatchManifested 48 eachReceived 48 eachNY_TRANSFER_VARIANCE_ZERO v2026.09.1
|48 − 48| ÷ 48 × 100 = 0.00%
- Catskill Cart 1 g …4190ReviewManifested 60 eachReceived 57 eachNY_TRANSFER_VARIANCE_CONFIRMATION v2026.09.1
|57 − 60| ÷ 60 × 100 = 5.00%
- Adirondack Pre-roll 1 g …4215BlockedManifested 100 eachReceived 90 eachNY_TRANSFER_VARIANCE_OVER_LIMIT v2026.09.1
|90 − 100| ÷ 100 × 100 = 10.00%
- Buffalo Balm 50 ml …4227ExceptionManifested 30 eachReceived 30 gramsNY_TRANSFER_UOM_MISMATCH v2026.09.1
30 grams cannot be compared with 30 each; units differ and are not converted.
Illustrative dockFictional lines. The outcomes above are computed by the product’s own rule function at render time, not typed in.
The manifest arrives before the truck does.
Every line is normalised and matched to your catalogue, so the dock knows what should arrive: package, item, quantity, unit.
- Available
CSV import
The manifest from your supplier's or your POS's export. Duplicate tags, missing quantities and unknown units are flagged on import, not discovered at the dock.
- Requires setup
Transfer read from Metrc
Where Metrc reads are enabled, the incoming transfer is read through the third-party API with the licensee's own key, and the lab result for each package comes with it.
Expected inventory
What should arrive, line by line, becomes the checklist the receiver works from. Extras, shorts and wrong packages have somewhere to land.
- Available
COD flagged before acceptance
Smoke Alarm reads the payment terms Metrc carries on the transfer, shows COD at the dock and on the manifest, records who verified the payment and how, and raises a finding if the transfer is received in Metrc unpaid. It moves no money and writes nothing to Metrc.
Packages, incoming transfers and lab results read through Metrc's third-party API with the licensee's own key; nothing is written without a named person's approval.
Waiting on: Metrc integrator access for New York (Metrc case 02448265) and each licensee's user API key.
Scan every package, or count by hand.
Package tags and Metrc Retail ID QR codes, per package or per unit. A scanned identifier that resolves to a package the manifest does not list is a discrepancy, not a silent acceptance.
Scanner wedge
Any USB or Bluetooth 2D scanner that types like a keyboard. No driver, no pairing app.
Phone camera
The same scans from a phone or tablet camera in the browser when the dock has no scanner.
Counts by hand
Quantities entered against each line, with the receiver's name and time stamped on every fact.
The variance rule, as the dock applies it.
Each package's received quantity is compared with the manifest in the manifest's own unit. The outcome names the rule and the version that produced it, so a reviewer can check the arithmetic later.
| Rule | As applied | Outcome | Override |
|---|---|---|---|
Unit of measure differs NY_TRANSFER_UOM_MISMATCH | Quantities in different units of measure are not comparable and are never converted; the line is treated as a mismatch until the unit is corrected at the source. | Exception Invalid comparison | None in the app. |
Received as manifested NY_TRANSFER_VARIANCE_ZERO | The received quantity equals the manifested quantity. | Match Ready to receive | None in the app. |
Variance up to 5% NY_TRANSFER_VARIANCE_CONFIRMATION | A variance above 0% and up to 5% of the manifested quantity may be received only after a manager confirms it; the actual quantity is received and the difference is recorded for the shipper. | Review Manager confirmation required | A named manager, with the reason recorded. |
Variance above 5% NY_TRANSFER_VARIANCE_OVER_LIMIT | A variance above 5% of the manifested quantity cannot be received as manifested. There is no manager override: the shipper corrects the manifest, or the package is rejected or returned. | Blocked Receipt blocked | None in the app. |
Rule pack ny_receiving version 2026.09.1, encoding NY OCM Industry Bulletin NY_IB_0010: transfer receipt quantity variance (effective 2026-06-12). The variance is |received − manifested| ÷ manifested × 100, per package, in the manifest’s unit; the confirmation limit is 5%. Verify the bulletin text against the current OCM publication before relying on any determination. Every dock decision cites the rule id and version that produced it.
Three outcomes for every package.
The receiving rules and the sellability rules answer separately; the firewall turns the two answers into one outcome for the goods. Nothing is received until a manager approves the receipt.
Accept — sellable
VerifiedReceiving rules allow it, it may be sold, no damage recorded: the package enters inventory as sellable.
Receive into quarantine
ReviewA warning at receipt, a sellability block (already expired, for example) or damage recorded: received into inventory, not sellable, with every reason attached until a person inspects it. Recalled, failed-test and expired packages are held this way.
Reject — do not receive
BlockedThe receiving rules block it: it never enters inventory, and a vendor issue asks for the return. The Metrc step owed is written on the case.
A package can also be put on hold after receipt and released later; both are ledger events with a reason. Held, rejected and missing packages stay on the manifest’s record.
Seven categories, each a case a person closes.
Every discrepancy at the dock opens a case with its evidence. A case has an owner, a decision with a reason, the Metrc step the licensee still owes and the final state of the goods.
- 1
Missing item
On the manifest, not in the delivery.
- 2
Extra item
In the delivery, not on the manifest.
- 3
Quantity mismatch
Counted differently from the manifest quantity.
- 4
Package mismatch
The package is not the product the manifest line says, or the state rejected it.
- 5
Barcode / UID mismatch
A package tag, Retail ID or retail barcode disagrees with the manifest or the catalog.
- 6
Vendor discrepancy
The shipper or the addressee disagrees with the licence records.
- 7
Incomplete record
The manifest or the state record is missing something receiving needs.
- 8
Source conflict
Regulated source observations disagree; sources remain unchanged and a person reviews the conflict.
The decisions that close a case
- Accept as counted
- Receive what was actually counted (nothing, for a missing package). The shortage or overage goes to the vendor as a claim.
- Accept as manifested
- A recount or an inspection confirms the manifest: the manifest quantity and product stand, and the package can be received.
- Return to shipper
- Nothing is received; the goods go back to the shipper. The Metrc step is recorded on the case.
- Reject
- Nothing is received; the package is rejected on the transfer. The Metrc step is recorded on the case.
- Quarantine pending the vendor
- Received into quarantine — in inventory, not sellable — until the vendor answers. Never for an extra item: that is only set aside.
- Hold for a state correction
- Nothing is received; the goods are held until the shipper corrects the transfer in Metrc.
- Cleared on recount
- The condition cleared on its own (a recount matched, a record was corrected). A person confirms it; the package goes on as clean.
An AI explanation of likely causes can sit beside a case. It is advisory and never authoritative: it changes no record and makes no decision.
From the manifest to the final inventory state.
Clean inventory proceeds. Questionable inventory goes to review. Nothing silently disappears into inventory.
- 1Manifest
The Metrc incoming transfer for the delivery.
- 2Import
Read from Metrc (or a CSV), every line normalised and matched to your catalogue.
- 3Expected inventory
What should arrive: package, item, quantity, unit.
- 4Scan or import the physical receipt
Dock scanning, per package or per unit, or counts entered by hand.
- 5Compare
Expected against received, with the seven receiving flags checked on every line.
- Everything matchesMatch
Clean lines are ready for a manager to receive.
Clean inventory proceeds.
Something does not- 6Case created
The exception is recorded with its evidence; an investigation or vendor claim is opened from it.
- 7Human resolution
A person resolves, holds or releases each line, with a reason.
- 8Audit record
Who decided what, when, and the record before and after.
Questionable inventory goes to review.
- 9Final inventory state
Accepted into inventory, quarantined, or rejected — never silently absorbed.
The Receiving Kit.
What a dock needs to verify a delivery against its manifest, from certified third-party hardware, installed and tested on site.
Receiving Kit
Requires setupWhat the dock needs to verify a delivery against its manifest.
- Rugged tablet or handheld
- 2D scanner
- Protective case
- Optional portable label printer
Indicative ranges. Smoke Alarm integrates certified third-party hardware; it does not manufacture payment devices. Final configuration and pricing depend on the store's requirements and supplier pricing at the time of order. A scanner you already own and a phone camera work without a kit.
Bring one manifest.
We import it, walk the dock with you on the simulated store, and show you what the firewall would have held.