Bills are the part of a budget that punishes you twice — late fees if you pay after the due date, and lost float if you pay too early. The Bills page borrows a corporate-finance idea (DPO — days payable outstanding) and applies it to your personal cash flow: pay every bill on the optimal day. Never early, never late.
What you'll see
The page groups every upcoming bill in the next 30 days into three buckets:
- Pay today (red) — the optimal send-payment day has arrived. Send the payment now so it clears by the due date.
- This week (amber) — within the next seven days. Get ready.
- Later (gray) — anything beyond seven days, up to 30. Plan ahead but don't act yet.
Each row shows the bill name, source type (Recurring / Annual / Debt / One-off), the actual due date, and the Pay on date — the due date minus your configured payment lead, weekend-shifted to the previous Friday so the payment clears by the due date.
Where the bills come from
The bucket view unifies four sources, so you don't have to maintain four separate lists:
- Recurring categories with a
due_day(e.g. your Rent or Cell Phone category set to "monthly, due on the 15th"). - Annual Events with linked budget categories (see the Annual Events doc).
- Debt account minimums — every debt account with a
minimum_paymentanddue_dayshows up automatically. - One-off bills you add manually for things that don't fit a recurring category — a medical bill, a contractor invoice, a one-time service charge.
Mark a bill paid
Tap Mark paid on any row once you've sent the payment. The row clears and won't show up again for that period.
For recurring categories, you usually don't need to. When you log a transaction in a bill-scheduled category, BudgetLabs auto-marks that period's bill paid — manual mark-paid is the fallback for sources where there isn't a matching transaction yet (annual events, one-off bills, debt account minimums you pay outside the budget).
If you mark a bill paid by mistake, tap Undo (or Mark unpaid from the same row) — the bill returns to its bucket.
Add a one-off bill — including the scan flow
Tap Add bill to open the form. You can fill it in manually, or use the scan flow — the entire modal is a drop zone:
- Camera (mobile) — tap the upload area to open the camera. Hold the paper bill flat and snap it.
- File picker — choose an image or a PDF from disk.
- Drag-and-drop email — drag a bill email straight from Outlook, Apple Mail, or Gmail onto the modal.
.emlfiles, HTML drag payloads, and plain-text drops are all parsed. - Paste text — drop in raw text copied from a payment portal or biller statement.
The AI extracts:
- Vendor — who to pay (the entity, not "Customer Name").
- Amount — the total payment due (not the previous balance or any partial payments).
- Due date — the date the payment must arrive.
- Notes — short supporting context: account number, late-fee terms, autopay status, an early-payment discount window. Skips marketing copy.
Always review every field before saving. The AI is a starting point, not a source of truth.
If you scanned an image, the compressed JPEG is attached to the bill row so you have a visual record. PDF / email drops prefill the form only and don't attach a receipt (yet).
Pay-on lead
Each bill has a configurable payment lead (default 2 days). The Pay-on date is due_date − lead, weekend-shifted to the previous Friday. So a credit card bill due Tuesday the 18th with a 2-day lead has a Pay-on of Sunday the 16th, which shifts to Friday the 14th.
For digital payments that clear instantly, set the lead to 0. For mailed checks, set it to 5–7 days.
Dashboard preview
The Dashboard surfaces an Upcoming bills card with the next 5 bills in the next 7 days, so you don't have to open /bills every morning to know what's coming. Tap View all → to jump to the full page.
What's planned
Today, Bill Reminders is the view — the queue is right but the notification half isn't wired up yet. Coming next:
- Notification settings page to opt into per-channel reminders.
- In-app notification bell with a feed of unread bill alerts.
- Daily reminder emails with the day's Pay-today queue.
- Push notifications on iOS and Android.
Until those ship, the daily habit is to open /bills once each morning — the Dashboard card is the gentle nudge.
Related
- Annual Events — yearly and multi-year renewals that feed into the Bills queue when their linked category has a due day.
- Categories — set a
due_dayon a recurring category to add it to the Bills queue. - Debt Tracker — every debt account with a minimum payment and due day shows up on the Bills page automatically.
- Transactions — logging a transaction in a bill-scheduled category auto-marks the bill paid for that period.