Skip to main content

Eligibility Conditions

Given below are the eligibility conditions:
  • Businesses whose annual aggregate turnover exceeds ₹500 crores in any financial year from 2017-18 onwards.
  • Businesses that generate B2C (Business-to-Customer) invoices.
The following categories of business will be excluded:
  • An insurer or a banking company, or a financial institution, including a non-banking financial company.
  • A goods transport agency supplying services in relation to transportation of goods by road in a goods carriage.
  • Businesses supplying passenger transportation service.
  • Businesses supplying services by way of admission to exhibition of cinematograph in films in multiplex screens.

How to Comply with the Regulation

We enable eligible businesses to comply with this regulation by making some simple changes to their integration. Non-eligible businesses can also make these changes, even though this regulation does not apply to them at the moment.

Step 1: Make Changes in Orders API Integration

To comply with the change, you should use the Orders API in your integration flow, along with the following additional parameters request parameters:

Additional Request Parameters

tax_invoice optional : object This object contains information about the invoices. If not provided, the transaction will default to the non-GST compliant UPI flow. number optional : string This is the invoice number against which the payment is collected. If not provided, the transaction will default to the non-GST compliant UPI flow. date optional : integer Timestamp, in Unix format, that indicates the issue date of the invoice. If not provided, it will default to the current date. customer_name optional : string The customer name on the invoice. If not provided, the transaction will default to non-GST compliant UPI flow. gst_amount optional : integer The GST amount on the invoice in paise. If not provided, Razorpay will compute the values based on the default values provided by you. If default values are not updated, the transaction will default to the non-GST compliant UPI flow. cess_amount optional : integer The cess amount on the invoice in paise. If not provided, Razorpay will compute the values based on the default values provided by you. If default values are not updated, the transaction will default to the non-GST compliant UPI flow. supply_type optional : string Supply type indicating whether the transaction is interstate or intrastate. Possible values:
  • interstate: Supply of goods and services takes place across the borders of two states or union territories. Only IGST is to be paid.
  • intrastate: Supply of goods and services takes place within the states. Both CGST and SGST should be paid.
If not provided, the default value set by you on the Dashboard will be considered. If default values are not updated, the transaction will default to the non-GST compliant UPI flow. business_gstin optional : string The GSTIN mentioned on the invoice. If not passed, it will be taken from your Dashboard.
Curl

Step 2: Handle API Errors

You could face two types of errors while sending GST information using Orders API:
  • Data not in the correct format
  • Data missing
Given below is a sample error response.
Error Response

Data not in Correct Format

Given below are the error codes and their description:

Datapoint | Expected Value | Error Code | Source | Step | Reason | Description

GSTIN not in proper format | 15 character Alphanumeric | BAD_REQUEST_ERROR | business | payment_initiation (Order Create) | input_validation_failed | GSTIN Format is invalid

GST Amount not in proper format | positive integer | BAD_REQUEST_ERROR | business | payment_initiation (Order Create) | input_validation_failed | GST Amount Format is invalid

CESS Amount not in proper format | positive integer | BAD_REQUEST_ERROR | business | payment_initiation (Order Create) | input_validation_failed | CESS Amount Format is invalid

Supply Type is not in proper format | 10 character string, one of {“Interstate”, “Intrastate” or NULL}” | BAD_REQUEST_ERROR | business | payment_initiation (Order Create) | input_validation_failed | Supply Type is invalid

Invoice Date not in proper format | integer | BAD_REQUEST_ERROR | business | payment_initiation (Order Create) | input_validation_failed | Invoice Date format is invalid

Data Missing

Given below are the error codes and their description:

Datapoint | Expected Value | Error Code | Source | Step | Reason | Description

GSTIN not present | 15 character Alphanumeric | No Error thrown. Default to non-GST UPI flow | NA | NA | NA | NA

Customer Name not provided | string |No Error thrown. Default to non-GST UPI flow | NA | NA | NA | NA

Invoice Number not provided | string | No Error thrown. Default to non-GST UPI flow | NA | NA | NA | NA

GST Amount not passed & GST Rate not updated in the Razorpay Dashboard | positive integer | No Error thrown. Default to non-GST UPI flow | NA | NA | NA | NA

GST & CESS is passed, but Supply Type is not passed | string | BAD_REQUEST_ERROR | business | payment_initiation (Order Create) | input_validation_failed | Supply Type is not present

CESS Amount & Supply Type passed, but GST Amount is not passed | positive integer | BAD_REQUEST_ERROR | business | payment_initiation (Order Create) | input_validation_failed | GST Amount is not present

GST Amount & Supply Type passed but CESS Amount is not passed | positive integer | BAD_REQUEST_ERROR | business | payment_initiation (Order Create) | input_validation_failed | CESS Amount is not present

Step 3: Make Changes in Webhooks Integration

The GST information is also passed in the order.paid webhook payload, as shown below. Please make the necessary changes in your webhook integration.
Sample Order.paid Payload with GST information