FreeMaint
FeaturesPricing
DocsGuides & API referenceBlogPlaybooks & product updatesComparisonFreeMaint vs the alternativesChangelogWhat's new
AffiliatesEarn recurring commissionServicesSetup, migration & training
Contact
ENSign inSign up

Product

FeaturesPricing

Resources

DocsBlogComparisonChangelog

Partnership

AffiliatesServices

Account

ContactSign in
FreeMaint

Free your maintenance

Product

FeaturesPricingComparisonChangelogSign up

Resources

BlogDocumentationResearchSolutionsIndustriesFree templates

Company

AboutServicesAffiliatesContact

Legal

PrivacyTermsRefund PolicyExport Compliance
FreeMaint ยฉ 2026 ยท All rights reserved.GDPR & LGPD CompliantMobile app
Back to Documentation

FreeMaint CMMS

Inventory & Parts

Inventory & Parts

Manage spare parts, stock levels, and consumption

Adding Parts

Register spare parts

Each part gets a reference (PART-1, etc.) and tracks stock, costs, and usage.

Name
Descriptive name
Part Number
Supplier SKU
Category
Mechanical, Electrical, etc.
Quantity
Current stock
Min Quantity
Low-stock threshold
Unit Cost
Price per unit
Location
Storage location
Barcode
Scanning ID

Part Fields

Name
Descriptive name
Part Number
Supplier SKU
Category
Mechanical, Electrical, etc.
Quantity
Current stock
Min Quantity
Low-stock threshold
Unit Cost
Price per unit
Location
Storage location
Barcode
Scanning ID

Finding a Part

Use the search box on the Parts page to find a part by its name, part number, reference, or barcode โ€” or by the name or serial number of a machine it is linked to. Typing a machine name returns every part attached to that machine.

Set min quantities for critical parts to get automatic low-stock alerts.


Importing Parts in Bulk

Load your whole spare-parts catalogue and stock from one spreadsheet

If you are starting from a spreadsheet, you do not have to key parts in one at a time. The Parts page accepts a CSV or Excel file and creates or updates hundreds of records in a single pass.

Name
The only required column. Everything else is optional.
Part Number
Your reference for the part. It is also how the importer recognises a part you already have, so a corrected sheet updates it instead of creating a duplicate.
Quantity and Min Quantity
On-hand stock, and the level at which a low-stock alert is raised.
Unit Cost and Sale Price
What you pay for the part, and what you charge when parts are billed to a customer.
Location (Name), Category (Name), Vendor (Name)
Matched by name against records you already have.
Storage Location
Free text for the shelf or bin, such as "Aisle A-5". This is not a warehouse.

What you can load

Name
The only required column. Everything else is optional.
Part Number
Your reference for the part. It is also how the importer recognises a part you already have, so a corrected sheet updates it instead of creating a duplicate.
Quantity and Min Quantity
On-hand stock, and the level at which a low-stock alert is raised.
Unit Cost and Sale Price
What you pay for the part, and what you charge when parts are billed to a customer.
Location (Name), Category (Name), Vendor (Name)
Matched by name against records you already have.
Storage Location
Free text for the shelf or bin, such as "Aisle A-5". This is not a warehouse.

Limits

  • 8,000 rows and 25 MB per file.
  • No limit on the total number of parts โ€” split a larger sheet and upload the pieces one after another.
  • Each import adds to what is already there.

Create, update, or both

Before the import runs you choose what should happen to rows that match a part you already have: create new records only, update existing ones only, or update the matches and create the rest. Because matching uses the Part Number, you can export your parts, correct them in Excel and re-import the same sheet without creating duplicates.

Running an import

  1. Go to Inventory, then Parts.
  2. Click Import at the top of the page.
  3. Download the Excel or CSV template from the "Need a template?" line, or drop in a file you already have.
  4. Match each column of your file to a FreeMaint field. Columns you do not need can be skipped.
  5. Review the preview, choose how the file should be applied, and start the import.

