Business platforms
Rate cards, availability and utilisation: the hard parts of rental software
A rental system earns trust through three calculations: what this hire costs, whether this unit is free, and how hard the fleet is working. Each one looks simple until you meet a real contract.
By itmarkerz Technologies. Updated 30 October 2026.
Rate cards: what does ten days cost?
Our heavy-equipment platform quotes by day, week or month, with rate cards per equipment class. The moment a card has more than one period, you need a rule for hires that don’t fit neatly. Here is a made-up card to show the choices. These aren’t real prices.
| Method | Calculation | Result |
|---|---|---|
| Day rate throughout | 10 × 100 | 1,000 |
| Largest period, then remainder | 1 week (500) + 3 days at 100 | 800 |
| Pro-rata the week | 10 ÷ 7 × 500 | 714.29 |
All three are defensible, and the difference is 40% on the same machine. Whichever you choose must be explicit, the same every time, and printed on the quote. Your software shouldn’t be the place where this policy gets decided by accident. Other questions to settle before coding:
- Is a day a calendar day or 24 hours from handover? What is the grace period on return?
- Does an extension re-price the whole hire at the longer rate, or only the new days?
- Does an early return lose the weekly rate? If so, is the customer told when they book?
- Do weekends and public holidays count? Is standby charged differently from working time?
- Do customer-specific prices replace the card, or apply a discount to it?
Store the rate that applied on the contract line, not just a link to the card. When prices change next year, last year’s invoice must still explain itself.
Availability: stopping the double booking
Two periods overlap when each starts before the other ends. That one condition catches every case, including a booking that fully contains another:
SELECT id FROM unit_holds
WHERE unit_id = :unit
AND starts_at < :requested_end
AND ends_at > :requested_start;The query isn’t the hard part. These three things are:
- Everything is a hold. Confirmed hires, provisional quotes, maintenance and transit should go in one table with a type. A unit in the workshop is unavailable in the same way as one on hire, and checking several tables is how gaps appear.
- The end date is a guess. A machine due back on Friday may not be. Decide what the system shows for overdue units, and warn whoever has promised that unit to the next customer. Add buffer time for delivery and checks to the hold itself.
- Two people can book at once. Checking and then writing leaves a gap between the two steps. Do both in one transaction with a lock on the unit row, so the second request waits and then sees the first booking.
DB::transaction(function () use ($unitId, $start, $end) {
$unit = Unit::whereKey($unitId)->lockForUpdate()->firstOrFail();
$clash = $unit->holds()
->where('starts_at', '<', $end)
->where('ends_at', '>', $start)
->exists();
abort_if($clash, 409, 'Unit is no longer available.');
$unit->holds()->create([
'starts_at' => $start,
'ends_at' => $end,
'type' => 'hire',
]);
});Include maintenance holds early. A machine that breaks down mid-hire creates a chain of decisions: swap the unit, stop the charges or credit the customer. The system should prompt for them rather than leave staff to remember.
Utilisation: agree what the number means
Our equipment platform reports utilisation and revenue, and the first task with any report like this is defining the terms. Two managers can look at the same fleet and report different percentages, with both correct by their own definition.
| Measure | Formula | What it tells you |
|---|---|---|
| Time utilisation | Days on hire ÷ days in the period | How often the unit is out |
| Available-time utilisation | Days on hire ÷ days not in maintenance | How well you sell the time you have |
| Financial utilisation | Rental revenue ÷ value of the asset, over a set period | Whether the price and the asset justify each other |
Use the first two together. If the gap between them is wide, you may have a workshop problem rather than a sales problem. A class that is always out at low revenue suggests a pricing question. Decide how to treat units delivered but not yet working, part days, and machines sold or bought during the period, then write those rules on the report.
All of this depends on the hold table above being right. If maintenance is logged late or returns are entered at the end of the week, the report will be precisely wrong. Making returns quick to record, on a phone in the yard, does more for your reports than any chart.
The platform these examples come from
Equipment register, availability and reservations, rate cards, rental contracts, delivery/return tracking, invoicing and utilisation reporting for a Qatar heavy-equipment rental company. Laravel, MySQL, Next.js.
- Sector
- Construction & equipment rental
- Region
- Qatar
- Stack
- Laravel, MySQL, Next.js
- Engagement
- Custom business application
Questions
Should availability be tracked by unit or by class?
Track units, and let customers reserve a class if your business works that way. A class reservation should still reduce the number available and be assigned a real unit before it goes out. Otherwise you can promise more machines of a class than you have.
What is a good utilisation rate?
We can't give you a figure, and it depends on the asset and the market. What matters first is a definition your team agrees on and a report that applies it consistently. After that, the trend for each class tells you more than a comparison with anyone else's number.
More on business platforms
- Rental software: build or buy? What two custom builds taught usA decision table and a requirements checklist you can brief anyone with.
- Vehicle rental software: deposits, fines and handoverWhere vehicle hire differs from equipment hire, and what to build for it.
- Custom ERP or off-the-shelf for a wholesaler?How to decide, from a two-year ERP we built, including how old that build is.
- From desktop to web: three generations of one systemA manpower company's .NET application, its Electron rebuild and the web scoping now.
Is a spreadsheet still doing one of these jobs?
Tell us which one, and how you charge. We will tell you what a proper system would need to do.
We reply within one business day (IST).