Vardhan Tax
Access Billing

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.