Getting Started
Core concepts
Data model, document statuses, money and quantity units, tenant isolation, and idempotency.
The data model at a glance
Billing works with a small set of connected records:
- Business — the tenant. Everything below belongs to exactly one business.
- Party (customer) — who you bill. May carry a GSTIN, addresses, and a price list.
- Item — a product or service in your catalog, with HSN/SAC, a default GST rate, sale price, and purchase cost.
- Sales document — an invoice, quotation, proforma, credit/debit note, and so on, each with line items and a buyer snapshot.
- Payment — a receipt allocated across one or more invoices, optionally refunded.
- Subscription — a recurring agreement that bills a plan to a customer on a schedule.
- Supplier — a vendor you pay (optional module; separate from customers you bill).
- Supplier payment — an outbound payment receipt to a supplier.
Document statuses
Sales documents move through a small set of statuses:
| Status | Meaning | Editable? |
|---|---|---|
| draft | Being prepared; shows as "Draft 1, Draft 2…" | Yes |
| issued | Finalised with a real number; totals/tax snapshotted | No (view only) |
| partially_paid | Issued and part-paid | No |
| paid | Fully settled | No |
| cancelled | Voided; kept for audit | No |
Once a document is issued it becomes read-only. You can still clone it, share it, record payments, or raise a credit/debit note against it.
Money and quantities
- All money is stored in paise (integer). ₹1,000.00 is 100000 paise. The app formats this for you; you type rupees.
- Quantities use milli-units (three decimals). A quantity of 2 is stored as 2000 units; 1.2345 rounds to 1.235. This keeps totals exact.
Tax identity
GST behaviour depends on your business GSTIN and each customer's GSTIN, plus whether the supply is inter-state (IGST) or intra-state (CGST + SGST). See GST calculations.
Tenant isolation
Every request carries your user, the active business, and your resolved permissions. You never see another business's data unless you are an accepted member of that business. Switching businesses in the selector switches the entire dataset.
Idempotency and safe retries
Billing mutations are designed to be safe to retry. If a network hiccup happens while issuing a document or recording a payment, retrying does not create duplicates. Creating a customer portal link, for example, reuses an existing active share rather than making a second one.