Start a project

SAP Business One in India: GST, E-Invoice IRN and GSTIN

By Zain Abbas, Kodenova · Updated

Short answerSAP Business One has an official India localization built around GST. It stores the GSTIN and GST type on every business partner address and company location, HSN and SAC codes on items, and numbers GST Tax Invoices, GST Debit Memos and Bills of Supply in separate series. It also covers TDS and TCS with Form 16A and the quarterly eTDS file. For e-invoicing, release 10.0 has a dedicated E-Billing protocol since Feature Package 2111 that creates the government JSON for A/R invoices and credit memos, reads the response file back into the document since FP 2208 (IRN, Ack No., signed QR code), and since FP 2405 can send the invoice to the Invoice Registration Portal through ClearTax using the Electronic Document Service. E-way bill data is kept on the document and exported as JSON. Older feature packages, cancellation, consolidated e-way bills and GST return filing are where partner add-ons or custom work still come in.

SAP Business One runs in India on an official SAP localization, and since GST arrived in 2017 that localization has been rebuilt around it: GSTIN per address, HSN and SAC on items, separate GST document types, and in release 10.0 a built-in route from the A/R invoice to the Invoice Registration Portal (IRP). Many pages about India still say you need an add-on for the IRN. That was true before Feature Package 2111 and is only partly true now. This page shows what SAP documents today, which tables hold the Indian data, the portal rules that changed in 2025, and a query that finds wrong GSTINs before the IRP rejects an invoice for them.

I am Zain Abbas, a SAP Business One developer with more than 7 years of SAP B1 work for companies in 13 countries, India among them. My live e-invoicing integrations are for Saudi Arabia, Ecuador, Guatemala, El Salvador and Panama, all clearance systems where the authority registers each invoice, which is the model India uses with the IRN. The SAP facts below come from SAP’s guides and SDK reference, checked on 12 November 2026, and the Indian rules from the GST portals linked at the end.

What does the India localization of SAP Business One cover?

You choose India when the company database is created, and it cannot be changed later. SAP documents the localization in two places: the Localization for India help (TDS, TCS and the pre-GST excise, service tax and VAT functions) and the how-to guide for GST.

AreaWhat SAP documentsWhere it lives
Business partner GST dataState, GSTIN (15 characters), GST Type and E-Commerce Merchant ID per address; a warning when a document is added without the GSTIN that exists in master dataCRD1.GSTRegnNo, CRD1.GSTType (link to OGTY), CRD1.State
Own registrationsOne GSTIN per location on the GST tab of Locations - Setup, plus GSTIN TDS and GSTIN ISD; warehouses point to a locationOLCT.GSTRegnNo, OLCT.GSTType, OLCT.State; INV1.LocCode
ItemsGST checkbox, Material Type, HSN (the former Chapter ID), SAC for services, GST Tax Category (regular, nil rated, exempt)OITM.GSTRelevnt, OITM.ChapterID (link to OCHP), OITM.SACEntry (link to OSAC), OITM.GstTaxCtg; INV1.HsnEntry, INV1.SacEntry
Document typesGST Tax Invoice, GST Debit Memo and Bill of Supply as subdocument types with their own numbering seriesOINV.GSTTranTyp (GA, GD); Document Numbering - Setup
Document tax dataGSTIN and state code of both parties, import or export type, port code, place of supplyINV12.BpGSTN, LocGSTN, BPStatGSTN, LocStaGSTN, ImpORExp, ExportType, PortCode
GST scenariosRegular, nil rated, exports, SEZ, reverse charge on goods and services, advance payments, self invoices, revised invoices, GST TDS and TCSTax codes built from CGST, SGST, IGST tax types; tax code determination
E-invoice (E-Billing)JSON generation, response import, connector to the IRPElectronic Documents tab; Electronic Document Monitor
E-way billGeneration methods, transporters, JSON exportOINV.EWBGenType; INV26 (TransMode, Distance, VehicleNo, TransID, EWayBillNo, EwbDate)
Income taxTDS sections, certificate series, Form 16A, quarterly eTDS file; TCSLocalization for India help

