Enterprise-Grade Invoicing for Developing Economies
Free. Offline. Yours.
Website • Features • Installation • Documentation • Contributing
A startup in Lagos pays the same $50/seat/month for invoicing software as a startup in San Francisco — but operates in an economy where the average monthly salary is $150. Every existing open-source invoicing tool requires a server, constant internet, and has zero mobile money integration. None support African fiscal compliance systems.
Freelancers in Nairobi create invoices in Word. Consultants in Accra calculate VAT on paper. Small businesses in Mumbai lose track of who owes what because a $30/month subscription is a genuine financial burden. This is not a niche problem — this is how the majority of the world's businesses operate.
900Invoice is a desktop invoicing application that works completely offline. It runs on the hardware you already own. No subscriptions. No cloud dependencies. No internet required after the first download.
Built by 900 Labs — building enterprise-grade open source tools for the 900 million+ people in developing economies who are priced out of the software that modern businesses depend on.
- Create, edit, duplicate, and void invoices
- Full lifecycle: Draft → Finalized → Sent → Paid → Void
- Customizable invoice number sequences (INV-2026-0001)
- Professional native PDF export
- Live invoice preview
- 11 currencies: KES, NGN, ZAR, INR, TZS, UGX, GHS, XOF, XAF, USD, EUR
- Exchange rate caching for offline use
- Rate snapshot on each invoice for audit trail
- Country-specific tax rates (VAT, GST, WHT, NHIL, GETFund)
- Tax-exclusive and tax-inclusive pricing
- Withholding tax support
- Pre-configured rates for Kenya, Nigeria, South Africa, India, Ghana, Tanzania, Uganda, Senegal
- Client database with billing details and tax IDs
- Product/service catalog for quick invoicing
- CSV import/export
- Weekly, monthly, quarterly, and annual schedules
- Auto-generation with missed-job recovery
- Template-based creation
- Revenue reports by period, client, and currency
- Tax summary reports for filing
- Aging reports (30/60/90 days overdue)
- Dashboard with real-time metrics
- Record partial and full payments
- Multiple payment methods: cash, bank transfer, mobile money, cheque
- Payment history per invoice
- 6 languages: English, French, Spanish, Arabic (RTL), Swahili, Hindi
- 300+ translation keys
- RTL layout support for Arabic
- Locale-aware date and number formatting
| Component | Technology | Why |
|---|---|---|
| Desktop Shell | Tauri v2 | Small native shell, system WebView, fast startup |
| Frontend | Svelte 5 | Smallest bundle, reactive with Runes |
| Backend | Rust | Memory-safe, native performance |
| Database | SQLite (rusqlite) | Zero-config, single-file, offline |
| PDF Engine | Rust PDF/HTML renderer | Native PDF export plus live invoice preview |
| Scheduler | Rust due-date scheduler | Recurring invoice automation |
| Metric | Tauri v2 | Electron | Advantage |
|---|---|---|---|
| Bundle model | Uses the system WebView | Bundles Chromium | Smaller platform packages |
| RAM profile | Native shell + system WebView | Bundled Chromium process | Lower idle memory profile |
| Startup profile | Native shell startup | Chromium startup | Faster startup profile |
On a 4-year-old laptop with 4 GB of RAM running three browser tabs, this difference is everything.
Tagged releases are published on the releases page when available. The current release workflow publishes source archives and checksums. Signed Windows, macOS, and Linux installers are tracked as future release hardening. Until platform binaries are published, build from source.
Prerequisites:
- Rust 1.88+ — install from rustup.rs
- Node.js 20.19+, 22.12+, or 24+ — install from nodejs.org
- Tauri CLI v2 for
cargo tauricommands:cargo install tauri-cli --version "^2" - Tauri v2 system dependencies — see v2.tauri.app/start/prerequisites
Linux (Ubuntu/Debian):
sudo apt-get update
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev librsvg2-devBuild and run:
# Clone the repository
git clone https://github.com/900Labs/900Invoice.git
cd 900Invoice
# Install frontend dependencies
npm install
# Run in development mode (hot-reload)
cargo tauri dev
# Build for production
cargo tauri buildProduction app bundles and installers are written under src-tauri/target/release/bundle/.
900Invoice/
├── src/ # Svelte 5 frontend
│ ├── components/ # UI components by feature
│ │ ├── invoices/ # Invoice form, list, preview
│ │ ├── clients/ # Client management
│ │ ├── products/ # Product catalog
│ │ ├── payments/ # Payment recording
│ │ ├── reports/ # Report views
│ │ └── settings/ # App settings
│ ├── stores/ # Svelte 5 Runes state stores
│ ├── i18n/ # Translation files (6 languages)
│ ├── utils/ # Currency, date, validation utilities
│ └── lib/ # Tauri IPC wrappers
├── src-tauri/ # Rust backend
│ └── src/
│ ├── commands/ # 63 Tauri commands (IPC handlers)
│ ├── models/ # Data structures (Invoice, Client, etc.)
│ ├── db/ # SQLite schema, migrations, queries
│ ├── services/ # Tax calc, PDF engine, numbering
│ └── sync/ # Changelog for future sync
├── docs/ # Documentation
│ └── adr/ # Architecture Decision Records
└── .github/ # CI/CD workflows and templates
All data is stored locally in a single SQLite file. No cloud. No server.
- Location:
{APP_DATA_DIR}/900invoice.db - Money: Stored as integers (minor units) — no floating point
- Tax rates: Stored in basis points (1600 = 16.00%)
- IDs: UUID v4 for offline-safe creation
Your data never leaves your machine unless you explicitly export it.
Build and use
- Documentation Index — sorted guide to public docs, runbooks, ADRs, and sprint records
- Deployment Guide — source builds, local bundles, platform notes, and data locations
- Public Release Checklist — repository visibility, privacy, and documentation readiness checks
- Release Runbook — tagged release flow, artifacts, checksums, and release checklist
- Runtime Smoke Runbook — release-readiness smoke verification, including legacy-hardware and performance-smoke modes
Product and architecture
- API Documentation — complete Tauri command reference (63 commands)
- Architecture Overview — system design, data flow, money conventions, and offline model
- Internationalization Guide — add languages, locale formatting, and RTL support
- PDF Rendering — invoice PDF and preview rendering notes
Maintainers and contributors
- Branch Protection Policy — required merge and branch safeguards for
main - Governance Audit — scheduled drift detection for policy and docs parity
- Maintainer Checklist — governance profile, policy verification, and sprint/release handoff checklist
- Quality Gate — required pre-merge validation baseline
- Sprint Process — required sprint workflow and squash-merge policy
- Sprint Records — delivered sprint scope, validation, and decision history
We welcome contributions from developers worldwide — especially those in the regions 900Invoice serves. Every line of code from a developer in Lagos, Nairobi, Accra, or Mumbai makes this tool better for the people it's built for.
See CONTRIBUTING.md for setup instructions, coding standards, sprint rules, and the PR process.
Quick contribution ideas:
- Add your country's default tax rates in
src-tauri/src/db/migrations.rs - Add a translation for your language to
src/i18n/ - Report bugs in your operating environment
- Improve documentation clarity
Apache License 2.0 — see LICENSE for details.
You are free to use, modify, and distribute this software — including commercially. You do not owe us anything.
To report a vulnerability, email security@900labs.com. See SECURITY.md for the full process.
900Invoice is the third tool in the 900 Labs open-source portfolio:
| Tool | Description | Repository |
|---|---|---|
| 900PDF | PDF editor and toolkit | 900-labs/900pdf |
| 900CRM | Customer relationship management | 900-labs/900crm |
| 900Invoice | Invoicing and billing | 900Labs/900Invoice ← you are here |
All tools are built on the same Tauri v2 + Rust + Svelte 5 stack. They share conventions, libraries, and the same commitment: free forever, offline-first, open source.
Learn more at 900labs.com/open-source.
900labs.com