Skip to content

Explainer 03

8 scenes, about 6 minutes

Your books, double-entry, without the jargon

One sale touches four places in your books at once: what the customer owes, what you earned, and the GST you collected for the government. Then the customer pays by UPI and two more lines settle it.

Hands on. Change the hours, the rate and the customer’s state, and watch the GST split and the journal lines balance. Then scan a real UPI QR.

Read it in a look
Example
Tax invoiceINV/2026-27/0117
Line
40 hours at ₹1,500.00
Taxable value
₹60,000.00
CGST 9%
₹5,400.00
SGST 9%
₹5,400.00
Total
₹70,800.00

  1. 01 / 08

    One sale

    A design studio in Maharashtra bills a customer for hours of work. That one invoice is what we’ll follow into the books.

    Move the hours and the rate. Every figure on the stage is worked out by the same GST code INDRA uses for real invoices, in whole paise, so nothing drifts by a paisa.

  2. 02 / 08

    GST: split in your state, whole across states

    When the customer is in your own state, the GST is split in half: CGST for the centre and SGST for the state. When the customer is in another state, it is one tax, IGST.

    INDRA decides this from the “place of supply”: unless you set it, the state on the customer’s GSTIN, else the state in their details, else yours. Switch the customer to Karnataka and watch.

  3. 03 / 08

    Rounded to the rupee

    Indian invoices usually show a total in whole rupees. INDRA rounds the total to the nearest rupee and shows the difference as its own line, Round off, so the paise are never hidden.

  4. 04 / 08

    One invoice, four lines in the books

    Double-entry means every amount is written twice: once where the value goes and once where it comes from. For this sale:

    The customer now owes you the full total (a debit to what customers owe you). You earned the taxable value, and you collected GST that belongs to the government (both credits).

    Debit and credit are only the two columns. Left side, right side. They must come out equal.

  5. 05 / 08

    Debits must equal credits

    INDRA will not post an entry that doesn’t balance. Not a rupee off, not a paisa off. It refuses the whole entry and says by how much.

    Leave out the GST lines and see the refusal, word for word as the books give it (amounts in paise).

  6. 06 / 08

    The customer pays by UPI

    Add your UPI ID in Settings and your open invoices and payment reminders carry a UPI payment link. The QR on the stage is the standard UPI link any UPI app reads: your UPI ID, your name, the exact amount, and the invoice number as the note.

    The money goes straight to your bank account. INDRA never touches it.

  7. 07 / 08

    Two more lines settle it

    When you record the payment, two lines post: money comes into the bank (a debit), and what the customer owes goes down by the same amount (a credit).

    Cash goes to “Cash in hand” instead. Everything else, UPI included, goes to Bank.

  8. 08 / 08

    What the books now say

    After the sale and the payment, the customer owes nothing, the bank is up by the total, your sales are up by the taxable value, and the GST you collected sits as money you owe the government until you file.

    You never typed a debit or a credit. Approving the invoice and recording the payment did it, and both left a signed receipt.

In plain words

The short version.

  1. GST is CGST plus SGST when the customer is in your state, and IGST when they are in another state.

  2. Totals are rounded to the rupee, and the rounding gets its own line.

  3. One invoice posts one balanced entry: the customer owes you the total; you earned the taxable value; the GST is owed to the government.

  4. INDRA refuses any entry where debits and credits differ, even by a paisa.

  5. A UPI payment posts two lines, into the bank and off what the customer owes. You approve and record; INDRA writes the entries.

Checked against the code

Where this lives in INDRA.

Every rule on this page is taken from these files. When the code changes, this page is meant to change with it.

  • lib/gst.tscomputeGst(): CGST + SGST in your state, IGST across states, round to the rupee
  • lib/modules/kubera/logic.tsinvoicePostingLines() and paymentPostingLines()
  • lib/ledger.tspostJournal() refuses any entry where debits and credits differ
  • lib/chart.tsthe default chart of accounts
  • lib/upi.tsthe NPCI UPI link inside the QR code

About the examples. The studio, the customer, the invoice number and the UPI ID are made up (the UPI ID is fake on purpose, so the QR can’t take a payment). The GST, the journal lines and the UPI link come from INDRA’s own code running in your browser.