In plain English
Your books (ledger, invoices, customers, statements, supplier PINs) stay on your own device and we never receive them in a form we can read. A paid licence keeps an encrypted backup with us that only your passphrase or recovery key opens, and with sync on, changes travel between your devices encrypted. We hold only what we need to sell and activate licences, keep those backups, run the AI assistant and tasks you ask for, pass your requests to KRA, and measure our ads on Facebook and Instagram. When you use the Assistant, only the answers it needs from your books leave your device, and we delete the conversation after 30 days. You can object to ad measurement at any time (section 7).
This summary helps you read the privacy notice. The full text below is what applies.
Section 1: Who we are
Hesafi is a KasiLabs product. KasiLabs (registration number [Business registration number]), [Physical address, Nairobi, Kenya], decides how and why the personal data in this notice is used: it is the data controller under Kenya's Data Protection Act and the responsible party under POPIA. Email ask@hesafi.com, WhatsApp +254700000000. Our data protection contact, who is also our Information Officer for South Africa, is [Name of the data protection contact], reachable at the same email address.
Section 2: Your books stay on your device
Hesafi is local-first. Your ledger, invoices, customers and suppliers, supplier KRA PINs and invoice numbers, and the statements you import are stored and processed only in your browser or the installed app, on your phone or computer. They are not sent to us in a form we can read, and we cannot see or recover them. Backups are encrypted on your device with your passphrase before you save or share them, and before the app sends one to our cloud storage (section 3c). If you turn on sync, your changes pass through our server to your other devices, encrypted on your device first (section 3l). This is why we hold so little personal data.
On your device
- Ledger
- Invoices
- Customers and suppliers
- Supplier PINs and invoice numbers
- Imported statements
- Backups, encrypted with your passphrase
Reaches our server
- Licence key
- Email, as a one-way fingerprint
- A random device id
- Edition and dates
- Cloud backups we can't open (paid licences)
- AI credit balance and usage
- What you ask the Assistant, and the answers it needs
- Requests you send to KRA
- Ad events (Conversions API)
Services we use
Each links to its row in section 4.
Section 3: What we collect, why, and on what basis
(a)Licence and activation
Your licence key; your email address, which we keep only as a hash (a one-way fingerprint) so support can find your licence; a random device identifier for each activated device; the edition you bought; and dates. Purpose: to issue your licence, activate it on up to 3 devices and help you if something goes wrong. Basis: performance of our contract with you. Giving an email is required to buy: without it we can't deliver your licence.
(b)Payments
Card purchases are sold by Polar as merchant of record: Polar collects your card and billing details under its buyer terms, and we never see your card number. M-PESA purchases are processed by Paystack, which receives your phone number, email and the payment reference. From them we receive the order or reference, the amount, your email and the business name you enter. Basis: our contract with you, and our legal duty to keep sales records for tax.
(c)Encrypted cloud backup (Standard and Pro)
With a Standard or Pro licence, the app backs up your books to our cloud storage about once a day while it is open, unless you turn this off. It is the same file as a backup you save yourself: encrypted on your device with AES-256-GCM before it is sent, and opened only by your passphrase or recovery key. We never receive either of them, so neither we nor Cloudflare can read your books. What we can read is the file's unencrypted label: your business name, when the copy was made, the app version and the country edition. With it we keep the file's size, when it arrived, your licence ID and a random ID for the business. The copies are stored with Cloudflare R2 in Western Europe.
We keep the newest copy of each of the last 7 days you backed up and one copy a month for the last 12 months, and delete older copies automatically. If your licence is refunded or revoked, we delete its backups 90 days later. You can delete them yourself at any time in the app (Settings, Backups, Delete my cloud backups) or ask us to delete every copy for your licence. Basis: our contract with you, for the backup included in your licence.
(d)The Hesafi Assistant (optional, paid with credits)
The Assistant answers questions about your books and can propose changes to them. Your books stay on your device: when the Assistant needs something, it asks the app, and the app answers from your device with only what that question needs (for example a month's totals, or the transactions that match). What leaves your device: your messages, any receipt photo or document you attach, and those answers. Never your whole books, your backups or your passwords. They go through our server and Cloudflare, our infrastructure provider, to an AI service provider we contract with in the USA, which writes the reply. Our contracts don't allow AI service providers to train on your data or keep it (zero data retention), and neither Cloudflare nor we log it on the way.
We keep each conversation (your messages, the Assistant's replies and the answers from your books) in Convex so it can continue where it left off, and delete it 30 days after you last used it, or straight away when you delete it in the app. Customer and supplier names can contain personal data: in Settings you can stop the app sending them, and it then sends stable stand-ins such as "Customer A". No change is made to your books until you approve it (or turn on automatic changes for that kind yourself), and you can undo most changes. You can switch the Assistant off entirely. Basis: our contract for the service you use, and your consent when you switch it on (Kenya DPA s.49 for any sensitive data processed outside Kenya).
(e)One-off AI tasks
For the one-off tasks of reading a receipt and sorting transactions, only the text or image you choose to send (for example the descriptions and amounts of selected transactions, and your category names) goes through our server and Cloudflare to an AI service provider we contract with in the USA, on the same terms: no training on it, not kept, not logged. Nothing is sent until you start a task, and the app shows its cost first. M-PESA descriptions can contain other people's names and phone numbers: only send lines you are comfortable sharing for this purpose. Basis: your consent, given when you run the task (Kenya DPA s.49 for any sensitive data processed outside Kenya), and our contract for the task you buy.
(f)AI credit ledger
Your licence ID, credit balance, the type of task, the AI model used, how many tokens it processed and the credits it used. If you pay by card, Polar also receives these usage figures (never the content) to show them on your Polar account. Basis: contract. Usage records are deleted after 13 months.
(g)KRA services (Kenya)
When you ask the app to, our server passes your request to KRA's official services (GavaConnect) and returns KRA's answer to your device: checking a KRA PIN (yours, or a customer's or supplier's), checking a supplier's eTIMS invoice by its number and date, and fetching your tax obligations. To file a turnover tax or nil return through Hesafi, you first prove the PIN is yours: you type the ID number registered with it, KRA confirms the match, and we keep only the PIN, how it was confirmed and when. We never store the ID number. When you file, KRA receives your PIN, the period and, for turnover tax, your gross turnover; you confirm these figures before anything is sent.
We keep a record that each filing happened (PIN, type of return, period and whether KRA accepted it) so a return is never filed twice. The amounts, KRA's acknowledgement number and the payment number (PRN) stay on your device. Basis: our contract for the service you ask for. KRA uses what it receives under Kenyan tax law.
(h)eTIMS invoices (Kenya, optional add-on)
If you turn on eTIMS invoicing, each invoice or credit note you issue is sent through our server to KRA's eTIMS so KRA can sign it: your PIN and branch, the items with their KRA codes, quantities, prices and tax, the payment type, and your customer's PIN and name if you entered them. The app also sends the stock movements and supplier purchases eTIMS requires for goods. We keep your eTIMS device details and an encrypted device key, and for each document only its reference, status and when it was sent, to count your plan's documents. We do not keep the contents of your invoices. Basis: our contract, and your legal obligation to issue invoices through eTIMS.
(i)Advertising measurement
We use Meta's tools to learn which of our ads bring people who go on to use Hesafi. On this website: Meta Pixel cookies (_fbp, _fbc), the pages you view and buttons you tap (never on the M-PESA converter or invoice generator pages). From the app and our server, through Meta's Conversions API: that you set up your books, started or completed a purchase, and the price of a licence you buy, with your IP address, browser user agent, a random device id and, when you have given it to us, your email or phone number as a hash. Purpose: measuring and improving our ads on Facebook and Instagram. Basis: our legitimate interest in knowing which advertising works, balanced by the small amount of data involved and your right to object (Kenya DPA s.30(1)(b); POPIA s.11(1)(f)). You accept this notice with our terms of use before you use the app. We never send Meta anything from your books: no amounts you record, no customers, no statements.
You can object at any time. In this browser, use the button on the cookie policy. To change how we measure ads for you, or to stop it on all your devices, write to ask@hesafi.com. To recognise your devices we match your email, your phone number or the random device id the app uses; we'll help you find it when you write. We then stop sending events about you. Where the law of your country requires your consent first (for example in the European Union), we ask for it before anything is measured.
(j)Support
If you message us on WhatsApp or by email, we keep the conversation to help you. WhatsApp is operated by Meta. Please don't send us your backup passphrase, recovery key or statement passwords.
(k)Hosting and security
Our product analytics and error monitoring run on our own infrastructure provider (Cloudflare) to understand which features work and diagnose failures. We send a hashed installation identifier, feature-use categories, app and device categories, and scrubbed technical errors; never book contents, names, contact details or tax PINs, and never session recordings. You can ask us to stop at ask@kasilabs.com.
Cloudflare processes your IP address to deliver this website and protect it from abuse (rate limiting). Request logging on our server is switched off.
(l)Device sync (optional)
If you turn on sync for a business, each change you make is encrypted on your device with a key that only your devices hold, and stored in Convex until your other devices have it. We cannot read the changes, the business name or the key. What we can see: your licence, a one-way fingerprint of each synced device, its browser name (for example "Chrome on Android"), when it last synced and how far it has caught up, and the size and time of each encrypted change. The key is also stored locked with your backup recovery key, so a new device can join with it. Basis: our contract for the service you turn on.
Section 4: Who receives data
| Recipient | What for | Where | Safeguard |
|---|---|---|---|
| Cloudflare | Our infrastructure provider: hosts this website and the app, runs our small server (licences, AI and KRA requests), carries AI requests to the AI service providers, stores encrypted cloud backups (R2), and runs product analytics and error monitoring | Global network, USA company; cloud backups in Western Europe | Data processing terms; allow-listed feature categories and scrubbed technical errors, without request details; backups are encrypted before they leave your device |
| Convex | Stores licences, activations, the AI credit ledger, Assistant conversations (30 days), records of KRA requests and, if you turn on sync, your devices' encrypted changes | USA | Data processing terms |
| AI service providers | Run the Hesafi Assistant and the one-off AI tasks (reading a receipt, sorting transactions) | USA | Contracts that don't allow them to train on or keep your data (zero data retention); reached only through Cloudflare, with logging off |
| KRA | Kenya Revenue Authority: PIN and invoice checks, tax obligations, returns you file, and eTIMS invoices you issue | Kenya | Disclosure to the tax authority at your request, or as tax law requires |
| Polar | Sells card purchases as merchant of record; collects card and billing details | Outside Kenya and South Africa | Polar's buyer terms and privacy policy apply to card buyers |
| Paystack | Processes M-PESA payments (phone number, email, reference) | Kenya and Nigeria | Payment processing terms |
| Cloudflare Email Service | Delivers licence-key emails from info@hesafi.com and payment notices to our operator; replies go to ask@hesafi.com | Global network, USA company | Data processing terms |
| Meta | Measuring our ads (Pixel and Conversions API); WhatsApp chats with us | USA and Ireland | Meta Business Tools Terms and data processing terms; WhatsApp terms |
We don't sell personal data, and we don't share it with anyone else unless the law requires it.
Section 5: Transfers outside Kenya and South Africa
Several of the services above are outside Kenya and South Africa. We transfer personal data to them because it is needed to perform our contract with you or with appropriate safeguards in place (Kenya DPA s.48; POPIA s.72), and, for any sensitive personal data, only with your consent (Kenya DPA s.49). Encrypted cloud backups are stored in Western Europe; the only readable part of them is the label described in section 3c.
Section 6: How long we keep it
- Licence and payment records: while your licence exists, then for as long as tax law requires us to keep sales records (at least 5 years).
- Encrypted cloud backups: the newest copy of each of the last 7 days you backed up and one a month for 12 months; 90 days after a licence is refunded or revoked; or until you delete them.
- Assistant conversations: 30 days after you last used them, or until you delete them.
- AI usage records: 13 months.
- KRA filing records and your confirmed PIN: while your licence exists, then as long as tax records must be kept (at least 5 years).
- eTIMS document references: as long as tax records must be kept (at least 5 years).
- Ad-measurement details stored with a checkout: 7 days.
- Meta cookies: about 90 days, or until you opt out.
- An opt-out: 12 months in your browser; an objection you send us: for as long as we measure ads.
- Product analytics and scrubbed errors: 3 months. Installation retry metadata: up to 8 days after the last accepted event.
- Support conversations: up to 2 years after the last message.
- Encrypted sync changes: until all your devices have them and a newer encrypted cloud backup holds them (at least 7 days); everything is deleted when the last device stops syncing. A device's sync record: until you remove it.
Section 7: Your rights
Under the Kenya Data Protection Act (s.26) you have the right to be informed, to access your personal data, to object, and to have it corrected or deleted, and under s.38 to receive it in a portable format. Under POPIA you have the right to access and correct your information, to object to its processing (s.11(3)), and to complain. Write to ask@hesafi.com or message us on WhatsApp; we reply within 30 days, and an objection to ad measurement takes effect as soon as we receive it. Data in your books is on your device: you can export or delete it yourself at any time.
You can complain to the regulator:
- Kenya: the Office of the Data Protection Commissioner, odpc.go.ke.
- South Africa: the Information Regulator, JD House, 27 Stiemens Street, Braamfontein, Johannesburg 2001, inforegulator.org.za.
Data protection contact
[Name of the data protection contact]
- ask@hesafi.com
- +254700000000
- Reply
- Within 30 days
Section 8: How we protect it
TLS on every connection; backups, cloud backups included, encrypted with AES-256-GCM on your device, with keys we never receive; emails stored as hashes; the least data needed for each purpose; secrets kept in managed secret stores; and access to our systems limited to the people who need it.
Section 9: If something goes wrong
If a breach of personal data we hold creates a real risk of harm, we will tell Kenya's Data Protection Commissioner within 72 hours (Kenya DPA s.43), notify South Africa's Information Regulator as soon as reasonably possible (POPIA s.22), and tell the people affected.
Section 10: Automated decisions
We make no automated decisions with legal or similar effects about you (Kenya DPA s.35). The Assistant and AI tasks only suggest: changes to your books are made when you approve them (or for the kinds of change you chose to apply automatically), returns are filed only when you confirm the figures, and you can undo most changes.
Section 11: Children
Hesafi is for businesses and is not meant for anyone under 18.
Section 12: Marketing messages
We send marketing by email or WhatsApp only if you opt in, and every message lets you unsubscribe (Kenya DPA s.37; POPIA s.69). Licence and receipt emails are not marketing.
Section 13: Changes
We'll update the version and date at the top when this notice changes, and tell you in the app about important changes. See also thecookie policy.
Version history
Version history| Version | Date | What changed |
|---|---|---|
| 1.0 | 21 October 2026 | First version. |
| 1.1 | 23 October 2026 | Added the Hesafi Assistant (conversations kept 30 days), the KRA services you use (PIN and invoice checks, tax obligations, filing turnover tax and nil returns), eTIMS invoicing, and optional device sync (changes encrypted on your device, stored in Convex until your other devices have them). |
| 1.2 | 23 October 2026 | Encrypted cloud backup for Standard and Pro (Cloudflare R2, Western Europe; what we keep, for how long, and how to delete it) replaces Google Drive backup. |
| 1.3 | 24 October 2026 | KasiLabs named as the data controller, with one contact address (ask@hesafi.com). AI service providers described as a category: contracted in the USA, with no training on or keeping of your data. How to change or stop ad measurement by writing to us. |
Questions about this privacy notice? Ask a person on WhatsApp, or email ask@hesafi.com.