Secure Client Document Upload Without Login: A Guide for Accountants
“No login” makes procurement nervous, and reasonably so — it is also how a lot of genuinely bad file-sharing works. The difference between a scoped capability link and a public URL is entirely in the controls behind it, and those controls are things you can ask a vendor about directly.
This page sets out what to ask, what good answers sound like, how BilagPilot implements each control, and when you should insist on a login instead.

Short answer
A no-login upload link is safe when it is scoped, unguessable, hashed at rest, expiring, revocable and logged, and when the files it receives go into private storage rather than a public bucket. What makes a link dangerous is not the absence of a password — it is an unscoped URL that never expires, pointing at storage anyone can read.
The trade-off is real and worth naming: a link proves access, not identity. Whoever holds it can use it. For collecting purchase receipts against known transactions that is an acceptable and well-understood risk. For releasing documents to a client, or for anything where you must prove who acted, a login is the better control.
No login does not mean public
There are three different things people mean by “a link to upload files”, and only one of them is defensible.
| Attribute | What it is | The risk | Verdict |
|---|---|---|---|
| Public drop box | One URL, shared with everybody, no per-client scope. | Anyone with the URL can upload, and often list or read what others uploaded. | Not acceptable for client financial records. |
| Security through obscurity | A long random URL, but no expiry, no revocation, and files in a readable bucket. | The URL survives forever in email, gets forwarded, and may be indexed or logged by intermediaries. | Common, and worse than it looks. The token never stops working. |
| Scoped capability link | A random token bound to one client of one firm, hashed at rest, expiring, revocable, with private storage and an audit log behind it. | Whoever holds the link can act until it expires or is revoked. | Appropriate for inbound collection of documents you already know about. |
Public drop box
- What it is
- One URL, shared with everybody, no per-client scope.
- The risk
- Anyone with the URL can upload, and often list or read what others uploaded.
- Verdict
- Not acceptable for client financial records.
Security through obscurity
- What it is
- A long random URL, but no expiry, no revocation, and files in a readable bucket.
- The risk
- The URL survives forever in email, gets forwarded, and may be indexed or logged by intermediaries.
- Verdict
- Common, and worse than it looks. The token never stops working.
Scoped capability link
- What it is
- A random token bound to one client of one firm, hashed at rest, expiring, revocable, with private storage and an audit log behind it.
- The risk
- Whoever holds the link can act until it expires or is revoked.
- Verdict
- Appropriate for inbound collection of documents you already know about.
Access is not identity
This is the honest limitation and it should be stated plainly in your own risk notes. A capability link authenticates the bearer, not the person. If your client forwards the email to their bookkeeper, the bookkeeper can upload. In most cases that is exactly what you wanted. But it means the link is not evidence of who acted, and you should not design a control around it that assumes otherwise.
Notice that this asymmetry is what makes the pattern appropriate for inbound collection specifically. Someone sending you a purchase invoice you already know exists is a low-consequence action. Someone downloading a set of accounts is not, which is why the same link should never be a route to read data back out.
Controls a secure upload link needs

