fynxIQ
Sign inStart free

Table 12 HSN summary does not match: the four ways it happens, and the check for each

9 min readUpdated 25 September 2026Rests on GSTN’s FAQs on Form GSTR-1 and on its Table 12 (tutorial.gst.gov.in)

Table 12 does not match when the HSN summary and Tables 4 to 9 disagree. The four ways it happens, the portal’s 10 per cent rule, and the check for each.

  1. Add up each tab of Table 12 on its own. Hold the B2B tab against Tables 4, 6B, 6C and 9B for registered buyers; hold the B2C tab against Tables 5, 6A, 7 and 9B for unregistered buyers. Subtract credit notes on both sides.
  2. Find which of the four ways below the gap is, from its size and the tab it is in.
  3. Correct it where Table 12 was built, then check the finished JSON in the free GSTR-1 JSON validator, which tallies both tabs to the paisa. Check a code the portal refused in the free HSN checker.

Try it on your own figures with the free HSN code checker.

What does "Table 12 does not match" mean?

Table 12 is the same month’s supplies grouped by HSN code and rate, and since the May 2025 period it has two tabs: one for supplies to registered buyers, one for everyone else. When the summary is generated, the portal adds up each tab and compares it with the tables it summarises. GSTN’s messages name them: for the B2B tab, Tables 4, 6B, 6C, 8, 9A, 9B, 9C, 15 and 15A where the recipient is registered (RET192541); for the B2C tab, Tables 5, 6A, 7, 8, 9A, 9B, 9C, 10, 15 and 15A where the recipient is not (RET192542).

What happens next is milder than the message sounds. GSTN’s FAQ on Table 12 says a mismatch in either tab brings a warning, and the summary can still be generated once the warning is accepted. It also says the tab is validated as long as it is within 10 per cent of those tables, more or less. So a Table 12 that is 9 per cent short files without a word, and one that is 40 per cent short files after one click.

Put in figures, the tolerance is wide. In a month with ₹10,00,000 of supplies to consumers, a B2C tab of ₹9,10,000 is within 10 per cent and raises nothing, and ₹90,000 of supplies is left with no HSN behind it in a return that has filed.

A summary that files is not a summary that is right. There are four ways it goes wrong, and each has a check of its own that finds it.

The first way: a whole source is left out

A product that builds a return section by section can build Table 12 along one path through the data. When that path misses a source, a marketplace, a register, the photographed bills, the summary comes out short by exactly that source, and nothing in the file says so. In a real filed return, Table 12 carried ₹580.58 of taxable value while the liability tables carried ₹3,614.45. The ₹3,033.87 missing was the whole B2C side of the month.

The sign of this way is a gap the size of one whole source. The check is the plain one: Table 12 in total, head by head, against the outward tables in total. fynxIQ builds Table 12 from the same lines as every other table, then holds the two against each other in whole paise and stops the download if they differ by anything at all.

The second way: credit notes counted the wrong way, or not at all

A credit note reduces the supply, in Table 9B and in its tab of Table 12 alike. A summary that adds the note’s value instead of subtracting it is too high by twice the note; one that leaves notes out is too high by the note once.

The sign of this way is a gap equal to the month’s notes, or twice them. The same total check finds it, because Tables 4 to 9 net each note by its type: a credit note subtracts and a debit note adds. A code can even end the month below zero, when more units came back than went out. GSTN’s schema takes negative amounts in Table 12, and fynxIQ shows a negative quantity as a warning, since GSTN’s rules do not say whether the portal accepts one.

The third way: the right total in the wrong tab

Since May 2025 a correct total is not enough. A sale to an SEZ unit belongs in the B2B tab, with the rest of Tables 4 and 6B; an export belongs in the B2C tab, with Table 6A. A note to a registered buyer belongs in the B2B tab. Put any of these in the other tab and the two tabs are each wrong by the same amount, in opposite directions, while their sum is right.

The sign of this way is two gaps that cancel. fynxIQ checks each tab against its own tables after the total has passed, and shows a split that differs as a warning with the amount in each tab. It is a warning rather than a stop because the total is right, and GSTN’s own treatment of a tab mismatch is a warning too.

The fourth way: a tab left empty

An empty B2B tab in a return with supplies to registered buyers is not a mismatch the portal lets through. GSTN’s FAQ says the summary cannot be generated in that state, and the code is RET192547, "HSN wise B2B Supplies are not reported in Table 12". fynxIQ stops on it for the same reason.

An empty B2C tab beside sales to consumers is the opposite case. GSTN’s FAQ calls it a warning and says the B2C tab is not mandatory for generating the summary; its code is RET192543. fynxIQ shows it as a warning, with the value of the supplies it leaves without an HSN behind them.

Is it sometimes the codes, not the totals?

Yes, and that refusal is sharper. Since the May 2025 period a code in Table 12 is picked from the portal’s own HSN list and cannot be typed, except for rows imported from e-invoices. A code that is not on the list is refused as RET191349, "The HSN code entered is not valid", and one bad row can cost the whole table: a seller’s catalogue carried 71170990 on one listing, and the portal refused all of Table 12 and processed the rest of the return, because heading 7117 has no such subheading.

The depth is set by turnover. GSTN’s FAQ asks for at least four digits where the aggregate turnover of the previous year was ₹5 crore or less and six above it, as Notification 78/2020-Central Tax does, and a shorter code is RET191350. Check a code before it goes in the file with the free HSN checker.

Why does fynxIQ stop on a gap the portal only warns about?

The portal’s 10 per cent decides what it lets through. It does not make the summary right, and a return filed with a short Table 12 keeps the gap. fynxIQ builds Table 12 from the very lines the other tables are built from, so any difference at all means a line was lost or counted twice, and it holds the download until the difference is zero.

Two cases are warnings instead. When the return carries amendments in Tables 9A, 9C or 10, the gap may be the amendment’s effect on the summary, which only the earlier return can show. And nil-rated, exempt and non-GST supplies in Table 8 carry no tax, so a summary may list them at 0% or leave them out, and either agrees.

What can a finished JSON tell you?

A JSON from any product can be held to all of this in the free validator: Table 12 against the outward tables in total and by tab, to the paisa, and every code against its shape. What a finished file cannot say is which source is missing from it, because the files it was built from are no longer in it. When the gap is the first way, compare its size with each source’s total for the month: the one it equals is the one left out.

Where this comes from

Try it on your own figures with the free HSN code checker.

Which file to download, and from where: the list for each marketplace and the GST portal.

By Raunak Pathak, founder of fynxIQ, who files GST returns on it. Last updated 25 September 2026. This is general information about how GST returns work, not advice about your particular return.

Related guides

GSTR-1Table 12: the HSN summary that has to match everything elseAmazonFiling GSTR-1 as an Amazon seller, without guessingTable 13Table 13: what counts as a document issued

Check this on your own return.

fynxIQ runs this check automatically on every return it prepares, in integer paise, and blocks the download when it fails. The free plan covers 6 prepared returns a month.

Start free