# Freelancer Finance Hub  

## 📊 Dashboard – Quick‑Glance KPIs & Visuals  

| KPI | Value | Visual |
|-----|-------|--------|
| **Total Income (Paid)** | `prop("Invoices").filter(prop("Status") == "Paid").rollup("Amount", sum)` | `![](https://i.imgur.com/1XkZb7U.png)` |
| **Net Profit** | `prop("Financial Summary").rollup("Net Profit", sum)` | `![](https://i.imgur.com/4yJt9aL.png)` |
| **Quarterly SE Tax** | `prop("Financial Summary").rollup("Quarterly SE Tax", sum)` | `![](https://i.imgur.com/8vM3c9R.png)` |
| **State Estimated Tax** | `prop("Tax Worksheet").rollup("State Tax Due", sum)` | `![](https://i.imgur.com/2hQeV6S.png)` |
| **Outstanding Client Balance** | `prop("Clients").rollup("Outstanding Balance", sum)` | `![](https://i.imgur.com/6nLrU3D.png)` |

> **💡 Visuals** – The three embedded chart blocks pull data from the *Financial Summary*, *Invoices*, and *Clients* tables via Google Sheets embeds (see “📈 Charts” section).  

---  

## ⚙️ Settings – Central Control Panel  

| Setting | Type | Value | Notes |
|---------|------|-------|-------|
| **Mileage Rate** | Number (USD / mile) | `0.585` | Auto‑updates each year via **Rate Calendar**. |
| **IRS Year** | Select | `2024` | Drives the mileage‑rate lookup. |
| **State** | Select | `California` | Enables state‑tax calculations. |
| **State Tax Rate** | Number (percentage) | `0.09` | Adjust per jurisdiction. |
| **Health Insurance Deduction** | Number (USD) | `0` | Annual premium to deduct from net profit. |
| **Theme** | Select | `Light` | Switch to **Dark** for a high‑contrast UI. |
| **Currency** | Select | `USD` | Change to `EUR`, `GBP`, etc. |
| **Rate Calendar** | Table (inline) | — | Stores IRS mileage rates per year. |
| **Last Sync** | Date | — | Updated automatically by Plaid/Zapier bank sync. |
| **Automation Hub** | Multi‑Select | `Zapier, Make, Stripe, QuickBooks` | Choose which third‑party connectors to enable. |

### Rate Calendar (inline table)  

| Year | Rate |
|------|------|
| 2024 | 0.585 |
| 2023 | 0.585 |
| 2022 | 0.585 |
| 2021 | 0.56 |
| 2020 | 0.575 |

> **Formula for Mileage Rate** (in *Mileage Log*): `prop("Settings").relation("Mileage Rate") → prop("Rate Calendar").filter(prop("Year") == prop("Settings").prop("IRS Year")).rollup("Rate", first)`  

---  

## 👥 Clients – Advanced Client Management  

| Client | Contact Email | Phone | Address | Project | Rate (USD / hr) | Payment Terms | Outstanding Balance | Last Invoice |
|--------|---------------|-------|---------|---------|----------------|----------------|----------------------|--------------|
| Acme Corp | jane@acme.com | 555‑123‑4567 | 123 Market St, CA | Website Redesign | 120 | Net 30 | 350.00 | INV‑001 |
| Beta LLC | tom@beta.io | 555‑987‑6543 | 78 Oak Ave, TX | Mobile App | 95 | Net 15 | 0.00 | INV‑004 |
| Gamma Inc | lisa@gamma.co | 555‑222‑1111 | 44 Pine Rd, NY | SEO Campaign | 80 | Net 45 | 120.00 | INV‑007 |

*Properties*  
- **Client** – Title (Text)  
- **Contact Email** – Email  
- **Phone** – Phone  
- **Address** – Text  
- **Project** – Text  
- **Rate (USD / hr)** – Number $  
- **Payment Terms** – Select (Net 15, Net 30, Net 45)  
- **Outstanding Balance** – Formula `prop("Invoices").filter(prop("Client") == thisRow && prop("Status") != "Paid").rollup("Amount", sum) - prop("Payments").filter(prop("Client") == thisRow && prop("Status") == "Confirmed").rollup("Amount", sum)`  
- **Last Invoice** – Relation → *Invoices* (single)  

> **Automation** – When an invoice is marked **Paid**, a **Make** scenario updates the client’s *Outstanding Balance* and sends a Slack notification (`#finance‑updates`).  

---  

