diff --git a/client/src/TODO-one-time-expenses.md b/client/src/TODO-one-time-expenses.md
deleted file mode 100644
index 1af5634..0000000
--- a/client/src/TODO-one-time-expenses.md
+++ /dev/null
@@ -1,257 +0,0 @@
-# TODO: One-Time Expenses UI for PaycheckView.jsx
-
-The server-side API for one-time expenses is complete. The following UI changes
-need to be applied to `client/src/pages/PaycheckView.jsx`.
-
-## API endpoints available
-
-- `POST /api/one-time-expenses` — body: `{ paycheck_id, name, amount }`
-- `DELETE /api/one-time-expenses/:id`
-- `PATCH /api/one-time-expenses/:id/paid` — body: `{ paid: true|false }`
-
-The `GET /api/paychecks` response already includes `one_time_expenses` array on
-each paycheck. After any mutation, re-fetch the month's paychecks to refresh
-state (use the existing `loadPaychecks(year, month)` function).
-
----
-
-## 1. State to add inside `PaycheckColumn`
-
-The column needs a local form state for the inline "Add expense" form. Either
-lift it to `PaycheckView` and pass down, or keep it local to `PaycheckColumn`.
-The simplest approach is local state inside `PaycheckColumn`.
-
-Add these two state variables at the top of `PaycheckColumn`:
-
-```jsx
-const [newName, setNewName] = useState('');
-const [newAmount, setNewAmount] = useState('');
-```
-
-`PaycheckColumn` must also receive additional props:
-- `onOtePaidToggle(oteId, paid)` — calls PATCH and refreshes
-- `onOteDelete(oteId)` — calls DELETE (with confirm) and refreshes
-- `onOteAdd(paycheckId, name, amount)` — calls POST and refreshes
-
----
-
-## 2. Replace the one-time expenses section in `PaycheckColumn`
-
-Locate the existing section (roughly lines 88–101 in the original file):
-
-```jsx
-