The IRS and CRA require a contemporaneous mileage log to support a vehicle deduction (standard mileage OR actual expense). Without one, the entire deduction can be disallowed in an audit — that's tens of thousands of dollars at risk for a full-time rideshare driver. ExpenseBot's Audit-Ready Mileage Log report assembles every trip in your tracker into a printable spreadsheet that meets the IRS Pub 463 / CRA IT-521R format.
What the report includes
| Section | Content |
|---|---|
| Driver block | Name + vehicle (year/make/model) |
| Odometer block | Year-start (Jan 1) + year-end (Dec 31) readings + total miles driven for all uses |
| Business-use % | Calculated automatically from (business miles ÷ total miles driven) once both odometer reads are provided |
| Year summary | Total trips, business miles/km, months covered, platforms detected |
| Trip log detail | Every business trip from your mileage tracker — date, business purpose, notes/route, distance |
| Driver declaration | Print, sign & date — the audit-acceptable certification statement |
What counts as "contemporaneous" vs "reconstructed"
A log is contemporaneous when each trip is recorded at or near the time it was driven. Manual trip entries you make in ExpenseBot (or via the Add Expense flow) are contemporaneous because we timestamp them at entry.
A log is reconstructed when it's assembled after the fact from external records — for example, importing a year of Uber trip CSVs in April for the previous tax year. Both IRS and CRA accept reconstructed logs when they're backed by source documents (the platform CSV counts), but they're weaker than contemporaneous logs and more frequently challenged in audits.
This report labels every row as one of two sources in the Source column:
- "Manual entry (contemporaneous)" — entered through ExpenseBot's mileage tracker
- "Reconstructed from Uber export (87 trips, imported 2026-05-20)" — pulled from a platform CSV import; row is highlighted in pale amber so the auditor sees the provenance at a glance
Rule of thumb: when most rows are reconstructed, keep the original Uber/Lyft/DoorDash CSV download alongside this log. The CSV has per-trip start/end addresses that the monthly rollup row doesn't — and that's what an auditor will ask for next.
US vs Canada requirements
IRS (Pub 463 + 26 CFR §1.274-5) — Must include for each business trip:
- Date
- Business destination (starting/ending point)
- Business purpose ("Rideshare driving" suffices as a recurring purpose)
- Miles driven
Plus annually:
- Starting + ending odometer reads on Jan 1 and Dec 31
- Total miles split into business / commuting / personal (per §1.274-5)
Important: the Cohan rule does not apply to vehicle expenses — §274(d) imposes strict substantiation. Estimates are not accepted; per-trip records must be contemporaneous (Pub 463 caps "near the time of the trip" at weekly).
CRA (IT-521R + Motor Vehicle Records guidance) — Must include for each business trip:
- Date
- Starting point and destination
- Trip purpose
- Kilometres driven
Plus annually:
- Odometer Jan 1 + Dec 31
- Total km split into business vs. personal/commuting
- Business-use % (used on T2125 Chart A to apportion vehicle expenses)
CRA-only simplification — the 3-month sample rule: keep a full 12-month log once as a "base year", then in later years keep only a continuous 3-month sample. If your business-use % from those same 3 months is within ±10 percentage points of the base year, you can apply the base-year % to the whole year. The IRS has no equivalent shortcut.
Retention: IRS expects 3 years from the filing date (6 if you under-reported by >25%). CRA expects 6 years from the end of the tax year.
How to use the report
- Open My Reports → Summaries → Audit-Ready Mileage Log
- Enter the tax year, your driver name, vehicle description, and odometer reads
- Click Preview to verify the trip count + total miles look right
- Click Generate log — opens the spreadsheet in a new tab
- File → Download → PDF to get a printable copy
- Sign & date the declaration row at the bottom
- Keep the signed copy with your tax records for the audit retention period:
- IRS: 3 years from the filed return (longer if you under-reported by >25%)
- CRA: 6 years from the end of the tax year
How the data gets into the log
The report pulls every row in your main expense sheet whose description starts with "Mileage:" — both the single-trip rows (from manual entry or Add Expense) and the monthly summary rows (from Uber/Lyft/DoorDash CSV imports). It detects both formats automatically — see import Uber CSV mileage and the in-app mileage tracker.
If a trip is missing from the log:
- Check your main expense sheet for a row matching the date with description starting "Mileage:"
- If absent, add it manually via the mileage tracker, or re-import the source CSV
- Re-run the report — newer trips appear automatically (no need to delete the previous log)
Rideshare-specific gotcha: P1 / P2 / P3 miles
Uber and Lyft 1099-K summaries only count P3 miles (passenger in the car). But three other mileage buckets are also deductible if logged:
- P1 — App on, waiting for a ping (no passenger, no dispatch)
- P2 — Dispatched, driving to pick up the passenger
- P3 — Passenger in the vehicle (this is what the platform 1099 reports)
- Other business miles — driving to gas, car wash, vehicle inspection, supplies
For a typical Uber driver, P1 + P2 add 30-40% additional deductible miles on top of the platform-reported P3 total. If the trip log in this report was assembled from a platform CSV import, it only contains P3 miles and you're under-reporting. To capture P1/P2/other miles, track them manually in the mileage tab (or use a dedicated tracker like Gridwise that records all four buckets via GPS).
The report includes a callout noting this gap for any year where platform-imported rows are present.
Why not a true PDF?
V1 outputs a Google Sheet that prints to PDF. This is intentional:
- The auditor cares about content (date, purpose, distance, odometer), not the file format
- A spreadsheet lets you correct mistakes before printing (e.g. fix a wrong destination)
- You can re-sort, filter, or add notes before signing
- Google Sheets' built-in File → Download → PDF produces a clean printable copy
If you want a custom PDF with your branding, that's on the roadmap for v2.
Related ExpenseBot guides
- Vehicle Deduction Optimizer — pairs with this report; the optimizer picks Standard vs Actual, this report proves the miles
- Uber driver tax tracker — the full Uber filing flow
- Lyft driver tax tracker
- DoorDash driver tax tracker
- Import Uber CSV mileage — how trips land in the tracker
- Mileage tracking — manual entry + categories
- IRS mileage rate 2026
- CRA mileage rate 2026
