How Invoice Share Links Actually Work
In this article
A share link doesn't point to your live invoice — it points to a frozen snapshot taken the moment you created the link. If you edit the invoice afterward, anyone holding the old link keeps seeing the version that existed when they got it, not your latest changes. That single fact explains most of the behavior people find surprising about share links, so it's worth understanding exactly what a share link actually is under the hood.
What Gets Stored When You Create a Share Link
When you generate a share link, the system creates a random token — effectively an unguessable string of characters — and stores it alongside a full copy of the invoice's data at that exact moment, not a live reference back to the invoice record. It also stores an optional password hash if you protected the link, an optional expiration timestamp, and the workspace and invoice group it belongs to. The link itself is just that token appended to a URL; anyone with the link can open it, but nobody can guess it by trying random values, since it's generated from cryptographically random bytes rather than a predictable sequence.
Why Editing the Invoice Doesn't Update Old Links
Because the share link stored a copy of the invoice data at creation time, not a pointer to the live invoice, any edits you make afterward — correcting a line item, changing the total, updating the due date — do not propagate to links that were already generated. If you need a client to see the corrected version, the reliable approach is to generate a new share link after making your changes, rather than assuming the old link will pick up the update automatically. This is a deliberate tradeoff: a frozen snapshot means the client always sees a consistent, unambiguous version of the document, and you have a permanent record of exactly what a specific link showed at the exact moment someone might have viewed and acted on it.
Password Protection
If you set a password when creating the link, it's never stored in plain text — only a bcrypt hash of it is saved. When someone tries to view a password-protected invoice, they submit the password, and the system compares it against the stored hash rather than looking up a stored plaintext value anywhere. This means even direct database access wouldn't reveal what the actual password was, only whether a guess matches.
Expiration
If you set an expiration window in days when creating the link, that gets converted into an absolute expiration timestamp at creation time — not a rolling window that resets on each view. Every time someone tries to open the link, the system checks whether the current time has passed that stored expiration timestamp. Once it has, the link stops working for everyone, including you, regardless of how many times it was viewed before that point or how recently it was last opened.
Revocation
Beyond expiration, you can revoke a share link manually at any time. Revocation sets a timestamp on the record rather than deleting it outright, and every lookup for that link explicitly checks that this revocation timestamp is empty before allowing access. A revoked link fails immediately and permanently — there's no way to un-revoke it and restore access to that specific link; you'd generate a fresh one instead.
What You Can See About Your Own Share Links
For any share link you've created, you can see whether it's password protected, its expiration date, when it was created, how many times it's been viewed, and when it was last viewed — all without exposing the password itself or requiring you to re-enter it. This gives you a way to audit who might have accessed a document and when, without needing to open the link yourself to check.
Frequently Asked Questions
If I delete the original invoice, does the share link still work? The share link's data was copied at creation time and stored independently, so it isn't directly dependent on the original invoice record continuing to exist in the same form. The link's own expiration and revocation rules are what determine whether it still resolves.
Can I change the password on an existing link? Passwords are set at creation time as part of that link's record. To use a different password, the practical approach is to revoke the old link and create a new one with the password you want, rather than trying to update the existing link in place.
Does viewing the link count toward anything, like a read receipt? The view count and last-viewed timestamp are tracked and visible to you, which functions as a lightweight read receipt — you can tell whether a link has been opened at all and roughly when, even without any separate notification system.
Related Articles
How Business Profile Defaults Fill In New Invoices
Your business profile fills in your details, currency, tax rate, payment terms, and design on new blank invoices only. It never changes invoices you've already started, and only workspace admins can edit it.
What Your Client Receives When You Email an Invoice
The email is a short summary with the invoice number, issue date, due date, and total. It doesn't attach the PDF or include a link, and it comes from a no-reply address, so it helps to know what to send with it.
What Happens to Invoices You Create Without an Account
Without an account, saved invoices are kept in your browser's local storage, not on our servers. They aren't copied into an account when you sign up, and signing out of an account on that browser clears them.
Why Editing an Invoice Doesn't Update a Share Link You Already Sent
A share link stores a copy of the invoice as it was when you created the link. Later edits change your saved invoice, but anyone opening the old link still sees the old version, and so does the QR code on a re-downloaded PDF.
Deleting a Client Doesn't Touch Their Invoices
Saved clients are an address book, not a foreign key — invoices store billing details as their own inline copy, so deleting a client record leaves every invoice you've sent them completely intact.
What Happens When You Convert an Estimate to an Invoice
Converting doesn't turn the estimate into an invoice in place — it creates a brand-new invoice with a new ID and marks the original estimate as converted, permanently linking the two in both directions.