Registered buyers
One row per invoice, with items grouped by rate rather than by source line, which is what GSTR-1 expects and what most exports do not give you.
What it does
fynxIQ reads what your marketplaces give you, builds every outward table GSTR-1 needs, and then spends most of its effort trying to prove the result wrong. What survives is a return you can defend line by line.
Tables built
You will see these numbers on the GST portal, so calling them something friendlier here would only mean learning the mapping twice.
One row per invoice, with items grouped by rate rather than by source line, which is what GSTR-1 expects and what most exports do not give you.
Inter-state consumer invoices above one lakh, promoted automatically at document level. The threshold moved from 2.5 lakh in November 2024 and fynxIQ uses the current one.
Aggregated by rate and place of supply, with ordinary consumer credit notes netted in. A pair that nets to nothing is dropped rather than filed as a zero row.
Registered and unregistered, each carrying the invoice it reverses so the buyer can match it. Notes against small B2C sales net into Table 7 instead, which is why a rate can show a negative value.
Split into B2B and B2C halves as required from FY 2025-26, derived from the whole ledger, and asserted against every other outward table.
Series ranges rebuilt from the documents actually seen, with every missing number named rather than silently declared a cancellation.
Net supply value and tax per operator, against that operator's registration in your own state, derived from its PAN with a computed check digit.
The hard parts
None of these produces an error. Each one produces a return that balances against itself and is wrong, which is why they are worth naming.
A discounted order books the full tax in the head column and the relief in a separate promo column. One real July order read 8.71, minus 0.17, total 8.54. Reading only the head column overstates tax on every discounted order you have ever sold, and the return still balances against itself.
Igst Rate reads 0.03 for a 3 percent supply. Copied straight through, the return declares 0.03 percent and every tax figure is out by a factor of a hundred. fynxIQ resolves the rate against the row's own effective rate rather than assuming.
A zero-value replacement adds nothing to turnover but did consume an invoice number. Counting it as a cancellation understates documents issued and overstates cancellations by the same amount.
A row reading 229.66 taxable with 77.12 shipping is not 306.78. Multiply 229.66 by 1.18 and you land exactly on the invoice total. Adding shipping inflates the base by a third and produces a perfectly well-formed, wrong return.
The TCS export carries amounts and sub-order numbers; the invoice numbers are in a separate download, joined on that column. Upload only the first and Table 13 is quietly incomplete, so fynxIQ blocks instead.
Amazon's own GSTR-1 workbook contains a tax figure reading 113.23000000000003. Carrying rupee floats through an aggregation means cross-tallies miss zero by a few paise and get papered over with a tolerance, and a tolerance is exactly where a real error hides.
A real July 2025 report declared 339.73 of tax on 10,623.10 of sales at 3 percent. Three per cent of that is 318.69, and the same sheet's own Total Value column agreed with 318.69 rather than with its tax columns. Filed as it stood, Table 12 would not have reconciled on the portal. fynxIQ blocks it, shows the arithmetic, and offers to recalculate the tax without touching a single sale.
The word "taxablevalue" begins with "tax", so a column headed Tax % was being proposed as the taxable value. A return built on that balances against itself perfectly and understates sales by the entire base. Column matching now carries a length floor, and genuinely ambiguous columns are asked about rather than guessed.
Every source line carries a natural key. Uploading a report twice, or uploading the overlapping B2B and B2C exports, cannot double your turnover.
A June sale returned in July has no matching sale in July, so its rate goes negative. That is correct, and fynxIQ names the returns behind every negative row so it can be told apart from a refund misread as a negative sale.
Beyond the return
Any amount in the return can be followed back to the file name and row number it came from. When a number looks wrong, you go and look at it.
Totals, counts and sources for every month, kept so that a question three years from now has an answer that does not start with re-downloading old exports.
A marketplace export, Amazon’s ready-to-file workbook, the GSTN offline template, or a register you keep yourself. fynxIQ says what every sheet turned out to be and reads the ones it does not recognise.
When something in your file is genuinely ambiguous, you get a question with buttons — in any of fourteen Indian languages, including Hinglish. The second opinion comes back in the same one.
Prefer to do it by hand? Point the fields at the columns once. fynxIQ proposes the mapping from the headers, shows sample rows, and reuses it every month.
A marketplace holds a separate TCS registration in each state. Supply one and the rest are derived from its PAN with a computed check digit.
A model reads the findings back in plain language and points at what rules cannot express. It cannot clear a blocker or change a figure. What it sees →
Upload both for the same month and every figure they disagree on is named, state by state and product code by product code. Nothing else catches a marketplace summary that does not match that marketplace’s own order report.
Load a return prepared elsewhere and see exactly which rows disagree. When two pipelines read the same files and differ, one of them is wrong about a specific rupee amount.