Kifayat

Privacy Policy

This policy explains what the Kifayat mobile app collects, why, where it is kept, and how to get rid of it.

Effective 5 August 2026 · Last updated 16 September 2026

The short version

  • Kifayat stores your financial records encrypted on your own device.
  • If you create an account, your records also sync to your private account on our server, over HTTPS.
  • Your transactions, amounts and notes are never sold or shared with anyone, in any form.
  • There are no ads inside the app. We do use ordinary analytics — which screens get opened, which features get used — and an advertising ID, to understand the app and to measure which adverts bring people to it. Never what you spend.
  • The app reports its own crashes, with your financial details stripped out before they are sent. What that means, exactly.
  • You can export everything or delete everything, from inside the app, at any time.
  • Kifayat never asks for your bank login and has no connection to any bank.

The rest of this page is the detail behind those seven lines. Where a line draws a distinction — between your money and your taps, between advertising inside the app and advertising for it — the distinction is the point, and the detail below says exactly where it falls.

Who we are

Kifayat ("the app") is published by Devkal ("we", "us"). For anything in this policy, write to support@devkal.com.

What Kifayat collects

1. Account information

Collected only if you choose to create an account:

2. The financial information you enter

Everything in this category is typed by you. Kifayat has no access to any bank, card or payment account, and cannot import anything on its own.

A note about the names in udhaar and committees. Those are other people, and you typed them. They are stored the same way as everything else here: encrypted on your device, synced only to your own account, never sold, never shared, and never sent to any analytics or advertising service. Please enter only as much as you need to recognise the person — a first name is usually enough, and the app never asks for anyone's phone number or address.

3. App preferences

4. Crash reports

When Kifayat crashes or hits an internal error, it sends us a report so the fault can be found and fixed. This is the one thing the app sends that you did not type, and it is worth being precise about.

What a report contains:

What a report cannot contain:

That second list is enforced in the app's code rather than promised. A crash report is assembled from a fixed set of safe fields — an error type and a code from a closed list — instead of being assembled from the error text and then filtered. Nothing is sent and later scrubbed, because scrubbing is the part that fails quietly. An automated test fails our build if any error message stops being one of the fixed codes.

The identifier is per installation, not per person. It is not your account, not your email, and not an advertising ID; it is regenerated if you reinstall, and it cannot be connected to your ledger, which never leaves your device unencrypted.

Crash reporting is handled by Firebase Crashlytics, a Google service, acting for us. Reports are not used for advertising, and Google Play requires us to have this working well enough to spot a bad release.

5. How the app is used, and the advertising ID

Kifayat sends us ordinary product analytics, through Firebase Analytics, a Google service. This is the part of the policy most apps leave vague, so here it is exactly.

What is sent:

What can never be sent:

That second list is a property of the code, not a promise. Analytics values in Kifayat can only be a number, a true/false, or one option from a fixed list — there is physically no way to put a piece of text into one. An automated test fails our build if that stops being true. So "we do not send your spending" is not something we remember to do; it is something the app is unable to do.

The advertising ID is a resettable number Android gives to apps. We use it to measure which adverts actually bring people to Kifayat, and to show the app to people like those who already use it. It is not linked to your ledger and cannot be used to look up anything you have entered. You can reset it, or switch it off entirely, in Android Settings → Privacy → Ads, and the app keeps working exactly as before.

Unlike Supabase and Crashlytics, which handle data purely on our instructions, Google also uses analytics and advertising-ID data for its own purposes. Under Google Play's own rules that counts as sharing, and our Data safety listing says so. We would rather write that here plainly than let you discover it on a form.

6. Where you came from

When you install Kifayat, Google Play tells the app which advert, link or campaign you arrived through. That comes from Play rather than from your phone — nothing about you is sent to get it — and we use it to work out which of our adverts are worth paying for.

What Kifayat does not collect

This list is exhaustive and deliberate. The app contains no code to do any of it:

