An offline-first Flutter app for medical shop billing, supplier payments, and CA-ready financial reporting in India.
BillMed streamlines supplier payment management and financial reporting for medical shop owners in India. With intelligent bank statement parsing, real-time ledger tracking, and professional CA-ready reportsβall working completely offline.
- 99.96% Bank Statement Parsing (tested on 5,215+ transactions)
- 13+ Indian Banks Supported (Auto-detection: SBI, HDFC, ICICI, Canara, Axis, etc.)
- Automatic Reversal Detection (Returns, cheque bounces, refunds)
- Zero Internet Required for core features
- Professional CA-Ready Reports (7 configurable sections with charts)
- Real-Time Dashboard (Auto-refresh every 8 seconds)
- Track bills from multiple distributors
- Record 5 payment modes: Cash, UPI, Cheque, NEFT, RTGS
- Auto-calculate bill status: Unpaid β Partial β Paid
- Real-time balance tracking per supplier
- Overdue bill notifications
- Dual-format parsing: Single-line (SBI/HDFC) and multi-line (Canara/PNB)
- Auto bank detection from PDF header
- 30+ keyword classification for accurate debit/credit detection
- Reversal detection (auto-tags returns, cheque bounces, refunds)
- Batch import: 5,000+ transactions in one session
- Optional AI enhancement: Google Gemini API with local fallback
- Manual entry option if needed
- CA-Ready PDF Reports (7 configurable sections):
- Purchase & Payables Summary
- Bank Cash Flow Statement
- GST Input Tax Estimate
- Monthly Bank Breakdown (charts)
- Supplier-wise Purchase Table
- Reversal/Return Summary
- Full Transaction Ledger
- Customizable fields: Business name, proprietor, GSTIN
- Multi-format export: PDF + CSV
- SQLite local database: All data on device
- Auto-backup on pause
- Manual backup/restore via Google Drive, WhatsApp, Email
- CSV export for all data types
- OCR Bill Scanning (Google ML Kit)
- Dark Mode (system-aware)
- Notifications for overdue bills
- Auto-Update Check from GitHub
- Flutter 3.41+
- Dart 3.11+
- Android SDK (API 23+)
# Clone the repository
git clone https://github.com/krsnaSuraj/BillMed.git
cd BillMed
# Install dependencies
flutter pub get
# Generate code (Drift ORM & Riverpod)
dart run build_runner build --delete-conflicting-outputs
# Run the app
flutter run
# Build release APK
flutter build apk --release --obfuscate --split-debug-info=debug-infoRun UPDATE.bat for automated versioning and building with 4 options.
- Flutter 3.41 - UI Framework
- Riverpod 2.6+ - State Management
- Drift (SQLite ORM) 2.21+ - Database
- Google Gemini API - Optional PDF parsing
- Google ML Kit - OCR
- fl_chart - Data visualization
- distributors: Supplier information
- bills: Purchase invoices
- payments: Payment records (5 modes)
- bank_transactions: Bank statements (with reversal detection)
Canara, SBI, HDFC, ICICI, Axis, PNB, Kotak, BOB, Union, Yes Bank, IndusInd, Federal, IDFC, and others.
- Auto-detect bank from PDF header
- Dual-format support (single-line & multi-line)
- 30+ keywords for classification
- Automatic reversal detection
- Balance verification & duplicate detection
- Gemini API fallback for complex statements
- Accuracy: 99.96% on 5,215+ real transactions
- Speed: ~0.5 sec per PDF (local parsing)
- Reversal Detection: 98%+ precision
- Go to Settings β Gemini API Key
- Create key at makersuite.google.com/app/apikey
- App uses Gemini first, falls back to local parser
- Key stored locally only
Note: Works perfectly without API key (99.96% accuracy with built-in parser)
- Manual: Settings β Backup & Export β Export Backup
- Auto: Silent backup on app pause
- Restore: Import
.dbfile anytime - CSV Export: All data types (open in Excel)
- Fork the repo:
git clone https://github.com/krsnaSuraj/BillMed.git - Create feature branch:
git checkout -b feature/your-feature - Make changes & test:
flutter test && flutter run --release - Commit:
git commit -m "feat: your message" - Push & open PR
- Follow Dart Style Guide
- Run
dart format lib/andflutter analyze - For bank support: Add pattern to
bank_statement_service.dart, test with 50+ real transactions - Update documentation
BillMed is licensed under AGPL-3.0.
- β Free to use, modify, and distribute
β οΈ Modifications must be shared back with the communityβ οΈ Copyleft requirement: Derivative works must be open source
Contact maintainer for proprietary licensing alternatives.
See LICENSE for details.
Q: Is internet required?
A: No. Core features work fully offline. Internet only for optional Gemini API & update checks.
Q: How secure is my data?
A: All data stored locally on your device. Nothing sent to external servers unless you enable Gemini API.
Q: Can I use this commercially?
A: Yes, under AGPL-3.0 terms. Modifications must be shared back.
Q: What if bank parsing fails?
A: Use manual entry or enable Gemini API for AI assistance.
Q: Can I export my data?
A: Yes. CSV export for all data types or full database backup.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Bug Reports: Include reproducible steps, Flutter version, device info
v2.7.1 (Current)
- Bank statement parsing (99.96% accuracy)
- CA-ready report generation
- Auto-backup on pause
- Overdue bill notifications
v2.7.0
- Initial production release
- Offline-first architecture
- Riverpod state management
Built with β€οΈ for Indian medical shop owners.
For issues, feedback, or contributions, visit GitHub.