Using the template

The Excel template arrives with the right headers already in place. Row 1 holds the column names, row 2 shows the expected type, and row 3 shows an example. Enter your data from row 4 down โ€” rows 2 and 3 are hints and are ignored when you import.

Running an import needs the "import parts" permission, which Admin, Manager and Warehouse Manager have by default. If the Import button returns an error, ask an administrator to check your role.

Stock spread over several warehouses

Filling in both Quantity and Location (Name) records that quantity at that location, and the part's overall on-hand becomes the sum of its locations. That is what lets you load one file per site.

  1. Import your first site, with its quantities and its warehouse in the Location column.
  2. Import each further site the same way, in "Update existing & create the rest" mode. Each file adds its own site's stock instead of replacing the total.
  3. Leave the Location column empty if you keep a single overall figure instead โ€” the Quantity column then updates that figure directly.

Warning:

In update mode, a blank cell leaves the current value unchanged rather than clearing it. To clear Description, Part Number, Manufacturer or Storage Location, type NONE in the cell; NONE in the Location (Name) column detaches the part from its location. On a new part, NONE is ignored.


Stock Management

Track quantities and movements

FreeMaint maintains real-time counts with a complete audit trail of every movement.

On Hand
Current physical stock. Parts allocated to open work orders are already deducted, so this value matches your warehouse.
On Order
Quantities still expected on open purchase orders (Pending, Approved, Ordered, Partially received): ordered minus already received. It drops with each delivery you receive.
Projected Available
On Hand + On Order. The forward-looking number to consult before deciding to reorder.

Stock Breakdown

Every part page surfaces three live values: On Hand (your current stock), On Order (what is still expected on open purchase orders) and Projected Available (On Hand + On Order). On Order only counts what has not arrived yet: when an order is delivered in part, the delivered quantity moves to On Hand and only the remainder stays on order. There is no manual field to edit โ€” the breakdown always reflects your purchase orders.

On Hand
Current physical stock. Parts allocated to open work orders are already deducted, so this value matches your warehouse.
On Order
Quantities still expected on open purchase orders (Pending, Approved, Ordered, Partially received): ordered minus already received. It drops with each delivery you receive.
Projected Available
On Hand + On Order. The forward-looking number to consult before deciding to reorder.

Perform regular stock audits comparing physical counts to system records.

PURCHASE
Stock from PO receipt
WORK_ORDER
Parts used in WOs
ADJUSTMENT
Manual correction
TRANSFER
Between locations
RETURN
Parts returned from WOs
SCRAP
Damaged/expired
INITIAL
Opening stock
CORRECTION
Audit correction

Movement Types

PURCHASE
Stock from PO receipt
WORK_ORDER
Parts used in WOs
ADJUSTMENT
Manual correction
TRANSFER
Between locations
RETURN
Parts returned from WOs
SCRAP
Damaged/expired
INITIAL
Opening stock
CORRECTION
Audit correction

Multiple warehouses / storerooms

If the same part is stocked in several warehouses or storerooms with different quantities (for example cement: 5 bags in the Infra Warehouse and 10 bags in the Electrical Warehouse), create the part once and track its stock per location โ€” do not create the part twice. Start per-location tracking by creating a Stock Transfer into each warehouse (Inventory > Stock Transfers), or by adjusting the per-location stock. The part then shows a โ€œStock by locationโ€ breakdown on its detail page, and its global quantity stays equal to the sum of all locations. To give each warehouse its own responsible section, set the manager on each Location. Per-warehouse stock transfers are available on the Business plan.


Low Stock Alerts

Automatic notifications when stock is low

When a part drops below its minimum threshold, FreeMaint sends notifications.

Ordering from this page

