CLI Tool
The Hisaabo CLI (hisaabo) brings your entire business management workflow to the terminal. Built with Ink 5 (React for the terminal) and Commander.js, it renders rich interactive tables, colored status badges, and INR-formatted numbers directly in your shell.
It is useful for three things: quick lookups without opening a browser, automation scripts and cron jobs, and AI agent workflows that execute shell commands as part of a broader pipeline.
By default, commands render a pretty table with color. Pass --json to get clean JSON output for piping into jq or other tools.
Installation
Section titled “Installation”npm install -g @hisaabo/cliOr use without installing:
npx @hisaabo/cli <command>Verify the installation:
hisaabo --versionAuthentication
Section titled “Authentication”Login with API key (recommended)
Section titled “Login with API key (recommended)”Generate an API key in the Hisaabo web app under Settings → API Keys (available on paid plans), then:
hisaabo login --token hisaabo_key_xxxxxxxxxxxxxxxxxxThe CLI validates the key, resolves your user and business context, and stores it in ~/.config/hisaabo/config.json. API keys do not expire unless you set an expiry date during creation.
To specify a self-hosted instance:
hisaabo login --token hisaabo_key_xxx --api-url https://your-instance.comEnvironment variables (recommended for automation)
Section titled “Environment variables (recommended for automation)”For cron jobs and CI/CD pipelines, set credentials as environment variables instead of logging in:
export HISAABO_API_URL=https://your-hisaabo-instance.comexport HISAABO_API_KEY=hisaabo_key_xxxxxxxxxxxxxxxxxxexport HISAABO_BUSINESS_ID=your-business-uuidSwitch business
Section titled “Switch business”If your account manages multiple businesses:
hisaabo switch# Renders an interactive picker — select with arrow keys and EnterOr non-interactively:
hisaabo switch <business-id>Register and profile management
Section titled “Register and profile management”# Register a new accounthisaabo auth register --email you@example.com --name "Your Name"
# Complete profile setup after an invite-based registrationhisaabo auth complete-profile --name "Your Name"
# Update your display namehisaabo auth update-name --name "New Name"
# Sign out of all active sessions (useful after a credential change)hisaabo auth logout-allCommand Reference
Section titled “Command Reference”hisaabo dashboard
Section titled “hisaabo dashboard”Display key business metrics.
hisaabo dashboardhisaabo dashboard --period todayhisaabo dashboard --period this-weekhisaabo dashboard --period this-monthhisaabo dashboard --period last-monthhisaabo dashboard --period this-yearhisaabo dashboard --from 2026-01-01 --to 2026-03-31| Flag | Description |
|---|---|
--period | today, this-week, this-month, last-month, this-year |
--from / --to | Custom date range (ISO 8601) |
--json | Raw JSON output |
Example output:
Business Dashboard — March 2026━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━Revenue: ₹4,82,500Expenses: ₹1,23,400Net Profit: ₹3,59,100Outstanding: ₹78,250 (6 overdue invoices)
Top customers this month: Gupta Enterprises ₹1,42,000 Sharma Traders ₹98,500 Vinod & Sons ₹67,000
Low stock alerts: 3 itemshisaabo invoice
Section titled “hisaabo invoice”hisaabo invoice list
Section titled “hisaabo invoice list”hisaabo invoice listhisaabo invoice list --status overduehisaabo invoice list --status paidhisaabo invoice list --party "Sharma Traders"hisaabo invoice list --from 2026-03-01 --to 2026-03-31hisaabo invoice list --status overdue --sort oldest-firsthisaabo invoice list --type purchasehisaabo invoice list --json| Flag | Description |
|---|---|
--status | draft, sent, paid, overdue, cancelled |
--type | sale (default) or purchase |
--party | Party name or ID |
--from / --to | Date range |
--sort | newest-first (default), oldest-first, amount-asc, amount-desc |
--limit | Max results (default 50, max 100) |
--json | Raw JSON output |
hisaabo invoice get
Section titled “hisaabo invoice get”hisaabo invoice get BB-12948hisaabo invoice get inv_xxxxxxxxxx --jsonhisaabo invoice create
Section titled “hisaabo invoice create”Interactive wizard when run without flags. Or pass flags for scripting:
hisaabo invoice create \ --party "Montu Arora" \ --item "Spinach" --quantity 7.3 --unit kg --price 65 \ --item "Tomato" --quantity 5 --unit kg --price 40 \ --date 2026-03-26 \ --due-date 2026-04-10For complex invoices with many line items, pass a JSON file:
hisaabo invoice create --from-file invoice.jsonWhere invoice.json follows the format:
{ "party": "Gupta Enterprises", "date": "2026-03-26", "dueDate": "2026-04-10", "items": [ { "item": "Basmati Rice 25kg", "quantity": 10, "unit": "bag", "price": "1250.00" }, { "item": "Mustard Oil 15L", "quantity": 5, "unit": "can", "price": "2100.00" } ], "notes": "Delivery to warehouse on 28th"}hisaabo invoice pdf
Section titled “hisaabo invoice pdf”# Download PDF to current directoryhisaabo invoice pdf BB-12948
# Specify output pathhisaabo invoice pdf BB-12948 --output /tmp/invoices/
# Thermal (58mm) formathisaabo invoice pdf BB-12948 --format thermalhisaabo invoice update
Section titled “hisaabo invoice update”Update fields on an existing invoice. Only draft invoices can be fully edited; sent or paid invoices accept a limited set of changes.
hisaabo invoice update BB-12948 \ --notes "Updated payment terms: 30 days net" \ --due-date 2026-04-30Pass --from-file invoice.json to replace the full invoice body from a JSON file (same format as invoice create).
hisaabo invoice delete
Section titled “hisaabo invoice delete”hisaabo invoice delete BB-12948Only draft invoices can be deleted. Sent or paid invoices must be cancelled via status update.
hisaabo party
Section titled “hisaabo party”hisaabo party list
Section titled “hisaabo party list”hisaabo party listhisaabo party list --type customerhisaabo party list --type supplierhisaabo party list --search "sharma"hisaabo party list --outstanding # only parties with unpaid balancehisaabo party list --jsonhisaabo party get
Section titled “hisaabo party get”hisaabo party get "Sharma Traders"hisaabo party get party_xxxxxxxxxx --ledgerhisaabo party get "Gupta Enterprises" --ledger --from 2026-01-01hisaabo party create
Section titled “hisaabo party create”hisaabo party create \ --name "Mehta & Sons" \ --type customer \ --phone 9876543210 \ --gstin 27AABCU9603R1ZX \ --city Mumbai \ --state Maharashtrahisaabo party ledger-report
Section titled “hisaabo party ledger-report”Full ledger report with opening balance, all transactions, and closing balance for a date range:
hisaabo party ledger-report --party "Gupta Enterprises" --from 2026-04-01 --to 2026-03-31hisaabo party ledger-report --party party_xxxxxxxxxx --jsonhisaabo party stats
Section titled “hisaabo party stats”Aggregate transaction statistics (total sales, purchases, payments) for a party:
hisaabo party stats party_xxxxxxxxxxhisaabo party stats "Sharma Traders" --jsonhisaabo party top-items
Section titled “hisaabo party top-items”Items most frequently bought from or sold to a party, ranked by quantity or value:
hisaabo party top-items party_xxxxxxxxxxhisaabo party top-items "Gupta Enterprises" --limit 10 --jsonhisaabo party merge
Section titled “hisaabo party merge”Merge two duplicate party records. All invoices, payments, and ledger entries are reassigned to the target party and the source is deleted.
hisaabo party merge --source party_xxxxxxxxxx --target party_yyyyyyyyyyhisaabo party delete
Section titled “hisaabo party delete”hisaabo party delete party_xxxxxxxxxxFails if the party has any invoices or payments on record.
hisaabo item
Section titled “hisaabo item”hisaabo item list
Section titled “hisaabo item list”hisaabo item listhisaabo item list --low-stockhisaabo item list --search "rice"hisaabo item list --category "Grains"hisaabo item list --jsonhisaabo item get
Section titled “hisaabo item get”hisaabo item get "Basmati Rice 25kg"hisaabo item get item_xxxxxxxxxx --jsonhisaabo item create
Section titled “hisaabo item create”hisaabo item create \ --name "Mustard Oil 15L" \ --unit can \ --price 2100 \ --hsn 1514 \ --gst 5 \ --category "Oils & Ghee" \ --opening-stock 20 \ --low-stock-threshold 5hisaabo item delete
Section titled “hisaabo item delete”hisaabo item delete item_xxxxxxxxxxFails if the item appears on any invoice.
hisaabo item stock
Section titled “hisaabo item stock”Adjust stock quantity:
# Add stock (positive adjustment)hisaabo item stock "Basmati Rice 25kg" --adjustment +50 --reason "Purchase from supplier"
# Remove stock (negative adjustment)hisaabo item stock "Mustard Oil 15L" --adjustment -3 --reason "Damaged in transit"hisaabo item stock-history
Section titled “hisaabo item stock-history”Full log of every stock adjustment ever made on an item:
hisaabo item stock-history "Basmati Rice 25kg"hisaabo item stock-history item_xxxxxxxxxx --from 2026-01-01 --jsonhisaabo item stock-movements
Section titled “hisaabo item stock-movements”Every stock movement including invoice deductions, purchase additions, and manual adjustments:
hisaabo item stock-movements "Mustard Oil 15L"hisaabo item stock-movements item_xxxxxxxxxx --jsonhisaabo item low-stock-count
Section titled “hisaabo item low-stock-count”Quick count of items currently at or below their low-stock threshold:
hisaabo item low-stock-counthisaabo item price-history
Section titled “hisaabo item price-history”Historical sale price changes for an item:
hisaabo item price-history "Basmati Rice 25kg"hisaabo item price-history item_xxxxxxxxxx --jsonhisaabo item sales-stats
Section titled “hisaabo item sales-stats”Total units sold and revenue for an item over a period:
hisaabo item sales-stats "Basmati Rice 25kg" --from 2026-04-01 --to 2026-03-31hisaabo item sales-stats item_xxxxxxxxxx --jsonhisaabo item variants
Section titled “hisaabo item variants”Manage variants (size, grade, colour, etc.) for an item that has multiple options at different prices or units.
# List variantshisaabo item variants list item_xxxxxxxxxx
# Add a varianthisaabo item variants create \ --item item_xxxxxxxxxx \ --name "500g Pack" \ --price 120 \ --unit pack
# Update a varianthisaabo item variants update variant_xxxxxxxxxx --price 130
# Delete a varianthisaabo item variants delete variant_xxxxxxxxxxhisaabo item merge
Section titled “hisaabo item merge”Merge two duplicate item records. All line items and stock history are reassigned to the target and the source is deleted.
hisaabo item merge --source item_xxxxxxxxxx --target item_yyyyyyyyyyhisaabo item switch-base-unit
Section titled “hisaabo item switch-base-unit”Change the base unit of measurement for an item (e.g. kg to g). Provide the conversion factor.
hisaabo item switch-base-unit item_xxxxxxxxxx --new-unit g --factor 1000hisaabo item rename-unit
Section titled “hisaabo item rename-unit”Rename a unit on an item without changing any quantities (e.g. rename pcs to pieces):
hisaabo item rename-unit item_xxxxxxxxxx --from pcs --to pieceshisaabo payment
Section titled “hisaabo payment”hisaabo payment list
Section titled “hisaabo payment list”hisaabo payment listhisaabo payment list --party "Sharma Traders"hisaabo payment list --from 2026-03-01 --to 2026-03-31hisaabo payment list --mode upihisaabo payment list --jsonhisaabo payment create
Section titled “hisaabo payment create”# Payment received from customerhisaabo payment create \ --party "Sharma Traders" \ --amount 25000 \ --mode upi \ --date 2026-03-26 \ --reference "UTR123456789" \ --allocate BB-12800 BB-12801
# Bulk payment (no specific invoice allocation)hisaabo payment create \ --party "Gupta Enterprises" \ --amount 50000 \ --mode bank \ --reference "NEFT20260326"hisaabo payment delete
Section titled “hisaabo payment delete”hisaabo payment delete pay_xxxxxxxxxxhisaabo payment unpaid-invoices
Section titled “hisaabo payment unpaid-invoices”List invoices that still have an outstanding balance — useful before recording a payment to see what to allocate:
hisaabo payment unpaid-invoiceshisaabo payment unpaid-invoices --party "Sharma Traders" --jsonhisaabo payment untracked
Section titled “hisaabo payment untracked”Payments that were recorded but have not been linked to any invoice:
hisaabo payment untrackedhisaabo payment untracked --jsonhisaabo payment default-account
Section titled “hisaabo payment default-account”Show the bank account that is currently set as the default for incoming payments:
hisaabo payment default-accounthisaabo payment assign-account
Section titled “hisaabo payment assign-account”Assign a bank account to an existing payment record:
hisaabo payment assign-account --payment pay_xxxxxxxxxx --account account_xxxxxxxxxxhisaabo expense
Section titled “hisaabo expense”hisaabo expense list
Section titled “hisaabo expense list”hisaabo expense listhisaabo expense list --category "Transport"hisaabo expense list --from 2026-03-01 --to 2026-03-31hisaabo expense list --jsonhisaabo expense create
Section titled “hisaabo expense create”hisaabo expense create \ --amount 1500 \ --category "Transport" \ --date 2026-03-26 \ --description "Delivery to Sector 15 warehouse"hisaabo expense delete
Section titled “hisaabo expense delete”hisaabo expense delete exp_xxxxxxxxxxhisaabo gst
Section titled “hisaabo gst”hisaabo gst r1
Section titled “hisaabo gst r1”Get GSTR-1 data (outward supplies):
hisaabo gst r1 --month 3 --year 2026hisaabo gst r1 --month 3 --year 2026 --jsonhisaabo gst r1 --month 3 --year 2026 --csv --output /var/gst-reports/hisaabo gst r3b
Section titled “hisaabo gst r3b”Get GSTR-3B summary (monthly return):
hisaabo gst r3b --month 3 --year 2026hisaabo gst r3b --month 3 --year 2026 --csv --output /var/gst-reports/hisaabo shipment
Section titled “hisaabo shipment”hisaabo shipment list
Section titled “hisaabo shipment list”hisaabo shipment listhisaabo shipment list --status in_transithisaabo shipment list --from 2026-03-01 --jsonhisaabo shipment get
Section titled “hisaabo shipment get”hisaabo shipment get ship_xxxxxxxxxxShows full tracking event history.
hisaabo shipment create
Section titled “hisaabo shipment create”hisaabo shipment create \ --invoice BB-14821 \ --mode "Delhivery" \ --tracking "DEL9876543210" \ --dispatch-date 2026-03-27hisaabo shipment update
Section titled “hisaabo shipment update”hisaabo shipment update ship_xxxxxxxxxx \ --status delivered \ --notes "Delivered to reception, signed by Ramesh"hisaabo bank
Section titled “hisaabo bank”hisaabo bank list
Section titled “hisaabo bank list”hisaabo bank listhisaabo bank list --jsonShows all bank accounts and cash accounts with current balances.
hisaabo bank get
Section titled “hisaabo bank get”hisaabo bank get account_xxxxxxxxxxhisaabo bank get "SBI Current" --transactions --from 2026-03-01hisaabo bank create
Section titled “hisaabo bank create”hisaabo bank create \ --name "HDFC Current Account" \ --type bank \ --account-number "1234567890" \ --ifsc "HDFC0001234" \ --opening-balance 50000hisaabo bank transfer
Section titled “hisaabo bank transfer”hisaabo bank transfer \ --from "SBI Current" \ --to "Petty Cash" \ --amount 5000 \ --date 2026-03-26 \ --notes "Weekly petty cash replenishment"hisaabo bank transactions
Section titled “hisaabo bank transactions”hisaabo bank transactions "HDFC Current Account"hisaabo bank transactions account_xxxxxxxxxx --from 2026-03-01 --to 2026-03-31 --jsonhisaabo report
Section titled “hisaabo report”hisaabo report daybook
Section titled “hisaabo report daybook”All transactions for a date range, ordered by date:
hisaabo report daybook --from 2026-03-01 --to 2026-03-31hisaabo report daybook --from 2026-03-26 --to 2026-03-26 --jsonhisaabo report outstanding
Section titled “hisaabo report outstanding”Receivables and payables with aging buckets:
hisaabo report outstandinghisaabo report outstanding --type receivablehisaabo report outstanding --jsonhisaabo report tax-summary
Section titled “hisaabo report tax-summary”Taxable turnover and GST by rate for a period:
hisaabo report tax-summary --from 2026-01-01 --to 2026-03-31hisaabo report tax-summary --from 2026-04-01 --to 2026-03-31 --jsonhisaabo report item-sales
Section titled “hisaabo report item-sales”Top items by sales quantity and revenue:
hisaabo report item-sales --period this-monthhisaabo report item-sales --from 2026-04-01 --to 2026-03-31 --jsonhisaabo report stock
Section titled “hisaabo report stock”Current stock value and opening/closing comparison:
hisaabo report stockhisaabo report stock --jsonhisaabo target
Section titled “hisaabo target”hisaabo target list
Section titled “hisaabo target list”hisaabo target listhisaabo target list --period monthly --jsonhisaabo target create
Section titled “hisaabo target create”hisaabo target create \ --name "Q1 Revenue Target" \ --type order_value \ --value 500000 \ --period monthlyhisaabo target my
Section titled “hisaabo target my”Show targets assigned to you (useful for sales team members):
hisaabo target myhisaabo target my --jsonhisaabo import
Section titled “hisaabo import”hisaabo import parties
Section titled “hisaabo import parties”# From CSVhisaabo import parties --file parties.csv --format csv
# From JSONhisaabo import parties --file parties.json --format json
# Preview without importinghisaabo import parties --file parties.csv --dry-runhisaabo import items
Section titled “hisaabo import items”hisaabo import items --file catalog.csv --format csvhisaabo import items --file catalog.json --dry-runhisaabo store
Section titled “hisaabo store”hisaabo store settings
Section titled “hisaabo store settings”hisaabo store settingshisaabo store settings --jsonhisaabo store orders
Section titled “hisaabo store orders”hisaabo store ordershisaabo store orders --status pendinghisaabo store orders --from 2026-03-01 --jsonhisaabo store order confirm
Section titled “hisaabo store order confirm”Mark a pending store order as confirmed and begin fulfillment:
hisaabo store order confirm order_xxxxxxxxxxhisaabo store order cancel
Section titled “hisaabo store order cancel”Cancel a store order:
hisaabo store order cancel order_xxxxxxxxxx --reason "Out of stock"hisaabo store check-slug
Section titled “hisaabo store check-slug”Check whether a URL slug is available before updating your store URL:
hisaabo store check-slug my-store-namehisaabo store items
Section titled “hisaabo store items”List items currently shown in your online store:
hisaabo store itemshisaabo store items --jsonhisaabo store items toggle
Section titled “hisaabo store items toggle”Bulk enable or disable items in the store without editing each one individually:
# Enable multiple itemshisaabo store items toggle --enable item_aaa item_bbb item_ccc
# Disable multiple itemshisaabo store items toggle --disable item_ddd item_eeehisaabo tenant
Section titled “hisaabo tenant”Manage the tenant (organisation) that owns your businesses. Most users operate within a single tenant and never need these commands. They are most relevant to agency operators who manage multiple tenants.
hisaabo tenant list
Section titled “hisaabo tenant list”hisaabo tenant listhisaabo tenant list --jsonhisaabo tenant select
Section titled “hisaabo tenant select”Switch the active tenant. All subsequent commands operate in the context of the selected tenant.
hisaabo tenant select tenant_xxxxxxxxxxhisaabo tenant members
Section titled “hisaabo tenant members”List members of the current tenant:
hisaabo tenant membershisaabo tenant members --jsonhisaabo tenant invite
Section titled “hisaabo tenant invite”Invite a new member by email:
hisaabo tenant invite --email colleague@example.com --role memberAvailable roles: owner, admin, member.
hisaabo tenant remove
Section titled “hisaabo tenant remove”Remove a member from the tenant:
hisaabo tenant remove user_xxxxxxxxxxhisaabo tenant role
Section titled “hisaabo tenant role”Update a member’s role:
hisaabo tenant role user_xxxxxxxxxx --role adminDocument types
Section titled “Document types”Beyond standard invoices, Hisaabo supports six additional document types. Each type has the same five operations: list, get, create, status, and delete.
Quotation
Section titled “Quotation”hisaabo quotation listhisaabo quotation list --party "Gupta Enterprises" --jsonhisaabo quotation get quot_xxxxxxxxxxhisaabo quotation create \ --party "Mehta & Sons" \ --item "Basmati Rice 25kg" --quantity 50 --unit bag --price 1250 \ --valid-until 2026-04-30hisaabo quotation status quot_xxxxxxxxxx acceptedhisaabo quotation delete quot_xxxxxxxxxxCredit Note
Section titled “Credit Note”hisaabo credit-note listhisaabo credit-note get cn_xxxxxxxxxxhisaabo credit-note create --party "Sharma Traders" --invoice BB-12948 --reason "Goods returned"hisaabo credit-note status cn_xxxxxxxxxx issuedhisaabo credit-note delete cn_xxxxxxxxxxDebit Note
Section titled “Debit Note”hisaabo debit-note listhisaabo debit-note get dn_xxxxxxxxxxhisaabo debit-note create --party "Vinod & Sons" --invoice BB-12900 --reason "Short supply"hisaabo debit-note status dn_xxxxxxxxxx issuedhisaabo debit-note delete dn_xxxxxxxxxxDelivery Challan
Section titled “Delivery Challan”hisaabo challan listhisaabo challan get dc_xxxxxxxxxxhisaabo challan create \ --party "Gupta Enterprises" \ --item "Mustard Oil 15L" --quantity 10 --unit canhisaabo challan status dc_xxxxxxxxxx deliveredhisaabo challan delete dc_xxxxxxxxxxProforma Invoice
Section titled “Proforma Invoice”hisaabo proforma listhisaabo proforma get pf_xxxxxxxxxxhisaabo proforma create \ --party "Mehta & Sons" \ --item "Toor Dal 50kg" --quantity 5 --unit bag --price 4200hisaabo proforma status pf_xxxxxxxxxx approvedhisaabo proforma delete pf_xxxxxxxxxxSales Return
Section titled “Sales Return”hisaabo sales-return listhisaabo sales-return get sr_xxxxxxxxxxhisaabo sales-return create --party "Sharma Traders" --invoice BB-12948hisaabo sales-return status sr_xxxxxxxxxx processedhisaabo sales-return delete sr_xxxxxxxxxxPurchase Return
Section titled “Purchase Return”hisaabo purchase-return listhisaabo purchase-return get pr_xxxxxxxxxxhisaabo purchase-return create --party "Vinod & Sons" --invoice BB-12900hisaabo purchase-return status pr_xxxxxxxxxx processedhisaabo purchase-return delete pr_xxxxxxxxxxConvert a document
Section titled “Convert a document”Convert one document type to another. The most common use case is converting a delivery challan into a tax invoice after goods are delivered.
# Convert a delivery challan to a sale invoicehisaabo document convert \ --from dc_xxxxxxxxxx \ --from-type delivery_challan \ --to-type invoiceThe --skip-stock-adjustment flag is available when converting a challan to an invoice to avoid double-deducting stock that was already deducted when the challan was created.
hisaabo api-key
Section titled “hisaabo api-key”Generate and manage API keys for automation scripts, CI/CD pipelines, and third-party integrations.
hisaabo api-key list
Section titled “hisaabo api-key list”hisaabo api-key listhisaabo api-key list --jsonShows key name, creation date, expiry date, and last-used timestamp. The key secret is only shown once at creation time.
hisaabo api-key create
Section titled “hisaabo api-key create”hisaabo api-key create --name "CI Pipeline" --expires 2027-04-01hisaabo api-key create --name "Read-only export script"Copy the returned key immediately — it is not shown again.
hisaabo api-key revoke
Section titled “hisaabo api-key revoke”hisaabo api-key revoke apikey_xxxxxxxxxxRevoked keys stop working instantly.
Global flags
Section titled “Global flags”These flags work on every command:
| Flag | Description |
|---|---|
--json | Output raw JSON instead of formatted tables |
--business <id> | Override the active business for this command |
--api-url <url> | Override the API URL for this command |
--quiet | Suppress all output except errors |
--no-color | Disable color output (useful for log files) |
--help | Show help for any command |
Practical Examples
Section titled “Practical Examples”Morning dashboard check
Section titled “Morning dashboard check”hisaabo dashboard --period todayOr with the full picture:
#!/bin/bashecho "=== $(date +"%d %b %Y") ==="hisaabo dashboard --period todayecho ""echo "--- Overdue invoices ---"hisaabo invoice list --status overdue --sort oldest-first --limit 10echo ""echo "--- Low stock ---"hisaabo item list --low-stockCreating an invoice from the terminal
Section titled “Creating an invoice from the terminal”hisaabo invoice create \ --party "Gupta Enterprises" \ --item "Basmati Rice 25kg" --quantity 20 --unit bag --price 1250 \ --item "Toor Dal 50kg" --quantity 5 --unit bag --price 4200 \ --due-date 2026-04-10Then immediately get the PDF:
INVOICE_ID=$(hisaabo invoice create \ --party "Gupta Enterprises" \ --item "Basmati Rice 25kg" --quantity 20 --unit bag --price 1250 \ --json | jq -r '.id')
hisaabo invoice pdf "$INVOICE_ID" --output /tmp/echo "PDF saved: /tmp/${INVOICE_ID}.pdf"Checking overdue invoices
Section titled “Checking overdue invoices”# Human-readable tablehisaabo invoice list --status overdue --sort oldest-first
# Pipe to jq for custom formattinghisaabo invoice list --status overdue --json | jq -r \ '.[] | "\(.invoiceNumber) \(.party.name) ₹\(.totalAmount) \(.daysOverdue) days overdue"'
# Total amount overduehisaabo invoice list --status overdue --json | \ jq '[.[].totalAmount | tonumber] | add'GST filing prep (export GSTR-1)
Section titled “GST filing prep (export GSTR-1)”#!/bin/bashMONTH=3YEAR=2026OUTPUT_DIR="/var/gst-reports/${YEAR}-${MONTH}"mkdir -p "$OUTPUT_DIR"
# Human-readable summaryhisaabo gst r1 --month "$MONTH" --year "$YEAR"
# Export CSV for CA or GST portal uploadhisaabo gst r1 --month "$MONTH" --year "$YEAR" \ --csv --output "$OUTPUT_DIR/gstr1-${YEAR}-${MONTH}.csv"
hisaabo gst r3b --month "$MONTH" --year "$YEAR" \ --csv --output "$OUTPUT_DIR/gstr3b-${YEAR}-${MONTH}.csv"
echo "GST exports ready in $OUTPUT_DIR"Scripting with --json | jq
Section titled “Scripting with --json | jq”# Top 5 customers by outstanding balancehisaabo party list --outstanding --json | \ jq 'sort_by(.outstandingBalance | tonumber) | reverse | .[0:5] | .[] | "\(.name): ₹\(.outstandingBalance)"'
# Items needing reorder with suggested quantityhisaabo item list --low-stock --json | jq -r \ '.[] | "REORDER \(.name): have \(.stockQuantity) \(.unit), min \(.lowStockThreshold) \(.unit)"'
# Monthly revenue from dashboardhisaabo dashboard --period this-month --json | jq -r '.totalSales'
# Count invoices by statushisaabo invoice list --json | jq 'group_by(.status) | .[] | {status: .[0].status, count: length}'Power User Workflows
Section titled “Power User Workflows”Morning brief with overdue and low-stock checks
Section titled “Morning brief with overdue and low-stock checks”#!/bin/bash# morning-brief.sh — add to cron: 0 8 * * *
DASH=$(hisaabo dashboard --period today --json)OVERDUE=$(hisaabo invoice list --status overdue --sort oldest-first --limit 5 --json)LOW=$(hisaabo item list --low-stock --json)
echo "=== MORNING BRIEF — $(date +"%d %b %Y") ==="echo ""echo "Revenue today: $(echo $DASH | jq -r '.totalSales')"echo "Outstanding: $(echo $DASH | jq -r '.receivable')"echo ""
OVERDUE_COUNT=$(echo $OVERDUE | jq 'length')if [ "$OVERDUE_COUNT" -gt 0 ]; then echo "OVERDUE ($OVERDUE_COUNT):" echo $OVERDUE | jq -r \ '.[] | " \(.invoiceNumber) — \(.party.name) — ₹\(.totalAmount) (\(.daysOverdue) days)"' echo ""fi
LOW_COUNT=$(echo $LOW | jq 'length')if [ "$LOW_COUNT" -gt 0 ]; then echo "LOW STOCK ($LOW_COUNT):" echo $LOW | jq -r '.[] | " \(.name): \(.stockQuantity) \(.unit) left"'fiMonthly GST filing prep
Section titled “Monthly GST filing prep”#!/bin/bash# gst-filing-prep.sh — cron: 0 8 28 * *
MONTH=$(date +%m)YEAR=$(date +%Y)CA_EMAIL="ca@yourca.com"OUTPUT_DIR="/var/gst-reports/${YEAR}-${MONTH}"mkdir -p "$OUTPUT_DIR"
hisaabo gst r1 --month "$MONTH" --year "$YEAR" \ --csv --output "$OUTPUT_DIR/gstr1.csv"
hisaabo gst r3b --month "$MONTH" --year "$YEAR" \ --csv --output "$OUTPUT_DIR/gstr3b.csv"
SUMMARY=$(hisaabo gst r3b --month "$MONTH" --year "$YEAR")
{ echo "GST data for ${YEAR}-${MONTH} attached." echo "" echo "$SUMMARY" echo "" echo "Please file before the 11th."} | mail -s "GST Data ${YEAR}-${MONTH}" \ -a "$OUTPUT_DIR/gstr1.csv" \ -a "$OUTPUT_DIR/gstr3b.csv" \ "$CA_EMAIL"Outstanding aging report (weekly)
Section titled “Outstanding aging report (weekly)”#!/bin/bash# aging-report.sh — cron: 0 9 * * 1
hisaabo report outstanding --json | jq -r ' "RECEIVABLES AGING — " + (now | strftime("%d %b %Y")) + "\n" + "0–30 days: ₹\(.aging."0_30")\n" + "31–60 days: ₹\(.aging."31_60")\n" + "61–90 days: ₹\(.aging."61_90")\n" + "90+ days: ₹\(.aging."90_plus")\n"' | mail -s "Weekly Aging Report" owner@yourbusiness.comFor AI Agent Developers
Section titled “For AI Agent Developers”CLI vs. MCP: which to use
Section titled “CLI vs. MCP: which to use”| Scenario | Use CLI | Use MCP |
|---|---|---|
| Cron jobs and scheduled automation | Yes | No |
| AI assistants in conversation (Claude Desktop, etc.) | No | Yes |
| Shell pipeline data processing | Yes | No |
| OpenClaw agents that take actions | No | Yes |
| CI/CD pipelines and deployment scripts | Yes | No |
| Natural-language business queries | No | Yes |
| Bulk data export and reporting | Yes | No |
Exposing the CLI as an agent tool
Section titled “Exposing the CLI as an agent tool”export const hisaaboCLI = { name: "hisaabo_cli", description: "Run a hisaabo CLI command and return the JSON output. " + "Available subcommands: dashboard, " + "invoice list/get/create/update/pdf/delete, " + "party list/get/create/delete/ledger/ledger-report/stats/top-items/merge, " + "item list/get/create/delete/stock/stock-history/stock-movements/low-stock-count/price-history/sales-stats/variants/merge/switch-base-unit/rename-unit, " + "payment list/create/delete/unpaid-invoices/untracked/default-account/assign-account, " + "expense list/create/delete, " + "gst r1/r3b, shipment list/get/create/update, " + "bank list/get/create/transfer/transactions, " + "report daybook/outstanding/tax-summary/item-sales/stock, " + "target list/create/my, import parties/items, " + "store settings/orders/order-confirm/order-cancel/check-slug/items/items-toggle, " + "tenant list/select/members/invite/remove/role, " + "quotation list/get/create/status/delete, " + "credit-note list/get/create/status/delete, " + "debit-note list/get/create/status/delete, " + "challan list/get/create/status/delete, " + "proforma list/get/create/status/delete, " + "sales-return list/get/create/status/delete, " + "purchase-return list/get/create/status/delete, " + "document convert, " + "api-key list/create/revoke", parameters: { type: "object", properties: { command: { type: "string", description: "The hisaabo subcommand to run, e.g. 'invoice list --status overdue --json'", }, }, required: ["command"], }, execute: async ({ command }: { command: string }) => { const { stdout, stderr } = await exec(`hisaabo ${command}`); if (stderr) throw new Error(stderr); return JSON.parse(stdout); },};Cron Job Reference
Section titled “Cron Job Reference”HISAABO_API_URL=https://your-hisaabo-instance.comHISAABO_API_KEY=hisaabo_key_xxxxxxxxxxxxxxxxxxHISAABO_BUSINESS_ID=business-uuid-here
# Daily summary at 8:00 AM0 8 * * * root hisaabo dashboard --period today --json | \ jq -r '"Revenue: ₹\(.totalSales)\nOutstanding: ₹\(.receivable)"' | \ mail -s "Daily Summary" owner@yourbusiness.com
# Overdue invoice alert at 9:00 AM0 9 * * * root /opt/hisaabo-scripts/morning-brief.sh
# Stock check twice daily0 9,17 * * * root /opt/hisaabo-scripts/low-stock-check.sh
# Monthly GST export on the 28th at 8 AM0 8 28 * * root /opt/hisaabo-scripts/gst-filing-prep.sh
# Weekly aging report every Monday0 9 * * 1 root /opt/hisaabo-scripts/aging-report.shConfiguration File
Section titled “Configuration File”The CLI reads from ~/.config/hisaabo/config.json, created automatically on first hisaabo login:
{ "apiUrl": "https://your-hisaabo-instance.com", "token": "hisaabo_key_xxxxxxxxxxxxxxxxxx", "tenantId": "tenant-uuid-here", "businessId": "business-uuid-here", "output": { "format": "table", "color": true }}Priority order (highest to lowest): command-line flags → environment variables → config file.
Related Documentation
Section titled “Related Documentation”- AI & Automation overview
- MCP Server — For interactive AI agents and Claude Desktop
- Integrations — WhatsApp, Slack, Google Sheets, and more
- API Reference
- Self-Hosting — Running Hisaabo on your own infrastructure