Kivolio
Private preview

Security and your data

This is the page the claim below is checked against. Every outside service Kivolio calls is named further down, one line each, and the privacy policy is the authority for all of it.

Your records are yours: never training data, exportable whole, and the privacy policy names every outside call we make.

That sentence is published as where Kivolio is going, ahead of the code, and that was a deliberate decision rather than an oversight. A whole-account export and self-service account deletion are not built. This page says where each part of the claim actually stands.

Where your records are

On servers we operate at Hetzner, in Falkenstein, Germany. Bill and document records live in a single SQLite database; the original PDFs and images are stored as ordinary files on the same machine, under a separate tree per organisation. Your organisation's records are readable only through your organisation's membership: another customer's account cannot see them.

The database is snapshotted twice a day, at 03:00 and 15:00 UTC, integrity-checked, compressed and kept for 30 days, together with a daily snapshot of the stored files. Those snapshots are pushed twice a day to a Hetzner Storage Box in Helsinki, Finland, over SSH, reachable only from our server. A record you delete therefore persists in backups for up to 30 days before ageing out.

We make no claim here about encryption at rest. The privacy policy does not make one, and this page does not go past it.

Who can see your records

The people in your own organisation, according to their role — and us. We run the server, so we can reach the machine, its database and its backups. That access is used for operating the service, restoring it, and supporting you when you ask; it is not used to read your books for any other purpose, and your records are not sold, shared or mined.

We would rather say that plainly than imply a technical barrier that does not exist.

What does not exist is a screen for reading your books. There are operator pages for running the service: which organisations exist, their AI quota, what their reading costs and whether their sync is healthy. Nothing in them opens a customer's bills, documents or email.

Every outside call we make

This list is kept as a manifest of call sites in the code, beside the privacy policy, and it is meant to be complete. One line each here; the policy has the detail.

  • Your mail provider. Google's Gmail API or Microsoft Graph, to fetch mail and to exchange OAuth tokens when a mailbox is connected or a token is refreshed. Reads only.
  • Sign in with Google. A separate, much smaller exchange, asking Google only who is at the keyboard. No lasting Google credential is requested or kept.
  • The AI provider that reads documents. Anthropic by default; an organisation's owner may instead select OpenAI, and those two are the only choices a customer organisation has.
  • Xero, if an organisation connects it. A draft supplier invoice with the stored document attached. Nothing is sent until an owner connects it.
  • Exchange-rate lookups. api.frankfurter.dev, with open.er-api.com as a fallback. Both receive a date and a pair of currency codes and nothing else.
  • Place lookups for the map. Google's Geocoding API, to turn a place named on a receipt into a coordinate. It is asked once per place, the answer is cached, and it is never sent a phone's own location.
  • Map tiles. The Map screen draws a Google map, so the browser or the phone loads map imagery from Google while that screen is open.
  • Apple's geocoding service, from the phone. A coordinate, turned into the street a receipt was captured on.
  • Images embedded in an email, when one is rendered to PDF. On by default, so the saved copy looks like the original, and it can be turned off in Settings.
  • Serbian fiscal receipts. A receipt carrying a Serbian tax QR code is verified against the Serbian tax authority's own service, which is what the code is for. Serbia only.
  • Unsubscribe requests. Only the senders you select and confirm, sent to the address that sender printed in its own headers.
  • Off-site backups. To the Storage Box described above.
  • The web certificate. Obtained and renewed from Let's Encrypt. No account data is involved.
  • A webfont. The application's own stylesheet loads a font from Google Fonts, so opening a page of the web interface asks Google for it. We are removing it. This site never loads it.

There is no analytics, no tracking, no advertising, no crash or error reporting, and no outbound email capability of any kind.

Two services will join this list before public sign-up, because the service cannot open without them: something to send email, and a payment processor. Neither exists yet.

Gmail and Outlook

Access to a connected mailbox is read-only, and that is enforced by the permission itself. Kivolio requests the gmail.readonly scope from Google and Mail.Read from Microsoft. It never sends, replies to, forwards, deletes, labels, moves or otherwise modifies anything in a connected mailbox.

This is the justification we give Google for that permission, word for word:

