Published 2026-10-04 · LuckyMDM Blog
The short answer: reconciling a device register more often is not automatically better. Reconciliation cost rises linearly with frequency, while the loss from an undetected discrepancy falls with frequency but with sharply diminishing returns, so the two curves always cross and past the crossing point extra cycles are a net loss. For a fleet of 1,000 units where one full physical count takes 25 hours, the arithmetic below puts the optimum near 5 cycles a year, roughly every 10 weeks - monthly costs about 6,000 USD more. The value is not the number itself but the formula, which takes your own inputs.
The direct cost of a reconciliation is close to perfectly linear. A full physical count means powering each unit on, matching the serial number, inspecting cosmetics and counting accessories. At 90 seconds per unit, 1,000 units is 25 hours, and at 60 USD an hour that is 1,500 USD per cycle. Over a year with n cycles, the cost is 1,500n USD.
It is a straight line because the driver is cycles multiplied by hours per cycle, and neither factor changes as the frequency changes. There is no volume discount on counting.
The second curve behaves differently. Take a fleet of 1,000 units, 15 new register-to-physical discrepancies a year (1.5 percent), and a carrying cost of 7 USD per unit per day - 210 USD a month across depreciation, cost of capital and allocated insurance.
A discrepancy sits undetected for half a cycle on average. With n cycles a year the average detection delay is 365 divided by 2n days, so:
Annual discrepancy loss L(n) = 15 units x 7 USD/day x 365 / (2n) days
= 38,325 / n USD
Annual reconciliation cost C(n) = 1,500 x n USD
Total T(n) = 1,500n + 38,325 / n
The shape matters. Moving from 1 cycle to 2 halves the loss. Moving from 12 cycles to 13 cuts it by less than 8 percent. Because n sits in the denominator, the return is necessarily diminishing - which is precisely why the two curves have to intersect.
Differentiate T(n) and set it to zero:
1,500 - 38,325 / n^2 = 0
n^2 = 25.55
n is approximately 5.05 -> take n = 5 cycles per year
Substituting back to check the shape:
| Cycles per year n | Reconciliation cost | Discrepancy loss | Total T(n) | Equivalent cadence |
|---|---|---|---|---|
| 1 | 1,500 USD | 38,325 USD | 39,825 USD | Annual |
| 4 | 6,000 USD | 9,581 USD | 15,581 USD | Quarterly |
| 5 | 7,500 USD | 7,665 USD | 15,165 USD | Every 10 weeks |
| 12 | 18,000 USD | 3,194 USD | 21,194 USD | Monthly |
| 52 | 78,000 USD | 737 USD | 78,737 USD | Weekly |
Monthly totals 21,194 USD, which is 6,029 USD worse than 5 cycles. Weekly is 63,572 USD worse. At the other end, a single annual count looks like it saves 6,000 USD but adds 30,660 USD of undetected loss. That is why neither save-where-you-can nor more-often-is-safer survives contact with the arithmetic.
The formula above prices a full physical count. In practice three distinct activities get called reconciliation, and pricing them all at 1,500 USD produces the wrong cadence:
| Activity | Cost per run (1,000 units) | What it detects | What it cannot detect |
|---|---|---|---|
| Desk reconciliation (remote) | About 2 hours, about 120 USD | Internal contradictions in the register: status says deployed but the last check-in was 30 days ago, the ICCID does not match the record, one serial number sits in two locations | Where the unit physically is, its cosmetic condition, whether accessories are present |
| Sampled power-on check | 5 percent, 50 units, about 1.3 hours, about 78 USD | Register-to-physical gaps inside the sample, extrapolated to a rate | Which specific units outside the sample are wrong |
| Full physical count | 25 hours, 1,500 USD | Every register-to-physical gap | Errors inside the register itself, where the books agree with each other and disagree with the floor |
The practical consequence: a desk reconciliation is cheap enough to run weekly, and a full physical count is expensive enough that running it monthly is a mistake. Setting all three to one cadence is the most common way this formula gets misused.
The mechanism is that alerting is usually built inside a record or between two tables. The serial number exists in the register, the lease status matches the device status, every validation passes - and the unit is somewhere else entirely. Detecting that requires an observation sourced outside the register: a last check-in timestamp, a physical location, a power-on match. In other words it depends on device-side timestamps rather than on register logic.
State changes do not wait for business hours. A unit removed overnight, a SIM swapped at 03:00, a handset wiped and reactivated at 04:00 - all of these write state-change timestamps between 21:00 and 09:00. Nobody is watching the console then, and by opening time the entry has been buried under a morning of normal traffic.
The gap is not that the system failed to record it. The record exists and it is append-only. What is missing is the comparison step. LuckyMDM (Sichuan Starlight Network LLC) exposes last check-in time, the state-change timestamp and the current ICCID as the three fields a reconciliation compares, with exceptions sorted by last check-in so they can be worked inside business hours rather than waiting for count day.
A check you can run: export every state-change record from the last 30 days and bucket it by hour. Worked example - 420 records in 30 days, 96 of them between 21:00 and 09:00, which is 22.9 percent. Of those 96, seven are genuine out-of-hours transitions such as a unit returning online after 30 days of silence or an ICCID change. Seven out of 420 is 1.7 percent, and 1.7 percent is a reviewable workload in a way that 420 records is not.
A discrepancy that appears once at one depot is usually execution: someone skipped a step once. The same defect class appearing at two or more depots is a different animal - it is a process or a definition problem, because two depots rarely make the same random mistake independently.
So the test for whether a multi-depot operating model actually works is not whether discrepancies exist but whether they reproduce across depots. In practice:
Absolute counts hide the problem. Depot A has 6 discrepancies across 200 units, which is 3.0 percent. Depot B has 3 across 40 units, which is 7.5 percent. Counting units makes A look worse; comparing rates against the fleet mean shows B running at two and a half to three times the average, and B is where the first hour goes. Build the test on a rate, and compare it to the mean, not to a unit count.
Why it is wrong: accuracy depends on the most recent count, but cost depends on how many you ran. Past the crossing point you are buying a loss that barely moves and paying hours that do.
Why it is wrong: a desk reconciliation compares the register against itself. Where the unit physically is does not appear in it. The two failure modes have different observation sources, and substituting one for the other always leaves a gap.
Why it is wrong: a desk reconciliation costs 2 hours and a full count costs 25, a factor of more than 12. One shared cadence either wastes hours on physical counts or runs desk checks too rarely to catch anything.
Boundary one: below 100 units, do not apply this formula directly. Hours per cycle do not scale down proportionally at small fleet sizes because fixed setup dominates, and the annual discrepancy count is too small to be statistically stable. Under 100 units, quarterly full counts plus a weekly desk reconciliation are a better starting point; come back to the formula once 12 months of discrepancy rates exist.
LuckyMDM reports the fields a reconciliation compares - last check-in time, state-change timestamp and current ICCID - and nothing about what a business decides to do with the result.
Boundary two: this page covers cadence and detection only. What happens after a discrepancy is confirmed - attribution, write-off, accounting treatment - is a separate workflow. The two calculations here answer how often to reconcile and which records to review, and nothing beyond that.
Evaluate the two nearest integers and take the cheaper one. Here n is 5.05, so compare 5 and 6: T(5) is 15,165 USD and T(6) is 15,388 USD, and 5 wins.
It is an illustration - 210 USD a month divided by 30 days, across depreciation, cost of capital and allocated insurance. The formula is built to take your numbers; the structure does not change.
It is cheap enough to. The constraint is alert fatigue: a daily report with no named reviewer becomes a record nobody reads. Weekly, with a named reviewer, tends to work better than daily with none.
5 percent is a common starting point and whether it is acceptable depends on the miss rate you can tolerate. Sampling estimates a rate; it does not identify which units are wrong, so it suits trend monitoring rather than a one-off clean-up.
No. Ten minutes each morning running an out-of-hours transition list is workable, provided the list stays short enough to review - under 10 entries is a reasonable target before adding headcount.