One click from email
Send the URL however suits you - your inbox, ERP, Slack. We have the supplier covered the moment they tap.
A tokenized URL emailed to your supplier - they click, drop the file, done. Race-safe, use-bounded, audit-logged. The DCN-style "no password required" flow, with our typical attention to security primitives.

Email your supplier a single tokenised URL. They click, see your name and the document you asked for, drop the file, and you receive a fully classified, validated, audit-logged upload - pre-tagged with the supplier name and folder you preset.
No supplier signup, no SSO debt, no "lost my password" tickets. The token is a 192-bit URL-safe value; we store its sha256 hash, not the value itself, so even a leaked DB row cannot replay an upload.
Send the URL however suits you - your inbox, ERP, Slack. We have the supplier covered the moment they tap.
Plaintext returned to the admin once at create time. The DB stores only the hash. Zero plaintext-token replay risk.
select_for_update on redeem. Two browsers can't double-spend a single-use token.
Pick the folder, doc type, supplier name when you create the link. Uploads land where you expect.
A supplier with their March CoA in one tab and your tokenised link in another. Total time to closure: about a minute.
The token is random URL-safe bytes. We store only the hash - a leaked DB row is not sufficient to replay an upload. Plaintext token returned to the admin once.
Default 14-day TTL, max 90 days. Default 1 use, configurable. Once the limit is hit the link silently stops working - no error message that leaks the existence of the supplier.
Two browsers redeeming the same single-use token simultaneously? One wins, one gets "already used". The use_count cannot drift past max_uses.
Token ID, supplier email, use number, max uses, document ID. Reviewable in the audit log UI; exportable as CSV.
When you generate the link, pick the folder and the expected document type. Uploads land tagged correctly - no cleanup later.
One click on the supplier-links admin page. The token is dead from that millisecond - even if the supplier already has the URL open in another tab.
Each stage is a real endpoint. Click through to see what runs at each point - and what we do to keep the token race-safe.
You enter supplier email, expected doc type, folder, optional note. We generate a 192-bit URL-safe token, sha256 the hash, store the row, return the plaintext URL once.
POST /supplier-upload-linksYou enter the supplier email, the expected doc type, the folder, optional note. We generate the token, sha256 the hash, store the row, return the URL once.
POST /supplier-upload-linksYou email the URL to your supplier. (We can also send it for you when SES inbound is wired in P1.)
mailto: from your inboxPublic page (no auth) verifies the token is usable, shows your supplier their name and the expected document type, plus the note you wrote.
GET /public/supplier-upload/<token>They drop the PDF. The same upload pipeline as a logged-in user runs - OCR, classify, validate, score, audit-log.
POST /public/supplier-upload/<token>used_count incremented atomically. last_used_at stamped. If max_uses hit, the link silently stops resolving on the next visit.
select_for_updateIn your repository tagged with the supplier name, the folder, the doc type - pre-routed for your reviewer.
/Try it: create a tenant, generate a supplier link, watch how the upload arrives pre-tagged.