Support

Security

Last updated

Receipts and invoices are financial documents: they carry vendors, amounts, dates, and whatever else is printed on them. This page sets out plainly how they are protected, what we have chosen not to do, and what we do not claim. It sits alongside the Privacy Policy and the Data Retention page.

At a glance

  • 01
    Everything is in Canada. Your account, your documents and your records are stored in the AWS Canada (Central) region. One step — reading a document — is performed by Google outside Canada, and the Privacy Policy says so.
  • 02
    Your documents are private storage, not a public address. There is no public link to a document. Each one opens through a one-off link that lasts sixty seconds and is issued only after the server has checked that your account owns that record.
  • 03
    Nobody else can reach your records. There is no sharing, no second login, and every request is authorized on the server against your signed-in account.
  • 04
    Encrypted in transit and at rest, with backups that let a mistake be undone.
  • 05
    We do not claim perfection. What we commit to is holding little, checking everything on the server, and telling you promptly if a breach affects you.

This summary is provided for convenience only; the sections below are the detail.

Where your records live

Section 01

Your account, your sets of books, your documents and the records made from them are stored and served from the Amazon Web Services Canada (Central) region. The emails we send you go out from the same region. The one exception is reading a document, which is performed by Google outside Canada — section 12, and Privacy §6.

Encryption in transit

Section 02

The site and the application are served over HTTPS only. Every page is sent with a strict-transport-security header covering this domain and its subdomains for two years, so a browser that has seen this site once refuses an unencrypted connection to it afterwards. Uploads and downloads of your documents travel over the same encrypted connections.

Encryption at rest

Section 03

Who can read your records

Section 04

How a document is opened

Section 05

There is no public address for a document: the storage bucket has no public read access and no public base URL exists. When you open a record, the server checks that your account owns it and then issues a one-off signed link that expires after sixty seconds.

The link also forces the file’s type from its stored name — JPEG, PNG or PDF — so a stored file can never be served back to a browser as a web page. A key that is not exactly the shape we store documents under is never signed at all.

What you can upload

Section 06

Only JPEG, PNG and PDF, up to 10 MB. The type is checked in the browser, again when the upload is authorized, and once more from the file’s own leading bytes when it is read — so a file renamed to look like an image is caught. The link that authorizes an upload is valid for five minutes and writes to one place only: your own account’s area of the storage.

Sign-in and passwords

Section 07

Every request is checked on the server

Section 08

Every private route of the API sits behind an authorizer that validates your sign-in token before the request reaches any code of ours. The code then checks ownership again for the specific set of books or document you asked for, and answers 404 — not 403 — for anything belonging to another account, so the API never confirms that someone else’s record exists.

Isolation is tested rather than assumed, including the awkward case of one set of books whose identifier begins with another’s.

Keys, and least privilege

Section 09

Each server function runs with its own role, holding only the permissions its own job needs: the function that authorizes an upload may write to the documents area and nothing else, the function that keeps your sets of books may touch only that one table, and each may write only to its own log. None can reach another product’s resources in our account. Our keys live in AWS Secrets Manager and are fetched at run time; none is in the site’s code, in a page, or in a configuration file.

What the site sends with every page

Section 10

Backups and recovery

Section 11

Records can be restored to any second in the last 35 days, and document storage keeps earlier versions of a file, so a bad overwrite or a wrong deletion can be undone. A record inside its six-year period is never destroyed silently — the Data Retention page sets out the whole life of a record, including what a removal really does.

Reading a document

Section 12

When a document is added, the file is sent to Google’s Gemini service to be read, together with today’s date and the list of expense lines on that set of books’ form. Your name, email address, mobile number and account identifier are never sent. We use the paid service, under whose terms Google does not use what we send to improve its products. The model only proposes a result: our own code refuses any expense line that does not exist on that form, and flags an uncertain reading for your review.

What our logs hold

Section 13

Our server logs record what happened — which function ran, which document identifier, how long it took, and any error — together with an internal account identifier. They never hold the contents of a document, and error messages are redacted before they are written. Logs are kept for 30 days and then deleted automatically.

Tested before it ships

Section 14

Every server function is exercised against a strict local harness before it is deployed — including the cases that matter here: a request with no sign-in, another account’s set of books, a document identifier that belongs to someone else, a signed link for a key that is not ours, and a response body checked field by field to be sure it carries nothing internal. The front end is audited the same way on every release.

If something goes wrong

Section 15

If a security incident creates a real risk of significant harm to you, we will notify you and the Office of the Privacy Commissioner of Canada as soon as feasible, as PIPEDA requires, and tell you what happened and what to do about it. We keep a record of every breach of security safeguards for at least 24 months, whether or not it was reportable — Privacy §13.

Reporting a vulnerability

Section 16

If you believe you have found a security problem, please tell us before telling anyone else, at contact@cinintiriks.ca. Tell us what you found and how to reproduce it. We will acknowledge you, work with you on it, and we will not pursue anyone who reports a problem in good faith and does not access, change or keep another person’s data.

What we do not claim

Section 17

No system is perfectly secure, and anyone who tells you otherwise is selling something. We are a small company, we do not hold a SOC 2 report or an ISO certification, and we say so plainly rather than implying audits we have not had. What we commit to is narrower and more useful: holding only what the service needs, keeping the ways in as few as possible, checking every request on the server, and telling you promptly if a breach affects your information.

CININTIRIKS INC.
contact@cinintiriks.ca
1‑833‑980‑0707 (toll-free)
375 University Ave, Unit 102 Suite 3334
Toronto, ON M5G 2J5, Canada

Questions?

Write to the CININTIRIKS team.

contact@cinintiriks.ca →