A random token, stored only as a hash
The token in the URL must come from a cryptographically secure random source with enough entropy that guessing is not a strategy. Critically, the service should store only a hash of it. Then a stolen database backup contains no usable links — the same reasoning that stops you storing passwords in plain text applies exactly here.
Scope checked on every request, not just the first
Each request should re-establish which firm and which client the token belongs to, and refuse anything outside it. Scope enforced once at page load, then trusted for subsequent API calls, is a common and serious mistake.
Expiry, revocation and rotation
Three separate things. Expiry is automatic. Revocation ends one link early. Rotation replaces the links for a client in bulk, which is the response to the realistic incident — an email forwarded to the wrong person, or a client changing accountants.
Private storage, always
Uploaded files must not be readable by an unauthenticated request to the storage host. Staff downloads should go through the application, using short-lived signed URLs or authenticated streaming, with the access check repeated at download time rather than inherited from whoever generated the link.
Validation at upload
Check the file type by its actual content signature, not its extension. Cap size, count and the number of attempts. An upload endpoint without limits is a free file host, and it will eventually be found and used as one.
A referrer policy that does not leak the token
The URL contains the secret. If the upload page sends a full referrer to any third party the client clicks through to, the token goes with it. The page should send
no-referrer.An audit log you can export
Link created, link opened, file uploaded, reminder sent, status changed, request completed — each with a timestamp. This is what answers “did you ask the client?” a year later, and it is worth checking you can get it out of the tool rather than only look at it.
How BilagPilot scopes access
Specifics, so you can compare them against the list above rather than take a general assurance.
- Token. The public token is random and stored as a SHA-256 hash. Every request checks it against the firm, the client, its expiry and whether it has been revoked.
- Scope.A link belongs to one client of one firm. Opening it loads that client’s eligible open requests, grouped by period — deliberately one link rather than one per request, because three links in an inbox means two get ignored.
- Lifecycle.Links expire, can be replaced, and can be rotated for a client from the firm’s settings. The link is an access link, not identity verification, and our security page says so in those words.
- Storage. Files go to private storage. Staff downloads run through controlled server routes using time-limited signed links or authenticated streaming, and the access check is repeated at download time.
- Upload validation.Two stages. The first validates the link, request, item, filename, type, size, count and quota, reserves the upload and issues a signed private-storage URL. The second verifies the reservation, the storage path, the object metadata and the file’s actual signature before anything is saved.
- Referrer. The client-facing upload routes send
no-referrer, so the token cannot leak to a third party through a click. - Abuse protection. Sensitive public routes sit behind bot and rate protection.
- Audit trail. Requests, link opens, uploads, reminders, status changes and completion are all logged, and a request can be exported as CSV or PDF with its items, uploads and reminders.
- Firm-side access. Separately from the client link, reaching firm data requires sign-in, membership and the right role, with row-level security and server-side checks scoping clients, requests, files, reminders and integrations to the correct firm.
When client login is better
There are cases where the no-login pattern is the wrong control and you should choose a tool that requires an account — including choosing something other than BilagPilot.
- You need to prove who acted. If your process depends on attributing an action to a named individual — an approval, a declaration, a sign-off — a bearer link cannot do that. Use authentication.
- Documents flow outwards. Releasing accounts, tax computations or payroll data to a client is a higher-consequence action than receiving a receipt. Put a login in front of it.
- The client needs a durable home.If they should be able to come back next March and find last year’s documents, that is a portal, not a link. A scoped link expires by design.
- Several people at the client, with different permissions. A link cannot distinguish the finance manager from the director. Named accounts can.
- A policy or client contract requires MFA. Some sectors and some clients simply mandate it. That is a legitimate requirement and no amount of scoping satisfies it.
Note that these are all about outbound data, attribution or persistence. None of them is about inbound receipt collection, which is why the two patterns coexist happily: a portal for the client relationship, and a scoped link for the monthly paperwork chase.
Vendor checklist
Twelve questions to put to any vendor offering no-login upload, including us. A vendor who cannot answer these quickly has not thought about it.
Is the token random, and is only a hash of it stored?
If the vendor can read the raw token out of their own database, so can anyone who reaches that database. A stored hash means a leaked backup does not hand over working links.
What exactly is the link scoped to?
One client of one firm is the answer you want. 'One workspace' or 'one account' means a token failure exposes more than one client.
When does it expire, and can we revoke it early?
Staff leave, clients change hands, phones get lost. You need to end access without waiting for a timer.
Can we rotate every link for a client at once?
The realistic incident is a forwarded email, not a cryptographic break. Bulk rotation is the response.
Are uploaded files in private storage, or a public bucket with a long URL?
'Unguessable URL' is not access control. Ask whether an unauthenticated request to the storage host is refused.
How are downloads served to staff?
Short-lived signed URLs or authenticated streaming. A permanent public link to a client's invoice is a leak waiting to be indexed.
What is validated at upload?
File type by actual content rather than extension, size, count, and a cap on attempts. Otherwise the upload page is an open file drop.
Does the page leak its own URL through the referrer header?
If the client clicks any outbound link from the upload page, a permissive referrer policy sends the token to that third party.
What is logged, and can we export it?
Link opens, uploads, reminders and status changes, with timestamps. This is what you show when someone asks whether you chased.
Who is controller and who is processor?
For client data in the tool the firm is normally the controller and the vendor the processor. It should be written down in a DPA, not implied.
Where is the data processed, and who are the subprocessors?
A named list, published, not 'industry-standard cloud providers'.
Is this the statutory archive?
Almost certainly not, and a vendor that implies otherwise is one to be careful with. Retention and deletion should follow the DPA.
Sources
Everything on this page that describes another company’s product, or a rule set by HMRC, comes from that organisation’s own published material. Each entry below records the date this page last checked it, because these change without notice.
- BilagPilot security: customer links, file storage, firm access and data responsibility
BilagPilot · checked 17 August 2026
- BilagPilot data processing agreement
BilagPilot · checked 17 August 2026
- BilagPilot privacy notice, including subprocessors
BilagPilot · checked 17 August 2026
- Ask in Xero Partner Hub — the login-based alternative, and its file limits
Xero Central · checked 17 August 2026
Keep reading
How to Chase Clients Without Endless Emails
The workflow the link sits inside: naming the transactions, the cadence, and the exception states.
Read itBilagPilot vs Xero Ask
The login question in its sharpest form — Xero Ask requires one, and sometimes that is the right answer.
Read itHow to Automate Client Document Requests in Xero
Where the link fits in the monthly procedure, and why the transaction detail belongs behind it rather than in the email.
Read itA link your clients can use and your reviewer can defend
BilagPilot's upload links are scoped to one client of one firm, stored only as a hash, expiring, revocable and rotatable. Files land in private storage, every open and upload is logged, and the firm remains the controller.
No card required. Nothing is charged automatically.