{"slug": "an-experiment-in-building-accounting-around-financial-actions-instead-of-forms", "title": "An experiment in building accounting around financial actions instead of forms", "summary": "Hisaabo launches an open-source, agent-native financial operating system for India that treats AI agents as equal clients to human interfaces, enabling deterministic accounting and GST compliance through structured financial operations rather than form-based UIs.", "body_md": "Agent-native financial operating system for India.\n\n**Hisaab, pakka.** (Honest accounting.)\n\nHisaabo is not accounting software with an AI add-on. It is a financial operating system where humans and AI agents operate on the same structured primitives -- creating invoices, reconciling bank statements, filing GST returns, closing books. The web dashboard, mobile app, CLI, and MCP server are all equal clients of the same API. There is no \"AI layer.\" The entire system is the AI interface. In practice, this means your books update themselves, your GST returns are always ready, and your team never shares bank credentials again.\n\nOpen source. Self-hostable. Free forever. Built India-first.\n\nFour things became true at the same time:\n\n**LLMs can reliably execute structured tools.** Not chat -- deterministic function calls with typed inputs and validated outputs. This is the difference between \"ask the AI\" and \"the AI operates the system.\"**MCP standardizes agent interaction.** A single protocol for any AI to discover and call financial operations. No custom integrations per agent.**Indian accounting workflows are still manual and fragmented.** 63 million MSMEs. Most run on paper, WhatsApp, and a CA who shows up once a year. The gap between what technology can do and what businesses actually use has never been wider.**GST compliance demands deterministic systems.** E-invoicing, ITC tracking, GSTR-2B reconciliation, 180-day reversal rules -- these are not suggestions. They are rules that must execute correctly every time. LLM-generated suggestions are not enough. Validated financial actions are.\n\nThis combination did not exist two years ago. It does now.\n\nEvery accounting tool built in the last 30 years follows the same pattern: a database, a forms-based UI, and maybe an API bolted on later. AI gets added as a chat widget that reads from the same database humans already see.\n\nHisaabo inverts this. The system is built as a set of structured financial operations -- 200+ typed tRPC endpoints -- that any client can execute. The React dashboard is one client. The Expo mobile app is another. The CLI is another. An MCP-connected AI agent is another. They all have identical capabilities, identical permissions, identical audit trails.\n\nThis means an AI agent does not \"read your screen\" or \"fill in forms.\" It calls the same `invoice.create`\n\nprocedure your accountant does, with the same validation, the same GST logic, the same atomic invoice numbering. The result is deterministic, auditable, and indistinguishable from human input.\n\nThat is what makes this a financial operating system, not an accounting app.\n\nEvery accounting workflow reduces to a small set of deterministic financial actions. Hisaabo does not expose spreadsheets and forms. It exposes these operations directly.\n\n| Action | What happens |\n|---|---|\nRecord a GST-compliant sale |\nTax determination (CGST+SGST or IGST) from state codes, HSN validation against 19K codes, atomic invoice numbering, PDF with QR, optional e-invoice IRN via NIC IRP |\nReconcile a bank statement |\nAuto-detect format across 10 Indian banks, 4-tier matching (exact, strong, narration parse, partial), auto-categorization rules, BRS generation |\nGenerate filing-ready GST returns |\nGSTR-1 (B2B, B2C Large, B2C Small, HSN summary, CDN), GSTR-3B (outward, ITC, RCM, net payable), GSTR-9 annual, GSTR-2B reconciliation |\nClose a financial period |\nJournal entries for depreciation, provisions, bad debt write-offs, opening balances. Trial Balance, P&L, Balance Sheet, Cash Flow derived automatically. |\nTrack ITC compliance |\nAuto-creation from purchase invoices, 180-day aging alerts (Section 16(4)), blocked ITC under 17(5), utilization in prescribed order (IGST > CGST > SGST) |\nManage parties and receivables |\nGSTIN validation (regex + checksum), per-party ledger, aging buckets (Current, 31-60, 61-90, 90+), credit period and limit tracking |\nRun bank operations |\n9 payment modes, multi-invoice allocation, inter-account transfers with atomic dual-entry, payment gateway integration with charge/settlement/reversal traceability |\n\nEvery action is: deterministic (same input, same output), auditable (traced to a user or agent), and executable identically by a human clicking a button or an AI agent calling an endpoint.\n\nUnlike AI tools that generate suggestions, Hisaabo executes validated financial operations with guaranteed accounting correctness. This is the design constraint that makes everything else possible.\n\nThis is not \"AI-powered accounting.\" This is accounting infrastructure that AI agents operate natively.\n\n**How it works:**\n\nThe entire Hisaabo API is a set of typed, validated procedures. Every capability -- from creating an invoice to generating GSTR-3B -- is a structured tool with defined inputs, outputs, and side effects. There is no screen-scraping, no form-filling, no prompt-engineering around a UI.\n\n```\n                 +------------------+\n                 |   tRPC API       |\n                 |   200+ typed     |\n                 |   procedures     |\n                 +--------+---------+\n                          |\n          +------+--------+--------+--------+\n          |      |        |        |        |\n        Web    Mobile   Desktop   CLI     MCP\n       React   Expo     Tauri    npm     Claude\n```\n\nAll five clients call the same procedures, with the same `x-business-id`\n\nheader, the same role-based permissions, the same audit logging. An invoice created by Claude Desktop through MCP is byte-for-byte identical to one created through the web dashboard.\n\n**What this enables today:**\n\n```\nYou: \"How much does Montu Arora owe me?\"\nClaude: \"Montu Arora has Rs. 12,450 outstanding across 3 invoices.\n         The oldest is INV-12890 from 15 days ago. Should I draft a reminder?\"\n\nYou: \"Create an invoice for Gupta Enterprises -- 20 bags of rice at Rs. 1,250\"\nClaude: \"Done. Invoice BB-14821 created -- Rs. 26,250 total (inc. 5% GST). PDF ready.\"\n\nYou: \"Run my GST filing prep for March 2026\"\nClaude: \"GSTR-1 data ready. 47 B2B invoices, 12 B2C. Total taxable: Rs. 8,43,200.\n         2 invoices have missing HSN codes. Shall I list them?\"\n```\n\n**What this enables tomorrow:**\n\n- A WhatsApp bot that creates invoices from voice notes via Claude + MCP\n- A Slack integration that posts daily business summaries to your team channel\n- A customer service agent that answers \"where is my order?\" from live data\n- A tax filing assistant that prepares GSTR-1 and flags anomalies before your CA reviews\n- An audit preparation bot that generates schedules and reconciliations\n\nNone of these require new API development. The surface area already exists. Every agent is a new client of the same financial primitives.\n\n**MCP Server**\n\nThe `@hisaabo/mcp`\n\npackage exposes your entire business as tools, resources, and prompt templates to any MCP-compatible AI agent.\n\nBuilt-in prompt templates:\n\n| Prompt | What it does |\n|---|---|\n`morning_briefing` |\nDaily summary: sales, cash position, overdue invoices, action items |\n`party_deep_dive` |\nFull analysis of any customer or supplier |\n`gst_filing_prep` |\nGSTR-1 and GSTR-3B data with cross-checks |\n`collection_follow_up` |\nPrioritized overdue list with suggested actions |\n`inventory_health` |\nLow stock, dead stock, fast movers |\n`month_close` |\nMonth-end checklist: reconcile sales, expenses, balances |\n\nAdd to Claude Desktop's `claude_desktop_config.json`\n\n:\n\n```\n{\n  \"mcpServers\": {\n    \"hisaabo\": {\n      \"command\": \"npx\",\n      \"args\": [\"@hisaabo/mcp\"],\n      \"env\": {\n        \"HISAABO_API_URL\": \"https://your-hisaabo-instance.com\",\n        \"HISAABO_API_KEY\": \"sess_...\",\n        \"HISAABO_TENANT_ID\": \"tenant-uuid\",\n        \"HISAABO_BUSINESS_ID\": \"business-uuid\"\n      }\n    }\n  }\n}\n```\n\n**CLI**\n\n```\nnpm install -g @hisaabo/cli\nhisaabo login --api-url https://your-hisaabo-instance.com\n\nhisaabo dashboard --json | jq '{revenue, outstanding, overdueCount}'\nhisaabo invoice list --this-month --format csv > invoices.csv\nhisaabo gst r3b --quarter Q4 --json | jq '.taxPayable'\nhisaabo bank recon --account \"HDFC Current\" --format csv > brs.csv\n```\n\n14 command groups. Every command supports `--json`\n\n, `--format csv`\n\n, and `--format ids`\n\nfor piping.\n\nThe adoption wedge for Hisaabo is not features. It is trust.\n\nRight now, Indian businesses share bank passwords over WhatsApp so their CA can download statements. Articled clerks have unscoped access to every client's data. There is no audit trail for who changed what. This is the status quo for millions of businesses.\n\nHisaabo replaces this with structured access control:\n\n| Layer | What it enforces |\n|---|---|\n5 roles |\nSuperadmin, Admin, Seller Manager, Seller, Accountant -- each with scoped permissions per resource and action |\nBusiness isolation |\nEvery API query scoped by `x-business-id` . Impossible to access another client's data by accident or intent. |\nNo credential sharing |\nClients upload their own statements or create their own invoices. CAs access via their own role-based login. |\nFull audit trail |\nEvery write operation logged with user, timestamp, and before/after state. Every invoice, payment, and journal entry traceable to a specific person. |\nSession security |\nHttpOnly + Secure + SameSite=Lax cookies. Argon2id password hashing. 30-day expiry. No JWTs. |\nTeam invitations |\nAdd articled clerks, managers, or clients with plan-based limits. Revoke access instantly. |\n\nThis is what gets CAs to adopt. Not a better spreadsheet -- a system where access is controlled, actions are auditable, and no one needs to share a bank password ever again.\n\nYou manage 30-100 clients. Each one sends you bank statements in a different format. You chase GST data over WhatsApp the week before filing. Some clients share their net banking credentials in plain text messages. Your articled clerks spend 80% of their time on data entry that should not exist.\n\nHisaabo gives you a single platform where every client is a separate business with role-based access. You log in once and see all your clients. Bank statements import with auto-detection for 10 Indian banks. GSTR-1 and GSTR-3B auto-generate from invoice data. Trial Balance, P&L, and Balance Sheet derive automatically. When you need depreciation entries or year-end adjustments, journal entries are there. When you need to hand off to Tally for audit, there is a clean XML export.\n\n**If you use a paper bahi khata** -- you are one lost register away from losing years of records. Hisaabo digitises your entire operation in an afternoon, runs on your phone, and costs nothing.\n\n**If you use Tally** -- you paid Rs. 18,000-54,000 for a license that only works on Windows, on one machine, with no mobile app. Hisaabo runs on any device with a browser, and your CA can access it from their own office.\n\n**If you use myBillBook or Vyapar** -- you started with a \"free\" plan that paywalls essential features behind Rs. 3,000-10,000/year. Your data lives on their servers. If you stop paying, you lose access to your own records. Hisaabo has no feature gates.\n\n**If you use Zoho Books** -- you are paying a monthly SaaS subscription designed for companies ten times your size. Hisaabo is built India-first: GST logic is foundational, not bolted on.\n\nGST-compliant sale and purchase invoices with automatic CGST/SGST/IGST split, PDF generation (A4/A5/thermal), and UPI QR code. Quotations and proformas convert to invoices with one click. Delivery challans with e-way bill linkage and stock-safe invoice conversion. Credit notes, debit notes, sales returns, and purchase returns with separate numbering sequences and automatic stock adjustment.\n\nFull double-entry accounting derived automatically from business transactions. Chart of Accounts seeded with 40 standard Indian accounts on business creation. Trial Balance, Balance Sheet, Profit and Loss, Cash Flow Statement (indirect method), General Ledger, Daybook, and comparative FY-vs-FY reports with variance analysis. Journal entries for CA adjustments: depreciation, provisions, bad debt write-offs, opening balances. Tally XML export for clean import into Tally Prime.\n\nGSTR-1/3B/9 generation, GSTR-2B reconciliation, e-invoicing (NIC IRP with IRN and QR), e-way bill (auto-generate for goods over Rs. 50,000), ITC tracking with 180-day aging and blocked ITC, HSN validation against 19K official codes, composition scheme with CMP-08, reverse charge mechanism, automatic tax determination from state codes. Complete.\n\nCSV import with pre-built templates for SBI, HDFC, ICICI, Axis, Kotak, PNB, BOB, Union, IDBI, and IndusInd. Auto-detection of bank format from headers. 4-tier matching: exact (amount + date + reference), strong (amount + 2-day window), narration parsing (UPI ID, cheque number), partial (amount only, 7-day window). Auto-categorization rules. Template versioning for format changes. BRS with matched, unmatched, and timing difference totals.\n\nCustomer and supplier management with GSTIN validation, per-party ledger, aging buckets, credit period and limit tracking. Real-time stock with low-stock alerts, unit conversion, item variants, HSN/SAC autocomplete, online store pricing. 9 payment modes, multi-invoice allocation, inter-account transfers, payment gateway integration with full charge/settlement/reversal traceability.\n\nTrial Balance, Balance Sheet, P&L, Cash Flow, General Ledger, Daybook, Sales and Purchase Register (by tax rate), Receivables and Payables Aging, Party Statement, Stock Summary, Cash Flow Forecast, Collection Efficiency, Bank Reconciliation Statement, GSTR-1/3B/9. All exportable as CSV.\n\nPublic storefront at `store.hisaabo.in/your-slug`\n\n. Phone verification for orders. WhatsApp notifications. Custom shipping methods. Configurable minimum order amount.\n\n**Onboarding a new client (30 minutes)**\n\n- Add the client as a new business in your Hisaabo instance\n- Configure their GST registration (regular, composition, or unregistered), financial year, and state\n- Chart of Accounts seeds automatically with 40 standard Indian accounts\n- Invite the client with Seller or Admin access -- they can create invoices from their phone\n- Import opening balances via journal entries if migrating mid-year\n\n**Monthly workflow**\n\n- Client creates invoices and records payments through the app or their phone\n- You import their bank statement CSV -- Hisaabo auto-detects the bank and matches 70%+ of transactions\n- Review unmatched items: create expenses, flag timing differences, or match manually\n- GSTR-1 auto-generates from invoice data -- review, export JSON, upload to portal\n- GSTR-3B auto-calculates outward supplies, ITC, and net tax payable\n- Trial Balance and P&L are always current -- no \"closing the books\" step\n\n**Year-end**\n\n- Post depreciation, provisions, and adjustments via journal entries\n- Generate Balance Sheet and P&L for the full financial year\n- Run comparative FY vs FY reports for the client review\n- Export GSTR-9 annual return data\n- Export Tally XML for statutory audit -- imports cleanly into Tally Prime\n\n**What changes for your practice**\n\n| Before Hisaabo | After Hisaabo |\n|---|---|\n| Clients share bank passwords over WhatsApp | Clients upload statements themselves, or you import CSV directly |\n| Articled clerks type bank entries into Tally manually | 4-tier auto-matching handles 70%+ of entries |\n| Chase GST data the week before filing | GSTR-1 and GSTR-3B auto-generate from live invoice data |\n| P&L and Balance Sheet only at year-end | Financial statements current at all times |\n| Each client on a different system (Tally, Excel, paper) | All clients on one platform with a single login |\n| No audit trail for changes | Every write operation logged with user, timestamp, and state |\n\nHisaabo is not a static tool. It is a system that compounds.\n\n**Transaction patterns improve auto-categorization.** When a CA categorizes \"NEFT-SALARY\" as a salary expense for one business, that rule applies across similar transactions. Every manual categorization trains the matching engine.\n\n**GST classifications validate across businesses.** HSN codes confirmed for one business help validate classifications for others in the same industry. A textile trader's HSN mappings benefit the next textile trader onboarded.\n\n**Bank reconciliation accuracy compounds.** As more bank statements flow through the system, narration parsing patterns improve. New UPI formats, changed NEFT descriptions, updated bank CSV layouts -- each resolved case makes the next one faster.\n\n**This is a data moat, not a feature.** Every firm on the platform makes the platform better for every other firm. A new entrant building accounting software from scratch starts at zero. Hisaabo starts with the accumulated intelligence of every transaction ever reconciled.\n\nHisaabo is not a side project. It is production-hardened financial software.\n\n| Dimension | What is in place |\n|---|---|\nTesting |\n1,844 automated tests (unit + integration against real PostgreSQL) |\nLogging |\nStructured JSON logging (pino) with request-ID correlation across the full request lifecycle |\nSecurity |\nCSRF protection, rate limiting (general + PDF-specific), session cookies with HttpOnly/Secure/SameSite=Lax, Argon2id password hashing |\nData Integrity |\nAll money as NUMERIC(15,2), `FOR UPDATE` row locking on payment allocation, PostgreSQL NUMERIC arithmetic for stock (no JS floats) |\nConcurrency |\nSemaphore-based PDF worker pool, atomic invoice number generation, bank balance updates inside transactions |\nPerformance |\nPartial indexes on soft-delete columns, composite indexes for dashboard aggregates, session cache with 60s TTL |\nObservability |\nCrash handlers (unhandledRejection + uncaughtException), request tracing, audit logging for all write operations |\nDeployment |\nDocker with health checks, migration-failure-safe entrypoint, env validation at startup |\n\n| Hisaabo | Tally Prime | Zoho Books | myBillBook | Vyapar | |\n|---|---|---|---|---|---|\nPrice |\nFree | Rs. 18K-54K | Rs. 749-2,499/mo | Rs. 2,999-9,999/yr | Rs. 2,499-7,999/yr |\nOpen source |\nYes | No | No | No | No |\nSelf-hostable |\nYes | Desktop only | No | No | No |\nFull accounting (CoA, TB, BS, P&L, CF) |\nYes | Yes | Yes | No | No |\nJournal entries |\nYes | Yes | Yes | No | No |\nGST returns (1, 3B, 9, 2B recon) |\nYes | Yes | Yes | Basic | Basic |\nE-Invoicing (IRP) |\nYes | Yes | Yes | No | No |\nE-Way Bill |\nYes | Yes | Yes | No | No |\nITC tracking (aging + blocked + utilization) |\nYes | Yes | Yes | No | No |\nBank reconciliation (10 banks, auto-match) |\nYes | Yes | Yes | No | No |\nTally export |\nYes (XML, clean import) | N/A | Partial | Yes | No |\nMobile app |\nYes | No | Yes | Yes (primary) | Yes (primary) |\nAI agent access (MCP + CLI) |\nYes | No | No | No | No |\nPayment gateway (charges + settlement) |\nYes | No | Basic | No | No |\nOnline store |\nBuilt-in | No | No | Basic | Basic |\nMulti-tenant SaaS |\nYes | No | Yes | Cloud only | Cloud only |\nAgent-native architecture |\nYes | No | No | No | No |\n\n```\n+--------------------------------------------------------------+\n|                      Client Layer                            |\n|                                                              |\n|  apps/web            apps/mobile        apps/store           |\n|  React 19 + Vite     Expo SDK 55        React 19 + Vite     |\n|  TanStack Router     Expo Router        (public storefront)  |\n|                                                              |\n|  apps/desktop        packages/cli       packages/mcp         |\n|  Tauri v2            Terminal CLI        MCP Server           |\n|  (wraps web)         (@hisaabo/cli)     (Claude, AI agents)  |\n+----------------------------+---------------------------------+\n                             | tRPC (typed) + REST (store)\n                             | x-business-id header\n                             | Role-based permissions\n+----------------------------v---------------------------------+\n|                     API Layer                                |\n|                                                              |\n|  packages/api                                                |\n|  Hono + tRPC v11 -- 20+ routers -- 200+ procedures          |\n|  Three procedure levels:                                     |\n|    publicProcedure / protectedProcedure / businessProcedure  |\n|  pino logging -- CSRF -- Rate limiting -- Audit log          |\n+----------------------------+---------------------------------+\n                             | Drizzle ORM\n+----------------------------v---------------------------------+\n|                   Database Layer                             |\n|                                                              |\n|  packages/db                                                 |\n|  PostgreSQL 16 -- NUMERIC(15,2) for money                    |\n|  Control DB (auth, tenants) + Tenant DB (business data)      |\n|  Partial indexes -- FOR UPDATE locking                       |\n+--------------------------------------------------------------+\n\n+--------------------------------------------------------------+\n|                  Shared Layer                                 |\n|  packages/shared                                             |\n|  Zod validators -- TypeScript types -- Fixed-point money     |\n|  Invoice calculation -- HSN master (19K codes)               |\n|  Used by API + web + mobile + CLI + MCP                      |\n+--------------------------------------------------------------+\n```\n\nAll six clients (web, mobile, desktop, store, CLI, MCP) call the same API with the same typed contracts. There is no separate \"AI API\" or \"bot API.\" The architecture enforces that every capability available to a human is available to an agent.\n\n**Tech stack:**\n\nThree paths depending on what you want to do.\n\n**Prerequisites:** Node.js 20+, pnpm 9+, Docker\n\n```\ngit clone https://github.com/hisaabo/hisaabo.git\ncd hisaabo\npnpm install\n\n# Start PostgreSQL\ndocker compose up -d\n\n# Configure environment (defaults work for local dev)\ncp .env.example .env\n\n# Push the database schema\npnpm db:push\n\n# Start everything\npnpm dev\n```\n\n| Service | URL |\n|---|---|\n| Web app |\n|\n\n[http://localhost:3000](http://localhost:3000)[http://localhost:5174](http://localhost:5174)Create an account on first visit. The setup wizard creates your first business with a seeded Chart of Accounts.\n\n```\ncurl -X POST https://api.hisaabo.in/api/trpc/auth.register \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"json\":{\"email\":\"you@yourshop.in\",\"name\":\"Your Name\",\"password\":\"strongpass123\",\"confirmPassword\":\"strongpass123\"}}'\nnpm install -g @hisaabo/cli\nhisaabo login --api-url https://your-hisaabo-instance.com\nhisaabo whoami --json  # Copy token, tenantId, businessId\n```\n\nThen add to `claude_desktop_config.json`\n\n-- see the [MCP Server guide](https://docs.hisaabo.in/ai/mcp-server/).\n\n```\nhisaabo/\n├── apps/\n│   ├── web/          # React 19 admin dashboard\n│   ├── mobile/       # Expo SDK 55 iOS + Android app\n│   ├── store/        # Public customer-facing online storefront\n│   ├── desktop/      # Tauri v2 desktop (macOS, Windows, Linux)\n│   ├── docs/         # Starlight (Astro) documentation site\n│   └── api-docs/     # API reference site\n├── packages/\n│   ├── api/          # Hono + tRPC server (20+ routers, 200+ procedures)\n│   ├── db/           # Drizzle ORM schema + PostgreSQL client\n│   ├── shared/       # Zod validators, TypeScript types, money module, HSN master\n│   ├── cli/          # Terminal CLI (@hisaabo/cli on npm)\n│   └── mcp/          # MCP server for AI agents (@hisaabo/mcp on npm)\n├── docs/             # Architecture docs, research, roadmaps\n├── nginx/            # Production nginx configuration\n├── docker-compose.yml        # Local development\n├── docker-compose.prod.yml   # Production deployment\n├── Dockerfile                # API container image\n└── Dockerfile.once           # All-in-one (PostgreSQL + API)\n```\n\n| Tool | Version | Install |\n|---|---|---|\n| Node.js | >= 20 |\n|\n\n`npm install -g pnpm`\n\n[docker.com](https://www.docker.com/)| Command | Description |\n|---|---|\n`pnpm dev` |\nStart all dev servers (API + web + store) |\n`pnpm build` |\nBuild all packages |\n`pnpm typecheck` |\nType-check all packages |\n`pnpm lint` |\nLint all packages (oxlint) |\n`pnpm db:push` |\nPush schema changes to DB (dev) |\n`pnpm db:reset` |\nDrop all tables and repush schema |\n`pnpm db:generate` |\nGenerate Drizzle migration files (production) |\n`pnpm db:migrate` |\nRun pending migrations |\n`pnpm db:studio` |\nOpen Drizzle Studio |\n\n```\npnpm --filter @hisaabo/api dev      # API server only\npnpm --filter @hisaabo/web dev      # Web app only\npnpm --filter @hisaabo/mobile dev   # Mobile (Expo Go)\npnpm --filter @hisaabo/store dev    # Online store only\n# Run all tests (1,844 tests)\npnpm --filter @hisaabo/api test\n\n# Watch mode during development\npnpm --filter @hisaabo/api test:watch\n# In WSL terminal -- auto-sets EXPO_PUBLIC_API_URL to your WSL IP\npnpm dev:mobile:android\ncp .env.example .env  # Edit with production values\ndocker compose -f docker-compose.prod.yml up -d\n```\n\nPostgreSQL 16 + Node API in a single container with s6-overlay:\n\n```\ndocker build -f Dockerfile.once -t hisaabo-once .\ndocker run -v /data/hisaabo:/storage -p 80:80 hisaabo-once\n```\n\n| App | Build command | Output directory |\n|---|---|---|\n| Web | `pnpm --filter @hisaabo/web build` |\n`apps/web/dist` |\n| Store | `pnpm --filter @hisaabo/store build` |\n`apps/store/dist` |\n\nSet `VITE_API_URL`\n\nin Cloudflare Pages environment variables.\n\n```\n# Desktop (Tauri)\ncd apps/desktop && cargo tauri build\n\n# Android APK\npnpm --filter @hisaabo/mobile build:apk\n```\n\nFull production guide: [docs.hisaabo.in/self-hosting](https://docs.hisaabo.in/getting-started/self-hosting)\n\nCopy `.env.example`\n\nto `.env`\n\n. Key variables:\n\n| Variable | Description | Example |\n|---|---|---|\n`DATABASE_URL` |\nPostgreSQL connection string | `postgresql://hisaabo:pass@localhost:5432/hisaabo` |\n`PORT` |\nAPI server port | `3000` |\n`CORS_ORIGINS` |\nAllowed origins (comma-separated) | `https://app.hisaabo.in` |\n`APP_URL` |\nFrontend URL (for magic link emails) | `https://app.hisaabo.in` |\n`NODE_ENV` |\nEnvironment | `production` |\n`RESEND_API_KEY` |\nEmail sending (optional in dev) | |\n`MULTI_TENANT` |\nEnable multi-tenant cloud mode | `false` |\n`LOG_LEVEL` |\nLogging level (debug/info/warn/error) | `info` |\n\nEverything listed in Features above is shipped and tested. The full accounting layer, GST compliance suite, bank reconciliation engine, and agent-native architecture were built in Q4 FY26.\n\n**PDF invoice OCR**-- Photograph a purchase bill, auto-extract line items, HSN codes, and amounts** Account Aggregator integration**-- Consent-based automatic bank data pull (replacing CSV import)** TDS management**-- TDS deduction tracking, Form 26AS reconciliation\n\n**Direct GST filing via GSP**-- File GSTR-1 and GSTR-3B directly from Hisaabo without the GST portal** Agent ecosystem**-- Third-party tax, audit, and compliance agents built on the MCP server** IMS integration**-- Invoice Management System support as it matures** Multi-currency support**-- For export-oriented businesses\n\nSee [docs/architecture/gst-accounting-roadmap.md](/hisaabo/hisaabo/blob/main/docs/architecture/gst-accounting-roadmap.md) for the full technical specification.\n\n| Resource | URL |\n|---|---|\n| User documentation |\n|\n\n[api.hisaabo.in](https://api.hisaabo.in)[docs.hisaabo.in/getting-started/self-hosting](https://docs.hisaabo.in/getting-started/self-hosting)[CONTRIBUTING.md](/hisaabo/hisaabo/blob/main/CONTRIBUTING.md)[SECURITY.md](/hisaabo/hisaabo/blob/main/SECURITY.md)Contributions are welcome. Before opening a PR:\n\n```\npnpm typecheck   # Must pass\npnpm lint        # Must pass (oxlint --deny-warnings)\npnpm build       # Must pass\npnpm --filter @hisaabo/api test  # 1,844 tests must pass\n```\n\nKey guidelines:\n\n- Use the\n`money`\n\nmodule from`packages/shared`\n\nfor all monetary arithmetic - All input validation in\n`packages/shared/src/validators.ts`\n\nas Zod schemas - No component libraries -- pure Tailwind CSS\n- New features ship with tests and a\n`feature-parity.yaml`\n\nupdate\n\nSee [CONTRIBUTING.md](/hisaabo/hisaabo/blob/main/CONTRIBUTING.md) for full guidelines.\n\n[O'Saasy License (v1.0)](/hisaabo/hisaabo/blob/main/LICENSE) -- Free to use, self-host, and modify. You cannot offer Hisaabo as a competing hosted service.\n\nBuilt with care in India. *Hisaab, pakka.*", "url": "https://wpnews.pro/news/an-experiment-in-building-accounting-around-financial-actions-instead-of-forms", "canonical_source": "https://github.com/hisaabo/hisaabo", "published_at": "2026-06-20 09:47:01+00:00", "updated_at": "2026-06-20 10:07:30.689352+00:00", "lang": "en", "topics": ["ai-agents", "large-language-models", "ai-tools", "ai-infrastructure", "developer-tools"], "entities": ["Hisaabo", "GST", "MCP", "tRPC", "NIC IRP"], "alternates": {"html": "https://wpnews.pro/news/an-experiment-in-building-accounting-around-financial-actions-instead-of-forms", "markdown": "https://wpnews.pro/news/an-experiment-in-building-accounting-around-financial-actions-instead-of-forms.md", "text": "https://wpnews.pro/news/an-experiment-in-building-accounting-around-financial-actions-instead-of-forms.txt", "jsonld": "https://wpnews.pro/news/an-experiment-in-building-accounting-around-financial-actions-instead-of-forms.jsonld"}}