Skip to main content
FinTech & KYC

PAN-Linked GSTIN Discovery and Verification for Merchant Onboarding

By Vamsi Thiruveedula

A digital GST verification layer built into a Flutter merchant app and a Spring Boot microservices backend, discovering every GSTIN linked to a merchant's verified PAN in one step, validating manual entries in real time, and feeding verified GST status straight into KYC routing, onboarding and tax-accurate commission invoicing.

Platform

Mobile & Cloud

1-tap

GSTIN discovery from the merchant's verified PAN

2

Verification providers covering onboarding and profile updates

0

Manual GST tax calculations on commission invoices

Project overview

We built a digital GST verification capability for a merchant and lending connector platform, where small businesses onboard to accept UPI QR payments and refer customers for loan products. GST verification sits inside the Business Proof step of merchant onboarding.

Instead of asking a merchant to type a 15-character GSTIN, the app asks one question, "Are you a GST holder?", and with the merchant's consent the backend searches the Authify eKYC service for every GSTIN registered against the PAN that was already verified earlier in the journey. The merchant simply picks the right GSTIN from a list.

Verified GST status then decides which KYC documents are requested, is reported to the payment partner as a straight-through-processing flag during onboarding, and drives CGST, SGST or IGST on every monthly commission invoice.

Platform

Mobile & Cloud

Type

FinTech & KYC

Stack

8 technologies

The challenge

Many merchants on the platform are GST-registered, and some hold more than one GSTIN across states or business lines. GST data mattered in three places: it determined which business proof documents a merchant had to upload, it was part of the KYC package sent to the payment partner for QR onboarding, and it decided whether GST had to be added to the commissions paid out to the merchant.

Yet GSTINs were collected as free text. Merchants mistyped them, picked the wrong one, or did not know their GSTIN at all, and there was no check that the GSTIN actually belonged to the PAN on record. Finance teams then had to work out tax treatment by hand for every payout.

GSTINs were typed in manually, leading to format errors and numbers that did not exist on the GST portal

Merchants with multiple registrations often did not know which GSTIN to provide

Nothing confirmed that a GSTIN was actually linked to the merchant's verified PAN

GST-registered and non-registered merchants were asked for the same documents, adding friction for both

Commission invoices needed the correct CGST, SGST or IGST split, and this depended on the state code inside the GSTIN

Merchants who registered for GST after onboarding had no self-serve way to add a verified GSTIN

What we set out to do

  • 01

    Discover GSTINs automatically from the merchant's already verified PAN, with explicit consent

  • 02

    Let merchants select from verified GSTINs instead of typing them, with a validated manual fallback

  • 03

    Use GST holder status to request only the business proof documents that apply

  • 04

    Record verified GST status as part of the merchant's KYC and pass it to the payment partner during onboarding

  • 05

    Calculate GST on commission payouts automatically, with the correct intra-state or inter-state split

  • 06

    Allow merchants to add or update a verified GSTIN from their profile after onboarding

How we solved it

01

PAN-Linked GSTIN Discovery via Authify

Because PAN is verified at the very start of onboarding, GST verification reuses it. When a merchant confirms they are a GST holder and ticks the consent checkbox, the backend calls the Authify eKYC GST-by-PAN search with the stored PAN and explicit consent. Authify returns every GST registration linked to that PAN, including GSTIN, registration name, registration type, application and authentication status, and contact details. The app de-duplicates the GSTINs and shows them as a simple selectable list. A success is accepted only when Authify confirms it, and a "no records" response is handled gracefully as "no GSTIN found" rather than an error.

Key decision

Search GSTINs by verified PAN instead of asking the merchant to enter one

Result

Merchants pick their GSTIN in one tap, and every discovered GSTIN is already tied to the PAN on record.

02

Encrypted, Auditable Verification Pipeline

GST requests follow the same security model as PAN verification. Between the Flutter app and the platform, a Spring Cloud Gateway filter decrypts RSA-wrapped request payloads and AES-encrypts every response. Between the backend and Authify, each request is encrypted with a fresh AES key that is itself RSA-encrypted with the provider's public key, and the encrypted response is decrypted only inside the user service. The full verified GST response is stored against the merchant in a MySQL JSON column along with verification status and last-verified and last-updated timestamps, giving operations and compliance a complete audit trail.

