This browser does not support JavaScript

India’s July 2025 Aadhaar-OTP mandate: Guide to IRCTC Tatkal Automation to Compliance

Post Time: 2025-07-17 Update Time: 2025-07-18

Key Info at a Glance

  • Mandate Start: July 15, 2025 – every Tatkal booking (web, app, PRS) requires Aadhaar‑OTP
  • Linking Deadline: July 1, 2025 – one‑time authentication of IRCTC profile with Aadhaar/VID
  • Blackout Window: AC 10:00–10:30 AM; Non‑AC 11:00–11:30 AM (no automated/agent bookings)
  • Impact: Standard rotating datacenter scripts without OTP support will fail
  • Solution: Follow these six enriched steps: pre‑booking setup, blackout timing, session init, auto-fill & trigger, OTP capture & submit, confirmation & cleanup

 

In July 2025, Indian Railways imposed an Aadhaar-based OTP check on its Tatkal ticket platform—covering IRCTC’s website, mobile app, PRS counters, and travel agents. This strengthens fairness by blocking bot-driven bulk bookings but disrupts longstanding proxy‑driven automation.

Many users, accustomed to rotating proxy pools and rapid-fire scripts, now encounter “Verification Required” errors, session timeouts, and a mandatory 30-minute blackout that neutralizes brute-force tactics. To restore reliable automation, you must integrate OTP handling, maintain IP-session consistency, and respect the blackout window.

This guide breaks down each requirement into six clear steps, with purpose, prerequisites, concrete commands or code snippets, pro‑tips, and verification checks—ensuring both beginners and professionals can follow along and adapt GoProxy workflows.

IRCTC Tatkal Automation Under India’s July 2025 Aadhaar-OTP Mandate

The Aadhaar-OTP Mandate: Timeline & Scope

Date Requirement
By July 1, 2025 Link your IRCTC profile to Aadhaar/Virtual ID
From July 15, 2025 Every Tatkal booking must include an OTP check
Daily Window No automated/agent bookings: AC 10:00–10:30 AM;NonAC 11:00–11:30 AM

Aadhaar Linking (One-Time)

Enter a 12-digit Aadhaar number or UIDAI-issued VID under My Profile → Link Aadhaar.

IRCTC calls UIDAI’s e-KYC API to send an OTP to the registered mobile.

Input the OTP to authenticate and lock down your official name and address.

Mandatory OTP Verification

After filling passenger details and clicking Book, IRCTC triggers an SMS OTP to your Aadhaar‑linked phone. Successful booking only after entering the correct OTP.

Agent Blackout Window

Automated or agent-based bookings are paused for the first 30 minutes of each Tatkal window, preventing bulk-booking services from sweeping seats.

Step 1: Pre-Booking Setup (Before July 1)

Prepare your IRCTC account and proxy environment so you’re fully authenticated and equipped to handle OTPs, eliminating last-minute failures.

Prerequisites

Active IRCTC account

Aadhaar number or Virtual ID (VID)

GoProxy dashboard access for reserving proxy pools

SMS-relay service credentials or readiness for manual OTP entry

1. Authenticate IRCTC Profile

Log in to IRCTC → My Profile → Link Aadhaar

Enter 12-digit Aadhaar/VID → click Send OTP

Receive OTP on your Aadhaar-registered mobile → enter to link

2. Reserve Sticky Residential IPs

Allocate a dedicated pool (e.g., 5–10 IRCTC proxy IPs) for your IRCTC sessions. For easy identification, you can tag it as "Tatkal-July2025".

3. Configure SMS-Relay or User Prompt

SMS-Relay: Obtain API key from your provider (e.g., Twilio) and configure a webhook endpoint

User Prompt: Plan a pause in your automation script to request manual OTP input from end users

4. Pre-Save Passenger Data

In IRCTC → Master List, add frequent travelers’ names and details. Verify entries match Aadhaar-authenticated profile to avoid mismatch errors.

Pro Tips

Use high-TTL (≥ 60 s) on your sticky IPs to prevent mid-booking churn. GoProxy supports that! 

Store your SMS-relay API key securely, and test OTP delivery with a dummy IRCTC login.

Verification

Confirm IRCTC profile shows “Aadhaar Linked”

Send a test OTP via SMS‑relay API and verify you receive JSON with {"otp":"123456"}

Step 2: Blackout-Aware Scheduling

Avoid the enforced 30-minute agent blackout by automating a precise pause and resume in your script, ensuring you only launch bookings when allowed.

Prerequisites

System clock synced to IST (GMT+05:30)

Scheduler or cron‑like capability in your script environment

1. Calculate Blackout Window

AC bookings: 10:00–10:30 AM IST

Non-AC bookings: 11:00–11:30 AM IST

2. Implement Pause Logic

In Python, for example:

python

 

import time, datetime

# Pause until blackout ends

target = datetime.datetime.now().replace(hour=10, minute=30, second=0)

while datetime.datetime.now() < target:

    time.sleep(1)

3. Resume Execution

Confirm current time ≥ target before proceeding to Step 3

Pro Tips

Include a grace buffer of 2–3 seconds in your resume time to account for script startup.

Record blackout start and end times for audit and troubleshooting.

Verification

Check your logs show script idle during the blackout and resume exactly at target time.

Step 3: Session Initialization

Establish an IP‑session link using a reserved residential proxy to satisfy IRCTC’s IP‑Aadhaar consistency requirement.

