This guide helps a municipality or public works department decide whether Odoo can run its warehouse, its tools and machines, its lending to residents and its vehicles, and what to test before committing. The short answer: Inventory, Maintenance and Fleet cover the internal side in standard Odoo, and the Barcode app adds scanning on a phone. Lending to the public is the part to test hardest. Odoo has no app built for lending, so compare the Rental app, which is built on sales orders, with a plain stock-transfer flow, using your own cases in a pilot.
It is written for warehouse keepers, operations managers and the people approving the purchase. Odoo's behavior was checked in the Odoo 19 and Odoo 20 source code, and plans and prices on odoo.com on 27 October 2026.
Before you start
- A list of what you manage: consumables counted by quantity, individual tools and machines you need to follow one by one, vehicles, and the items you lend to residents and associations.
- Your places: warehouses, depots, shelves and vans where things are kept.
- A user count in two parts: office staff who plan and approve, and warehouse staff who mostly scan.
- The systems Odoo must exchange data with, such as a planning tool, a resident portal or the finance system.
- Terms: Odoo Community is the free, open-source edition, and Enterprise is the paid edition with extra apps. A serial number identifies one physical unit, such as one brush cutter. A transfer is Odoo's record of goods moving from one location to another.
Which app covers which need
- Consumables, stock levels and storage locations: Inventory. Turn on Storage Locations in the Inventory settings to track shelves and bins. Turn on Lots & Serial Numbers and set a tool's tracking to By Unique Serial Number to follow each unit.
- Scanning on a phone: Barcode. Odoo's documentation describes using a smartphone as the scanner through the Odoo mobile app, with a Tap to Scan button that opens the camera.
- Tools and machines, defects and maintenance history: Maintenance. Each machine is an equipment record with a serial number. A defect becomes a corrective maintenance request, planned servicing becomes a preventive request that can repeat on a schedule, and the equipment keeps its request history. When Inventory is also installed, the equipment form gains a Used in location field and a shortcut to the matching serial number in Inventory.
- Vehicles: Fleet. Fleet records vehicles, odometer readings, services and contracts. A contract has an expiration date, and Fleet schedules a renewal reminder for the contract's Responsible person a set number of days before it, 30 by default.

Two limits matter for planning. First, a Maintenance equipment record and an Inventory serial number are separate records, linked only by a matching serial number, and the equipment's location is entered by hand: moving the tool in Inventory does not update it. Second, Fleet has no field dedicated to technical inspections. Recommendation: test recording each inspection as a contract with an expiration date, because that is the date Fleet already reminds you about. In Odoo 20, a piece of equipment can also be assigned to a vehicle, and the vehicle form shows the equipment assigned to it.

Community or Enterprise, and which plan
Inventory, Maintenance and Fleet are Community apps. Barcode and Rental are Enterprise only. On Odoo's own hosting, as listed on odoo.com on 27 October 2026 in Canadian dollars:
- One App Free: one app, with any apps it depends on, for unlimited users.
- Standard: all apps on Odoo Online, listed at CAD 44.00 per user per month on yearly billing, with a discounted CAD 35.20 for the first 12 months on the initial users.
- Custom: CAD 73.00 per user per month on yearly billing (CAD 57.90 in the first 12 months), adding Studio, multi-company, the external API and hosting on Odoo.sh or your own servers.
- Light User: CAD 12.90, quoted by an Odoo advisor. Odoo lists "Inventory Barcode Operator" among what a Light User can do, which may suit staff who only scan.
Integrations affect the plan. Odoo defines the external API as outside software that calls Odoo to read or change data, and lists it only on the Custom plan. A planning tool or resident portal that pushes requests into Odoo falls under that definition.
Lending to residents: Rental or stock transfers
Rental is an Enterprise app that requires Sales, so each loan is a rental order, a type of sales order, with pickup and return dates. The Pickup and Return actions record quantities per line, so a partial return can be recorded in several steps, and Odoo refuses to accept more back than was picked up. With Inventory installed, the serial numbers picked up and returned are recorded too. A charge is not required: the rental price starts from the product's sales price, which can be zero. Odoo 19 can add a late fee automatically when fines are set on the product, but that step no longer appears in the Odoo 20 Rental code. Rental has no field for damage. Odoo's documentation handles damage risk with a deposit, set up as a second product on the order and refunded with a credit note. Check whether quotation, customer and sales wording on the documents is acceptable for a public service.