Two details in that table decide whether an invoice goes out with the right registration. The seller GSTIN on an e-invoice is not a company-level setting: SAP’s mapping takes it from the location on the document lines. A warehouse linked to the wrong location puts the wrong GSTIN and state on the invoice. And the buyer GSTIN lives on the address, so a customer with branches in three states has three GSTINs in CRD1, and the document takes the one from the address the user picked.

How does an e-invoice get an IRN from SAP Business One?

SAP’s e-billing guide (version 1.3, 31 May 2024) describes three levels, and which one you have depends only on your feature package.

  1. FP 2111 and higher: JSON generation. On the Electronic Documents tab of Document Settings you enable the E-Billing protocol and choose a default generation type: Generate, Generate - Later or Not Relevant. The same choice can be set per business partner and changed per document. Adding an A/R invoice with transaction type GST Tax Invoice or GST Debit Memo, or an A/R credit memo, writes a JSON file in the government schema. The Electronic Document Monitor can also build one consolidated file for many documents.
  2. FP 2208 and higher: response import. You upload the JSON to the portal or through a GSP, save the response files in a folder, and choose Update Doc. with Responses in the monitor. SAP Business One matches files to documents by document type, number, date, seller GSTIN and buyer GSTIN, then fills IRN, Ack No., Ack Date Time, Signed Invoice, Signed QR Code and Response Status (ACT or CNL). The decrypted QR data lands in the Create QR Code From field on the Accounting tab, which is what a print layout needs.
  3. FP 2405 and higher: E-Billing Connector. A new tab in Processing Targets for Protocol takes a ClearTax base URL, the IRN endpoint and a client secret. With the Electronic Document Service running, documents are sent to the IRP through ClearTax when they are added, or with Send from the monitor, and move through the statuses New, In Process and Authorized. The IRN fields fill by themselves.

Systems on FP 2108 or lower use the older generic eDoc protocol with queries and formats from SAP Note 2902401, and upload by hand.

Things the guide says that are easy to miss:

  • The series must be a Digital Series. The checkbox is in the series setup of the GST Tax Invoice or GST Debit Memo subdocument. Without it the E-Billing section stays empty.
  • Copy From disables the E-Billing section until the user reselects the numbering series in the header.
  • Reverse charge must be 0 or 100 percent on every tax type of the tax codes used, including freight. The base amount must be the same for all tax types on a row, and freight must be taxed with IGST for inter-state and CGST plus SGST for intra-state supplies.
  • Some JSON blocks are not mapped: dispatch details, batch details, payment details, document period, preceding document reference, contract reference and additional documents. The trade name is always the legal name, and the seller address is cut at 100 characters. If your buyer needs a dispatch-from address or a PO reference inside the signed e-invoice, that is custom work.
  • Change Status to Error clears the IRN fields so that a corrected document can be generated again. With the connector active, Generate Report, Change Status to Error and Update Doc. with Responses are no longer offered.

The guide documents no step for cancelling an IRN from inside SAP Business One. The portal allows cancellation within 24 hours of generation; after that the correction is a credit note. Plan who does the cancellation and how the A/R invoice is cancelled to match.

Whether you still need an add-on comes down to four questions: are you on FP 2405 or higher, is ClearTax acceptable as the route, do you need the unmapped blocks, and do you want e-way bills created through an API instead of a JSON upload. Four easy answers mean the standard function is enough.

Which portal rules changed in 2025?

E-invoicing has applied since 1 August 2023 to suppliers whose aggregate turnover exceeded Rs 5 crore in any financial year from 2017-18, for B2B invoices, credit notes, debit notes and exports. Three later changes reach into daily SAP Business One work:

  • 30-day reporting limit. Under the GSTN advisory of 5 November 2024, from 1 April 2025 taxpayers with aggregate turnover of Rs 10 crore and above cannot report a document to the IRP more than 30 days after its date. An invoice dated 1 April cannot be reported after 30 April. In SAP Business One terms, a document sitting in the monitor with status Error or Waiting for a month can no longer get an IRN. The second query below lists them.
  • E-way bill document age. Under the advisory of 17 December 2024, since 1 January 2025 an e-way bill can only be generated for a document dated within the last 180 days, and extensions are capped at 360 days from the original generation date. An e-way bill is needed when the consignment value is above Rs 50,000.
  • New GST rates. The 56th GST Council meeting on 3 September 2025 replaced the four-slab structure with 5 percent and 18 percent plus a 40 percent rate for a short list of goods, effective 22 September 2025. In SAP Business One that was a master-data job: new tax codes with their own valid-from date, tax code determination rules by HSN, and open sales orders repriced. Databases where the old 12 and 28 percent codes are still assigned to items produce invoices the buyer disputes. Check the Council’s latest decisions before you plan further rate work.

