This application update enables multiple scenarios for electronic invoice under GST in India:

  • Using multiple sets of credentials for integration with IRP (Invoice Registration Portal) per a company GST registration number in one legal entity

  • Creating electronic invoices for stock transfer orders

  • and adds a number of improvements:

    • Possibility to create an electronic invoice for already posted document

    • Better traceability of e-Invoices

    • Debit note identification

    • Encrypted QR code

    • Mapping of electronic invoice data elements.

Review the below article sections for details on each of the above topics.

More information

Multiple GSTINs in a single entity

Certain businesses were suffering from inability to parameterize the system to enter a separate set of credentials used for integration with IRP per GSTIN. With this update, apart of single set of credentials that can be entered in Accounts receivable > Setup > eInvoices > Electronic invoices parameters (India) and still being used as a default set, you can use Enterprise tax registration numbers form to enter User name, User password, Client ID, Client Secret and Certificate per GSTIN registration number.

Complete the below procedure to enable multiple GSTINs support:

  1. Go to General ledger > Setup > Enterprise tax registration numbers

  2. If you do not have any GSTIN type registration number, crate a new record. Otherwise go to step number 5.

  3. Select Tax type = GST, Type = GSTIN and Registration number type = Company

  4. Enter the Registration number and save the data

  5. Expand the Electronic invoice parameters fast tab

  6. Enter the parameters used as credentials: User name, User password, Client ID, Client Secret and Certificate.

  7. Save the data and close the form.


Note: The new fast tab Electronic invoice parameters in Enterprise tax registration numbers form is available only when all following conditions are met: Tax type = GST, Type = GSTIN, Registration number type = Company and the user has full access rights to the menu item which opens the form Electronic invoices parameters (India).

When you send an invoice for registration at IRP, the system is first trying to obtain parameters from Enterprise tax registration numbers for the seller GSTIN of the electronic invoice. In case these settings are not found, the system will use parameters from Electronic invoices parameters (India). These global parameters will be used only when GSTIN in these settings is the same as the seller GSTIN of the electronic invoice that is being sent. If global settings have different GSTIN, it means that there were no credentials found that can be used for communication with IRP, and the error will be shown:


Note: The Infolog contains GSTIN of the invoice seller to understand which GSTIN is missing setup and \ or requires additional registration at IRP under your PAN.


Electronic invoices in stock transfer orders

The stock transfer orders are now enabled to create electronic invoices. Complete the below procedure to register an electronic invoice for a stock transfer order:

1.       Create and post shipment for a stock transfer order in Inventory management > Periodic > Transfer orders. Process details are described in the Stock transfer orders that have tax on the transfer price article.

Note: Electronic invoice will be created and ready for sending for any posted shipment when GST is computed, and the transfer between different GSTINs takes place.

2.       Click Transfer order history button or go to Inventory management > Inquiries > Transfer orders > Transfer order history.


3.       Use E-invoice button to either create a new entry for electronic invoice or show to review the electronic invoice status.

4.       The Electronic invoices (India) form opened by show function contains information about transfer number, data and used voucher. Use the Source journal button to open Transfer order history form.


Note: Credit and debit notes are not applicable to transfer orders as stock transfer orders can be posted only with positive quantities. If correction is needed, a new transfer order with swapped from – to warehouses should be created.

Other improvements

Possibility to create an electronic invoice for already posted document

Now apart from previously available inquiry on e-invoice status, there is a new multi-function menu button "E-Invoice" added to Customer invoice journal, Project invoice journal and Transfer order history:


It can be used to:

  • Create an electronic invoice. Function is enabled when there is no eInvoice for the current journal entry and if eInvoice can be created. (e.g. Customer has eInvoice flag enabled)

  • Show to inquiry on e-Invoice status. This is enabled when eInvoice exists for the current document \ journal entry.

You can follow the below procedure to bulk create electronic invoices for sending:

  1. Go to any invoice journal details form, for example in Accounts receivable > Inquiries > Invoice journal, Project management and accounting > Common > Projects > All Projects > Invoice journals or Inventory management > Inquiries > Transfer order history

  2. Apply any required filters to show only invoices which needs to be sent to IRP image.png

  3. Click E-Invoice > Create to create electronic invoice entries. You can do that for one record or select multiple.

  4. Review electronic invoices created in Accounts receivable > Periodic > eInvoices > Electronic invoices (India)

  5. You may select one or multiple electronic invoices and use Send function to register them at IRP

Note: You may use single or multi selection also to Delete electronic invoices which were unwillingly created.

This procedure can be also used for the documents posted prior installation of this application update. In all the cases it is assumed that the posted document \ invoice contains all the required information. Existence of all the mandatory data can be confirmed by reviewing inquiry forms (e.g. invoice journal header \ lines, tax document etc) or printing the GST invoice.


Better traceability of e-Invoices