The line we hold is financial data, not telemetry as a category. That is a narrower promise than "we collect nothing", and we make it deliberately, because it is one we can actually keep. Which screens people open tells us where the app confuses them. What you spend tells us nothing we have any business knowing.

Where your data is stored

On your device

Your ledger is held in a SQLCipher-encrypted database on the phone itself. The encryption key is generated on your device the first time you open the app and is kept in the Android Keystore. It never leaves the device, is never transmitted, and we do not have a copy of it.

Android's automatic cloud backup is deliberately disabled for this app, so your ledger is never copied into a Google backup.

On our servers

If you sign in, your records sync to your own account on infrastructure provided by Supabase, Inc., which supplies our database, authentication and file storage. Every request travels over HTTPS; the app refuses to connect to any address that is not HTTPS.

Access is restricted at the database level so that your rows are readable only by your own authenticated account.

Supabase operates data centres in several regions, so your data may be processed outside the country you live in. Supabase acts purely as our processor — it handles the data on our instructions and does not use it for its own purposes.

Who we share it with

Your financial records: nobody. We do not sell them, we do not share them for advertising, and we do not hand them to data brokers. Usage analytics is a different question, and it is answered honestly in the table below rather than buried.

Every outside service that receives anything at all:

WhoWhat forWhat they get
Supabase, Inc. Hosting our database, sign-in and file storage Your account details and synced records, held on our behalf
Google (Firebase Crashlytics) Telling us when the app crashes, so it can be fixed Crash diagnostics only — see Crash reports. No ledger data, no account details
Google (Firebase Analytics) Understanding which screens and features people use, and which adverts bring them here Screen and feature events, numbers and fixed choices, device and country, and your advertising ID — see above. No amounts, no notes, no names
Google Play Telling us which campaign you installed from; showing Play's own "rate this app" card and update prompts Nothing of yours. These ask Play for something, or ask Play to display something. Play already knows you installed the app — it installed it

Supabase and Crashlytics are processors — they handle what we send on our instructions and not for their own ends. Supabase stores your ledger on our behalf; Crashlytics is never sent it at all.

Firebase Analytics is not. Google also uses that data for its own purposes, which under Play's rules makes it shared rather than merely collected, and our Data safety listing is filled in that way. What it never receives is your money: no amount, no note, no name, by construction rather than by policy.

That is the whole list. Adding a service to it is a deliberate decision in our codebase, not a dependency upgrade — an automated test fails the build when any new network-reaching library appears, until this list is updated to match. The failure is the point.

We would disclose data if the law genuinely compelled us to — a valid court order, for instance. Nothing else.

Things worth spelling out

Fingerprint and face unlock

If you turn on the app lock, the check is performed entirely by Android. Kifayat receives only a yes-or-no answer. Your fingerprint or face data is never seen, received, or stored by this app, and never leaves your phone.

Notifications

Reminders — a budget running low, a bill due, a weekly summary — are scheduled locally on your device by the app itself. Their contents are never sent to a server, and there is no push-notification service involved.

Exports

PDF and CSV exports are generated on your device and go wherever you choose to send them. Once you share a file, what happens to it is governed by whichever app you shared it with.

Udhaar and committees — other people's names

When you record that someone owes you, you type their name. Kifayat treats that exactly like your own data: encrypted on your device, synced only to your own account, and never sent to analytics, advertising or anyone else. The other person is not contacted, is not told, and has no account here — this is your private record of an arrangement, not a shared one.

Hisaab Share

Sharing a balance builds a short piece of text on your device — a person's name and what the balance is — and hands it to whichever app you pick, or your clipboard. It is not sent to us, and there is no invitation and no shared record. Once it leaves through WhatsApp or anything else, what happens to it is governed by that app.

Gold rates

To value gold holdings the app fetches a current rate from our own server. When the rate it has is more than half a day old, the app first asks our server to refresh it, and the server fetches the price from a public currency feed. Neither request says anything about what you hold. Your weights and valuations stay in your ledger.

Permissions the app requests, and why