How do you find invalid GSTINs in SAP Business One?

The IRP rejects an invoice with a wrong buyer GSTIN, and a GSTIN from the wrong state silently turns an intra-state sale into an IGST one. This query checks every active business partner address in India for three things: 15 characters of 0-9 and A-Z, the first two digits against the GST state code of the address (OCST.GSTCode), and the check character.

-- SQL Server: invalid GSTINs on business partner addresses
WITH A AS (
    SELECT C.CardCode, C.CardName, C.CardType, D.Address, D.AdresType, D.State, D.Country,
           UPPER(REPLACE(ISNULL(D.GSTRegnNo, ''), ' ', '')) AS Gstin
    FROM OCRD C
    JOIN CRD1 D ON D.CardCode = C.CardCode
    WHERE C.frozenFor = 'N' AND D.Country = 'IN'
), N AS (
    SELECT i FROM (VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14)) AS N(i)
), V AS (   -- value of each character (0-35) times weight 1 or 2
    SELECT A.CardCode, A.Address, A.AdresType,
           (CHARINDEX(SUBSTRING(A.Gstin, N.i, 1), '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ') - 1)
           * (CASE WHEN N.i % 2 = 1 THEN 1 ELSE 2 END) AS p
    FROM A CROSS JOIN N
    WHERE LEN(A.Gstin) = 15 AND A.Gstin NOT LIKE '%[^0-9A-Z]%'
), K AS (
    SELECT CardCode, Address, AdresType, SUM(p / 36 + p % 36) AS S
    FROM V GROUP BY CardCode, Address, AdresType
)
SELECT A.CardCode, A.CardName, A.CardType, A.Address, A.AdresType, A.State, A.Gstin,
       CASE
         WHEN A.Gstin = '' THEN 'No GSTIN (fine only for unregistered parties)'
         WHEN K.CardCode IS NULL THEN 'GSTIN is not 15 characters of 0-9 and A-Z'
         WHEN LEFT(A.Gstin, 2) <> ISNULL(T.GSTCode, '') THEN 'State code in GSTIN does not match address state'
         WHEN SUBSTRING(A.Gstin, 15, 1) <>
              SUBSTRING('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ', (36 - K.S % 36) % 36 + 1, 1)
              THEN 'GSTIN check character wrong'
       END AS Problem
FROM A
LEFT JOIN K ON K.CardCode = A.CardCode AND K.Address = A.Address AND K.AdresType = A.AdresType
LEFT JOIN OCST T ON T.Code = A.State AND T.Country = A.Country
ORDER BY Problem DESC, A.CardCode;

Rows with Problem = NULL are fine. The same logic on SAP HANA, where names are quoted and integer division needs a different form:

