Matching numbers
Income books
One monthly file. Owner, driver, and admin reports add up. Print statements, 1099 worksheets, and Stripe stay in their lanes.
Identity: driver paid = host net + Period 2 binder reserve + platform take. Demo rate is $25 = $15 + $8 + $2. Gas is never on the sheet. Stripe is the wallet — /admin/accounting is a deep-link, /admin/income is the books.
| Door | Path | What they see |
|---|---|---|
| Host | /owners/earnings + /print | Host net, hours, days, identity bar |
| Lessee | /drivers/earnings + /print | What they paid us, $25 stack |
| Desk | /admin/income + /print | All three legs, one-click packets |
| Host tax | /owners/taxes + /print | 1099-NEC, 1099-K, ID card from the same totals |
| Lessee tax | /drivers/taxes + /print | Lease statement + ID card |
| Wallet | /admin/accounting | Open Stripe. No balances in-app. |
for (const row of BOOK_MONTHS) {
assert(row.hostNet + row.insuranceReserve + row.platformTake === row.driverPaid);
}Print uses window.print() on a statement page; chrome (nav, glass) is hidden. Forms stamp VOID until TAX_FORM_1099_ENABLED and a TIN match. Public copy: /tax, /privacy, /disclosures, /licenses.