e-invoicing

Indian GSTIN check

The Indian GSTIN check validates a Goods and Services Tax Identification Number (GSTIN) against the IRP database and returns the registration status and e-waybill eligibility of the taxpayer.

Overview

The Indian GST framework requires taxpayers to send invoice data to the Invoice Registry Portal (IRP) in JSON format. Invoice data is rejected by the IRP if it contains an invalid GSTIN. Performing a GSTIN check before invoice submission helps detect invalid or inactive GSTINs before the IRP processes the document, reducing failed submissions.

GSTINs are 15-digit codes with a defined structure: the first two digits are the state code (Indian Census 2011), the next 10 digits are the taxpayer's Permanent Account Number (PAN), the thirteenth digit is the registration sequence number within the state, the fourteenth digit is always Z, and the fifteenth digit is a check digit. Because GSTIN is state-based, a company active in multiple states holds multiple GSTINs.

Only Indian entities authenticated by the GST portal can consume the GSTIN check service.

Onboarding

The onboarding process for the Indian GSTIN check shares the same steps as onboarding for the Indian invoice clearance flow. If the hub has already integrated with TrustWeaver for Indian invoice clearance, these steps can be skipped.

The onboarding process consists of the following steps:

  1. Exchange TLS credentials. Exchange client TLS credentials with Sovos so the hub can authenticate to TrustWeaver over HTTPS.

  2. Create a hub area. Request a hub archive area. Contact Sovos Support to initiate this.

  3. Register with the GST portal. The supplier registers with the GST portal at the Indian tax authority, receives a GSTIN, and obtains API credentials (username and password).

  4. Register section. Register the company name by calling RegisterSection with the company name in RegisterSectionRequest.Name.

  5. Register branch. Register one or more GSTIN branches under the section by calling RegisterBranch with the following required parameters:

    • SectionName: The registered section name.

    • CountryCode: Set to IN.

    • TaxId: The GSTIN.

    • RegistrationMode: Set to CreateNew.

    • BranchInfo.BackendCredential.UsernameTokenCredential.UserName: The username issued by the GST portal.

    • BranchInfo.BackendCredential.UsernameTokenCredential.Password: The password issued by the GST portal.

Note: If each GSTIN must have a separate archive, register a separate section for each GSTIN with one branch per section. The archive is separated at the section level, not the branch level.

Process flow

The Indian GSTIN check process follows five steps:

  1. Taxable person transmits GSTIN. The taxable person sends the GSTIN to be validated to the hub.

  2. TaxIdCheck call. The hub sends a TaxIdCheck request to the Storage Service with the following required parameters:

    • TransactionId: A unique identifier for the transaction.

    • RequestTarget.CountryCode: Set to IN.

    • RequestTarget.TaxId : The GSTIN to validate.

    • Requester.Name: The section name registered during onboarding.

    • Requester.CountryCode: Set to IN.

    • Requester.TaxId: The GSTIN of the registered branch making the request.

    • TaxIdCheckTargetSystem: Set to IndiaGSTIN.

    Example request:

    CODE
    <TaxIdCheckRequest
      xmlns:tac="http://www.trustweaver.com/trustarchive/common/v1"
      xmlns="http://www.trustweaver.com/trustarchive/storage/v1">
      <RequestTarget>
        <CountryCode>IN</CountryCode>
        <TaxId>08ACQPN4602B0Z2</TaxId>
      </RequestTarget>
      <Requester>
        <Name>SectionIN</Name>
        <CountryCode>IN</CountryCode>
        <TaxId>123456</TaxId>
      </Requester>
      <TaxIdCheckTargetSystem>IndiaGSTIN</TaxIdCheckTargetSystem>
    </TaxIdCheckRequest>
  3. Sovos transmits request. Sovos forwards the request to the GST Suvidha Provider (GSP), which forwards it to the IRP.

  4. IRP verifies GSTIN. The IRP verifies the GSTIN against the GST database.

  5. IRP returns result. The IRP returns the result to the GSP, which routes it back through Sovos to the hub. The Status element returns Valid only when CompanyInfo.TraderValidity is ACT (Active). Any other value returns Invalid.

    The CompanyInfo.TraderValidity element returns one of the following values:

    ACT

    Active: The GSTIN is valid and the taxpayer is active.

    CNL

    Cancelled: The GSTIN registration has been cancelled.

    INA

    Inactive: The GSTIN is not currently active.

    PRO

    Provisional: The registration is provisional.

    The CompanyInfo.TraderEWBStatus element indicates e-waybill eligibility:

    U

    Unblocked: The taxpayer can generate e-waybills.

    B

    Blocked: The taxpayer cannot generate e-waybills because tax returns have not been filed for the last two months.

    Example response:

    CODE
    <TaxIdCheckResult
      xmlns="http://www.trustweaver.com/trustarchive/storage/v1">
      <Status>Valid</Status>
      <CompanyInfo>
        <TraderTaxID>08ACQPN4602B0Z2</TraderTaxID>
        <TraderValidity>ACT</TraderValidity>
        <TraderName>TradeNameFromResponseDefinition</TraderName>
        <TraderLegalName>LegalNameFromResponseDefinition</TraderLegalName>
        <TraderEWBStatus>U</TraderEWBStatus>
      </CompanyInfo>
    </TaxIdCheckResult>

Archiving check evidence

Sovos recommends archiving the evidence of GSTIN checks. You can store the response payload as an attachment to the corresponding invoice, or store the response payload as the main document in TrustWeaver. Archiving evidence with TrustWeaver must be contracted separately.