Filter by supplier to see only what one vendor owes you, then tick the rows you want and create a single requisition for the lot. It opens as a draft, so you can still change quantities or drop a line before turning it into a purchase order. Quantities are proposed from each part's reorder rule, and the supplier travels with each line so the draft splits cleanly per vendor.

Setting Up

  1. Set 'Min Quantity' on each part
  2. Enable inventory notifications in Settings
  3. Choose recipients (ADMIN, WAREHOUSE_MANAGER, BUYER)

The three cards at the top count every part below its threshold across the whole company, not just the rows on screen. The list itself is paginated โ€” use Previous / Next to reach the rest.

Set minimums based on lead times. If a part takes 2 weeks and you use 10/week, set minimum to 20+.

For references you track for purchasing or asset BOMs but never keep on hand: open the part, go to Settings and enable "Non-stock item". It stays in the database with its full history but never triggers low-stock or out-of-stock warnings, even at zero quantity. (To only temporarily silence a normal part, select rows in the Parts list and click "Deactivate selection"; toggle "Show inactive" to restore.)


Consumption Tracking

Analyze part usage patterns

Track which parts are used most, on which assets, and by which work orders.

Use history to forecast needs. 50 filters/month used = order accordingly.

What Is Tracked

  • Parts used per WO with quantities
  • Parts returned (unused)
  • Net consumption = used - returned
  • Trends over time
  • Top-consumed parts

Stock Adjustments

Correct inventory quantities

Correct discrepancies between physical stock and system records.

Recording where the goods came from

In the advanced form you can record the supplier and the invoice or delivery-note number for this particular movement. Both are optional and both are stored on the stock movement itself, so the history shows who supplied these goods and under which document โ€” which is what an audit reads. The supplier is not filled in for you from the part: a partโ€™s default supplier is right only until you buy the same part elsewhere.

Making Adjustments

  1. Open part detail page
  2. Click 'Adjust Stock'
  3. Enter correct quantity
  4. Select reason
  5. Add notes
  6. Save โ€” movement record created

Schedule regular audits: monthly for high-value parts, quarterly for others.


Part Categories

Organize inventory

Categories help organize parts for browsing, filtering, and reporting.

Classify several parts at once

In Inventory โ€บ Parts, tick the parts to classify, then click "Bulk edit" โ€” in the table view it sits in the bar that appears above the selected rows. Choose a category, a location and/or a storage location: only the fields you fill in change, the others are left as they are. Stock quantities never move with this action (use Stock Transfers for that), and the supplier is still edited part by part.

Managing Categories

Admins create/edit categories in Settings > Categories > Parts.

Define categories matching your maintenance domains for meaningful analytics.

Kind of spare โ†’ Category
Electrical, Pneumatic, Hydraulic, Mechanical, Consumablesโ€ฆ This is the axis with many values, so it belongs in the category: it is filterable, groups the tree view, and round-trips through export and import.
Criticality โ†’ Critical Part checkbox
Tick "Critical Part" on the part form. Critical parts show a red Critical badge in the list, can be filtered from the Critical Part dropdown in the filter bar, and are included in the export and import template so you can flag a whole inventory from Excel. Free on every plan.
A third axis โ†’ Custom field (Business)
If you need more, an Admin can add a Select custom field on entity = Part in Company Settings > Custom Fields. Custom fields are part of the Business plan.

One Category per Part โ€” and How to Classify on Two Axes

A part holds exactly one category, and categories cannot be nested. That is rarely a problem, because the two things people usually want to record โ€” what kind of spare it is, and how critical it is โ€” are not both categories. Use the category for the kind of spare, and the built-in Critical Part checkbox for criticality.

