# `budget_expenses`

**Module:** Budget

---

## Purpose

Individual expense line items within a budget category. Tracks estimated vs actual cost and payment status.

---

## Columns (Summary)

| Column | Notes |
|--------|-------|
| `id BIGINT UNSIGNED AUTO_INCREMENT PK` | — |
| `workspace_id BIGINT UNSIGNED NOT NULL FK→workspaces` | — |
| `category_id BIGINT UNSIGNED NOT NULL FK→budget_categories` | — |
| `vendor_id BIGINT UNSIGNED NULL FK→vendors (optional)` | — |
| `name VARCHAR(255) NOT NULL` | — |
| `vendor_name VARCHAR(255) NULL (text-only)` | — |
| `estimated_cost DECIMAL(15,2) DEFAULT 0.00` | — |
| `actual_cost DECIMAL(15,2) DEFAULT 0.00` | — |
| `status VARCHAR(30) DEFAULT Planned` | — |
| `payment_method VARCHAR(50) NULL` | — |
| `notes TEXT NULL` | — |
| `due_date DATE NULL` | — |
| `reminder_enabled TINYINT(1) DEFAULT 0` | — |
| `reminder_date DATE NULL` | — |
| `reminder_notes TEXT NULL` | — |
| `is_deleted TINYINT(1) DEFAULT 0` | — |
| `created_at DATETIME DEFAULT CURRENT_TIMESTAMP` | — |
| `updated_at DATETIME NULL` | — |
| `deleted_at DATETIME NULL` | — |

---

## Referenced By

budget_payments(expense_id)

---

## Notes

See `docs/database/RELATIONSHIP.md` for full entity relationships and `database/schema.sql` for authoritative DDL.