Key decision

Store the raw verified GST payload and verification timestamps, not just a GSTIN string

Result

Every GSTIN on the platform can be traced back to when and how it was verified.

03

GST-Aware KYC Document Routing

GST status plugs directly into the document engine. The platform combines the PAN entity code with the merchant's GST holder answer to pick one of four document flows: individual without GST, individual with GST, partnership firm, or company. Document requirements for each flow live in a database table, and the business proof document name is further tailored by the merchant's category code. On the client, BLoC state management drives the bottom sheets, so a merchant who already has a GSTIN on file skips the question entirely and goes straight to the right document list.

Key decision

Treat GST holder status as an input to KYC routing, not a standalone form field

Result

GST-registered individuals and non-registered individuals each see only the documents that apply to them.

04

Manual Entry, Profile Updates and a Second Provider

Not every GSTIN is discoverable by PAN, so the app offers an "Add manually" path. Manual input is uppercased as the merchant types and checked live against the full GSTIN structure: 2-digit state code, embedded 10-character PAN, entity number, the fixed Z character and a check character. For merchants who add or change a GSTIN from their profile after onboarding, the lead service validates the number against a second provider, Neokred's GST validation API, and rejects it with a clear "Invalid GSTN" error if it does not verify. Adding a verified GSTIN also raises the merchant's profile completion score.

Key decision

Live client-side format validation on every entry, plus provider validation for GSTINs added from the profile

Result

Badly formatted GSTINs never reach the backend, and GSTINs added after onboarding are verified at the source.

05

Verified GST Status Drives Onboarding and Invoicing

Once verified, GST data travels downstream automatically. During payment partner onboarding, the platform sends the GSTIN and a GST verification flag inside the checksum-protected, encrypted straight-through-processing block, alongside PAN and bank verification flags, before a live UPI QR is issued. For payouts, a scheduler runs at 2:00 AM IST on the last day of every month. GST-registered merchants get a commission due generated with GST added, while non-registered merchants get an invoice directly. The first two digits of the GSTIN decide the tax split: intra-state merchants get CGST 9% plus SGST 9%, and inter-state merchants get IGST 18%, with 10% TDS applied on gross. All rates are environment-configurable.

Key decision

Derive tax treatment from the verified GSTIN's state code rather than from manually captured data

Result

Commission invoices carry the correct GST split with no manual tax calculation.

Measurable impact

1-tap

GSTIN selection from registrations discovered through the merchant's verified PAN

4

Tailored KYC document flows selected by PAN entity type and GST status

2

Verification providers: Authify for onboarding discovery, Neokred for profile updates

3

Downstream systems fed by verified GST data: KYC routing, partner onboarding and commission invoicing

18%

GST applied automatically as CGST + SGST or IGST based on the GSTIN state code

0

Manual GST tax calculations on monthly commission payouts

Tech stack

FFlutterJJavaSSpring BootSSpring Cloud GatewayAAuthify eKYCNNeokred APIMMySQLAAWS

What we learned

This project showed that GST verification works best when it builds on identity data the platform already trusts. By discovering GSTINs from a verified PAN instead of asking merchants to type them, we removed the most error-prone step in business proof collection and guaranteed that every discovered GSTIN belongs to the right business. Wiring that verified status into document routing, partner onboarding and automated invoicing turned GST from a form field into a reliable input for compliance and payouts.

  • 01

    Reusing a verified PAN to discover GSTINs is faster for merchants and more trustworthy than free-text entry

  • 02

    Empty results need a designed path: "no GSTIN found" should lead to a manual option, not a dead end

  • 03

    Storing the full verified payload with timestamps makes GST data auditable long after onboarding

  • 04

    Deriving tax treatment from the verified GSTIN keeps commission invoices accurate without manual review

Want a system like this one?

Bring us the problem behind it - the constraint, the load, the deadline. You get an architecture opinion and a cost view from the engineers who built the work on this page, not a sales team.

Prefer we come to you? Fill in the form below.

Tell us where to reach you

Takes under a minute. An engineer reads it, not a lead-scoring tool.

Required. We reply within one business day - no newsletter, no sequence.

Ready to build something that matters?

We solve problems that don't have Stack Overflow answers. Let's talk.

Book a Discovery Call