## 📂 Receipts – Expense Capture (OCR + Bank Sync)  

| Receipt | Date | Vendor | Category | Amount | Parsed Amount | Paid | Invoice | Receipt Image | Transaction |
|---------|------|--------|----------|--------|---------------|------|---------|---------------|-------------|
| Office Chair | 2024‑06‑12 | IKEA | Office Supplies | 199.99 | 199.99 | ✅ | INV‑001 | [Upload] | TX‑001 |
| Adobe Subscription | 2024‑06‑01 | Adobe | Software | 52.99 | 52.99 | ✅ | INV‑002 | [Upload] | TX‑002 |
| Client Lunch | 2024‑06‑15 | Local Bistro | Meals & Entertainment | 38.50 | 38.50 | ⬜ | INV‑003 | [Upload] | TX‑003 |

*Properties* – same as original, plus **Category** now pulls from a **Category Library** table for unlimited customization.  

> **Automation** – Zapier → Google Vision extracts totals; Make → Xero pushes expense lines to your accounting software.  

---  

## 💳 Transactions – Real‑Time Bank Integration  

| Transaction ID | Date | Description | Amount | Category | Linked Receipt |
|----------------|------|-------------|--------|----------|----------------|
| TX‑001 | 2024‑06‑12 | Debit – IKEA | -199.99 | Office Supplies | Office Chair |
| TX‑002 | 2024‑06‑01 | Debit – Adobe | -52.99 | Software | Adobe Subscription |
| TX‑003 | 2024‑06‑15 | Debit – Bistro | -38.50 | Meals & Entertainment | Client Lunch |
| TX‑004 | 2024‑06‑20 | Credit – Acme Corp | +1,200.00 | Income | — |
| TX‑005 | 2024‑06‑22 | Stripe – Payment (INV‑004) | +800.00 | Income | — |

*Properties* – same as original, plus **Source** (Select) to capture “Plaid”, “Stripe”, “PayPal”, “Manual”.  

> **Integration** – Plaid embed (`/embed`) for bank feeds, Stripe embed for payment processing, and Make → QuickBooks sync for accounting.  

---  

## 🚗 Mileage Log – Dynamic Rate & Deductions  

| Trip | Date | From | To | Miles | Rate (auto) | Deduction | Invoice |
|------|------|------|----|-------|------------|-----------|---------|
| Client Site Visit | 2024‑06‑10 | Home Office | 123 Main St | 15.2 | 0.585 | 8.89 | INV‑001 |
| Conference Travel | 2024‑06‑20 | Home Office | Convention Center | 45.0 | 0.585 | 26.33 | INV‑003 |
| Supplier Pickup | 2024‑06‑05 | Home Office | Supplier Warehouse | 8.7 | 0.585 | 5.09 | INV‑002 |

*Properties* – unchanged, with the **Rate (auto)** formula pulling from **Settings** → **Mileage Rate**.  

---  

## 🧾 Invoices – Full Lifecycle, Recurring & Client Roll‑Ups  

| Invoice # | Client | Issue Date | Due Date | Amount | Status | Receipts | Mileage | Total Expenses | Net Income | Payment Date | Recurring |
|----------|--------|------------|----------|--------|--------|----------|---------|----------------|------------|--------------|-----------|
| INV‑001 | Acme Corp | 2024‑06‑01 | 2024‑06‑15 | 1,200.00 | Paid | Office Chair, Client Lunch | Client Site Visit | 247.38 | 952.62 | 2024‑06‑14 | ⬜ |
| INV‑002 | Beta LLC | 2024‑06‑05 | 2024‑06‑20 | 800.00 | Paid | Adobe Subscription | Supplier Pickup | 58.08 | 741.92 | 2024‑06‑19 | ⬜ |
| INV‑003 | Gamma Inc | 2024‑06‑12 | 2024‑06‑26 | 1,500.00 | Draft | — | Conference Travel | 26.33 | 1,473.67 | — | ⬜ |
| INV‑004 | Beta LLC | 2024‑07‑01 | 2024‑07‑16 | 800.00 | Sent | — | — | 0.00 | 800.00 | — | ✅ (Monthly) |
| INV‑007 | Acme Corp | 2024‑07‑05 | 2024‑07‑20 | 1,200.00 | Sent | — | — | 0.00 | 1,200.00 | — | ✅ (Quarterly) |