Prerequisites

Reserved GoProxy sticky IP pool from Step 1

Automation library (e.g., Selenium, Puppeteer)

1. Allocate Proxy to Session

python

 

proxy = go_proxy.assign_proxy(pool="Tatkal-July2025")

selenium_options.add_argument(f"--proxy-server=http://{proxy.ip}:{proxy.port}")

driver = webdriver.Chrome(options=selenium_options)

2. Load Tatkal Booking Page

Navigate to https://www.irctc.co.in/nget/train-search under your proxy session

3. Verify IP (optional)

Load https://api.ipify.org?format=json to confirm the exit IP matches your allocated proxy

Pro Tips

Reuse the same driver instance for Steps 3–5 to maintain session cookies.

If IP allocation fails, implement retry logic with a different sticky IP.

Verification

Ensure api.ipify.org returns the expected sticky IP.

Step 4: Auto-Fill & Trigger OTP

Automatically complete form filling and trigger an OTP to the user’s Aadhaar-linked mobile, minimizing manual interactions and improving efficiency.

Prerequisites

Pre‑saved Master List passenger index

Loaded the IRCTC booking page under the correct proxy session

1. Select Tatkal Option & Class

python

 

driver.find_element(By.ID, "quotaTatkal").click()

driver.find_element(By.ID, "classAC").click()  # or classNonAC

2. Populate Passenger Details

python

 

passenger = master_list[0]  # first passenger

driver.find_element(By.NAME, "passengerName0").send_keys(passenger.name)

driver.find_element(By.NAME, "passengerAge0").send_keys(passenger.age)

3. Click “Book”

python

 

driver.find_element(By.ID, "bookButton").click()

This action sends an OTP to the Aadhaar‑registered mobile.

Pro Tips

Use explicit waits (e.g., Selenium’s WebDriverWait) to ensure elements are interactable.

Pre-load passenger data into a local cache to avoid network delays.

Verification

Observe the page transition to an OTP input field within 3 seconds of clicking “Book.”.

Step 5: OTP Capture & Submission

Retrieve the OTP and submit it swiftly to complete the booking process.

Prerequisites

SMS‑relay API endpoint or user prompt mechanism

1. Fetch OTP via SMS‑Relay

python

 

import requests, time

start = time.time()

while True:

    resp = requests.get(

        "https://api.smsrelay.com/v1/otps",

        params={"session_id": SESSION_ID},

        headers={"Authorization": f"Bearer {API_KEY}"}

    )

    if resp.status_code == 200 and resp.json().get("otp"):

        otp = resp.json()["otp"]

        break

    if time.time() - start > 30:

        raise TimeoutError("OTP fetch timed out")

    time.sleep(1)

2. Submit OTP in IRCTC Form

python

 

driver.find_element(By.ID, "otpInput").send_keys(otp)

driver.find_element(By.ID, "submitOtpButton").click()

3. Fallback User-Prompt

python

 

if not otp:

    otp = input("Enter OTP from your mobile: ")

    submit_otp(otp)

Pro Tips

Keep the proxy session active during OTP fetch to avoid IP changes.

Log timestamps for OTP request, retrieval, and submission to monitor latency.

Verification

IRCTC displays a confirmation message and PNR number.

Step 6: Confirmation & Cleanup

Finalize the booking, log outcomes, and manage proxy resources for subsequent operations.

Prerequisites

Successful OTP submission

1. Capture Confirmation

python

 

pnr = driver.find_element(By.ID, "pnrNumber").text

log_success(session_id=SESSION_ID, pnr=pnr)

2. Handle Failures

python

 

if "Verification Required" in driver.page_source:

    log_failure(session_id=SESSION_ID, reason="Verification Required")

3. Release or Retain Proxy

python

 

go_proxy.release_proxy(proxy)  # or keep for next booking

driver.quit()

Pro Tips

Retain the proxy if you plan multiple bookings in quick succession to reduce re‑auth delays.

Archive logs with timestamps, proxy IP, OTP latency, and outcome for audit.

Verification

Review your logs for a successful PNR or recorded error, ensuring proper cleanup.

Monitoring, Error Handling & Optimization

1. Track Key Metrics

OTP Latency: Time between OTP generation and capture.

Booking Success Rate: Confirmed bookings vs. attempts.

Error Patterns: Frequency of “Verification Required,” timeouts, or blackout breaches.

2. Set Automated Alerts

Notify operators if OTPs aren’t received in 45 seconds or if repeated session rejections occur.

3. Adaptive Rate-Limiting

Throttle retries when failure spikes indicate proxy health, mobile network, or UIDAI service issues.

Comments

The Aadhaar-OTP mandate reshapes Tatkal automation into a compliance-focused orchestration. Though friction increases, GoProxy’s sticky IRCTC IPs and SMS-relay integrations offer a resilient path to fast, fair bookings—transforming regulation into a competitive advantage. Sign up today and get a free trial!

 

Missed some basic info? Get up to speed on proxy configuration and script structure:
How to Automate IRCTC Ticket Booking »

< Previous

Craigslist Proxy Guide: Setup, Best Providers, and Strategies

Next >

How to Automate IRCTC Ticket Booking: Tools & Methods (Updated July 2025)
Start Your 7-Day Free Trial Now!
GoProxy Cancel anytime
GoProxy No credit card required