GST and compliance
GST e-invoicing and e-way bills in ERPNext with India Compliance
ERPNext doesn't talk to the IRP or the e-way bill portal by itself. The India Compliance app handles that for it, so you'll need to set the app up, get your master data right, and know the rules it applies once e-invoicing is live.
By Asif Mulani, who built Frappe Sheets · Published
What India Compliance is
India Compliance is an open source Frappe app that adds Indian GST compliance to ERPNext. It's built and maintained by Resilient Tech, licensed GPL-3.0, and published at github.com/resilient-tech/india-compliance. Its features include e-invoice and e-way bill generation and cancellation, and purchase reconciliation against GSTR-2A and 2B. It requires ERPNext, and has branches for versions 14, 15 and 16.
We checked everything here against the India Compliance documentation and the app's source on 20 October 2026.
The 24-hour rule
Is e-invoicing mandatory for you?
It depends on your aggregate annual turnover, and the government sets the threshold by notification, so check the current figure on the GST portal or with your CA. India Compliance only asks you to switch e-invoicing on if it applies to you, and from which date.
Once it's on, the app skips e-invoices where none is due: B2C invoices with no customer GSTIN (except exports, where place of supply is 96-Other Countries), invoices where the company and customer GSTIN are the same, invoices dated before your applicable-from date, and, by default, invoices where every item is nil-rated or exempt.
Install the app
On Frappe Cloud, choose ERPNext and India Compliance under Apps to Install. On a self-hosted bench:
bench get-app https://github.com/resilient-tech/india-compliance.git
bench --site erp.example.com install-app india_complianceUse the branch that matches your ERPNext major version.
Get API access
You need two separate logins. People often mix them up, so take them one at a time.
1. India Compliance Account
The app calls the government systems through its own API service, which is billed in credits. Open GST India workspace > India Compliance Account, sign up with your email and GSTIN, and verify the email. One account can serve several sites.
- One credit is one API request.
- New accounts get 500 free credits, valid for three months.
- Paid credits come in blocks of 1,000, valid for a year, and are non-refundable.
- Sites hosted on Frappe Cloud get API access included. Self-hosted sites buy credits.
2. GSP credentials on the government portal
The API goes through a GST Suvidha Provider, Adaequare Info Private Limited. Log in to the e-way bill portal, go to Registration > For GSP, authenticate with the OTP, choose Add New User and select Adaequare as the GSP. That creates an API username and password.
Enter that username and password in GST Settings > Credentials, against the company and GSTIN, with service e-Waybill / e-Invoice. The same credentials cover both. Your normal portal login won't work here.
Configure GST Settings
These are the fields you need to set, using their labels in GST Settings:
| Field | What to set |
|---|---|
| Enable API Features | On. The credentials table only shows up once this is on. |
| Use API in Sandbox Mode? | On while testing. Sandbox calls aren't billed. |
| Enable e-Invoicing | On, if e-invoicing applies to you. |
| e-Invoice Applicable From | The date from which you must issue e-invoices. |
| Automatically Generate e-Invoice on Invoice Submission | On by default. Leave it on unless you have a reason not to. |
| Enable e-Waybill Features | On, if you move goods. |
| Automatically Generate e-Waybill on Invoice Submission | Optional. It needs transport details on the invoice. |
| Default Threshold Value for e-Waybill Generation | Rs 50,000 by default, as per the CGST Rules. Some states set their own, and those go in a separate table. |
If you have several companies and only some must e-invoice, there is an option to apply e-invoicing to selected companies only.
Get the master data right first
If your masters are wrong, the IRP and the e-way bill portal will reject the invoice. Before you switch sandbox off, check:
- Company: GSTIN and a complete company address.
- Customers and suppliers: GSTIN on the party and on the address. Unregistered parties still need a GST state.
- Addresses: PIN codes are six digits, don't start with 0, and must belong to the state on the address. The app validates this.
- Items: HSN or SAC codes on every item. The app ships the code list and lets you set the minimum digits (4, 6 or 8). At least one goods HSN is needed for an e-way bill.
- Item Tax Templates per company, and GST Accounts for input, output and reverse charge.
Generating an e-invoice
With auto-generation on, submitting a Sales Invoice sends it to the IRP. The IRN and the signed QR code come back and are saved on the invoice, and the e-Invoice Status field shows the result. If auto-generation is off, or a call failed, use the e-Invoice menu on the submitted invoice and choose Generate.
If the IRP says an IRN already exists for that invoice, the app fetches the existing IRN instead of failing. There is also a setting to retry generation after gateway timeouts.
Cancelling
Use e-Invoice > Cancel and give a reason. The app only allows this within 24 hours of generation, and cancelling the e-invoice also cancels a valid e-way bill made with it. After 24 hours, you'll need to correct the invoice with a credit or debit note instead.
Generating an e-way bill
E-way bills can be generated from a Sales Invoice, Purchase Invoice, Delivery Note, Purchase Receipt, Stock Entry, Subcontracting Receipt or Asset Movement. Use the e-Waybill menu and Generate, or let it run on submit.
- The dialog has Part A and Part B. Without vehicle details it generates Part A only.
- A distance of 0 lets the portal work out the distance from the two PIN codes.
- The same menu has Update Vehicle Info, Update Transporter and Extend Validity. Validity can be extended from 8 hours before to 8 hours after expiry.
- Cancellation is allowed within 24 hours.
- If you raise a lot of them, the list view has bulk generation, and a JSON export you can upload on the portal.
Every e-way bill action is recorded in the e-Waybill Log.
Testing in sandbox
Sandbox mode needs you logged in to the India Compliance Account, but it doesn't use credits. A few things behave differently there: distance is not filled in for you (enter 1 to 4,000 km), you cannot print an e-way bill, and you cannot update vehicle or transporter details from an e-invoice. Run a B2B invoice, an export, a credit note and an e-way bill with Part B through sandbox before going live.
On go-live day, switch sandbox off and generate one real e-invoice for a known customer. Check the IRN on the government portal before letting the team raise invoices.
Let's start with a call.
Thirty minutes, free of charge, and you won't sit through a sales deck.