Skip to main content

What you’ll set up

This tutorial takes an Indian SaaS seller from zero to a GST-compliant invoice. You’ll save your seller GST configuration, see how place of supply decides CGST/SGST vs IGST, connect the Invoice Registration Portal (IRP) for e-invoicing, and generate a compliant invoice for a B2B customer.
GST configuration applies to all future invoices. Finalized invoices are never modified retroactively — set this up before you start billing Indian customers.

Step 1: Save your seller GST configuration

Store your GSTIN, legal name, state code, SAC code, and default GST rate. This one call drives both invoice formatting and the CGST/SGST-vs-IGST decision.
Read it back any time with GET /v1/settings/gst — note that it returns 404 until a configuration exists, which is exactly why unconfigured tenants see 0% GST.
Changing state_code later affects CGST/SGST vs IGST on all future invoices. Set it to your actual place of registration.

Step 2: Understand place of supply

GST splits by where the supply happens. Recurso derives the buyer side from the customer’s billing-address state / place_of_supply and compares it to your seller state_code: Create the B2B customer with GSTIN and state so the invoice is correct:
Here the seller is in Karnataka (29) and the buyer in Maharashtra (27) — a different state — so the invoice will carry IGST at 18%. A Karnataka buyer would instead get CGST 9% + SGST 9%.
For B2B customers, always capture the buyer gstin — it puts the customer’s GSTIN on the invoice and supports their input tax credit. See GST Invoicing for the full invoice format.

Step 3: Enable e-invoicing (IRP)

If you’re under India’s e-invoicing mandate (turnover above the threshold), register your IRP credentials so B2B invoices are submitted to the government portal automatically. This is a separate endpoint from GST config.
Start with environment: "sandbox" to validate credentials, then switch to production once submissions succeed. Recurso manages IRP token refresh for you; sensitive fields are masked in responses. Setting is_enabled: false pauses e-invoice generation without deleting credentials.
Ensure your IRP credentials are valid before switching to production — invalid credentials cause every e-invoice submission to fail. See E-Invoicing for retry and cancel flows.

Step 4: Generate a compliant invoice

With GST configured, invoices are generated automatically at each billing period end — no extra call. The result includes the full GST breakup. For the interstate example above:
When e-invoicing is enabled and the invoice is above the threshold, Recurso submits it to the IRP and attaches the IRN, acknowledgement number, and signed QR code. Check status with GET /v1/invoices/{id}/einvoice, and download the print-ready document via GET /v1/invoices/{id}/pdf.

Verify Your Setup

1

GST config saved

GET /v1/settings/gst returns your GSTIN and rate (not a 404).
2

Place of supply correct

A same-state customer’s invoice shows CGST + SGST; a different-state customer’s shows IGST.
3

IRP connected

Sandbox submissions succeed before you flip environment to production.
4

Invoice compliant

The invoice carries both GSTINs, place of supply, SAC code, and the correct tax breakup.

Next Steps

GST Invoicing

Full invoice format, SAC codes, and B2B fields

E-Invoicing

IRN, QR codes, retry and cancel

Update GST Config API

Endpoint reference

UPI & Mandates

RBI e-mandates for recurring auto-debit