Kivolio is a bill and receipt aggregator. With the user's read-only Gmail permission it reads messages in the mailbox the user connects to find bills, invoices and receipts, extracts the supplier, amount, date, currency and VAT from each, and files them for the user's bookkeeping and accountant handover. Reading message content and attachments is required because bills arrive as email bodies and PDF/image attachments. The app never sends, modifies, labels or deletes mail; extracted data and the original message/attachment are stored in the user's own Kivolio account, on servers Kivolio operates. Google user data is used only to find and file that user's own bills and documents; it is not sold, not used for advertising and not used to train AI models, and it is passed on only where needed to provide the feature the user asked for — to the AI provider that reads the document and, if the user connects them, to Xero or the accountant the user sends a handover to.

The Google app is not verified yet

Its publishing status is Production, and unverified. Connecting a Gmail mailbox therefore meets Google's "Google hasn't verified this app" screen, behind an Advanced link. There is also a hard lifetime cap of 100 users on grants of the Gmail permission; it is cumulative, so revoking a user does not return the slot.

The branding half of verification was verified and published on 10 September 2026. The data-access half has not been submitted. We hold no security certification: the security assessment that verification requires has not been started, and we would rather say so than let the word "secure" do the work.

The AI provider, its key, and training

Every document is read by a third-party AI model. What is sent is the material being classified, and only to the one provider that organisation has configured: Anthropic by default, or OpenAI if its owner selects it.

Kivolio trains no model of its own, and does not have one. What a provider does with what it receives is governed by that provider's own terms, and we will not overstate them: a no-training position confirmed in writing is not yet in place, and obtaining one — or dropping any provider that cannot back it — is something we have committed to before public sign-up opens. Data obtained from a connected Google account is covered by the stricter, unconditional undertaking quoted above.

Where the key lives

Kivolio's own AI key lives in the server's environment, never in a database row, and it never reaches a device. The iPhone app classifies through a metered proxy on our server, and the phone's configuration endpoint hands out no key at all — it does not even read one.

Or set your organisation's own key, and the reading runs on your contract, your bill and your data-processing relationship. The meter still counts it.

No third-party script touches your records

It is a standing rule, not a judgement made case by case: no analytics and no third-party script goes into the application's templates. Measurement lives on this marketing site, cookieless, and never on the pages that render one organisation's financial records.

The one third-party script inside the application is the Google map on the Map screen. The application host is kept out of search results as well: it answers robots.txt with Disallow: / and sends X-Robots-Tag: noindex, nofollow.

This page loads nothing from anyone else, and you can confirm that in your own browser's network tab. Keeping it small enough to check is part of the argument.

Getting your records out

What exists today: a CSV export of every bill row, from the Storage panel in Settings; per-project handover packs for your accountant, which bundle the bills in a date range with their documents, images re-encoded to JPEG and capped at 2000 pixels; a download button on every individual bill and document, which gives you the original file; and expense reports as CSV per project.

What does not exist yet: a single whole-account export containing every bill, every document and every stored file in one archive, and deleting a whole account or organisation in one action. Both are conditions of public launch and neither is built. Until they are, write to privacy@kivolio.app and we will do it by hand.

Individual bills and documents can be deleted inside the application at any time, and removing a mail account deletes that account's stored records and files along with its authorisation. Deleted data ages out of the backups within 30 days.

Subprocessors

Subprocessors — in preparation, published before public sign-up.

Kivolio has no data processing agreement and no published subprocessor list yet. Both are being prepared before public sign-up opens. The services this page names are, in the meantime, the list.

What people ask about this page.

Can I check any of this?

That is what it is for. The privacy policy is written to match the code and names the same services in more detail, and this page loads nothing from anyone else, which your own browser will tell you.

Do you hold a certification?

No. None has been started, and there is nothing to point at. The Google OAuth app is in Production and unverified, which is why the consent screen warns about it.

Is there a data processing agreement?

Not yet. A DPA and a published subprocessor list are both being prepared before public sign-up opens.

Can I leave with my records?

CSV and handover packs today; whole-account export is a condition of public launch. Your records are never training data.

The policy is the authority

This page summarises. The privacy policy carries the detail — what is collected, what leaves the servers, how location works, what Google user data is used for, and how long anything is kept — and it is written to match the code rather than to describe an aspiration.

Questions about your data, a copy of it, or a deletion: privacy@kivolio.app. Anything else: hello@kivolio.app.