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?
No. A new version is only created when a change is actually committed: a sender saves an edit from the invoice edit page, or a recipient saves a billing-details change on the invoice link, or a sender reverts a prior change. Typing in the edit form without saving does not create versions.
Can I view the full snapshot of a historical version?
Programmatically yes -- each version stores a complete JSON snapshot. The UI currently surfaces the change summary and supports revert. A full per-version view and a side-by-side diff viewer are on the roadmap.
Does reverting delete the version I reverted?
No. The reverted version remains in history; the revert itself becomes a new version on top. Nothing is destructive, ever.
What happens to versions when an invoice is deleted?
Versions cascade-delete with the invoice. Soft-delete (keeping the invoice row in an archived state) is planned for sent and paid invoices; drafts hard-delete. When soft-delete ships, versions of soft-deleted invoices stay queryable for compliance.
Is there an API for the version history?
Not yet. The public API is on the near-term roadmap and version listing / snapshot retrieval will be part of the initial v1.

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 invoice

No signup required. Build now, save later.