Where your money comes from and goes, month by month
Every income and cost line already tracked elsewhere (trip revenue, employee payroll, parking, car wash fees, insurance, loan payments, maintenance, credit card spend) rolled up into one row per month. Green = you made money that month, red = you spent more than came in.
This month's data checklist
The P&L is only as accurate as what's been entered this month. Anything red below means the numbers on this page are missing that piece.
Trips & revenue by month
Investor payouts by month
Per-car detail for selected month
💤 Cars with $0 revenue this year
No completed or booked revenue recorded so far this year — likely sold, delisted, or never actually active. Review and remove any that no longer belong in your fleet; removed cars stay removed (they won't come back on their own, even from a future CSV upload).
🏷️ Tag & registration expirations
Temp tags and registration/plate tags expiring within 30 days, or already expired. Set or update dates in the Fleet table below.
⚠ Odometer readings that look like typos
These trips have a check-in/check-out odometer gap that's negative or implausibly large (usually a mistyped digit in Turo, like an extra "3" in the middle of a number). They're excluded from mileage totals and "current mileage" below so one bad entry doesn't throw off the whole car — but the underlying trip in Turo is still worth correcting at the source.
🔤 Same investor, different spelling
Reports already merge these automatically (case/spacing/Turkish-character differences don't split them anymore), but the cars below still store the spelling that doesn't match the others — fix it here to clean up the underlying data too.
Fleet & owners (from your master sheet + Turo CSV)
Cars that couldn't be auto-matched to your master sheet are flagged below. Click any Investor, Car, Plate, or VIN cell to edit it directly. Set Temp tag / Registration tag expiration dates to get expiration alerts.
🗑️ Silinen / Deleted cars
Removed (sold/deleted) cars. They're hidden from Fleet and Maintenance, but all their data stays — past trips still show in Payouts and Investor Statements. Restore brings a car back to the active fleet.
Maintenance cost by investor — this month & lifetime
Parts cost is money out; NextGen billed is money in (only counted where a job was actually billed to the customer). Your own cars show up here too, under your own name — that's real money out either way.
Cars & current mileage
Service log
Reminders
Each service item can have its own interval — e.g. oil every 5,000 mi, cabin air filter every 10,000 mi. Each is tracked from the last time that specific item was logged above.
NextGen Auto — outside customer jobs
For cars that aren't part of your fleet — walk-in customers who bring their own car in for work. Log what you did and what NextGen made on it, separate from the fleet's own maintenance log above.
Upload Turo trip earnings CSV
Each month, export your trip earnings CSV from Turo and drop it here. Trips are matched by Reservation ID, so re-uploading (e.g. an updated cumulative export) safely updates existing trips instead of duplicating them. A trip's payout is counted in the month its trip end date falls in. Cars are matched across reports by VIN first (plates are just a fallback when VIN is missing), so a plate change or a car listed under a second company's Turo account still lands on the same car.
Company is what pay-period cost-splitting uses (DMR bucket already combines DMR+Airflux+Poyraz). Account is just for keeping separate trip-count totals per Turo login (e.g. DMR vs Airflux) — it doesn't change how payroll cost is split.
Upload history
Data & syncing between devices
The cloud workspace is the copy that counts. This browser keeps an offline cache and a queue of edits, and uploads that queue only when it is newer than the cloud copy. Export still downloads a JSON backup. Import is allowed only after the cloud copy has loaded, and it writes a new revision. Bulk wipe of trips is disabled.
Pay period
Bi-monthly: the 1st–15th and the 16th–end of each month. Each company's trip count is pulled automatically from whichever CSVs you've uploaded tagged to that company (pick the company on the Upload CSV tab each time) — everyone's hours you still enter by hand below. If you haven't uploaded a real report for a company yet, you can type in a manual trip-count override in the table below instead.
Hours worked this period
Trip count & cost split by company
Trip count by account (reference)
Completed trips this period, broken out by which Turo account/sub-fleet they were uploaded under (e.g. DMR vs Airflux) — separate from the company cost-split above, which still combines them into one DMR bucket.
Fleet optimizer — which car actually makes money?
Revenue minus every cost that car carries (insurance, parking, loan, wash labor, maintenance, payroll share) = Net. Utilization = share of the month's days the car was out on a trip. Sorted by Net — worst performers at the bottom. Tap "Show full cost breakdown" for the per-category numbers.
Performance
Estimated wash cost per trip is computed automatically from your Employee Costs data: total employee payroll cost in this range ÷ total completed trips in this range. Backfill past pay periods in the Employee Costs tab to make this more accurate.
My cars
Cars where you're the sole owner — the money is already 100% yours, this just shows which ones actually earn it. Excluded from the investor rankings above since there's no split to compare.
Investor cars
Sorted by your (host) share — the cars bringing you the most, regardless of investor.
By investor
"Your net" = your host share minus what it actually costs you to service that investor's cars (parking, net of anything you recover from them, plus their share of estimated employee/wash cost by trip count). Edit parking fee/recovered amounts in the Accounting tab.
Accounting — Profit & Loss
Parking and insurance below are monthly recurring settings per car — the P&L applies them to every active car for whichever month you're viewing. NextGen Auto is your own repair shop: parts cost is always a real expense, and if you billed a job (car isn't yours), the margin counts as income.
Income
Expenses
KOVA private rentals
Direct (non-Turo) rentals booked through KOVA / iFleet. Each entry counts once in this month's income above AND as one KOVA trip in the Payroll tab's employee cost split (by the return date's half-month period) — so employee cost lands on KOVA fairly, and Gora's share stays untouched.
Per-car expense settings
Parking fee & recovered amount apply to every car. Insurance & loan/finance payment only apply to your own cars.
Credit card statements
Easiest way: export a CSV of transactions from your bank/card's website and upload it below — date/description/amount columns are auto-detected. Every row is auto-categorized (ParkMyShare/parking lots → Parking, tolls → Tolls, gas stations → Fuel, AutoZone/dealership service → Parts & Maintenance, State Farm/Roamly → Insurance, GPS trackers/cloud tools → Software/Subscriptions, DMV → Registration/DMV, and more) and auto-confirmed — CSV imports never sit in "needs review," so a full statement upload doesn't mean confirming rows one by one. If a guess is wrong, just fix that one row's category — every other transaction with that exact same description (past and future) follows automatically. Card payment/autopay lines are skipped automatically — those aren't real expenses. Paste-box entries below still go through the $ threshold review, since that's for occasional one-off entries where a second look makes sense.
No CSV handy? Paste lines instead — date, description, amount (comma or tab separated):
Daily vs. Unlimited parking — which plan per car?
Estimated from each car's actual trip start/end dates: a day is counted as "on trip" if the car was out on a rental that day, otherwise it's counted as needing a paid parking day. This is an estimate from Turo trip dates, not the parking lot's own gate log — a car that changes lots or gets picked up same-day it's dropped off can throw the estimate off a bit, so treat it as directional, not exact.
Last month
Lifetime (all months with data)
Actual ParkMyShare spend (from credit card)
Pulled from confirmed "Parking" category transactions on the Accounting tab's credit card list — this is what's actually been charged, useful for checking the model above against reality while cars are on the Daily plan.
Monthly payout statements
Generates a clean, printable statement for an investor covering trips completed by their car(s) that month — trip count, mileage, and their payout. Use "Print / Save as PDF" to send it to them.
Account
This browser is signed in with Firebase Authentication. Signing out hides every fleet tab and stops Firestore reads and writes from this page.
Revenue split rules (Owner % vs. Host/You %)
Pre-filled from Turo's host/owner revenue split screen. Rows marked assumed weren't visible in your screenshot — double check those against your actual Turo settings and adjust if needed. Owner % + Host % should add to 100%.
Investor portal
Publish a separate, standalone page investors can check on their own — each investor picks their name and enters their password, then sees only their own car(s): trip count, mileage, and their payout (never your host share or anyone else's numbers). This is a snapshot, not live — click "Download investor portal page" whenever you want to push updated numbers, then upload that file to your Netlify site (same way you upload the main app). It's a simple password gate for convenience, not real security — good enough to keep casual browsing out, not a determined snoop.
Announcements (shown to every investor)
Investor passwords
Set a password for each investor who should get portal access. Leave blank to keep them locked out.
Cloud sync (real-time, across all your devices)
After the owner signs in, every load fetches the Firestore workspace before it draws cars or trips. The browser cache is only for offline use. There is no prompt that lets this device replace the cloud copy. Offline edits queue and upload when they are strictly newer than the cloud updatedAt; otherwise the cloud copy is kept. Live updates use the Firestore listener, so other open devices refresh when the workspace changes.
- Go to console.firebase.google.com and sign in with any Google account.
- Click Add project, give it any name (e.g. "turo-fleet"), and finish the wizard (you can skip Google Analytics).
- In the left sidebar, go to Build → Firestore Database → Create database → choose any region. Do not leave the database on open test-mode rules. The locked draft is
firestore.rules; it is published only after review. - Go to Build → Authentication → Sign-in method → enable Email/Password, disable Anonymous, and add the user airfluxllc@gmail.com. The password stays in Firebase, not in this page.
- Click the ⚙️ gear icon (Project settings) → scroll to "Your apps" → click the </> (web) icon → register an app (any nickname) → it'll show you a code block with values like
apiKey,projectId, etc. Copy those into the boxes below.
The page signs in with Firebase email and password for the owner account. It does not sign in anonymously. The workspace code only selects which cloud document to open. Don't post that code publicly.