The details for documents in Customer invoice and Project invoice journals as well as Transfer order history journal have an indication that a document was sent electronically. You can open any of referred forms to inquire on that and filter documents which are not sent electronically. The status is updated upon successful registration of the invoice.


Multiple columns with document details, e.g. posting \ invoice date, invoice number and invoice account, now are available in Accounts receivable > Periodic > eInvoices > Electronic invoices (India). They can be used for filtering and sorting. Separate columns are shown for Customer (sales order and free text invoice), Project invoice and Transfer order history journals.



Debit note identification

The electronic invoice message according to the specification may contain only positive quantities and amounts regardless of document type: invoice, credit note and debit note. Issued document is considered as a credit or a debit note when there is an association of the original transaction reference in a respective Tax document for the invoice. Issued document is considered as a credit note even without the mentioned association in case its total amount is negative.

Example of Tax document for Free text invoice debit note:


Document is sent as a credit note (CRN) when there is original transaction id \ date reference, and the total invoice amount is negative. It is sent as a debit note (DBN) when there is a reference, and the total invoice amount is equal of higher than 0. Regular invoice (INV) is sent in all other cases.

Encrypted QR code

QR code that is printed in GST invoice report after successful document registration, now represents signed and encrypted information to enable offline verification of invoices using Mobile App.

Mapping of electronic invoice data elements

You might have been receiving inappropriate and misleading errors and warnings while trying to register a document that has been posted with accurate GSTINs, addresses and other information. Now all the data elements in electronic invoice JSON format are mapped differently and in order to ensure all-the-time consistency with printed GST invoice are using the same data sources as the printable form (report data providers).

Configure eInvoice tax components

eInvoice tax components are required to indicate classification of configurable GST components in the electronic invoice. Complete the following procedure to set up eInvoice tax components.

  1. Go to General ledger > Setup > Tax > India > Tax components

  2. Select GST in the Tax type field.

  3. Set up eInvoice tax component for each used your Tax component


Adding a field to JSON file – updated procedure

Changes in mapping for the mandatory e-invoice fields required further changes in classes used for data collection and transformation. Please follow the updated procedure to add a new field to JSON e-invoice file. It is provided only as guidance and illustration for a person possessing required skills to customize the product using X++.

  1. Identify the contract which corresponds to the JSON part you are going to modify. Einvoice contract classes have the following name pattern Einvoice*Contract_IN. For example:

    • EInvoiceInformationContract_IN

    • EInvoiceValueDetailsContract_IN

    • EInvoiceBuyerInformationContract_IN.

  1. Add a method to the contract class which will return the needed data. Most of data is extracted from the temporary tables returned by GST invoice report data provider. These tables are accessed via the following data contract methods:

    • getReportHeaderTmp (in all contract classes except EInvoiceLineContract_IN)

    • getItemReportLine (only in EInvoiceLineContract_IN contract class).

  2. In case these tables don't contain the necessary data, you will have to add new fields to these tables and populate them in the GST invoice report data provider: either in the base class GSTInvoiceDPBase_IN or in some of its document-specific descendants:

    • TaxGSTProjInvoiceDP_IN - for project invoices

    • TaxGSTFTIInvoiceDP_IN - for free text invoices

    • TaxGSTSalesOrderInvoiceDP_IN - for sales order invoices

    • TaxGSTSTOInvoiceDP_IN - for invent transfer orders.

  3. Identify the class responsible for JSON generation. Such classes have the following name pattern "Einvoice*Details_IN" and implement ITaxEngineJsonSerializable interface. For example:

    • EInvoiceSellerDetails_IN

    • EInvoiceBuyerDetails_IN

  4. Add a variable to the class declaration corresponding to the parameter you are going to add to the JSON file.

  5. Add a parm- method for this variable.

  6. Modify getJsonAttributes method correspondingly by adding the newly created parm- method to the end of the list returned by the getJsonAttributes method. Also, in the getJsonAttributes you will have to add the attribute name - just the same as should be written in JSON file.

  7. In the EInvoiceCreateOutputFile_IN class locate the method responsible for creating a JSON part which you are changing. For example:

    • insertSeller

    • insertBuyer

  8. Add a line to this method in order to add new data to the JSON. For example:


This line will get the GSTIN number from the contract and will pass it to the "Details" class. If your parameter cannot be empty, use the following pattern for additional validation:

if (!_sellerDetails.parmGSTIN(supplierInformationContract.getGSTIN()))


        ret = checkFailed(strFmt("@SYS136411", "@SYP4887805"));



Note: Compile the project with your changes and restart all the AOS(es) before testing these changes.

Known issues

You might be receiving false positive errors when posting stock transfer order shipments when you enable Validate before posting parameter in Accounts receivable > Setup > eInvoices > Electronic invoices parameters (India). If you face this issue, you must disable the Validate before posting parameter.


Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

What affected your experience?

Thank you for your feedback!