Kind of spare โ†’ Category
Electrical, Pneumatic, Hydraulic, Mechanical, Consumablesโ€ฆ This is the axis with many values, so it belongs in the category: it is filterable, groups the tree view, and round-trips through export and import.
Criticality โ†’ Critical Part checkbox
Tick "Critical Part" on the part form. Critical parts show a red Critical badge in the list, can be filtered from the Critical Part dropdown in the filter bar, and are included in the export and import template so you can flag a whole inventory from Excel. Free on every plan.
A third axis โ†’ Custom field (Business)
If you need more, an Admin can add a Select custom field on entity = Part in Company Settings > Custom Fields. Custom fields are part of the Business plan.

Inventory Costs

Track financial value

Total inventory value = sum of (unit cost x quantity) for all parts.

Calculate unit cost from a total

Next to the Unit cost field, use 'Calculate from total' to type a total price and a quantity (already pre-filled with the pack size when you set one). The unit cost is filled in for you, so you never divide by hand.

Important:

Pricing data requires INVENTORY_VIEW_PRICES and INVENTORY_VIEW_VALUE permissions.

Buying in packs (drums, boxes, spools)

If you buy a part in a larger pack but keep stock in a smaller unit โ€” like a 400-liter drum of oil counted in liters โ€” open the part, set the Unit of measure to your stock unit (Liter), then fill in a Purchase unit (Drum) and a Pack size (400). On a purchase order, switch the line to 'Order by pack' to enter the number of drums and the price per drum: the system records the cost per liter automatically and keeps the per-drum total for your financial control. Costs are always stored per stock unit.

Purchase units and the cost calculator are available on every plan.

Inventory Valuation

Visible on the Inventory dashboard and Financial Reports. Requires INVENTORY_VIEW_VALUE permission.


Barcode Scanning for Parts

Speed up stock counts, picking and receiving with industry-standard barcodes and the mobile scanner

FreeMaint reads industry-standard 1D and 2D barcodes on parts. Scanning is supported from the mobile app's built-in scanner and from USB/Bluetooth hardware scanners on web. A scan jumps straight to the part record โ€” current stock, vendors, reorder point, recent consumption, and the option to pick or receive units. On a work order you can also add a part by scanning: open Add part on the work order, then scan into the Scan barcode field โ€” the matching part is selected automatically.

Bulk inventory counts

For a periodic stock count, work through your stockroom row by row, scanning each part and entering the on-hand quantity. FreeMaint shows the system quantity alongside, so discrepancies are obvious. Variances are logged with a reason code and feed the consumption report.

  1. {"title":"Start a count","description":"Inventory โ†’ Counts โ†’ Start new count, scope to a location or category"}
  2. {"title":"Scan each part","description":"Walk the shelves; the count session keeps running totals"}
  3. {"title":"Reconcile","description":"Review variances, add reason codes (loss, breakage, error), close the count"}
EAN-13
13-digit European Article Number โ€” typical for retail-style packaged parts
EAN-8
8-digit short form for small packaging
UPC-A
12-digit Universal Product Code, common in North America
Code 128
Variable length alphanumeric โ€” the default for industrial pick labels
Code 39
Variable length alphanumeric, lower density โ€” common in older asset tags
QR Code
2D matrix code โ€” required if you want to encode a deep link or extra metadata
Data Matrix
Compact 2D code used in micro-marking and aerospace traceability

Supported barcode formats

FreeMaint accepts the most common industrial formats out of the box. There is no need to flip a setting โ€” the scanner library auto-detects the symbology.

EAN-13
13-digit European Article Number โ€” typical for retail-style packaged parts
EAN-8
8-digit short form for small packaging
UPC-A
12-digit Universal Product Code, common in North America
Code 128
Variable length alphanumeric โ€” the default for industrial pick labels
Code 39
Variable length alphanumeric, lower density โ€” common in older asset tags
QR Code
2D matrix code โ€” required if you want to encode a deep link or extra metadata
Data Matrix
Compact 2D code used in micro-marking and aerospace traceability

More than one barcode on a part

A stocked item often carries two codes โ€” the distributor's and the manufacturer's โ€” and recording only one means scanning stops working the day you change supplier. Under the barcode field you can add as many extra codes as you need. Scanning any of them finds the part, and so does typing any of them into the search box.

