FAQ

Short answers to the questions that come up most often.

What's the difference between the Ledger and the Reports tab?

The Ledger is a transactional view — every invoice and credit note in order with a running outstanding balance. It's the printable journal you'd hand to an accountant. Reports are headline numbers: invoiced YTD, top clients, top products, monthly bars. Different cuts of the same data.

How is the open balance on a statement calculated?

For the chosen client: sum of every invoice that isn't marked Paid, minus the sum of every credit note. Aging buckets group the open invoices by how many days past their due date (or issue date when no due date is set) they are, measured against today in the display timezone.

Can I print just the ledger or statement, not the whole page?

Yes. The Print button on each page uses your browser's print dialog, and a print stylesheet hides the sidebar, tabs and action buttons so what reaches paper is the data only. For a polished branded PDF use Download PDF instead.

How are invoice numbers generated?

The format is PREFIX-YYYY-####, e.g. INV-2026-0001. The counter is per-company and increments only when a document is actually saved. Credit notes have their own counter.

Can I edit an invoice after it's been issued?

Yes — the document number, status, line items and totals are all editable. The PDF is rendered on request, so a refresh shows the new version. If you need to retract an invoice that was already sent, issue a credit note instead — that's the audit-friendly way.

What happens to a client or product I delete?

Old invoices keep the snapshotted name, address, description and price — InvoiceMe never rewrites history. The client/product simply disappears from future pickers. If you want to keep a product but stop selling it, archive it instead.

Why does my product show 15% (default)?

Products inherit the company's default VAT rate unless you set an override. Leaving the field blank is normally what you want.

How does the SKU auto-generate?

If you leave the SKU blank, InvoiceMe takes up to four alphanumeric uppercase characters from the product name and appends the zero-padded ID — e.g. "Brand identity package" becomes BRAN-0007. You can always override it.

The PDF totals look different from the form. Why?

All amounts are stored to two decimals. The form recalculates totals live as you type, but the saved totals are computed server-side at the moment of issue. Refresh the document page to confirm.

How do I bill in a different currency?

Each document has its own currency field — change it on the form. The locale (number formatting) stays the same as the company, so a USD invoice rendered with en-ZA still looks tidy.

What columns does the CSV importer need?

The first row must be the header. Use the templates linked from the Import page — they ship with the exact columns and a couple of example rows. Empty cells fall back to defaults.

Is the time on my invoice in SA time or UTC?

Both. The database stamp is stored in GMT/UTC for consistency, and every screen — including the PDF — converts it to the display timezone (default Africa/Johannesburg, SAST, GMT+2). The current display timezone is shown in the bottom-left of the sidebar.

Why is the currency stuck on ZAR?

It isn't — ZAR is just the default for new South African companies (SARS-required for SA VAT invoices). You can override the currency on a single document if you bill abroad, and you can change the company default in the company form.

Do I have to set a password on a company?

No. Passwords are optional. Leave the field blank and the company stays open. You can add or remove a password later from the company's edit page.

I forgot my company password — what now?

Passwords are scrypt-hashed; the original is unrecoverable. If you have shell access to the deployment, the SQLite file (or Postgres database) is portable — clearing the company's password_hash column resets protection.

Can I move from SQLite to PostgreSQL later?

Yes. Visit /setup and paste your Postgres URL, or set DATABASE_URL on Railway. The schema is created on first connect. Existing SQLite data isn't migrated automatically — copy it over with a tool like pgloader if you need to keep history.

Where is the database stored?

SQLite, in DATA_DIR/invoiceme.db (defaults to ./data). Mount a Railway volume there to persist across deploys. Logos, uploads and the runtime config sit alongside it in DATA_DIR/uploads and DATA_DIR/config.json.

Is there an export?

Every invoice and credit note can be downloaded as a self-contained PDF. The Reports tab shows the headline numbers; if you need raw data the SQLite file is portable — open it with any SQLite tool.