Case study · India GST invoice capture
GSTSlip
Photograph a tax invoice and get back one clean register row, ready for CSV or Tally.

The problem
Small businesses and their accountants still type purchase invoices into a register by hand: GSTIN, invoice number, taxable value, each tax head and the HSN lines.
It is slow, it is where input-credit mistakes start, and it is the same few fields every time.
My part
Sole builder: capture and extraction, the register, exports, billing and the admin desk.
Built with
- TypeScript, React, TanStack Start
- Postgres via Kysely
- Razorpay Checkout
- TallyPrime XML export
What I built
- First version live at gstslip.vin8003.com: photograph or upload, extracted header fields and line items.gstslip @ 105a547 ↗
- A wider GST field set, invoices stored server-side, TallyPrime purchase XML export and an admin desk.gstslip @ 53d3c62 ↗
- Paid Pro plan through Razorpay Checkout: 10 free documents, then ₹499 for 30 days.gstslip.vin8003.com ↗
- Restyled as a tax desk rather than a template, with the framework pinned to its patched release.gstslip @ 98a7173 ↗


Calls I made
One invoice, one row
The output is a register row, not a document viewer. Defaults the user sets fill the gaps, and the row exports as CSV or as Tally purchase XML, so it lands where the accountant already works.
Priced from day one
A small free allowance, then a flat monthly price. It tests whether the job is worth paying for, rather than whether people will try a free tool.
Every line above links to the merged pull request or commit it describes. Screens are real captures on seed data. Vineet Sharma.
Next case studyOrderEasy →