-- SAP HANA: invalid GSTINs on business partner addresses
WITH A AS (
    SELECT C."CardCode", C."CardName", C."CardType", D."Address", D."AdresType", D."State", D."Country",
           UPPER(REPLACE(IFNULL(D."GSTRegnNo", ''), ' ', '')) AS "Gstin"
    FROM "OCRD" C
    JOIN "CRD1" D ON D."CardCode" = C."CardCode"
    WHERE C."frozenFor" = 'N' AND D."Country" = 'IN'
), N AS (
    SELECT 1 AS "i" FROM DUMMY UNION ALL SELECT 2 FROM DUMMY UNION ALL SELECT 3 FROM DUMMY UNION ALL
    SELECT 4 FROM DUMMY UNION ALL SELECT 5 FROM DUMMY UNION ALL SELECT 6 FROM DUMMY UNION ALL
    SELECT 7 FROM DUMMY UNION ALL SELECT 8 FROM DUMMY UNION ALL SELECT 9 FROM DUMMY UNION ALL
    SELECT 10 FROM DUMMY UNION ALL SELECT 11 FROM DUMMY UNION ALL SELECT 12 FROM DUMMY UNION ALL
    SELECT 13 FROM DUMMY UNION ALL SELECT 14 FROM DUMMY
), V AS (
    SELECT A."CardCode", A."Address", A."AdresType",
           (LOCATE('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ', SUBSTRING(A."Gstin", N."i", 1)) - 1)
           * (CASE WHEN MOD(N."i", 2) = 1 THEN 1 ELSE 2 END) AS "p"
    FROM A CROSS JOIN N
    WHERE A."Gstin" LIKE_REGEXPR '^[0-9A-Z]{15}$'
), K AS (
    SELECT "CardCode", "Address", "AdresType",
           TO_INTEGER(SUM(("p" - MOD("p", 36)) / 36 + MOD("p", 36))) AS "S"
    FROM V GROUP BY "CardCode", "Address", "AdresType"
)
SELECT A."CardCode", A."CardName", A."CardType", A."Address", A."AdresType", A."State", A."Gstin",
       CASE
         WHEN A."Gstin" = '' THEN 'No GSTIN (fine only for unregistered parties)'
         WHEN K."CardCode" IS NULL THEN 'GSTIN is not 15 characters of 0-9 and A-Z'
         WHEN LEFT(A."Gstin", 2) <> IFNULL(T."GSTCode", '') THEN 'State code in GSTIN does not match address state'
         WHEN SUBSTRING(A."Gstin", 15, 1) <>
              SUBSTRING('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ', MOD(36 - MOD(K."S", 36), 36) + 1, 1)
              THEN 'GSTIN check character wrong'
       END AS "Problem"
FROM A
LEFT JOIN K ON K."CardCode" = A."CardCode" AND K."Address" = A."Address" AND K."AdresType" = A."AdresType"
LEFT JOIN "OCST" T ON T."Code" = A."State" AND T."Country" = A."Country"
ORDER BY "Problem" DESC, A."CardCode";

How the check character works: give each of the first 14 characters a value, 0 to 9 for digits and 10 to 35 for A to Z. Multiply the values at odd positions by 1 and at even positions by 2. For each product add the quotient and the remainder of a division by 36. Sum those, take the remainder of the sum divided by 36, subtract it from 36 and take the remainder by 36 again; that value, written as a base-36 character, is position 15. I tested the arithmetic outside SAP against six valid GSTINs from five states and against altered copies of each. I have not run these two statements on a live Indian database, so run them on a copy first and compare a few rows by hand. Special registrations such as UN bodies and embassies use a different layout; check any hit on those manually. To test your own GSTINs, run the same statement with OLCT in place of CRD1.

The second check covers the two rejections that master data cannot explain: invoice lines without HSN or SAC, and GST documents older than 25 days that still have no electronic document number.

-- SQL Server: GST invoice lines without HSN/SAC, and GST invoices nearing the 30-day IRP limit
SELECT H.DocNum, H.DocDate, L.ItemCode, 'Line has no HSN or SAC' AS Problem
FROM OINV H JOIN INV1 L ON L.DocEntry = H.DocEntry
WHERE H.CANCELED = 'N' AND H.GSTTranTyp IN ('GA', 'GD')
  AND H.DocDate >= DATEADD(DAY, -90, GETDATE())
  AND ISNULL(L.HsnEntry, -1) <= 0 AND ISNULL(L.SacEntry, -1) <= 0
UNION ALL
SELECT H.DocNum, H.DocDate, NULL, 'No e-document number after 25 days'
FROM OINV H
WHERE H.CANCELED = 'N' AND H.GSTTranTyp IN ('GA', 'GD') AND H.EDocGenTyp <> 'N'
  AND ISNULL(H.EDocNum, '') = ''
  AND H.DocDate BETWEEN DATEADD(DAY, -30, GETDATE()) AND DATEADD(DAY, -25, GETDATE());

On HANA, replace DATEADD(DAY, -n, GETDATE()) with ADD_DAYS(CURRENT_DATE, -n), ISNULL with IFNULL, and quote every table and column name. OINV.EDocNum is the generic electronic document number field; confirm on one authorised invoice that your feature package writes the IRN reference there before you rely on the second half, and switch to the field your add-on uses if you have one.