*Properties*  
- **Invoice #** – Title (Text) – auto‑generated by a formula: `formatDate(prop("Issue Date"), "YY") + "-" + replace(prop("Client"), " ", "") + "-" + format(prop("Count"), "000")`  
- **Client** – Relation → *Clients* (single)  
- **Issue Date / Due Date** – Date (Due = Issue + `prop("Client").prop("Payment Terms")` days)  
- **Amount** – Number $ (editable)  
- **Status** – Select (Draft, Sent, Paid, Overdue)  
- **Receipts** – Relation → *Receipts* (many)  
- **Mileage** – Relation → *Mileage Log* (many)  
- **Total Expenses** – Rollup: `prop("Receipts").rollup("Parsed Amount", sum) + prop("Mileage").rollup("Deduction", sum)`  
- **Net Income** – Formula `prop("Amount") - prop("Total Expenses")`  
- **Payment Date** – Date  
- **Recurring** – Checkbox (when checked, a **Make** scenario creates a duplicate invoice on the next cycle).  

> **Board View** – In *Invoices* add a **Board** view grouped by **Status** and a **Calendar** view for due dates.  

---  

## 📈 Financial Summary – Aggregated Quarterly & Yearly Views  

| Period | Total Income | Total Expenses | Net Profit | Quarterly SE Tax | State Tax Due |
|--------|--------------|----------------|------------|------------------|---------------|
| Q2 2024 | 2,000.00 | 305.46 | 1,694.54 | 61.57 | 152.51 |
| YTD 2024 | 2,000.00 | 305.46 | 1,694.54 | 61.57 | 152.51 |

*Properties* – same formulas as original, plus a **Currency** rollup that respects the **Settings → Currency** selection.  

> **📈 Charts** – Three Google Sheets embeds: (1) Income vs Expenses over time, (2) Net‑Profit trend, (3) Tax‑Liability breakdown. Replace the sheet URL with your own copy to customize.  

---  

## 🧾 Tax Worksheet – Full 1040‑SE (Premium)  

| Line | Description | Formula / Input |
|------|-------------|-----------------|
| 1 | **Net Profit from Schedule C** | `prop("Financial Summary").rollup("Net Profit", sum)` |
| 2 | **Deduction for one‑half of self‑employment tax** | `prop("Quarterly SE Tax") * 4 * 0.5` |
| 3 | **Adjusted Net Profit** | `prop("Line 1") - prop("Line 2") - prop("Settings").prop("Health Insurance Deduction")` |
| 4 | **Self‑Employment Tax (full year)** | `round(prop("Line 3") * 0.9235 * 0.153, 2)` |
| 5 | **Quarterly SE Tax** | `round(prop("Line 4") / 4, 2)` |
| 6 | **State Estimated Tax (full year)** | `round(prop("Line 3") * prop("Settings").prop("State Tax Rate"), 2)` |
| 7 | **Quarterly State Tax** | `round(prop("Line 6") / 4, 2)` |
| 8 | **Total Quarterly Tax Due** | `prop("Quarterly SE Tax") + prop("Quarterly State Tax")` |

*Properties* – all rows are **Formula** properties; the table is a **Single‑Select** view of the 1040‑SE worksheet for easy copy‑paste into the IRS form.  

---  

## 📤 Export & Reporting – “Copy‑View” Method  

| Report Type | Date Range | Export Instructions |
|------------|------------|---------------------|
| Receipts | 2024‑01‑01 → 2024‑12‑31 | 1️⃣ Open **Receipts** → ••• → **Export** → **CSV**. |
| Invoices | 2024‑01‑01 → 2024‑12‑31 | 1️⃣ Open **Invoices** → filter → ••• → **Export** → **CSV**. |
| Mileage | 2024‑01‑01 → 2024‑12‑31 | Same steps on **Mileage Log**. |
| Tax Worksheet | Full Year | Open **Tax Worksheet** → ••• → **Export** → **CSV**. |
| Client Ledger | Custom | Filter **Clients** → ••• → **Export** → **CSV** (includes outstanding balances). |

> **Why not a button?** Notion still lacks native export actions. The step‑by‑step guide works for every user and can be turned into a reusable template button with a third‑party automation (e.g., Make → Notion API).  

---  

## 📚 Onboarding & Help Center  

### 🎉 Welcome (Toggle)  

<details><summary>▶️ Start Here – 5‑Minute Walkthrough</summary>  