A stock-transfer flow uses Inventory alone, so it also works in Community. A location for items on loan holds what is out, and each loan is a transfer to it with the borrower as the Contact and the serial numbers scanned. On a completed transfer, the Return button lets you enter the quantity coming back per line, so partial returns work. A transfer has no field meant for a due-back date. Recommendation: test creating the return transfer at loan time with its Scheduled Date set to the due date, because the Late filter then lists overdue returns. Damaged or missing items can be written off with Scrap, under Inventory > Operations > Adjustments, and sent for repair as a Maintenance request. Approval steps would need extra workflow in either approach.
Recommendation: if loans are occasional, free and need no booking calendar, start with transfers, because they add no app and no sales documents. If you take bookings in advance, charge fees or deposits, or lend at volume, prototype Rental as well.
What to test in a pilot
- Receive and count consumables into shelf locations, scanning with a phone.
- Follow one brush cutter from its Inventory serial number to its Maintenance record: report a defect, repair it, and read the history.
- Record a vehicle's odometer reading, a service and an inspection deadline, and confirm the reminder arrives.
- Run a loan end to end in both prototypes: booking, pickup, partial return, a damaged item, a missing item, an overdue loan and a cancellation after approval.
- Send one request from your planning tool or portal into Odoo, with a stable reference and a rule for cancellations.
Questions to settle before you commit
- Which system is the record of truth for each kind of data, and which direction does data flow?
- Do you need Barcode and Rental, and therefore Enterprise, or can a Community pilot answer the main questions first?
- Which staff could be Light Users, and does an advisor's quote confirm it?
- Do integrations require the Custom plan, and who maintains them after each upgrade?
- Is the sales vocabulary in Rental acceptable on documents residents receive?
Check your plan against this list
- Every need on your list is mapped to an app, or marked as a gap.
- Both lending prototypes were run with your own items and borrowers.
- The plan and user types were priced on odoo.com for your country.
- Each integration has an owner, a direction and a cancellation rule.
Steps verified on Odoo 19 and 20. Menus and labels can differ on other versions.
Common questions
Which Odoo apps does a municipality need for warehouse, equipment and fleet management?
Inventory covers consumables, stock levels and storage locations, Maintenance covers individual machines and their repair history, and Fleet covers vehicles, odometer readings, services and contracts. The Barcode app adds scanning on a phone.
Are Odoo Inventory, Maintenance and Fleet free?
They are Community apps, so they are part of the free, open-source edition. Barcode and Rental are Enterprise only, and on Odoo's own hosting all apps come with the Standard or Custom plan.
Can Odoo handle lending equipment to residents?
There is no app built for lending. The Rental app tracks pickups, partial returns and serial numbers but works through sales orders, while a stock-transfer flow uses Inventory alone and handles partial returns with the Return button.
Does Odoo Rental require charging a price?
No. The rental price starts from the product's sales price, which can be set to zero, though each loan is still a rental order built on the Sales app.
Can Odoo Fleet track vehicle inspection deadlines?
Fleet has no field dedicated to inspections. Contracts have an expiration date, and Fleet reminds the contract's responsible person 30 days before it by default, so an inspection can be recorded as a contract.
Talk to the team.
If you are setting this up, or Odoo is not behaving the way this guide describes, book a 30-minute call. We will look at your configuration and tell you what it needs. Calgary studio, in-house team, no offshore handoffs.
Book the call →