Local Invoice Tracker
Invoices stored in IndexedDB with CSV and print-to-PDF export.
Local Invoice Tracker - IndexedDB Invoice Status, CSV, and PDF Tool
Local invoice status tracker. CSV export and print-to-PDF, no account.
What's included
Features
Description | Qty | Rate for browser-side totalsAbout this tool
Track Freelance Invoices Locally Without a Billing Platform
Most freelancers create invoices in one tool and then have no structured way to track whether they were paid, when they were due, or how much is still outstanding. The paid invoice gets filed, the overdue one gets chased through email, and the total unpaid across all clients is a mental calculation done before each cash-flow review. A local invoice tracker fills that gap without adding another SaaS billing subscription.
This browser-based invoice tracker stores records in IndexedDB and tracks everything that matters about invoice status: invoice number, client, status, issue date, due date, currency, tax percentage, paid amount, notes, and line items. It is not an invoice generator - it is a payment status monitor for invoices you have already created and sent through whatever channel you prefer.
Line items are entered in a simple text format. Add one per row using Description | Qty | Rate - for example, Development hours | 12 | 85 or Copywriting | 1 | 600. The tracker parses those lines, calculates item totals, applies the tax percentage, and shows a running invoice total. This is useful for keeping a record of what was billed even when the polished client-facing invoice lives elsewhere.
Partial payment tracking handles real-world billing. Not every invoice is paid in full at once. Enter the amount received in the paid amount field even when the invoice is not fully settled. The outstanding balance metric subtracts paid amounts from unpaid invoices across all records, giving you an accurate view of total unpaid value rather than counting partially-paid invoices as fully outstanding.
The status lifecycle keeps the pipeline clean. Move invoices from Draft while you are preparing them, to Sent when the client has them, to Paid when settled in full, to Overdue when the due date passes without payment, or to Void when cancelled. Past-due unpaid invoices are highlighted so overdue work stays visible during your review.
Use alongside Freelance Invoice Generator to create the polished PDF the client sees, Follow-Up Reminder Board for invoice payment reminder tasks, Milestone Payment Tracker for stage-by-stage payment records, and Client CRM for relationship context. Export JSON backup before clearing browser data.
If you are a developer or designer freelancer looking to strengthen the skills behind your services, the React Playground, CSS Playground, and HTML Playground offer structured, interactive learning - no install, no setup required.
Step by step
How to Use
- 1Add invoice detailsEnter invoice number, client, status, issue date, due date, currency, tax percentage, and paid amount. Use Draft, Sent, Paid, Overdue, or Void to keep status clear.
- 2Enter line itemsAdd one line item per row using
Description | Qty | Rate. For example,Development hours | 12 | 85. The tracker calculates item totals and invoice total automatically. - 3Monitor outstanding invoicesThe metrics show invoice count, unpaid invoices, outstanding amount, and total billed. Unpaid invoices past their due date are visually highlighted.
- 4Record paymentsWhen payment comes in, enter the paid amount and set status to Paid when fully settled. Partial paid amounts reduce outstanding value in the metrics.
- 5Export invoice recordsUse CSV export for spreadsheets or accountant handoff, JSON export for backup and restore, and Print / PDF when you want a readable invoice record from the selected item.
- 6Back up to GitHub Gist (optional)Click the GitHub icon in the toolbar and paste a personal access token with gist scope. Your invoice records sync automatically every 10 seconds after edits and are stored as a private Gist - restore on any device by entering the same token and Gist ID.
- 7Keep your Gist private — never store sensitive data in itGitHub private Gists are not truly encrypted — they are unlisted links. Anyone who has your Gist URL or Gist ID can read the full contents without logging in. Never share your Gist URL, Gist ID, or Personal Access Token with anyone. Avoid storing passwords, API keys, or highly sensitive credentials. For maximum privacy with no data leaving your device, skip Gist sync and use the Export and Import buttons to transfer files manually instead.
Real-world uses
Common Use Cases
Got questions?
Frequently Asked Questions
Add each invoice as a record with invoice number, client, status, issue date, due date, line items, tax, and paid amount. The tool calculates totals in the browser and saves records to IndexedDB. You can review unpaid and outstanding amounts without using a full billing platform.
Yes. Invoice records are stored locally in your browser. The tool does not upload client names, line items, invoice totals, or payment notes. Export JSON if you need a backup before clearing site data.
Use one line per item in the format Description | Qty | Rate. For example, Design sprint | 1 | 1200 or Development hours | 12 | 85. The invoice tracker parses those lines and calculates totals automatically.
Yes. Export CSV downloads invoice records in spreadsheet format with invoice number, client, status, dates, currency, tax, paid amount, total, items, and notes. This is useful for bookkeeping, manual reporting, or accountant handoff.
Yes. Select an invoice and use Print / PDF. The browser opens a printable invoice record that can be saved as PDF. For a more polished client-facing invoice, use Freelance Invoice Generator.
The invoice total comes from parsed line items plus tax percentage. Outstanding value is calculated by subtracting paid amount from unpaid invoices. Paid and void invoices are excluded from the unpaid outstanding metric.
Yes. Enter the paid amount even if the invoice is not fully settled. The outstanding metric will subtract that amount from the invoice total. When the invoice is fully settled, set the status to Paid.
Yes. IndexedDB data can be removed when you clear site data or reset the browser profile. Use Export JSON before cleanup so you can import the invoice tracker data again later.
Yes - use the GitHub Gist backup. Click the GitHub icon in the header, paste a personal access token (gist scope only), and click Sync Now. Your data is saved as a private Gist and auto-syncs every 10 seconds after edits. On another device, paste the same token and Gist ID to restore.
GitHub "private" Gists are not encrypted — they are unlisted links. Anyone who has your Gist URL or Gist ID can read the full contents without needing a GitHub login. Never share your Gist URL, Gist ID, or Personal Access Token with anyone. Avoid storing passwords, API keys, or highly sensitive credentials. Use Gist sync for regular workflow data only. For maximum privacy with no data leaving your device at all, skip Gist sync and use the Export and Import buttons to move files manually via USB or your own encrypted storage.
Yes — for freelancers who need local invoice tracking without a monthly fee or cloud account, this tool does everything Wave and FreshBooks do for basic invoice management: create invoices, track paid/unpaid status, export CSV, and print to PDF. The difference is everything stays in your browser with no subscription, no login, and no data sent to any server.