Feature
Every edit is a version. Revert anything in one click.
Nothing on a JupiterInvoice is destructive. Every change (yours or the recipient's) creates an immutable snapshot of the invoice. You see what was different, you see who did it, and one click restores the previous state.
The problem
You send invoice 0042. AP emails back asking you to correct the billing entity. You fix it and resend. Two weeks later, a different person in AP asks why the entity is wrong. You don't remember what the original was. You check Gmail. The original is there, but it's a PDF from two weeks ago and you've since made three more edits to the live version. You spend twenty minutes reconstructing what the invoice looked like at each point.
This is the invisible tax on every invoicing tool that treats invoices as mutable records. JupiterInvoice treats them as immutable version chains, so the reconstruction work disappears.
How it works
Step 1
Any change creates a snapshot
Edit a line item. Recipient updates a PO. You revert a billing entity change. All three create a new, immutable version stored in the database. None of them overwrite the previous version.
Step 2
You see a clear diff
The invoice detail page lists every recipient change with a timestamp, a human-readable description of what changed, and a Revert button. No comparing PDFs, no date math.
Step 3
Revert is a single click
Click Revert on any recipient change and the relevant fields restore to their pre-edit state. The revert itself becomes a new version, so there's no erasure of history.
What gets versioned
Every field that could change over the life of the invoice is captured in each snapshot: recipient details, line items, dates, currencies, discounts, taxes, PO number, terms, notes, subscription context. When you revert, only the fields that actually changed are restored; everything else stays as-is so reverting a recipient's billing-address fix doesn't roll back a line item you edited ten minutes ago.
Technically, each snapshot is a JSON blob stored with a stable ver_-prefixed ID. That ID appears in activity logs, change notes, and soon the API, so you can reference a specific point in an invoice's history from anywhere in the system.
Why this matters
- →Audit trail without a separate tool. Your finance team can see exactly who edited what, when, for every invoice. No bolted-on audit log.
- →Revert doesn't mean losing data. The pre-revert state is preserved as its own version, so you can roll forward again if you change your mind.
- →Recipient edits are safe. Letting the recipient edit PO and billing fields is only viable because nothing is destructive. Worst case, you revert in one click.
- →Compliance posture. Most SMB invoicing tools can't prove what an invoice looked like at issue versus now. Ours can, because it's the data model.
Who uses this
How version history works
Is every keystroke a version?
Can I view the full snapshot of a historical version?
Does reverting delete the version I reverted?
What happens to versions when an invoice is deleted?
Is there an API for the version history?
Send an invoice you can always undo
Free. Every edit you or your client makes is reversible. No more reconstructing what the invoice looked like last month.
Create your first invoiceNo signup required. Build now, save later.