compter

GST invoices and double‑entry books for Indian businesses

Raise an invoice and the tax splits itself, the ledger balances itself and GSTR-1 is ready when the month ends.

From invoice to ledger, on save

  • Raise the invoice Customer, HSN or SAC code and rate on each line.
  • The tax decides itself Place of supply picks CGST and SGST, or IGST.
  • The books post themselves Receivable, revenue and each tax on its own account.
  • The return files itself GSTR-1 downloads as the JSON the GST portal takes.
INV-2026-0042 B2B Posted

Orbit Agency GSTIN 29ABCDE1234F1Z5 · Place of supply 29-Karnataka

Invoice lines
ItemSACRateAmount
Brand identity design99839118%₹8,000.00
Website copy99839118%₹2,000.00
Taxable
₹10,000.00
CGST 9%
₹900.00
SGST 9%
₹900.00
Total
₹11,800.00

Journal entry

1200 Accounts Receivable
Dr 11,800.00
4000 Sales Revenue
Cr 10,000.00
2201 CGST Output
Cr 900.00
2202 SGST Output
Cr 900.00

Most small businesses do their GST twice: once on the invoice, and again in a spreadsheet when the return is due.

compter does it once. The invoice you send is the entry in your books and the line in your return, so the three can never disagree.

One ledger behind every screen

Invoices

Search invoices New invoice
Sample invoice list
NumberCustomerSupplyTotalStatus
INV-2026-0042Orbit AgencyCGST + SGST₹11,800.00Paid
INV-2026-0041Saffron Foods, PuneIGST₹2,68,800.00Sent
INV-2026-0040Kaveri TextilesCGST + SGST₹56,000.00Overdue
INV-2026-0039Marina Studio, ChennaiIGST₹57,600.00Paid
INV-2026-0038Walk-in customerCGST + SGST₹1,048.95Paid
  • GST invoices

    Per-line HSN or SAC and rate, place of supply worked out, a PDF with the rupee set properly, and credit notes that reverse exactly.

  • Statement import

    Bring a bank or UPI statement as CSV. Duplicates are flagged and each line lands in an account by what it says.

  • Reconciliation

    Every statement line is matched, partly matched or left for you, and the difference shows until it is zero.

  • Reports

    Balance sheet, income statement and cash flow come straight from the entries, for any date or period.

Type an invoice line

Your business is in Bengaluru, Karnataka. Give an amount, a GST rate and the customer's city, and see what compter posts.

Place of supply 29-Karnataka, same state as you: CGST + SGST

Tax on this line
Taxable value₹10,000.00
CGST 9%₹900.00
SGST 9%₹900.00
Invoice total₹11,800.00
Posted to the ledger
AccountDebitCredit
1200 Accounts Receivable11,800.00
4000 Sales Revenue10,000.00
2201 CGST Output900.00
2202 SGST Output900.00

Debits and credits both ₹11,800.00. Balanced.

Books you can check

The engine is open source

The ledger, the GST maths and the GSTR-1 export live in accounting-core, a Rust crate under the MIT or Apache-2.0 licence. Read exactly how your tax is worked out.

Read the source
let gst = GstCalculator::new(false); // same state
let split = gst.calculate_by_category(
    BigDecimal::from(10000),
    GstCategory::Higher, // 18%
    None,
)?;

assert_eq!(split.cgst_amount, BigDecimal::from(900));
assert_eq!(split.sgst_amount, BigDecimal::from(900));

Every entry balances

Nothing reaches the ledger unless debits equal credits. GST sits on output accounts 2201 to 2203, apart from revenue.

Credit notes, not edits

A sent invoice is never rewritten. A credit note reverses it line by line, and both show in your return.

Set up for India

Your workspace opens with a chart of accounts, GST output accounts and your GSTIN and state on every invoice.

Open the books for your business

Already have one? Sign in