End-to-end processes Popular

The life of stock: every action that creates, moves or changes goods

15 min read 27 Sep 2026 Cargoflow Team

Summary

A customer's goods live in stock lines: one per product, location and lot. Each line has a total and a breakdown by status (reserved, damaged, on hold…). Nobody types those numbers by hand: they only change through specific actions in the system, and every action leaves a signed row saying who, when and why.

This article puts all of those actions in one place. It answers the three most common questions in a warehouse: "why is this quantity here?", "who moved it?" and "why can't I ship it?". For the detail of each screen, follow the links to the module articles.

Before you start

  • Module: the warehouse needs the inventory module. Without it, a receipt is confirmed and a shipment is closed as records only: they close the document and notify the customer, but they neither create nor deduct stock.
  • Viewing: the View Inventory permission (by default held by admin, supervisor, worker and client portal accounts) opens the stock screen, each line's history and the Adjustments History.
  • Moving: each action has its own permission; the table below says which. By default a worker only captures receipts and counts: they do not adjust, relocate or change statuses.
  • Catalogs: the product and the location must exist first. See Products and units and Locations and zones.

How a stock line is stored

In Inventory › Stock each row is a line. The Quantity column is the physical total; the columns to the right say how much of that total is in each status.

Stock by location screen with the Receipt, SKU, Product, Zone, Location, Quantity, Reserved, On hold, Damaged, Quarantine, In transit, Quality Inspection and Returned Goods columns, and the Inventory status transfer and Inventory adjustment buttons at the top
The stock screen: the total under Quantity and, to the right, how much is in each status. The clock under the receipt number opens the line's history.
StatusWho sets itCan it be shipped?
AvailableNobody: it is calculated. It is the total minus every other status.Yes
ReservedThe system, when a shipment is allocated.Only by the shipment that reserved it
DamagedThe receipt capture (damaged quantity) or a status change.No
On hold, Quarantine, In transit, Quality Inspection, Returned Goods, Awaiting DisposalA person, with a status change.No

Each line also keeps its first arrival date. It anchors the storage that is billed and the aging the customer sees, and it decides what goes out first when there is no expiry date.

Every action in one table

ActionEffect on the lineWhere it is recordedWho can (permission · default roles)
Confirm a receiptAdds the received quantity at the captured location; the damaged part is in the total but in the Damaged column.Line history (Received, linked to the receipt) · Audit log (Receiving and Receipts)Confirm Receipts · admin, supervisor
Transfer within the warehouseSubtracts at the origin and adds at the destination. The customer's total does not change.Line history (two Transfer rows)Transfer Inventory · admin, supervisor
Transfer to another warehouseLeaves the origin at once; enters the destination when it is received there.Line history in each warehouse · incoming transfers inboxTransfer Inventory, with access to the destination warehouse
Status changeMoves quantity between columns. The total does not change.Line history (Status change)Adjust Inventory · admin, supervisor
Manual adjustmentAdds to or subtracts from the total.Adjustments History · line history (Adjustment)Adjust Inventory · admin, supervisor
Approve a cycle count varianceCreates an adjustment with the Cycle Count reason.Adjustments History · the plan's task becomes AdjustedApprove Cycle Counts · admin, supervisor (never the person who counted)
Allocate a shipmentMoves quantity from available to Reserved. The total does not change.The shipment's allocation list (no row in the line history)Create Shipments · admin, supervisor
Release the allocationReturns what was reserved to available.The shipment goes back to ConfirmedCreate Shipments · admin, supervisor
Close a shipmentSubtracts what was loaded and releases the whole allocation, including the part not loaded.Line history (Shipped, linked to the shipment) · Audit log (Shipments)Ship (Close Shipments) · admin, supervisor
Cross-dockEnters and leaves the staging location XD-STAGE; ends at zero.History of the XD-STAGE line · the cross-dock's tabCreate Crossdock Jobs · admin, supervisor
Edit a confirmed receiptApplies the net difference as an adjustment.Adjustments History (reason receipt_edit)Confirm Receipts · admin, supervisor
Correct the customer of a confirmed receiptMoves the lines to the new customer without changing quantities.Adjustments History (reason client_amendment, quantity 0) · Audit log (Identity corrections)Amend Document Identity · admin, supervisor
Cancel a confirmed receiptSubtracts what that receipt had added.Adjustments History (reason receipt_cancel) · Audit log (Receipts)Confirm Receipts · admin, supervisor
Cancel a shipmentNothing: it is only allowed with no live allocation.Audit log (Shipments)Create Shipments · admin, supervisor
Tip: these are the default permissions. Your admin can grant or remove them per role; if a button does not appear, check the role first. See Roles and permissions.