PermissionWhy
INTERNETSigning in and syncing your data
ACCESS_NETWORK_STATEChecking there is a connection before trying to send anything
POST_NOTIFICATIONSShowing the reminders you turned on
RECEIVE_BOOT_COMPLETEDRestoring your scheduled reminders after a restart
USE_BIOMETRIC, USE_FINGERPRINTThe optional app lock
VIBRATEHaptic feedback
WAKE_LOCKLetting a scheduled reminder finish waking the phone, and letting a queued report finish sending
AD_IDReading the advertising ID Android gives us, to measure which adverts bring people to Kifayat. Resettable by you in Android Settings → Privacy → Ads
ACCESS_ADSERVICES_AD_ID, ACCESS_ADSERVICES_ATTRIBUTIONAndroid's newer, more private way of doing the same advert measurement, used on Android 13 and above
BIND_GET_INSTALL_REFERRER_SERVICEAsking Google Play which campaign you installed from

That is the complete list, read off the built app rather than written from memory. There is one more that never appears in Android's permission screen: a private signature permission the app defines for its own internal messaging, which grants nothing outside Kifayat.

Kifayat requests no location, camera, contacts, calendar, call log, storage or SMS permission. Those are the ones that would let an app reach into the rest of your phone, and none of them is here.

An earlier version of this page said the app refused the advertising ID. That changed in this release, deliberately, and the table above now says so. We would rather correct it in public than leave a flattering sentence standing.

How long we keep it

Your data is kept for as long as your account exists. When you delete your account, it is removed from our live systems straight away and purged from our encrypted backups within 30 days. Data held only on your device disappears the moment you delete it or uninstall the app.

Crash reports and analytics are the exceptions, and we would rather spell that out than have you find it. Neither is attached to your account, so deleting your account does not delete them — there is no link along which to find them.

You can cut the advertising ID out of this at any time, without leaving the app, in Android Settings → Privacy → Ads. Resetting it makes past events unattributable to your device; deleting it stops one being sent at all.

Your rights

You can, at any time and without asking us:

Depending on where you live you may also have statutory rights of access, rectification, erasure, portability and objection. Write to us and we will honour them.

Deleting your account

In the app: Settings → Data & privacy → Delete everything. This removes your account from our servers first, then wipes the local copy. It cannot be undone.

Already uninstalled the app? Use the account deletion request page.

Children

Kifayat is intended for adults and is not directed at children. We do not knowingly collect data from anyone under 18. If you believe a child has created an account, write to us and we will delete it.

Changes to this policy

If this policy changes, the date at the top of this page changes with it. Anything that materially affects how your data is handled will also be announced in the app before it takes effect.

16 September 2026

A correction to Gold rates. It said the app only reads a rate from our server. The app can now also ask the server to refresh a rate that is more than half a day old, and the server fetches it from a public currency feed. That request carries nothing about what you hold, and nothing else about how your data is handled has changed.

14 September 2026

The honest version of a change we could have described more gently. This release adds usage analytics and the Android advertising ID, so two claims this page used to make are now retired: that the app had no analytics, and that it refused the advertising ID. Both are corrected in place above rather than quietly dropped.

What has not changed is the part that matters: your transactions, amounts, notes and the names in udhaar and committees are still never sold, never shared, and still cannot reach an analytics or advertising service — not because we promise it, but because the code cannot express it.

Also new in this release, and described above: udhaar, committees, gold holdings and Hisaab Share; the permission table has grown accordingly and is now read directly off the built app.

17 August 2026

Added crash reporting, and said so. Until this version the app sent us nothing at all when it broke, which meant a crash affecting every user on a particular phone could go unnoticed for weeks. It now sends a crash report with your financial data stripped out before sending — see Crash reports for exactly what is and is not in one. The ACCESS_NETWORK_STATE permission was added for the same reason. Nothing else about how your data is handled has changed, and no advertising or usage analytics has been added.

Contact

Questions, requests, or complaints about privacy: support@devkal.com. We aim to reply within 30 days.