# TripLedger > TripLedger is an offline-first group travel manager for Android, built for friend groups, bike tours, family trips and community travel. It plans tours, manages members, logs shared expenses with four split modes (Equal, Selected, Percentage, Weight), tracks deposits and refunds, and produces a one-tap "who pays whom" settlement that minimises the number of transfers needed to close the books. Trip data stays on-device; the free tier is supported by Google AdMob (banner, interstitial, rewarded, app-open) and offers two in-app purchases via Google Play Billing — a one-time Remove Ads (`tripledger_remove_ads`) and a consumable Tip Jar (`tripledger_tip`). A short rewarded video grants a 1-hour ad-free pass. Optional Google Sign-In is used only for Google Drive backup. Built by Black & White Studio. ## What it is TripLedger replaces the messy WhatsApp thread of "I paid for the hotel" / "you owe me for fuel" with a proper per-tour ledger. Each tour has its own members, deposits, expenses, checklist, itinerary, photos and reports. The financial engine recomputes balances live and shows the minimum set of transfers that clears everyone out. Editing and voiding are allowed; hard-deletes of financial records are not — history stays auditable. Tagline: "Group trips, settled. The whole ledger fits in your pocket." ## Who it's for - Friend group organisers (2–5 trips a year) - Bike tour leaders (frequent motorcycle tours) - Community leaders (neighbourhood trips, college batches) - Family multi-couple holidays - Backpacking and trekking groups - Corporate offsite organisers ## Four expense split modes - **Equal** — split across all eligible members (the default) - **Selected** — only the members who took part in that expense (e.g. boat ride, dinner) - **Percentage** — custom % per person, validated to sum to 100 - **Weight** — share-based ("Tanvir 2, Rakib 1, Nayeem 1") A "join date" eligibility rule excludes a member from expenses dated before they joined the tour, with the choice of "From Tour Start" or "From Join Date" per tour. ## Settlement engine - Per-member balance = Deposits − Expense share - Positive balance = Receivable, negative = Payable, zero = Settled (within rounding tolerance) - "Who pays whom" reduces all balances to the **minimum** set of transfers — greedy match of largest payable against largest receivable - Tapping a suggested transfer pre-fills a Record Settlement entry - Settlements are stored as `FinancialTransaction` rows of type `SETTLEMENT`, reversible (void) and excluded only when voided ## Tour structure A tour has two top-level views: - **Operational** — Overview, Members, Expenses, Deposits, Checklist, Itinerary, Photos - **Financial** — Reports, Settlement, Member Balances Tour status lifecycle: Draft → Upcoming → Ongoing → Completed → Archived. Completed and Archived tours are financially locked to protect reports; re-opening is an explicit, logged action. ## Features in v1 - Unlimited tours, with destination, dates, cover photo, type, currency - Reusable global members (keyed by phone number) - Multiple deposits per member, refunds and adjustments - Expenses with title, amount, date, payer, category, notes and unlimited receipt photos - Edit & void for expenses, deposits and settlements (no hard delete) - Per-tour currency (single currency per tour in v1; no in-tour FX) - Four branded PDF exports: Tour Summary, Member Statement, Settlement, Budget Plan - One-tap text + image share of the settlement summary - Encrypted local backup (ZIP with database and receipt photos) - Optional Google Drive backup via Google Sign-In - Material 3 design with Light, Dark and Follow-System themes - 3-day trip reminder + optional deposit-due / unsettled-trip nudges - Reusable checklist and itinerary templates - Master data the user controls (tour types, expense types, destinations) - Search/filter/sort across tours, members and expenses - Duplicate any tour as the starting point for the next ## Financial correctness rules - Splits are computed in the tour currency's minor unit (cents/poisha) - Rounding remainders are assigned to the payer so each expense reconciles exactly - "Settled" tolerance is the minor unit (±0.01 counts as zero) - The payer is credited the full expense amount; their own share is netted against that credit - Member leaving mid-tour has an explicit outcome: Settle now (refund / collect) or Forfeit (deposits stay with the tour) ## Privacy & permissions - Trip data (tours, members, expenses, deposits, settlements, photos) stays on-device in a local Room database; never uploaded to our servers - Camera and Photos used only when picking a receipt / cover / member photo - Exact-alarm permission used for reminder notifications - Internet used by AdMob (to fetch ads), Play Billing (to verify purchases), and when Google Drive backup is explicitly triggered - Google Sign-In scope `drive.appdata` requested only when Drive backup is enabled, used solely for the app's own backup folder - No account system, no profile-building, no third-party data sharing of trip data - Local backups are encrypted; Drive backups go to the user's own private app folder ## Ads — Google AdMob - Free tier is supported by the Google Mobile Ads SDK - Four formats: banner, interstitial, rewarded video, app-open - AdMob collects and shares with Google and certified ad partners: Android Advertising ID, approximate (IP-based) location, device identifiers, ad-interaction app activity, and diagnostics/crash data - EU/UK users see a Google UMP consent prompt before any ad loads (GDPR/UK GDPR) - Users can reset their Advertising ID and opt out of personalised ads in Android Settings → Privacy → Ads - All ad-related data collection ceases for users who buy Remove Ads (the ad SDK is bypassed) ## In-app purchases — Google Play Billing - `tripledger_remove_ads` — non-consumable, one-time; permanently removes all four ad formats on every device the user is signed in with the same Google Play account - `tripledger_tip` — consumable tip jar; purchasable more than once; no feature unlocks; non-refundable except where required by law - Payment handled entirely by Google Play; the app only sees purchase tokens and SKUs, never card data - Users can restore the Remove Ads entitlement via the in-app Restore Purchases action ## Rewarded ads — 1-hour ad-free pass - The user can opt to watch a rewarded video at any time - On successful completion, the app grants a local 1-hour ad-free pass stored on-device - No personal data is exchanged beyond the standard AdMob collection above ## Tech / platform - Android, package `com.bnw.tripledger` - minSdk 24, targetSdk 36 - Room database (offline-first source of truth for trip data) - Material 3, light / dark / follow-system themes - Manrope + Inter typography bundled (no network fonts) - WorkManager for the trip reminder - Apache POI for PDF exports (Tour Summary, Member Statement, Settlement, Budget Plan) - Google Mobile Ads SDK + UMP consent SDK for ads - Google Play Billing Library for in-app purchases ## Pricing - Free with ads (no subscription, no recurring charges) - One-time `tripledger_remove_ads` clears all ad surfaces forever - Consumable `tripledger_tip` is optional and unlocks nothing extra - A 1-hour ad-free pass is available for free via a rewarded video ## Brand & company Black & White Studio — Dhaka, Bangladesh. Tagline: "Where 0 and 1 become infinite possibilities." - Email: info@blacknwhitestudio.com - Phone / WhatsApp: +880 1945 936934 - Web: https://blacknwhitestudio.com ## Pages on this site - /tripledger/ — main landing page (use cases, split modes, features, screenshots, settlement, FAQ, download) - /tripledger/privacy.html — full privacy policy - /tripledger/terms.html — terms of service - /tripledger/sitemap.xml — sitemap - /tripledger/llms.txt — this file