All of them are mechanical — structure, arithmetic, formatting and tax heads. None of them is a judgement call, which is exactly why they are worth automating and why they are the errors that get returns rejected on upload. Every flag names the rule or section it comes from.
A GSTR-1 upload fails against the whole JSON. One invoice with a malformed number or a tax head that contradicts the place of supply returns an error code against that record, and the return has to be unpicked and resubmitted — usually on the 10th or 11th, under time pressure.
Marketplaces apply the same particulars and hold the payment rather than cancelling the order, so the money stops moving while nobody tells you why. And where the defect is in an invoice you received, the exposure is yours rather than the supplier's: input tax credit under Section 16 requires a valid tax invoice, and their mistake is what costs you the credit.
None of that is difficult to avoid. It is just tedious to check by eye, on every invoice, every month.
A free check is processed in memory and never written to our database — nothing from it is kept. A paid report is stored, because that is what lets you re-open, download and email it afterwards. Nothing is sold, nothing trains a model, and a stored check can be deleted on request.
General information about Indian GST, not tax advice. Rules are amended by notification from time to time — confirm the current position with your CA before filing.