Ind AS · GST-Compliant · Double-Entry Core

Bookkeeping that never lets the numbers lie.

Hisab is a GST-compliant, double-entry accounting and hybrid Point-of-Sale platform for Indian product, service, and hybrid businesses — built ledger-first, so every sale, return, and payment resolves to a balanced journal entry. Web terminal, offline-first Android, and a Cloudflare edge backend.

0Automated tests
0D1 migrations
0Native clients
0%Balanced ledger
CGST + SGST / IGST split FIFO & Weighted-Average valuation GSTR-1 / GSTR-3B exports Credit & Debit Notes Split & part payments Offline sync
What it does

One ledger engine, every business model

Product, service, and hybrid workflows all post into the same double-entry core. Modules are front-ends that generate journal entries — they never write balances directly.

₹

Double-Entry Ledger

Chart of accounts mapped to Schedule III. Every transaction posts balanced Dr/Cr entries, enforced in code and by database constraints. Posted entries are immutable — corrections use reversals.

%

Per-Line GST

GST computed per line, not per invoice, so hybrid bills can mix HSN goods and SAC services. Intra-state splits to CGST + SGST; inter-state to IGST, derived from place of supply.

⇄

Returns & Notes

Sales returns raise credit notes that reverse output GST and restock inventory; purchase returns raise debit notes that reverse input GST and remove stock.

▦

FIFO Inventory

FIFO and weighted-average valuation (Ind AS 2 — never LIFO). Layer-wise costing produces accurate COGS, with stock updated at goods receipt.

◳

GSTR Reports

GSTR-1 and GSTR-3B exports, trial balance, and P&L — generated straight from posted journal entries, so the reports and the books can never disagree.

⟳

Split Payments

Settle one invoice across cash, UPI, card, and bank with exact paise-level balancing. Idempotency keys make retries safe — no duplicate transactions.

How it's built

Edge backend, two native clients

A single Cloudflare Worker owns the API, ledger, GST, FIFO, reports, and refunds. Clients stay thin and fast.

Web Terminal

Zero-build single-page till. Opens from a file or a URL, works on a counter machine with a poor connection.

Android · Hisab

Kotlin, Material 3, offline-first. Sales write to Room first; a WorkManager job syncs when connectivity returns.

Cloudflare Worker API

JavaScript ES modules on Wrangler. Ledger, GST, FIFO, GSTR, refunds — all server-side.

ledger.jsgst.jsfifo.jsgstr.jsrefunds.js

Cloudflare D1

SQLite at the edge. 8 reviewed migrations, integer-paise money, 7-day point-in-time restore.

R2 Object Storage

Optional item images, served from the edge.

Correctness first

Where wrong numbers are worse than missing features

Hisab treats accounting integrity as non-negotiable. These invariants hold across every module.

01

Debits equal credits

Enforced in code and the database for every posted entry.

02

Immutable postings

No edits or deletes — corrections post reversal entries only.

03

Integer-paise money

No floating point for money or quantity, anywhere, end to end.

04

Gap-free numbering

Voucher numbers are sequential per financial year, allocated inside the posting transaction.

05

Date-effective rates

A document uses the GST/TDS rate valid on its own date, not today's.

06

ITC reversal

Damage, loss, and free samples auto-post ITC reversal under Section 17(5)(h).

07

Tenant isolation

Every query is scoped by company / GSTIN, with cross-tenant leakage tests.

08

Full audit trail

Every edit logs user, timestamp, and before/after values; financial-year locks respected.

Built for the counter

Charges instantly, even with no signal

Every Android sale is written to a local Room database first, then a background sync job runs when connectivity returns — surviving app kill and reboot.

  • UI never waits on the network, so charging is instant.
  • Each sale carries a device-generated reference UUID used as the server primary key.
  • If a response is lost, the retry collides and is reported as a safe duplicate — never a double charge.
  • Hard rejections are flagged in red rather than silently marked synced, so no sale ever disappears.
The toolkit

Technology stack

Chosen for correctness, offline resilience, and a free, serverless footprint.

Cloudflare Workers

JavaScript ES modules, Wrangler dev & deploy.

Cloudflare D1

SQLite database at the edge with migrations.

R2 Storage

Object storage for item images.

node:test

394 automated tests across ledger, GST, FIFO, reports.

Hand-written HTML/CSS

No CDN dependency so the till opens with no network.

Vanilla JS

Classic scripts that run from a file:// page.

Thermal & A4 bills

58mm / 80mm roll and A4 invoice formats.

Accessible UI

Large touch targets, keyboard-first entry.

Kotlin + Material 3

Native UI, package com.hisab.pos.

Room

Local-first sales cache and catalog.

WorkManager

Connectivity-constrained background sync.

BigDecimal money

Exact paise arithmetic, never binary floats.

Codemagic CI

Cloud build & signed APK release pipeline.

GitHub Actions

Android test, assemble, and lint verification.

npm + Wrangler

Dependency management and edge deploys.

D1 Time Travel

7-day point-in-time database restore.

A bookkeeping core you can trust the numbers from.

Ledger-first by design, GST-compliant by rule, and offline-ready by default — Hisab brings serious accounting discipline to everyday retail and service billing.