Billing Software for Linux: The Whole Monthly Cycle, Not Just the PDF
Recurring invoices, sending, chasing, matching deposits against the bank, and a year-end file your accountant will accept — walked end to end on a Linux desktop, with a worked example from one quarter of a small consultancy.
In this article
- Key takeaways
- Step 1 — raise the month's invoices without retyping them
- Step 2 — send them, and know that you did
- Step 3 — see who has not paid, in one number
- Step 4 — match the money to the invoices
- A worked example: one quarter, end to end
- Step 5 — hand over something an accountant can read
- Where the file lives, and working from two machines
- Estimates, agreements and the work before the invoice
- Subscription billing tools versus a desktop program
- The bottom line
- FAQ
Billing is not a document, it is a loop. Raise the invoices, send them, notice who has not paid, chase them, match the payments against the bank, and hand a clean set of figures to whoever does your tax return. Most comparisons of billing software for Linux stop at "can it make a PDF," which is the easiest part of the job and the only part that finishes by itself. This walks the whole loop on a Linux desktop, with the real screens.
Key takeaways
- Recurring billing is the feature that decides this, not invoice design. If you bill the same clients monthly, a tool that cannot repeat a schedule will cost you an evening every month.
- Matching payments to invoices is where the time goes. Bank statement import turns that from typing into checking.
- A worked example below runs one quarter of a small consultancy end to end: nine invoices, $9,120 collected, $1,635.44 of costs, and the exact figure that lands on the tax form.
- Runs offline on a Linux desktop from a
.debor an AppImage, one payment of $149.95 for Windows, Mac and Linux together.
Step 1 — raise the month's invoices without retyping them
A consultancy billing six clients has roughly the same six lines every month: a hosting retainer, a support block, whatever extra work happened. Typing that six times is the thing people quietly stop doing on time.
Two features remove it. A recurring schedule attached to a customer regenerates their invoice on a cadence, pre-filled with their monthly rate. Bulk creation takes a selection of customers and produces one invoice each in a single pass, which you then edit individually where the month differed. Either way the numbering is continuous and the dates are the dates you set, not the date you happened to press the button.
Step 2 — send them, and know that you did
Invoices go out as PDFs, either through your own SMTP account or handed to your desktop mail client. Because the app holds the connection itself, there is no per-email charge and no sending limit imposed by a plan tier. The status moves from draft to sent automatically, which matters for the next step: an invoice that was never sent and an invoice that was sent and ignored are different problems, and only one of them is the client's fault.
Step 3 — see who has not paid, in one number
This is the screen that earns its place. The dashboard separates overdue from unpaid but not yet due, because chasing someone whose terms have not expired is how you annoy a good client.
Step 4 — match the money to the invoices
Export a CSV or OFX file from your bank and import it. The parser recognises Chase, Bank of America, Wells Fargo, Amex, Capital One, Discover, US Bank, Navy Federal, USAA, Citi, Synchrony, PayPal, Stripe, Square, Venmo and Cash App exports, plus any CSV with date, description and amount columns. Rows arrive categorised where the description makes it obvious and flagged for review where it does not, so the work is confirming rather than typing.
The mistake that costs people real money here is double counting. Photograph a receipt, then import the bank statement that receipt appears on, and the same expense is now in the books twice — which understates profit, and quietly overstates a deduction on the tax return. The app pairs them on amount, a three-day window and merchant text, and lets you drop the bank side while keeping the receipt image. It is off by default, because cash receipts never appear on a statement and blanket-excluding receipts would delete real deductions.
A worked example: one quarter, end to end
These are the figures from the demo file in the screenshots above — a two-person web and systems consultancy, fictional, billing six clients. We ran the whole quarter through the Linux build to produce them: the invoices were raised in the app, the deposits were imported as bank rows, and every screenshot on this page is that same file, captured on Ubuntu 26.04.
| Item | Amount | Where it comes from |
|---|---|---|
| Invoices raised, July–September | $11,840.00 | Nine invoices, grouped by month |
| Collected and matched to deposits | $9,120.00 | Bank import, seven deposits |
| Overdue at the period end | $1,725.00 | One invoice, one client |
| Unpaid but not yet due | $4,205.00 | Three clients inside terms |
| Business costs | $1,635.44 | Server hosting, hardware, fuel, insurance, accountant |
| Net profit for the period | $7,484.56 | Income less taxable expenses |
The number that matters is the last one, because it is the one that ends up on a tax form. Note that it is derived from collected income, not invoiced income — $1,725 of that quarter's billing is still outstanding and is not counted as profit you have earned in cash terms.
Step 5 — hand over something an accountant can read
At year end the same data produces a Schedule C summary with IRS line numbers printed against each category, a Schedule E report if you also hold rentals, a sales tax report grouped by state and by rate, and import files for TurboTax, QuickBooks and Xero. The forms are published by the IRS — Schedule C and Schedule E — and printing the line numbers is deliberate, so the figures can be checked rather than taken on trust.
Where the file lives, and working from two machines
Everything above is held in one SQLite file under your home directory. That has a practical consequence people ask about before they commit: your existing backup already covers it. If you run restic, borg, rsync or a Timeshift schedule over $HOME, your books are in it, versioned, with no extra configuration and no separate vendor to trust.
If you work from a desktop and a laptop, or a desktop and an Android phone on site, there are two ways to keep them level. WiFi sync pushes between two devices on the same network with no account involved at all — the desktop serves, the other device connects to it directly. Google Drive sync uses your own Drive as the meeting point, which works when the two machines are never on the same network; it is an optional paid add-on, and manual backup and restore stay free whether or not you take it.
Neither route puts your books on our servers. We could not produce a copy of your data if you asked us to, which is the same reason we cannot recover it for you if you lose the file and have no backup — so take the backup.
Estimates, agreements and the work before the invoice
Most consultancy billing starts before the invoice exists. Estimates are the same document type with a different status: build one with line items and sections, send it as a PDF, capture the client's signature on screen, and convert the approved estimate into an invoice without retyping the lines — the sections, quantities and prices carry over, including fractional hours, so half an hour of diagnosis stays half an hour rather than rounding up to one.
Service agreements cover the recurring side: a monthly retainer with an agreed rate, a term and a renewal date, signed by both parties and stored with an audit trail. If you bill retainers, that document is what a recurring schedule should be pointing at.
Subscription billing tools versus a desktop program
Both are legitimate. The honest difference is what you are buying and what happens when you stop.
| Hosted billing service | Desktop program on Linux | |
|---|---|---|
| Cost over five years | $900–$4,200 at $15–$70 a month | $149.95, once |
| Works with no connection | No | Yes |
| If you stop paying | Access ends, including to past invoices | It keeps working |
| Client-facing payment portal | Usually included | No — payment links on the invoice instead |
| Several staff at once | Yes | No — one machine, or sync between your own devices |
| Your data | On their servers, exportable | A SQLite file in your home directory |
If you have staff who all need to be in the billing system simultaneously, or you want customers paying through a hosted portal, buy the subscription — it does something this cannot. If you are one person or two, bill on a monthly cycle, and want the tool to keep working whatever happens to the vendor, the arithmetic and the failure modes both favour the desktop.
The bottom line
The part of billing that takes the time is not making the invoice, it is the four steps after it: repeating it next month, noticing it was not paid, matching the deposit when it arrives, and turning twelve months of that into something your accountant will accept. A Linux desktop can do all four locally, offline, for one payment — and the same licence covers your Windows or Mac machine if you have one of those too.
Download the Linux build — a .deb for Ubuntu and Debian, an AppImage for everything else. If you want the install detail and the system requirements first, read invoicing software for Linux.
FAQ
Can it do recurring monthly billing on Linux?
Yes. A recurring schedule regenerates a customer's invoice on a set cadence, pre-filled with their monthly rate, and bulk creation raises one invoice per selected customer in a single pass. Both work identically on Linux, Windows and Mac.
Can it email invoices directly, or does it just make PDFs?
It sends them, using your own SMTP account — Gmail, Fastmail, your host's mail server, whatever you already use. Because the connection is yours, there is no per-email cost and no plan-tier sending cap. It can also hand the PDF to your desktop mail client instead.
Does it import bank statements on Linux?
Yes, and it is the same parser as the other platforms: CSV and OFX or QFX from the major US banks and card issuers, plus PayPal, Stripe, Square, Venmo and Cash App exports, and any generic CSV with date, description and amount columns. PayPal's PDF statements are also parsed, since PayPal only issues monthly statements in that format.
Will it take payments from my customers?
Not directly. You can put a Stripe, PayPal, Venmo, Zelle or Cash App link on the invoice and record the payment when it arrives, but there is no hosted checkout, because there is no server involved. If a customer-facing payment portal is a requirement, a hosted service is the right choice.
What happens to my invoices if I stop using the app?
Nothing. The data is a SQLite file in your home directory and the application keeps running whether or not you ever hear from us again. Every report exports to PDF, CSV or XLSX, and there is no account to be locked out of.
Is the Linux version behind the Windows one?
No. It is built from the same source at the same version number, currently 5.28.7, with the same features and the same database format. A file created on Linux opens on Windows and Mac.
Run a service business?
Daily Invoice Maker handles invoices, estimates, expenses, route maps, agreements, and tax reports — offline, on Windows, Mac, Linux + Android. Free demo, lifetime license available.
Download free →