Inbound

Confirming a receipt

It is the only normal way in. While the receipt is Pending, In progress or Captured, the goods do not exist in inventory even if they are physically in the warehouse. When Confirm receipt is clicked:

  • Each line adds its received quantity (converted to the product's base unit) at the captured location and lot. If there was no line with that product, location and lot, one is created.
  • The captured damaged quantity is part of that total, but goes straight into the Damaged column: it is not available.
  • Everything else is available. Nothing goes into quarantine or on hold by itself: if needed, a status change is made afterwards.
  • The receipt's actual arrival date becomes the line's first arrival date. If the line already existed and the new date is earlier, it is moved back; never forward.
  • Each line gets a Received row in its history, linked to the receipt. If the line had a discrepancy against the notice, the reason says so (short or over).
Important: the received quantity is converted to the product's base unit, but the damaged quantity is added as is, unconverted. If you capture a line in cases of 12 and mark 1 case damaged, 1 piece goes into the Damaged column, not 12. Until this is fixed, when there is damage capture that line in the base unit (pieces), or fix the breakdown with a status change after confirming. Also check that damaged never exceeds received: the form does not prevent it.

The system will not confirm if a line with a quantity has no location, a lot-tracked product has no lot, or a line with a discrepancy has no evidence photo. The whole path is in From notice to stock.

Put-away is not a separate step

There is no put-away task after receiving: the location is chosen when each line is captured and the goods are born there on confirmation. The tablet scanner can suggest a location for a product, but suggesting moves nothing. If the goods are later taken to their final place, that is a transfer.

Tip: if your team unloads to a receiving area and puts away later, capture the receipt at the receiving location and record the transfer as soon as the goods reach their rack. If you capture the final location directly, you save a step but the system will say the goods are in place before they really are.

Relocating and changing status

Transfer within the warehouse

In Inventory › Transfers › New transfer, type Within warehouse (A → B). Only what is available moves: reserved and blocked quantities stay. The destination line inherits the origin line's first arrival date, so relocating does not reset storage. It leaves two Transfer rows in the history: out and in.

Transfer to another warehouse

It takes two steps. The origin warehouse sends (the goods leave at once) and the destination warehouse receives them in its Incoming transfers (in transit) inbox. In the meantime the goods count in neither warehouse. There is currently no button to cancel a transfer in transit. See Stock transfers.

Status change

From the line's checkbox on the stock screen, Inventory status transfer button. It moves a quantity from one status to another (for example, 5 pieces from Available to Quarantine) and asks for a short reason, up to 64 characters. The total does not change, but what leaves Available can no longer be allocated. There is no approval step.

Inventory status transfer form with Product and Location on the left and Current status, New status, Quantity, Reason and Notes on the right, and the Move button
The status change: which status it leaves, which one it goes to, how much and why.
Important: the status list on this form includes Reserved and In transit. Do not use them: allocations are created and released by shipments, and moving them by hand leaves reserved quantity that no shipment recognizes (and that later blocks adjustments and transfers). To release an allocation, work on the shipment. See Change inventory status.

Adjustments and counts

Manual adjustment

In Inventory › Adjustments › Inventory Adjustment (or with the line's pencil). It changes the total with a reason from a closed list: Cycle Count, Damaged, Found, Lost, Expired, Adjustment or Other (with Other, notes are required). It is entered as a difference (+/−) or as a target quantity. There is no approval: it applies on save.

There is a floor: the total cannot drop below what is committed (reserved plus blocked statuses), nor below zero. If you try, you get an error saying the quantity cannot drop below what is committed. See Inventory adjustments.

Cycle count

A plan takes a snapshot of the system quantity for each line in scope. When someone counts, matching lines are approved automatically and the rest wait for approval (or a recount, if the variance exceeds the threshold). On approval, the system records an adjustment with the Cycle Count reason that takes the line from the snapshot quantity to the counted one. Whoever counted cannot approve their own task.

Important: the adjustment is calculated against the snapshot taken when the plan was generated, not against the quantity at approval time. If a receipt was confirmed or a shipment closed at those locations in between, the adjustment can undo that movement. Count and approve on the same day, without moving goods out of the plan's locations. See Cycle counts.

Allocating and shipping

Allocating

When a shipment is confirmed (or with the allocate button on its timeline), the system sets goods aside at specific locations. Earliest expiry first; on a tie, what arrived first. It never takes expired goods, blocked statuses, staging or non-pickable locations, or another customer's goods. What is set aside moves to the Reserved column; the total does not change.

Allocation leaves no row in the line history: its record is the allocation list at the bottom of the shipment screen. So if you see reserved quantity, the question is "which shipment holds it?", not "which movement made it?".

Closing the shipment

It is the only normal way out. The operator records what went on the truck, but the total does not go down until a supervisor clicks Close Shipment. Then, for each allocation: what was loaded is subtracted, the whole allocation is released (including the part not loaded, which becomes available again) and a Shipped row is left, linked to the shipment. A close cannot be undone. See From order to departure.

The tablet scanner has a picking screen that verifies the product and records what was picked, but it does not deduct either: only the close does.

Cross-dock

Cross-dock goods do pass through inventory, if only for minutes: their receipt adds them at the virtual location XD-STAGE, the system allocates them to the same cross-dock's shipment and the close takes them out. XD-STAGE is not pickable, so no regular shipment can take those goods. See Dock, yard and cross-dock.

Correcting or undoing a document

What you want to doWhat happens to the goodsWhen it is not allowed
Edit a confirmed receiptThe system compares the old capture with the new one per product, location and lot, and applies only the difference as an adjustment (reason receipt_edit, with the reason you wrote in the notes). The receipt stays Confirmed.If those goods were already allocated, shipped or moved.
Cancel a confirmed receiptSubtracts what the receipt added (reason receipt_cancel), deletes its uninvoiced charges and sets the notice back to Sent.If any charge was already invoiced or the goods are no longer intact.
Correct the customer of a confirmed receiptThe lines move to the new customer with the same quantity; a zero adjustment is left as a record.See Cancel or correct a receipt.
Release the allocation of a shipmentWhat was reserved becomes available; the shipment goes back to Confirmed.On cross-dock shipments.
Cancel a shipmentNothing, because it requires no allocation.If it is Loading or Shipped, or still has an allocation: release it first.
Return goods from a closed shipmentThere is no reversal of the close. Goods that come back enter with a new receipt (or an adjustment, if there is no document).Always: the close is final. See Cancel, release the allocation or return a shipment.

Where each movement is recorded

There are three places, and each answers a different question:

ScreenWhat it showsWhat it does not show
Line history (the line's clock on the stock screen)Everything that touched that line: Received, Shipped, Adjustment, Transfer and Status change, with before, after, source and user.Allocations. And on lot-tracked lines it can omit adjustments or status changes that did not store the lot.
Adjustments History (Inventory › Adjustments)Every adjustment in the warehouse: manual ones and those the system creates (cycle count, receipt edit or cancel, customer correction).Transfers, status changes, normal receipts and shipments.
Audit log (Reports › Audit log, Read Audit Reports permission)Changes to documents: receipts, shipments, advance ship notices, cross-docks, customers, templates and identity corrections.No inventory movement at all: adjustments, transfers and status changes do not reach it.
Adjustments History with When, SKU, Location, Before, Delta, After, Reason and By columns; several rows with reason receipt_edit and one with reason Found
The Adjustments History mixes manual adjustments (reason Found) with system ones (receipt_edit, when a confirmed receipt is edited).
Audit log report with counters per module (Receipts, Shipments, Receiving, Crossdock, Document templates, ASN, Clients), filters and a table of changes with date, user, module, action and document
The audit log counts document changes per module. There is no inventory module: adjustments are checked in their own history.
Important: in the portal, the customer's available column today only subtracts what is reserved: damaged goods or goods in other blocked statuses show as available to them. If the customer asks why something they see as available is not shipping, check that line's status columns.

The customer sees none of the three: they see their inventory in the portal and in the reports you send them. See Inventory, KPIs, warehouse and language in the portal and WMS reports.

Example: the life of one SKU over two weeks

Northern Trading Co. stores SKU CN-1001 (cases of 12; the base unit is the piece). This is how its line at location A-01-01 changes:

DayActionTotalReservedDamagedAvailableWhere you see it
September 1Luis Pérez confirms receipt CNORTE-2026-00021, captured in pieces: 120 received, 6 of them damaged.12006114History: Received +120
September 2Transfer of 24 pieces to B-02-03 (fast-moving rack).960690History: Transfer −24 (and +24 at B-02-03)
September 3Status change: 6 pieces from Available to Quarantine, reason "lot review".9606 (+6 in quarantine)84History: Status change
September 8Shipment SH-CNORTE-2026-00009 for 60 pieces is confirmed and allocated.96606 (+6)24The shipment's allocation list
September 9The operator loads 58; Ana López closes the shipment.3806 (+6)26History: Shipped −58
September 12Cycle count: 37 counted. Carlos Ruiz approves.3706 (+6)25Adjustments History: Cycle Count −1
September 15The customer authorizes destroying the damaged goods: status change from Damaged to Available and an adjustment of −6 with reason Damaged.3100 (+6)25History: Status change and Adjustment

Look at September 9: 60 were allocated and 58 loaded. The close subtracted 58 and released all 60 from the allocation, so the 2 that did not go on the truck became available again by themselves. And September 15: a negative adjustment cannot touch what is in a blocked status, which is why the damaged goods were first returned to available.

What can go wrong at each step

We unloaded, but the goods do not show up.

The receipt is not confirmed. In Captured it is waiting for a supervisor's review. Also check that the warehouse has the inventory module.

The goods exist but the shipment does not allocate them.

They are in a blocked status, expired, at a non-pickable or staging location, or belong to another customer. Check the line's status columns and the location.

I cannot transfer or adjust a line.

The quantity you ask for exceeds what is available (transfer) or would leave the total below what is committed (adjustment). Find which shipment holds the allocation and release it, or return the blocked goods to available.

It will not let me edit or cancel a confirmed receipt.

Its goods were already allocated, shipped or moved, or one of its charges is already invoiced. Correct with an adjustment and explain in the notes which receipt it belongs to.

After approving a count, the quantity is wrong.

There were movements at those locations between generating the plan and approving it. Check the line history and compensate with an adjustment.

There is reserved quantity no shipment recognizes.

Someone used Reserved in a status change. Return it with another status change from Reserved to Available.

Good practices

  • Confirm receipts on the same day and with the actual arrival date: storage and aging come from it.
  • Use the right action: a transfer to relocate, a status change for what cannot be shipped, an adjustment only when the physical count does not match.
  • Mark damaged goods as soon as you find them, so no shipment allocates them.
  • Write notes someone else can verify: document, photo, person.
  • Review the Adjustments History every week; if an SKU or a location keeps appearing, there is a process problem.
  • To explain a difference to the customer, start with the line history: the first row where After goes down says which document or which person did it.

Frequently asked questions

Where is the put-away step?

It does not exist as a separate step. The location is captured on the receipt and the goods are born there. If they move later, it is a transfer.

Why doesn't an adjustment appear in the audit log?

The audit log records document changes, not inventory movements. Adjustments are in the Adjustments History; transfers and status changes, in each line's history.

Why is stock reserved if nobody has loaded it?

Allocating is not loading: it is setting goods aside for a confirmed shipment. The allocation goes away when the shipment is closed or when it is released from its screen.

Why doesn't the total match what is available?

Because the total includes what is reserved, damaged and in any blocked status. Available is what remains.

Can the API or EDI move stock?

No. They only create documents (advance ship notices and shipments) and query stock. Goods move when someone confirms the receipt or closes the shipment in the warehouse. See Integrations: API and EDI in operations.

Need help?

If something did not work as expected, our support team can help you.

Was this article helpful?

Share: