On-time delivery report from QuickBooks
QuickBooks Desktop cannot tell you whether a delivery was on time, because it does not know when the truck arrived. It has the invoice date and the ship date on the invoice. The delivery record is in your routing app, or on the driver’s sheet. The report exists once the two sit in the same database.
What we do about it
We take your data out of QuickBooks as reports, put it in a database, and connect it to your Claude or ChatGPT. QuickBooks stays as it is.
The first step is small on purpose. We model one year of your sales data and get on a live call where you ask and your own numbers answer. You give us the three questions you most want answered, and we get you those answers or figure out how we can deliver them. You keep the database, connected to your Claude or ChatGPT.
The first step is $950, credited in full toward your setup if you go ahead. If you don’t, we delete the project and your data doesn’t stay with us. If it earns its place, we keep it current every week and send the reports you pick.
Nothing we build can write to your books.
What QuickBooks has
An invoice date, a ship date if someone fills it in, and the credit memos that come back when a delivery went wrong. No promised date, no delivered date, no driver. Sales by Customer Detail will tell you what went out and when it was billed. It will not tell you whether it got there on the day.
Where the delivery record is
If you run a routing app, it keeps a log: one row per stop, the promised window, the time the driver marked it delivered, the driver’s name. Every one of them exports that log to a file. If you do not run one, the record is the driver’s sheet, and the report starts the week someone types it in.
The log carries the invoice number. That is the join. Put the export next to the QuickBooks invoices and credit memos and on-time rate is a question by driver, by customer, by yard, or by month, and the damage claims sit on the same row.
Three questions from a fictional company
The routing app’s log joined to the invoices and credit memos. The third question is the kind a database answers with a no.
Which driver has the damage claims, and what’s his on-time rate?
The routing app’s delivery log, one row per delivered invoice, joined to the credit memos in QuickBooks marked as damaged returns:
| Driver | Deliveries | On time | Damage claims |
|---|---|---|---|
| Cody Brandvold | 823 | 76% | 8 |
| Jon Peltier | 1,157 | 91% | 5 |
| Rick Aalto | 1,111 | 90% | 4 |
| Tom Sandoval | 456 | 88% | 3 |
| Marta Okafor | 222 | 89% | 0 |
Cody Brandvold has the most damage claims, 8, and the worst on-time rate, 76%. The delivery log is the routing app’s export. The damage claims are credit memos in QuickBooks. Nobody had put the two files side by side.
How that was computed
select driver,
count(*) as deliveries,
round(100.0 * avg(on_time)) as on_time_pct,
sum(damage_flag) as damage_claims
from v_deliveries
where on_time is not null
group by driver
order by damage_claims desc, on_time_pctWhich builder gets the worst delivery service?
Builders only, deliveries since January 2025:
| Builder | Deliveries since Jan 2025 | On time |
|---|---|---|
| Halvard Custom Homes | 56 | 75% |
| Kestrel Ridge Homes | 101 | 89% |
| Bergstrom Construction Group | 67 | 91% |
| Norlund Homes | 135 | 91% |
| Stonebeck Homes | 54 | 91% |
| Voss Custom Homes | 16 | 100% |
Halvard Custom Homes, an account growing fast this year, gets the worst on-time rate at 75%. The driver from the question above moved to that yard in January 2025.
How that was computed
select customer,
count(*) as deliveries,
round(100.0 * avg(on_time)) as on_time_pct
from v_deliveries
where customer_type = 'Builder' and year in ('2025', '2026') and on_time is not null
group by customer
order by on_time_pctDid late deliveries have anything to do with the accounts we lost in 2025?
Three accounts that stopped ordering in 2025, and their delivery record year by year:
| Customer | Year | Deliveries | On time |
|---|---|---|---|
| Granite Shore Building Supply | 2023 | 28 | 82% |
| Granite Shore Building Supply | 2024 | 21 | 95% |
| Granite Shore Building Supply | 2025 | 9 | 89% |
| Marsh Lake Home Center | 2023 | 53 | 85% |
| Marsh Lake Home Center | 2024 | 63 | 87% |
| Marsh Lake Home Center | 2025 | 6 | 83% |
| Voss Custom Homes | 2023 | 46 | 96% |
| Voss Custom Homes | 2024 | 54 | 96% |
| Voss Custom Homes | 2025 | 16 | 100% |
No. Their deliveries were fine right up to the end. All three sat in one rep’s book, and she left that year. A database rules a theory out as fast as it confirms one.
How that was computed
select customer, substr(invoice_date, 1, 4) as year,
count(*) as deliveries,
round(100.0 * avg(on_time)) as on_time_pct
from v_deliveries
where customer in ('Marsh Lake Home Center', 'Granite Shore Building Supply', 'Voss Custom Homes')
and on_time is not null
group by customer, year
order by customer, yearNorthgale Building Products is a fictional company. Every name, figure and supplier on this page is made up, built to behave like a real three-and-a-half-year QuickBooks Desktop file so we can show real screens without showing anyone’s real numbers. Data as of the 2026-07-27 refresh; the last invoice in the file is dated 2026-07-24.
Short answers
- Does QuickBooks Desktop have an on-time delivery report?No. It has no delivered date and no promised date. The delivery record is in the routing app or on paper.
- Which routing apps does this work with?Any that exports its delivery log to a file. The export needs the invoice number or the customer and date on each row.
- How current is the delivery data?As of the weekly refresh. The routing export comes in with the QuickBooks reports, once a week.