Linbis Help Center
Warehouse

Import warehouse receipts from a spreadsheet

The seven-step Import Warehouse Receipts wizard — Received versus Expected (pre-alert) mode, owner matching, auto-created products, and the confirm-arrival reconciliation grid.

Verified: Jul 25, 2026 7 min read Warehouse

Import Warehouse Receipts — reached from Import on the Receipts header — creates many receipts at once from one spreadsheet. Rows that share the same Receipt Number become one receipt with several cargo lines.

The stepper has seven steps — Select type, Upload file, Map fields, Validate references, Preview, Create, Done.

1. Select type — Received or Expected

"Are the goods already here?" decides how each receipt is born, and it has a billing consequence:

ModeWhat it createsStorage billing
Received (on the dock)Cargo on hand now — the receipt and its lines are born received and storedStorage accrues from today
Expected (pre-alert / ASN)Cargo still on its way — the receipt is born pending, its lines marked incomingNo storage billing until the goods arrive

Use Expected for a pre-alert or ASN a customer sends ahead of the truck: the cargo is on the books and visible on the receipt, and it costs the customer nothing while it is still in transit. When it lands you confirm the real counts — see Confirm arrival.

A Warehouse must be picked here as well; every receipt in the run lands in that warehouse.

2. Upload file

  • Download template gives you the exact column names for the mode you picked, plus one example row. Expected mode has one extra column, Expected Pieces.
  • Drag and drop a .csv or .xlsx file (Excel .xls is accepted too), or click to browse. Only the first sheet is read, row 1 is the header row, blank rows are dropped, and every cell is trimmed — a CSV and an Excel file with the same data import identically.
  • Limits: 10 MB per file and 500 rows per import; a larger file blocks Next and asks you to split it.

3. Map fields

Columns are auto-mapped by name and can be re-pointed by hand. The fields split by grain:

TableFields
Receipt fields (one per receipt)Receipt Number, Owner, Warehouse, Bin, Shipment Reference, Carrier, Arrival Date, Notes — plus Expected Pieces in Expected mode
Cargo line fields (per row)SKU, Description, Barcode, Serial Number, Lot Number, Expiration Date, Pieces, Package Type, Length / Width / Height, Weight (+ Weight UOM), Volume (+ Volume UOM)

Receipt Number, Owner, Description and Pieces are required; while any of them is unmapped an amber banner names it and Next stays disabled. A mapping can be saved as a named template and reloaded for the next file.

As with shipping orders, the receipt number in your sheet is kept verbatim as the receipt's reference — and it is the key Linbis deduplicates on, so re-importing the same file skips the receipts it already created. The WR receipt number itself is minted by Linbis and can never come from a spreadsheet.

Expected Pieces is derived when the column is missing

Expected Pieces is the receipt-level total the arrival check later measures against. It is optional: when the column is not mapped (or is blank), Linbis derives it as the sum of the receipt's line pieces — over exactly the lines it is about to create, counting a blank piece cell as 1. A column you map explicitly always wins. A receipt whose lines total zero pieces gets no expected total at all, so no phantom cap is applied later.

4. Validate references

Check references runs a dry run — grouping and lookups only, nothing is written. Findings are grouped by kind, and each kind has its own policy:

ReferencePolicy
OwnerMatch only, and blocking. An owner that does not match an existing account must be picked by hand before you can continue. Linbis never guesses it and never auto-creates it — the owner is the storage-billing key, so an invented account would bill the wrong customer, or nobody.
SKU / productAuto-created. A SKU that is not in the product catalog yet is shown with a "will create" chip, and the product record is created during the import. This is never an error.
BinSoft warning. A bin code that does not match a location in the chosen warehouse is reported, but the import still runs — the cargo simply is not slotted to that location. Fix the code in Zones and locations, or put the cargo away afterward.
Shipment referenceSoft, match only. An unmatched shipment number leaves the receipt unlinked; no shipment is created.

For owners you search the account catalog and pick the right record. The pick rewrites that value in every row that uses it, so it resolves on the next Re-check.

5. Preview

Counts the receipts and cargo lines the run will create, how many will be skipped because their receipt number already exists, and how many new products will be auto-created.

6. Create

The import runs as a background job — you can leave the page. The screen polls it and shows created / updated / skipped / failed counts with a per-group result table (worst first), each row carrying its outcome pill, the receipt number, the spreadsheet row numbers, and the reason.

7. Done

  • Received mode: the cargo is on hand and storage accrues from today; the panel links to Inventory and back to Receipts.
  • Expected mode: the receipts are pending arrival with no storage billing until the goods arrive, and the panel offers Confirm arrival.

Confirm arrival

The reconciliation grid lives on the same route with ?mode=confirm — the Confirm arrival button on the Done step opens it. Add &receiptId= and a receipt's id to scope it to that one receipt. It records what actually turned up against what was expected.

One receipt at a time (with a receiptId): every expected line is listed with its expected pieces, a Received box, a live exact / shortage / overage badge, and a Discrepancy note field. If the counted total climbs above the receipt's expected total, a red warning appears before you submit — the server rejects rows over that cap. Lines carrying neither a SKU nor a barcode cannot be matched: they are greyed out and nothing is written for them. A receipt with no expected lines shows "Nothing expected on this receipt" and suggests importing it in Received mode instead.

Many receipts from a counts file (no receiptId): pick the warehouse, then upload a CSV or Excel file with Receipt Number, SKU or Barcode, Received Pieces, and an optional Discrepancy Note. The columns auto-map and can be re-pointed inline. Rows missing a receipt number, missing both SKU and barcode, or carrying an unusable piece count are listed under "Unmatched rows — nothing will be written for these" before you submit. The receipt number may be either the WR number Linbis minted or the original reference from the pre-alert.

Submitting runs another background job, capped at 500 rows. Each row comes back with one outcome:

OutcomeMeaning
matched exactThe counted pieces equal the expected pieces on that line
shortageFewer pieces arrived than expected — recorded, with your discrepancy note
overageMore pieces arrived than expected — recorded, not rejected
unmatchedNo expected line on that receipt matched the SKU or barcode — nothing is written; fix the key and resubmit just those rows
over cap — rejectedThe running total for that receipt would exceed its expected total — nothing is written for the row

Confirmed lines move from incoming to received, and the receipt re-derives itself from pending to partial to received as the counts land. Storage accrues once the cargo is actually put on hand, so an Expected receipt never bills the customer for the time its cargo spent in transit.

Last verified — copy: Jul 25, 2026