Phone / tablet camera
Built-in scanner in the FreeMaint mobile app โ€” no extra hardware, works on any modern device
Bluetooth ring scanners
Zebra RS5100, ProGlove MARK โ€” keep both hands free for picking
USB handheld scanners
Honeywell Voyager, Zebra DS2200 โ€” plug-and-play on desktop receiving stations
Fixed-mount scanners
For conveyor or pass-through stations โ€” use the REST API to feed scanned values

Compatible scanner hardware

On the web app, any HID-class scanner that emulates a keyboard works โ€” when the cursor is in the scan field, the scanner types the decoded value followed by Enter. On mobile, the device camera is the scanner; no extra hardware required.

Phone / tablet camera
Built-in scanner in the FreeMaint mobile app โ€” no extra hardware, works on any modern device
Bluetooth ring scanners
Zebra RS5100, ProGlove MARK โ€” keep both hands free for picking
USB handheld scanners
Honeywell Voyager, Zebra DS2200 โ€” plug-and-play on desktop receiving stations
Fixed-mount scanners
For conveyor or pass-through stations โ€” use the REST API to feed scanned values

Print barcode labels with the part's human-readable reference (PART-N) printed beside the barcode. If the barcode gets scratched, technicians can still type the reference.

Issue: Scanner reads but the part is not found

Solution: Open Inventory โ†’ Parts and search by the scanned value. The barcode may not be stored on the part record yet โ€” edit the part and paste it into the Barcode field.

Issue: EAN-13 reads as a number then errors

Solution: Excel-imported EAN-13s sometimes lose leading zeros. Re-import the part with the barcode field declared as text in the CSV.

Issue: Low light kills the camera scanner

Solution: Enable torch (flash) in the scanner overlay; for production environments, prefer a Bluetooth ring scanner

Common scanning issues

Issue: Scanner reads but the part is not found

Solution: Open Inventory โ†’ Parts and search by the scanned value. The barcode may not be stored on the part record yet โ€” edit the part and paste it into the Barcode field.

Issue: EAN-13 reads as a number then errors

Solution: Excel-imported EAN-13s sometimes lose leading zeros. Re-import the part with the barcode field declared as text in the CSV.

Issue: Low light kills the camera scanner

Solution: Enable torch (flash) in the scanner overlay; for production environments, prefer a Bluetooth ring scanner

Scanning workflow on mobile

  1. {"title":"Open the mobile app","description":"Sign in and ensure the device has camera permission"}
  2. {"title":"Tap the scanner icon","description":"Bottom navigation bar, central button"}
  3. {"title":"Frame the barcode","description":"Hold steady 5โ€“20 cm from the label; auto-capture fires when focused"}
  4. {"title":"Confirm the part","description":"The part record opens โ€” verify the name and location before acting"}
  5. {"title":"Pick or receive","description":"Adjust quantity, optionally link to a work order, save"}

Restricting inventory by location

Let each crew see only the parts in the storerooms they work from

By default every user who can read inventory sees every part in the company. If you run several crews out of one site โ€” HVAC, fleet, plant โ€” you can limit each one to the stock held in the locations their team works from.

Setting it up

  1. Create a location for each storeroom or shelf, under your warehouse: Locations > Add location.
  2. Give every part a location. Parts list > select rows > Assign location. Parts left without one stay visible to everyone.
  3. Grant each team its storeroom: People > Teams > open the team > 'Locations this team can access'.
  4. Set the members' role to a data visibility other than 'All company data': People > Roles > open the role > 'Data visibility'.
  5. Turn the feature on: Company settings > System > 'Inventory location scope'.

A part is visible if its location is granted, or if it has a stock record in a granted location โ€” even one currently at zero, so you can still see what needs reordering. Moving stock between storerooms with a transfer therefore changes who can see it.

