Manage spare parts, stock levels, and consumption
Register spare parts
Each part gets a reference (PART-1, etc.) and tracks stock, costs, and usage.
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.
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.
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.
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.
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.
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.
Track quantities and movements
FreeMaint maintains real-time counts with a complete audit trail of every movement.
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.
Perform regular stock audits comparing physical counts to system records.
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.
Automatic notifications when stock is low
When a part drops below its minimum threshold, FreeMaint sends notifications.
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.
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.)
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.
Correct inventory quantities
Correct discrepancies between physical stock and system records.
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.
Schedule regular audits: monthly for high-value parts, quarterly for others.
Organize inventory
Categories help organize parts for browsing, filtering, and reporting.
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.
Admins create/edit categories in Settings > Categories > Parts.
Define categories matching your maintenance domains for meaningful analytics.
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.
Track financial value
Total inventory value = sum of (unit cost x quantity) for all parts.
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.
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.
Visible on the Inventory dashboard and Financial Reports. Requires INVENTORY_VIEW_VALUE permission.
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.
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.
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.
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.
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.
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
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
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.
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.
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.
Kits save time on recurring jobs โ add one line instead of ten.
Kits save time on recurring jobs โ add one line instead of ten.
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.).
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.
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.
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.
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.
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.