1. **Watch the Intro Video** – [YouTube: Freelancer Finance Hub Overview](https://youtu.be/your‑video‑id)  
2. **Duplicate the Template** – Click **Share → Duplicate** (top‑right).  
3. **Connect Your Bank** – Use the embedded Plaid widget (see “🔗 Bank Sync”).  
4. **Link Stripe / PayPal** – Paste your API keys in the **Automation Hub** (see Settings).  
5. **Set Your State & Health Insurance** – Open **Settings** → select state, enter health‑insurance amount.  
6. **Add Your First Client** – Fill the *Clients* table; the *Invoices* form will auto‑populate client‑specific defaults.  
7. **Create Your First Invoice** – Click **New → Invoice**, choose a client, and hit **Send** (auto‑emails via Make).  

</details>  

### ❓ Help (Toggle)  

<details><summary>▶️ FAQ & Pop‑Up Tips</summary>  

- **How does OCR work?**  
  *Zapier → Google Vision* watches the **Receipt Image** field. When a file is added, Zapier extracts the total amount and writes it to **Parsed Amount**.  

- **Can I change the mileage rate?**  
  Edit **IRS Year** in *Settings*; the rate updates automatically via the *Rate Calendar* lookup.  

- **Where do I see my quarterly tax numbers?**  
  Open **Financial Summary** → filter to the current quarter, or view the **Tax Worksheet** for the exact 1040‑SE lines.  

- **I need a PDF of my invoices.**  
  Use **Export → PDF** on the *Invoices* page, then merge with your client‑facing PDF.  

- **My accountant wants a CSV.**  
  Follow the steps in the **Export & Reporting** table.  

- **Can I automate payment reminders?**  
  Yes – enable the **Slack** integration in **Automation Hub**; a Make scenario sends a reminder 3 days before the due date.  

</details>  

### 🔗 Embedded Guides  

- **Bank Sync** – `/embed` → `https://cdn.plaid.com/link/v2/stable/link.html?...` (generated from Plaid Dashboard).  
- **Stripe Payments** – `/embed` → `https://dashboard.stripe.com/connect` (embed your Stripe Connect link).  
- **Make Automation** – `/embed` → `https://www.make.com/en/integrations/notion` (copy your scenario webhook URL).  
- **Charts** – three Google Sheets embeds (replace the sheet URL with your own copy if you wish to customize).  

---  

## 🛠️ How to Set Up (Step‑by‑Step)  

1. **Import** this markdown into a new Notion page → *Freelancer Finance Hub* is created automatically.  
2. Convert each table block to **Database – Table – Full page** (or **Inline** if you prefer a single‑page layout).  
3. **Set property types** exactly as listed under each table (Date, Number $, Select, Relation, Rollup, Formula, Checkbox, Email, Phone).  
4. **Create Relations**:  
   - *Receipts* → **Invoice** (link to *Invoices*)  
   - *Receipts* → **Transaction** (link to *Transactions*)  
   - *Mileage Log* → **Invoice** (link to *Invoices*)  
   - *Mileage Log* → **Rate (auto)** (link to *Settings* → **Mileage Rate**)  
   - *Invoices* → **Client** (single) & **Receipts** / **Mileage** (many)  
   - *Clients* → **Invoices** (reverse relation)  
   - *Transactions* → **Linked Receipt** (optional)  
5. **Add Rollups & Formulas** using the exact formulas shown in each table description.  
6. **Create Views**:  
   - *Invoices*: **Board** (group by **Status**), **Calendar** (due dates), **Table** (filter Paid).  
   - *Clients*: **Gallery** (card view with client logo), **Table** (outstanding balances).  
   - *Financial Summary*: **Table** (current quarter) + **Chart** embeds.  
   - *Tax Worksheet*: **Table** (single‑row view).  
7. **Enable Integrations**:  
   - **Plaid** – embed the Plaid Link widget; follow Plaid’s onboarding to grant read‑only access to your accounts.  
   - **Stripe / PayPal** – paste API keys in **Settings → Automation Hub**; enable “Auto‑Collect Payments”.  
   - **Make** – copy the webhook URL from the Make scenario, embed it, and turn on the scenario.  
   - **Zapier** – activate the OCR Zap (Google Vision → Notion).  
   - **QuickBooks / Xero** – use the Make connector to push *Invoices* and *Transactions* nightly.  
8. **Publish (optional)** → **Share → Publish to web** → enable **Allow duplicate as template** for resale.  

Your premium freelancer finance system is now live. Capture receipts, log mileage, manage clients, run invoices, automate reminders, and let the built‑in formulas handle profit, SE tax, and state tax automatically. 🎉