The .aab is for the Play Console upload form only — no phone
can install it; one that tries says there was a problem parsing the package. To put the app
on a phone, use Install. Same code, both of them; the bundle is the store build
(no buying or downloading outside the store) and is not on the public website: sign in to the admin first.
Listing text
Counts are live. Red means the store will reject it.
App name — both stores
Sabt Shop Ledger
Subtitle — App Store only
Your daybook, on your phone
Short description — Play only
Sales, expenses and who owes who. Works offline, stays on your phone.
Promotional text — App Store only
Write it down once and it is kept. No account, no internet, no setup — open it and record your first sale.
Sabt replaces the paper daybook.
It records four things and nothing else: what you sold, what you spent, what you lent out, and what you borrowed. From those it works out your cash on hand, who owes you, and who you owe.
Written down the way you would write it
Every entry is just words and an amount — "2 bottles oil, 350". No product codes, no catalogue to set up, nothing to fill in before your first sale. What you type suggests itself next time, so a name is typed once and tapped after that. One line, or several when you itemise.
Built for the counter
• Large type you can read at arm's length, in daylight
• Every button big enough to hit one-handed while serving
• Plain words, no accounting terms to learn
• English and Dari, and the whole screen flips for Dari
Works with no internet
Your book lives on the phone. Record a sale with no signal, no account and no sign-up. Nothing is uploaded unless you ask for it.
Credit, the way a shop actually works
Took part of the money now and the rest on credit? Record both in one go. Someone paid back what they owed? Say so, and their balance moves. No interest fields anywhere — loans are what was lent and what came back, and nothing else.
Keep what matters
• Who owes you, who you owe, and how long it has been
• A statement you can send a customer
• Todos with reminders, so nothing is forgotten
• Backups you save yourself, on a schedule you choose
Put money aside
A piggy bank for whatever you are saving up for — a freezer, Eid, the rent. Put money in, take some out when you need it, and the pot keeps the whole history. Give it a goal and it shows how far along you are. Switch it off if you do not want it.
Only what you use
Turn off anything you do not need. Switch off lending and the tab disappears. The app shapes itself to your shop.
Free, and honest about it
Every sale, expense and loan. Unlimited entries and people. Export your data any time — that is never locked.
Everything in one book.
همه چیز ثبت است
A product of Respiresoft LLC
What's new — 1.0.0
First release.
Record sales, expenses and loans, and see who owes who. Set money aside in a piggy bank with a goal. Works with no internet. English and Dari.
Collected only if the user creates an optional account (name, username, PIN; email optional). Purpose: app functionality, account management. Not shared. Optional.
Financial info — other
Collected, optional: only the figures in a statement the user chooses to share by link. The rest of the book stays on the shop's phones.
Financial info — purchase history
Collected for the subscription. Purpose: app functionality. Handled by the payment provider. Optional.
Device or other IDs
Collected, required: a random device token, for update notices and one free trial per phone. Purpose: app functionality, fraud prevention. Not shared.
App activity — user-generated content, other
Collected, required: the names of the user's shops, each one's entry count and the phone's name, about once a day, so two phones do not keep two copies of a shop. Purpose: app functionality.
Audio — voice or sound recordings
Collected, optional, processed ephemerally: spoken entry (Cloud only, user-initiated) streams live to the speech provider and nothing is stored. The words go to a language provider to be read as a draft entry, then discarded.
Photos and videos — photos
Collected, optional, processed ephemerally: a receipt or tailor's order slip photo the user takes or chooses to have read (Cloud only, user-initiated) is made smaller on the phone and read into a draft entry or order, then discarded. Nothing is stored.
No — a shared statement is the user's own figures on a link they create
Does the app use AI to generate content?
It reads a spoken sentence into a draft entry the user confirms. It writes nothing on its own and generates no content for others.
Does the app share the user's location?
No
Does the app allow purchases?
Yes — a subscription
Expected rating
Everyone / PEGI 3
Permissions
What the built bundle actually declares — nothing restricted, so no
Play declaration form is required. RECORD_AUDIO is a runtime permission,
not a restricted one.
Permission
Why
INTERNET, ACCESS_NETWORK_STATE
Updates and paid features
POST_NOTIFICATIONS
Backup and todo reminders the user sets
RECEIVE_BOOT_COMPLETED
Those reminders survive a restart
WAKE_LOCK, VIBRATE
Delivering a reminder
RECORD_AUDIO
Spoken entry, on Cloud. Requested at the moment the user taps the microphone, never at launch; android.hardware.microphone is declared required="false" so a device without one still sees the listing.
No exact-alarm permission, on purpose.USE_EXACT_ALARM is
restricted by Play to alarm-clock and calendar apps; a reminder app does not qualify and
declaring it invites rejection. Reminders use an inexact alarm that still wakes the device
from Doze — accurate to within a few minutes, which is all a backup reminder needs.
App Store
The iOS binary is not built yet. Everything on this page except the Android
files applies to iOS too, but compiling and uploading an iOS app needs a Mac with Xcode and
an Apple Developer account ($99/year). The app itself is ready: it is the same web build
Capacitor wraps for Android.
Collected, linked to the user. Purpose: app functionality. Not used for tracking. Optional (account only).
Financial info — other financial info
Collected, linked. Purpose: app functionality. Only the figures in a statement the user chooses to share by link, kept until they stop sharing it. The rest of the book never leaves the shop's phones.
Purchases — purchase history
Collected, linked. Purpose: app functionality (what the account has paid for; nothing is sold in the iPhone app).
Identifiers — user ID
Collected, linked. Purpose: app functionality. The username chosen when making an account.
Identifiers — device ID
Collected, linked (once the user signs in). Purpose: app functionality: update notices, one free trial per phone.
User content — other user content
Collected, linked. Purpose: app functionality. The names of the user's shops, with each one's entry count and the phone's name, about once a day, so two phones do not end up with two copies of one shop.
Audio data
Not collected. Spoken entry streams live to the speech provider and nothing is kept; Apple counts only data kept longer than the request needs.
User content — photos or videos
Not collected. A receipt or slip photo the user chooses to have read is read once and dropped; Apple counts only data kept longer than the request needs.
Usage data, diagnostics, location, contacts
Not collected. There is no analytics or crash reporting SDK.
Used to track you across apps
No
Export compliance
Question
Answer
Does your app use encryption?
Yes — HTTPS only
Does it qualify for an exemption?
Yes. It only uses standard encryption built into the operating system (TLS), which is exempt.
Add to Info.plist
ITSAppUsesNonExemptEncryption = NO
Notes for the reviewer
Review notes
No account is needed to use the app. Open it, complete the one-screen setup (shop name), and everything works immediately — recording sales, expenses and loans is entirely offline and local to the device.
An account is only required for the optional paid Cloud plan. If you want to see that flow, you can register any email inside the app under Settings → Account; no payment is required to create the account.
To see the app populated with realistic data instead of an empty shop, open:
https://sabt.respiresoft.com/till/demo
That is a sandbox that never touches a real ledger.
The app is a bilingual English/Dari ledger for shopkeepers. Dari switches the whole interface to right-to-left under Settings → Language.
Made from the real app by web/scripts/marketing (covers.mjs, tour-video.mjs, ad-cuts.mjs).
The brand rules are in web/docs/BRAND.md. Google Play's Video field takes a YouTube link:
upload the film below to YouTube, then paste its address there.
~/.keystores/sabt-upload.jks, alias sabt-upload — back this up off the server
Android 7.0 is the floor, and it is not ours to lower. Capacitor 8 requires
API 24. Going lower would mean several major versions back, losing security updates and the
ability to target API 36 — which Play now requires. In practice Android 7+ covers all but a
fraction of a percent of active devices.