fynxIQ
Sign inStart free

Error in JSON structure validation: why the portal refused the whole GSTR-1 file

9 min readUpdated 25 September 2026Rests on GSTR1 - Save GSTR1 data, request schema v4.1 (GST Developer Portal, GSTN)

RET191106 means the GSTR-1 JSON broke GSTN’s own schema, so none of it was taken. The faults that cause it, how to find the field, and the fix for each.

  1. Open the file in the free GSTR-1 JSON validator. It holds the file to GSTN’s schema and names each fault by its place, such as b2b[0].inv[2].inum.
  2. Fix each fault where it started: the register, the product’s settings, the sheet it exported. A JSON edited by hand is undone by the next export.
  3. Make the JSON again, check it again, and upload it only when it passes. A file that breaks the schema is not taken at all.

Try it on your own figures with the free GSTR-1 JSON validator.

What does "Error in JSON structure validation" mean?

It is RET191106 on GSTN’s list of GSTR-1 error codes, word for word "Error in Json structure validation". It says nothing about your tax. It says the file is not in the form GSTN’s schema for a GSTR-1 JSON allows: a field the schema does not have, a field it requires that is missing, or a value of the wrong kind or in the wrong form.

GSTN publishes that schema on its developer portal with the GSTR-1 APIs, and its own troubleshooting note for a failed offline upload sends the taxpayer to it. The schema is strict. Every table lists its fields and admits no others, so one extra field on one invoice is enough.

This is a different refusal from the ones in an error report. There, the file was read, the records that passed were saved, and only the failures come back, each with its own code. Here the file’s form is wrong, and GSTN’s note describes the result as a file that could not be uploaded.

Which faults break the schema?

These are the faults the schema refuses that a seller’s file actually carries. Each names the field as the JSON does, so the validator’s finding can be matched to it.

  • A field the schema does not have. Since credit and debit notes were de-linked from invoices in 2020, a note in Table 9B carries no original invoice number (inum), no invoice date (idt) and no pre-GST flag (p_gst): GSTN’s schema had them in version 1.1 and has none of them from 2.2. GSTN’s FAQ says a JSON made by the utility before de-linking cannot be uploaded.
  • A tax field a table does not take. Table 5, its amendment in 9A and Table 9C for unregistered buyers are inter-state by definition, and their items have no central or state tax field at all. camt and samt on such an item are refused even at zero.
  • A required field missing. A B2B invoice needs inum, idt, val, pos, rchrg, inv_typ and at least one item. A Table 12 row needs its code, unit, quantity, serial number, taxable value and, since May 2021, its rate.
  • A number written as text, such as "11800" in quotes, or with more than two decimal places.
  • A document number outside its form: 1 to 16 characters, letters, digits, "/" and "-" only, with at least one letter or a digit other than 0. INV 0042 and INV.42 are refused, and so is 0000.
  • A date that is not a real one, or not written dd-mm-yyyy. 31-02-2026 is refused by the pattern itself.
  • A place of supply off the list: 01 to 38, or 97 for Other Territory. Tables 4 and 9B for registered buyers also take 96, a foreign country; Tables 5 and 7 do not.
  • A unit with anything but letters in it, such as KG1.
  • A GSTIN in none of the shapes GSTN publishes. What the shapes are, and what to do with a buyer’s wrong number, is its own guide: Invalid GSTIN of the recipient.
  • A value below zero where the schema has a floor of zero: an invoice’s value and an item’s taxable value in Tables 4, 5 and 6. Table 7 and Table 12 take negative values, because returns can exceed sales for one rate and state in a month.

Two of these were in fynxIQ’s own files

When fynxIQ first held its own output to GSTN’s schema, on 25 September 2026, it found two of the faults above in files it had written. Its notes in Table 9B still carried the original invoice and the pre-GST flag, and its Table 5 items carried central and state tax at zero. By the schema, a month with a note to a registered buyer or a Table 5 invoice made a file it does not admit. The portal was more forgiving than its schema: months written that way were uploaded through Prepare Offline in 2026 and processed, so the portal ignored the extra fields. fynxIQ does not rely on that; it writes the file as the schema has it.

Both are fixed. The invoice a note is against is still shown on the return screen, carried beside the file rather than in it, and every download passes through the same check. A field the schema does not name in a file from elsewhere is shown as a warning, not refused, for the same reason. They are named here because a product that has never held its file to the schema can carry the same two, and they are the first two things to look for in a refused file from anywhere.

How do you find the field without a tool?

GSTN’s own troubleshooting note gives a route that needs only a browser, and it is the same check the validator runs:

  • Open developer.gst.gov.in, choose Taxpayer API, then Returns, then View API List.
  • Open "GSTR1 - Save GSTR1 data", choose the version, open Request Payload and download the schema.
  • Paste the schema and your JSON into any JSON schema validator. Each error names the field and the rule it broke.
  • Correct each one where the file was made, and generate the JSON again.

Which version of the schema applies?

GSTN’s note names version 1.1, which is years old. GSTN’s release note of 19 January 2026 names 4.1 as the current version of Save GSTR1, and that is the one fynxIQ checks against. The portal also carries a 5.0, which renames Table 13’s list from doc_det to doc_det_new and has no release note saying from when it applies. fynxIQ writes doc_det, as 4.1 has it, and its founder’s returns uploaded that way through Prepare Offline in 2026 were processed. If GSTN moves the upload to 5.0, this guide and the check will change together.

One schema rule disagrees with GSTN’s own user guide, and there fynxIQ warns rather than stops: the shipping bill number in Table 6A. Every schema version allows three to seven digits, and the portal’s user guide for Table 6A says three to fifteen.

What else does GSTN suggest for a refused upload?

For a JSON made with the Returns Offline Tool, GSTN’s note says to use the latest version of the tool, clear the browser’s cache and history, and upload again. An old version of the tool can write a field the schema no longer takes. For a JSON made by any other product, the product is where the fault is: tell its maker which field the validator names.

Do not edit the JSON by hand to get it through. A hand edit fixes this month’s file and leaves the product writing the same fault next month, and a JSON edited outside the product no longer matches the books it came from.

What does fynxIQ check, and what can it not see?

Every GSTR-1 JSON fynxIQ builds is held to GSTN’s schema, version 4.1, field by field, after its own rules for document numbers, dates, decimals, state codes, rates, units, HSN codes and tax heads have run. A fault either finds is a blocker, and the download stays closed until it is fixed in the file it was read from, with one exception: a field the schema does not name is shown as a warning and left out of the download, because the portal has processed files that carried one (below). Each finding gives the place in the file and the schema’s reason in words, such as "p_gst" is not a field GSTN’s schema has here, so the fault can be found in the product that wrote it. The free validator runs the same checks, in your browser, on a JSON from Tally, Busy, Marg or any other product.

A file that passes the schema can still be refused record by record once the portal compares it with what it holds: a number already filed in an earlier month, a buyer whose registration was cancelled. Those come back in an error report with their own codes, and the RET191 codes guide says what each means and which fynxIQ can catch before the upload.

Where this comes from

Try it on your own figures with the free GSTR-1 JSON validator.

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

JSONWhy the portal rejects a GSTR-1 JSON, and how to read the error reportJSONRET191113 and the other GSTR-1 error codes: what each means and what to changeJSONHow to read the GSTR-1 error report the portal gives back

Check this on your own return.

fynxIQ holds every GSTR-1 JSON it builds to GSTN’s own schema and keeps the download closed while a field breaks it. The free validator runs the same check on a file from any other product, in your browser.

Start free