Parts with no location remain visible to everyone. That is deliberate โ€” it stops a half-finished setup from emptying the inventory for your whole team. It also means the separation only takes effect once your parts are actually classified.

Administrators and managers, and anyone whose role data visibility is 'All company data', always see the full inventory. The restriction applies to the parts list, the part detail page, the parts tree, barcode lookups, search, exports and the low-stock alerts on the dashboard โ€” all at once, so they never disagree. Low-stock and out-of-stock notifications follow the same rule: a user only hears about the parts they can open.


Parts Kits

Reusable bundles of parts

A parts kit is a reusable bundle of parts you use together for a job โ€” for example a pump rebuild kit. Build it once, then add all of its parts to a work order or an asset in a single step.

To a work order
Adds the kit's parts to the work order and deducts them from inventory, just like adding parts one by one.
To an asset (Bill of Materials)
Lists the kit's parts as components of the asset. Stock is not affected โ€” a Bill of Materials describes what the machine is made of.

Applying a kit

To a work order
Adds the kit's parts to the work order and deducts them from inventory, just like adding parts one by one.
To an asset (Bill of Materials)
Lists the kit's parts as components of the asset. Stock is not affected โ€” a Bill of Materials describes what the machine is made of.

Creating a kit

  1. Go to Inventory and open Parts Kits.
  2. Click New Kit and give it a name.
  3. Add each part and the quantity included in the kit.
  4. Save the kit.

Kits save time on recurring jobs โ€” add one line instead of ten.

Tip

Kits save time on recurring jobs โ€” add one line instead of ten.


Tools

Register durable tools, separate from consumable parts

Tools are the durable, returnable equipment you maintain WITH โ€” a welding machine, a torque wrench, a drill โ€” as opposed to consumable parts (screws, welding wire) which you track under Inventory > Parts. Each tool gets its own reference (TOOL-1, etc.).

Optional calibration

For measuring instruments (torque wrench, micrometer, multimeter), enable "Requires calibration" on the tool and set an interval. FreeMaint then tracks the next due date and reminds the assignee before it expires. Leave it off for tools that do not need calibration โ€” nothing changes for them.

Name
e.g. Welding machine, torque wrench
Photo
A photo of the tool โ€” see its condition and what it actually looks like (plus extra photos for detail)
Category
Hand Tools, Power Tools, Welding, Measuringโ€ฆ
Status
Available, In use, In repair, Retired
Location & assignee
Where the tool is and who holds it

Tool fields

Name
e.g. Welding machine, torque wrench
Photo
A photo of the tool โ€” see its condition and what it actually looks like (plus extra photos for detail)
Category
Hand Tools, Power Tools, Welding, Measuringโ€ฆ
Status
Available, In use, In repair, Retired
Location & assignee
Where the tool is and who holds it

QR codes on tools

A new tool gets its QR code when it is created. For an existing tool, open it and click "Generate QR Code" in the QR Code card (this needs permission to edit tools and the Business plan). The same card offers "Copy Link", "Download" (PNG) and "Print Label" (a PDF label with the name, reference and location). Stick the label on the tool or its case: scanning it with the mobile app shows "Open tool", and a scan without an account shows only its name, reference, status and location. The tool's own barcode is recognised too, and a code never changes once generated.

Availability

Viewing tools is available on every plan. Creating and editing tools (and logging calibration) requires the Business plan.

The tools list can be filtered by location; tools stored in its sub-locations are included.

Tool vs part

Register an item as a Tool when it is reused rather than consumed: it does not have a stock quantity and is not deducted when used on a job. Register screws, lubricants and other consumables as Parts instead.

Linking tools to a work order

Open a work order, go to the Parts tab, and use the "Tools used" section to attach the tools applied on the job. This records which tools were used without affecting any stock.


FreeMaint CMMS

ยฉ 2026 FreeMaint. All rights reserved.