What should you ask before a SAP Business One project in India?

  • Which feature package are you on? It decides whether IRN work is configuration (FP 2405 and higher) or development.
  • Who is the route to the IRP? SAP’s connector uses ClearTax. Another GSP, or direct API access for a company that qualifies, means an integration through the Service Layer or DI API.
  • Is every warehouse linked to the right location? The location decides seller GSTIN, state and place of supply.
  • Were the September 2025 rates applied as new tax codes with dates, or were old codes edited? Edited codes break reprints and credit notes for old invoices.
  • Where do IRN and e-way bill numbers need to appear? Print layouts, the customer portal, the dispatch app and the bank’s invoice financing feed all read them, which is easier from standard fields than from an add-on’s private tables.

If you already run SAP Business One in India, the two queries above are a useful one-hour check. For how I approach clearance-model e-invoicing, see the e-invoicing hub and e-invoicing integration. The tables on this page are documented in the CRD1, OITM, OINV and INV1 references, and the business partners missing tax ID query covers the non-GST side. For custom work on an Indian system, see SAP Business One add-on development and SAP Business One API integration.

Sources

Related services

FAQ

Frequently asked questions

Does SAP Business One support GST e-invoicing (IRN) in India?

Yes, in release 10.0. SAP's guide How to Work with Electronic Billing in the India Localization describes three stages. From Feature Package 2111 a dedicated E-Billing protocol generates the e-invoice JSON for A/R invoices and A/R credit memos, one file per document or one consolidated file. From FP 2208 the response file returned by the portal can be loaded in the Electronic Document Monitor, which fills IRN, Ack No., Ack Date Time, Signed Invoice, Signed QR Code and Response Status on the document. From FP 2405 an E-Billing Connector sends the document to the Invoice Registration Portal through ClearTax using the Electronic Document Service, and the IRN comes back automatically. Systems on FP 2108 or lower use the older generic eDoc protocol and upload the JSON by hand.

Where does SAP Business One store the GSTIN?

The customer's or vendor's GSTIN is on the Addresses tab of the business partner, one per address, in table CRD1, column GSTRegnNo (15 characters), next to GSTType. Your own GSTIN is on the GST tab of Locations - Setup, table OLCT, column GSTRegnNo. When a document is added, both are copied to the tax extension table of that document, for example INV12.BpGSTN and INV12.LocGSTN for an A/R invoice. The two-digit GST state code is in OCST.GSTCode.

How do I validate a GSTIN in SAP Business One?

A GSTIN has 15 characters: a two-digit state code, the ten-character PAN, an entity number, a 14th character that is Z on regular registrations, and a check character. The check character is calculated over the first 14 characters in base 36 with alternating weights 1 and 2. The query on this page tests length, characters, the state code against the state of the address, and the check character for every active business partner address, on SQL Server and on SAP HANA.

Does SAP Business One create e-way bills?

SAP's GST guide for release 10.0 documents e-way bill generation methods, transporter master data and the export of e-way bill JSON files through the Electronic Document Framework. The e-way bill details of an invoice sit in table INV26 (transport mode, distance, vehicle number, transporter ID, e-way bill number and date). The guide describes generating and exporting files; it does not describe a direct connection from SAP Business One to the e-way bill portal, so the upload, Part B updates and consolidated e-way bills are done on the portal, through a GSP, or by an add-on.

Which SAP Business One version do I need for India e-invoicing?

For the dedicated E-Billing protocol, SAP Business One 10.0 FP 2111 or higher, on SQL Server or SAP HANA. For loading response files, FP 2208 or higher. For sending to the IRP through ClearTax from inside SAP Business One, FP 2405 or higher with the Electronic Document Service installed and running (SAP Note 2952067). The numbering series used for e-invoices must be marked as Digital Series.

Can a developer outside India work on an Indian SAP Business One system?

Yes, with agreed access, a data processing agreement that respects the Digital Personal Data Protection Act, and fixed working hours. Kodenova works remotely from Pakistan, 30 minutes behind India, so the working days overlap almost completely. India is one of the 13 countries my SAP Business One clients come from. My live e-invoicing integrations are for Saudi Arabia, Ecuador, Guatemala, El Salvador and Panama. Your chartered accountant and the GST notifications have the final word on tax questions.

Ready to get started?

Tell us what you need. You get a clear technical answer, a fixed scope and a price, usually within 24 hours.