Lots, serial numbers and variants
Turn on lot control, serial-number control and variants on the product record, capture them when receiving a purchase, and later look up what came in, when and where.
Mosce ERP has three optional controls that you turn on product by product: variants (size, color, presentation), lots (with their expiration date) and serial numbers (one per unit). All three work the same way underneath: they change what you are asked for when receiving a purchase, and in exchange they let you look up afterwards what came in. None of the three changes the sale.
Reading time: ~7 min
When to use this
Turn on one of these controls when the answer to "which one exactly?" matters to you at the moment merchandise arrives:
- Variants - you sell the same product in different sizes, colors, flavors or presentations, and you want each receipt to say which one it was.
- Lots - you work with food, medicine, cosmetics or chemical supplies that arrive in lots with an expiration date, and you need to know what is about to expire.
- Serial numbers - you sell equipment identified unit by unit (IMEI, VIN, manufacturer serial number) and you want a record of which units came in and with which purchase.
If you need none of those three things, turn nothing on: regular inventory by product, warehouse and section already covers most businesses. See Inventory and stock.
What to understand first
The three controls change the inflow, not the outflow. This is the idea that prevents most of the confusion:
| When receiving a purchase | When selling | |
|---|---|---|
| Variants | Choosing the variant is required | No variant is chosen |
| Lots | The lot number is required (expiration is optional) | No lot is chosen |
| Serial numbers | One number per unit received is required | No unit is chosen |
As a result, stock stays a single balance per product and section. The variant, the lot and the serial number identify the inflow movement; they do not split inventory into separate balances. And because the sale never touches lots or serials, the quantity you see on a lot is what came in minus what was voided from that receipt, never "what is left to sell". This matters when reading the expiration report: it tells you which lots you received that are close to expiring, not how many units of that lot are still on the shelf.
There is also no automatic outflow by expiration yet (what is usually called "first to expire, first out"): pulling expired merchandise is done by hand with an inventory adjustment using the Expiration reason. See Batch inventory adjustments.
Before you start
- You need at least one warehouse with an active section. See Warehouses.
- The product must be of type Product (services do not carry inventory).
- Permissions: turning on the switches on the record requires
products:update; creating variants requiresproducts:create; receiving merchandise requirespurchases:receive; opening the reports requiresinventory:read. - All three controls are available on every plan. Nothing extra needs to be contracted.
- Turn them on before receiving the merchandise you want to track: what already came in without a lot or serial cannot be completed retroactively.
Step by step
1. Turn on the control on the product record
- Go to Operations → Products and open the product (or create it).
- Scroll down to the Inventory section of the form. The three switches are there:
- Handle variants
- Track lots
- Track serial numbers
- Turn on the one you need and save.
They are independent of each other: you can turn on one, two or all three. From that moment on, every purchase receipt for that product will ask for the corresponding information.
2. Variants: create them before receiving
With Handle variants on, a Variants button appears on the product detail that opens the Product variants screen.
- Press Create variant.
- Type the Name (required), for example
Size M / Red. - The SKU is optional.
- Save and repeat for each variant.
Rules the system enforces:
- Two variants with the same name are not allowed within the same product.
- Two identical SKUs are not allowed anywhere in the business.
- A variant you no longer sell is deactivated, not deleted: it stops appearing when receiving new purchases, but it is kept because previous purchases reference it.
Create the variants before the first receipt. If the product handles variants and none has been created yet, the receipt form will have nothing to offer you and you will not be able to complete the inflow.
To turn the switch back off, the product must have no variants created at all, not even deactivated ones. If you try to turn it off while variants exist, the system blocks it and tells you how many there are, with a link to review them. This is deliberate: because variants are never fully deleted, turning the mode off would leave historical movements pointing at variants the record no longer recognizes.
Lots and serials do not have that restriction: you can turn them off whenever you want. Future receipts stop asking for them, and what is already recorded is kept and stays just as queryable.
3. Capture the lot, serial or variant when receiving the purchase
Everything is captured in one place: the Receive merchandise screen of the purchase order (see Purchases). On each line, alongside the quantity and the destination section, you will see:
- Variant - a selector with the active variants. Required.
- Lot number - free text; use the one printed by the supplier. Required. Next to it, Expiration date, optional.
- Serial numbers - one number per line (or separated by commas). Required, and the count of numbers must match the quantity received: receiving 50 units means capturing 50 numbers. The system rejects duplicates and accepts up to 1,000 numbers per line.
When you confirm the receipt, each piece of data is attached to the inflow movement and to the receipt line, permanently.
If the same lot number arrives again on another receipt, the system reuses the existing lot instead of creating a new one, so the history is not split. In that case the lot's record keeps the expiration date of the first receipt as its historical value, while each receipt separately stores the date you captured that time. When the purchase generates an electronic tax voucher, the date reported is the one from that receipt, not the one on the record.
4. Look up what was recorded
There are three lookups, all protected by the inventory:read permission:
| Lookup | What it answers |
|---|---|
| Stock nearing expiration | Which lots expire within the horizon you set |
| Lot traceability | How much of that lot came in, where it is, and what movements it had |
| Serial-number traceability | The current status of that unit and its movements |
How they open today. These three lookups do not yet have their own entry in the side menu, nor a lot or serial search box. You open them by typing their address in the browser, starting from your business's address in Mosce ERP:
- Expirations:
/inventory/reports/expiring- A lot:
/inventory/reports/lot/LOT-2026-001- A serial:
/inventory/reports/serial/357812104451236Bookmark them if you use them often.
Stock nearing expiration has a single filter, Days ahead (30 by default). Two clarifications when reading it: it also includes lots that have already expired, not just those about to, and it shows up to 500 rows. Each row carries Product, Lot, expiration date, Quantity and Location.
Lot traceability shows one card per product carrying that lot number, with the total on hand, the stock breakdown by warehouse and section, and the list of the lot's movements. Serial-number traceability shows the unit's Status and its movements. In practice the status will only ever be Available (when received) or Returned (if the receipt it came in with is voided), because the sale does not mark units.
In the movement tables, the Type column shows the technical movement code (for example PURCHASE_ADDITION) instead of a friendly label. It is cosmetic: the rest of the row (date, quantity, reason) reads normally.
Expected result
- Every receipt of a tracked product leaves a record of the variant, the lot or the serial numbers that came in.
- You know which lots are about to expire and can pull them with an adjustment before it becomes a problem.
- You can search a specific unit by its serial number and see where it has been.
- Your inventory stays a simple balance per product and section, without complicating the day-to-day sale.
Common errors
You must enter the lot number- the product tracks lots and you left the field empty on one of the receipt lines.The count of serial numbers does not match the quantity received- capture exactly one number per unit. If you receive 12, it has to be 12 numbers.Duplicate serial number- that number is already registered in your business. Check whether the unit already came in on an earlier receipt.Maximum 1,000 serial numbers per line- split the receipt into several lines or several partial receipts.You must select a variant- the product handles variants and it is missing on that line.The variant is not active- the variant was deactivated. Reactivate it from the variants screen or choose another one.Variant mode cannot be turned off- the product already has variants created. They cannot be deleted, so the switch stays on.- "The expiration report shows a lot I already sold" - that is expected: the sale does not deduct from the lot. If the lot is no longer physically there, write it off with an adjustment using the Expiration reason.
- "I turned lots on and the old purchases have no number" - the controls apply from now on. What was received earlier cannot be completed retroactively.
Related
- Products - where the three switches live.
- Purchases - where the lot, serial and variant are captured.
- Inventory and stock - how the balance and the kardex read.
- Batch inventory adjustments - how to write off expired merchandise.
- Warehouses - warehouses and sections the merchandise goes into.
Purchases
Create purchase orders, batch-edit products, send the order to the supplier by email (optional), receive the goods (partial or full), void a receipt, and link the supplier invoice.
Expenses
Record operating expenses, link them to an expense account and a cost center, and let Mosce ERP generate the entry and the payment automatically.