Billing, inventory and accounts built to survive an audit
Rechvix is a self-hosted billing, inventory, accounting and GST-compliance platform for real Indian businesses — not a CRUD demo. Money is stored as NUMERIC, never float. Every journal entry is balance-checked at three separate layers. Stock is an append-only ledger, never an editable number. GST e-Invoice and e-Way Bill talk to the actual government APIs.
Installs Docker Desktop and git via Homebrew if either is missing, clones the repo, and runs ./install.sh.
3
Layers enforcing double-entry
0
Floats used for money
10 of 11 stages
Backend & web app shipped — hardening in progress

Rechvix — billing · inventory · accounts · GST, in one self-hosted platform
AGPL-3.0
Open source and source-available — self-host, use, and modify for your business.
Self-hosted by default
Your own PostgreSQL, your own server. No mandatory cloud dependency.
Row-Level Security
Tenant isolation enforced both in application code and in PostgreSQL itself.
Verified, not just claimed
Each build stage ships with real passing unit and integration tests before it's marked done.
See it in action
Real screens from the running web app, not mockups — with demo data, today.

Today's business at a glance: sales, collections and purchases, outstanding receivable and payable, current stock value, low-stock items, and a sales trend chart — the first screen after login.
Everything a real back office needs
Grouped by what it's actually for — not a wall of undifferentiated checkmarks. See the roadmap for what's shipped today versus in progress.
Billing
Quotations to invoices
Quotations, proforma, tax, cash and credit invoices, plus credit/debit notes and sales & purchase returns — the full document lifecycle a real billing counter needs, not just a single invoice screen.
POS billing
Fast counter billing for walk-in sales, built on the same invoice engine as the rest of the platform — so a POS sale and a B2B tax invoice post through identical, correctness-checked logic.
Multi-company, multi-branch
One deployment can run several legal entities and branches with proper document numbering per entity, not a single-tenant assumption bolted on later.
Inventory
Perpetual multi-warehouse inventory
Stock balance is a materialized projection of an append-only movement ledger, never a directly-editable number — so it's always reconcilable back to every movement that produced it.
Batch, lot & serial tracking
Track stock at the batch, lot, or serial-number level with unit conversion built in, across as many warehouses as your business actually runs.
Accounting
Full double-entry accounting
Customer and supplier ledgers, ageing, and a real chart of accounts — with every posted journal balanced and enforced, not assumed.
GSTR-1 / GSTR-3B-oriented reporting
Reports structured around what you actually have to file, not a generic export you have to reshape by hand every filing cycle.
GST & Compliance
India GST done properly
CGST/SGST/IGST, HSN codes, place-of-supply, and inclusive/exclusive pricing — modeled through a generic tax-document engine, not a handful of hardcoded columns that break the moment the rules change.
e-Invoice (IRN/QR) & e-Way Bill
Direct government API integration for e-Invoice and e-Way Bill generation, through versioned adapters — when GSTN changes the schema, that's a new adapter directory, not a scramble across the codebase.
Security
RBAC with branch/warehouse scoping
Permissions scoped to the branch and warehouse a user actually works in, not an all-or-nothing admin flag.
TOTP MFA & full audit trail
Argon2id password hashing, TOTP multi-factor authentication, and an audit trail on every sensitive action — built in from the foundation stage, not retrofitted after a scare.
Row-Level Security, in the database
Every tenant table is scoped by organisation both in the application layer and via PostgreSQL Row-Level Security — a bug in one layer isn't automatically a cross-tenant data leak.
API & AI
REST API, OpenAPI-documented
A full OpenAPI 3.1 specification is the source of truth for API clients — not documentation written after the fact and left to drift.
MCP server for AI access
A real, read-only-by-default MCP server ships today — 10 tools scoped by the same permission checks as the REST API, so assistants like Claude can query your billing and inventory data without ever holding write access unless you explicitly grant it.
Built different, on purpose
A modular monolith in Go, backed by PostgreSQL 18 — plain enough to run on a small server, strict enough that a bug in one layer can't silently corrupt your books.
Browser / API client
│ HTTPS
▼
┌────────────────────────────┐
│ apps/server (Go, chi) │
│ identity · permissions │
│ catalogue · inventory │
│ sales · accounting │
│ gstindia · einvoice │
└─────────────┬──────────────┘
│ pgx, one transaction
▼
┌────────────────────────────┐
│ PostgreSQL 18 │
│ NUMERIC money · UUIDv7 │
│ Row-Level Security │
└────────────────────────────┘| Decision | Why |
|---|---|
| Modular monolith, not microservices | Invoice finalization touches inventory, ledger, tax, and numbering atomically — that needs one transaction, not a distributed saga. |
| NUMERIC, never float, for money | Floats can't represent ₹0.01 exactly; a tax/accounting system that rounds wrong is a compliance and trust problem, not a bug ticket. |
| Append-only stock ledger | Stock balance is a materialized projection of immutable movements, never a directly-editable number — so it's always reconcilable. |
| Double-entry, enforced at 3 layers | App-level sum check, a deferred DB constraint trigger, and no UPDATE grant on posted journal rows — a bug in any one layer still can't post an unbalanced journal. |
| Generic tax model | tax_document / tax_line / tax_component, not hardcoded cgst/sgst columns — a TaxEngine interface with an IndiaGSTEngine plugin, so a second country is additive. |
| Versioned government adapters | GSTN changed the e-Invoice/e-Way Bill schema on 2026-08-01 with weeks' notice — adapters are versioned by directory, so that's a new adapter, not a scramble. |
| RLS as defense-in-depth | Every tenant table is scoped by organisation_id at the application layer and PostgreSQL Row-Level Security — a bug in one layer isn't a cross-tenant data leak. |
Built to connect, not to lock you in
OpenAPI 3.1 first
The API spec under api/openapi/ is the source of truth for every client — including the web app itself — not documentation reverse-engineered from the code after the fact.
Government integrations, versioned
GST e-Invoice (IRN/QR) and e-Way Bill submission go through directory-versioned adapters (einvoice/v1, .../vNext) — a GSTN schema change is a new adapter, not a scramble.
MCP server for AI access
A real, read-only-by-default MCP server ships today — 10 tools, each scoped by the same permission checks as the REST API, so an assistant can query invoices, stock levels, or ledgers without ever holding write access unless you explicitly grant it.
Rechvix vs. hosted billing SaaS vs. spreadsheets
An honest comparison, not a marketing scoreboard — "Unverifiable" means we genuinely can't confirm a closed-source vendor's internals either way.
| Feature | Rechvix | Hosted SaaS | Spreadsheets |
|---|---|---|---|
| Cost | Self-host free, cloud coming soon | Monthly per-user fee | Free |
| Data stays on your own server | |||
| Real double-entry accounting | Varies | ||
| Money stored as NUMERIC, never float | Unverifiable | ||
| GST e-Invoice (IRN/QR) generation | Paid tier | ||
| e-Way Bill generation | Paid tier | ||
| Multi-warehouse batch/lot/serial tracking | Paid tier | ||
| Branch/warehouse-scoped RBAC + TOTP MFA | Varies | ||
| Row-Level Security in the database | Unverifiable | ||
| Open, versioned REST API | Sometimes | ||
| Open source, source available | |||
| No vendor lock-in |
Rows reflect the platform's target design; see the roadmap for what's built versus in progress today.
Self-host it today
One command installs Docker if you don't have it, clones the repository, and runs the one-command ./install.sh + Docker Compose setup — pick your OS below. Prefer building against your own Go + PostgreSQL 18 install instead? The full manual setup, including every environment variable, is in the README.
Installs Docker Desktop and git via Homebrew if either is missing, clones the repo, and runs ./install.sh.
Cloud version
A managed-cloud deployment is on the roadmap for businesses that would rather not run their own server. It isn't live yet — we won't claim otherwise. Leave your email and we'll tell you the moment it's real.
Join the cloud waitlistBuilt in explicit, gated stages
A stage isn't marked done until it has real passing unit and integration tests — see docs/TODO.md for the live, stage-by-stage checklist.
- Stage 0ResearchVerified platform and government API facts — not guessed, checked against current sources.Done
- Stage 1ArchitectureModule boundaries, domain model, tax/inventory/accounting design, threat model, staged milestone plan.Done
- Stage 2FoundationConfig, database, auth (Argon2id + TOTP MFA), permissions, audit, the internal Money type, observability.Done
- Stage 3Catalogue, contacts & pricingProduct/service catalogue, customer & supplier contacts, price lists — independently verified with real passing tests.Done
- Stage 4InventoryPerpetual multi-warehouse stock, batch/lot/serial tracking, unit conversion — 78 unit + 39 integration tests.Done
- Stage 5Sales & GSTQuotations through tax invoices, POS billing, PDF printing, and the India GST tax engine — 196 unit + 100 integration tests.Done
- Stage 6AccountingFull double-entry ledgers enforced at three layers, customer/supplier ageing, chart of accounts — 105 unit + 62 integration tests.Done
- Stage 7ReportingGSTR-1-oriented reports and the live operational dashboard. GSTR-3B-oriented reporting is deliberately deferred until purchases are wired through the tax engine, rather than shipped half-true.Done
- Stage 8Government integrationse-Invoice (IRN/QR) and e-Way Bill generation against the real NIC sandbox, plus a free-government-portal assistant flow as the default (no paid API required).Done
- Stage 9Other integrationsSigned webhooks, scoped API keys, and a real read-only-by-default MCP server (10 tools) for AI access. Live WhatsApp/email/SMS sending is interface-only — no adapter shipped yet.Done
- Stage 10Packaging & web appDocker Compose + CasaOS packaging, a one-command install.sh, and the full web app (Dashboard, Billing/POS, Purchases, Inventory, Accounting, GST, Reports, Settings) — real, wired screens, not placeholders.Done
- Stage 11HardeningSecurity review, load testing, and an accessibility audit before a v1.0 production-readiness claim — a first security pass already found and fixed a real cross-tenant data-scoping gap.In progress
Rechvix is built and maintained by NODEDR INFOTECH PRIVATE LIMITED, the team behind nodedr-pos.
Frequently asked questions
The backend and the full web app are built and working — billing, POS, inventory, accounting, GST/e-Invoice/e-Way Bill, reporting, RBAC, and the MCP server are real, tested, wired screens today, not a roadmap. What's left is Stage 11 hardening: a security review (a first pass already found and fixed a real cross-tenant data-scoping gap), load testing at scale, and an accessibility audit — worth finishing before we'd call it a v1.0 production guarantee. The GitHub repository's docs/TODO.md tracks exactly what's done versus in progress, updated as it changes, not after the fact.
Ready to look under the hood?
Read the architecture, the design decisions, and the exact stage-by-stage build plan — nothing overstated.