ChargeBasis

Security

What happens to your documents

A freight invoice names your suppliers, your volumes and what you actually pay to land goods. It is among the more commercially sensitive files you hold, and uploading it here means handing it to somebody you have not met. This page says exactly what happens to it — including the parts that are not finished.

Storage

Private, never public

Files are written to a private bucket. Nothing is ever placed on a publicly reachable URL — not temporarily, not behind an unguessable path. There is no address you could share, accidentally or otherwise, that would let somebody read your documents.

Downloads are gated twice

A download link carries a signed token bound to that one document, so editing the address to point at a different file fails. It is checked again at the moment of the request against live membership of your organization — a link that outlives somebody's access to your account stops working.

Served as attachments, never rendered

Documents are returned with headers that force a download and forbid the browser from guessing the file type, so an uploaded file cannot execute anything in this site's context.

A document that is not yours returns nothing

A file belonging to another organization and a file that does not exist produce the identical response. The system will not confirm that a document exists to somebody not entitled to it.

How long anything is kept

Without an account: 24 hours

A free check needs no account and no email address. The upload and its analysis are deleted automatically within a day. The stored bytes go first, then the records that pointed at them.

With an account: until you delete it

Shipments are kept so you can come back to a case. Deleting a shipment removes its documents, findings and stored files. Deleting your organization removes everything, and you can close the account in the same action.

Rate limiting never stores your address

Free checks are limited per network per hour. The limiter keys on a salted hash of the IP address, truncated. The address itself is never written down.

What a language model is and is not allowed to do

One line, and it does not move: a model may read documents. It may not decide anything.

Every number is deterministic

Arithmetic, totals, charge matching, duplicate detection, day counts, evidence requirements and case readiness are all produced by ordinary code that can be re-run and tested. None of them is a model output.

Your documents are not training data

They are processed to produce your analysis and to operate the service. They are not sold and they are not used to train models.

Text inside a document cannot give instructions

Document text is delivered inside a delimited envelope, the model is given no tools, and its output is schema-validated so it can only fill in fields. Instruction-shaped text found inside an uploaded file is flagged for a human rather than followed.

The in-product explainer never sees a document at all

When you ask why a finding says what it says, the answer is assembled from what the engine already recorded — the rule, the checks, the evidence, the citations. It cannot introduce a fact or reach a different conclusion, because it is not given the inputs that would let it. Anything outside that goes to a person.

Accounts and separation

One account, one organization

Every record carries an organization, and every query filters on it. A shipment belonging to somebody else is indistinguishable from one that does not exist.

Passwords

Hashed with scrypt and a per-user salt, compared in constant time. Sign-in returns the same message whether the account exists or the password is wrong, so the form cannot be used to discover who has an account. A completed password reset destroys every existing session — if somebody else had access, leaving their session alive would defeat the reset.

Card details never reach this server

Payment happens on the provider's hosted checkout. There is no card field anywhere in this application.

Logs never contain your documents

Errors record a type and a short context, never a message that might echo document text. The audit trail strips any field that could carry document contents, because it outlives the documents it describes and must not become a copy of them.

What is not done yet

Every security page lists strengths, which is why listing only strengths tells a careful reader nothing. These are the open items.

Database row-level security is enabled, not forced

Isolation between organizations is enforced in the query layer, and that is what is actually protecting your data today. Database-level policies exist as a second layer but are not yet the mechanism. Closing that is the first thing on the list.

No malware scanning is wired up

The integration point exists and a file that is not marked clean is never read or downloadable, but no scanner is connected. Uploaded files are never executed and are only ever parsed as documents.

No third-party security audit

Nobody independent has reviewed this. If that is a requirement for you, it is a fair reason to wait, and worth saying so rather than letting a certification badge imply otherwise.

Reporting something

If you find a vulnerability, write to support@chargebasis.com before disclosing it publicly. It reaches the person who built the system, and you will get a real reply.

What is collected and why is set out in the privacy notice; the commercial terms are in the terms of service.

Security · ChargeBasis