A free, open-source e-challan tracking and management system for Indian fleet operators — built entirely on Google Sheets + Google Apps Script. No servers, no hosting costs, no subscriptions.
Every company running a fleet in India deals with this — e-challans come in silently through the Parivahan portal, nobody tracks them systematically, court cases get missed, drivers don't get held accountable, and the finance team has zero visibility. Fines pile up, some go to court, and at the end of the year nobody knows how much was actually paid.
This system was built to solve exactly that, for a Ready-Mix Concrete company operating three plants and 60+ vehicles in Kerala.
- Web App — a clean, mobile-friendly interface that works on any device and browser
- Google Sheet as Database — all data lives in your own Google Sheet; you own it completely
- Dashboard — live KPIs: total fine, balance to pay, pending vs resolved, ageing buckets
- Add & Edit Challans — add new challans through the app; they write directly to the sheet
- Search & Filter — filter by vehicle, driver, resolution status
- Ageing Alerts — automatic monthly email listing challans open 30+ and 90+ days
- Status Tracking — 7 resolution states: Pending, Court, Paid Online, Deducted – Pending Remittance, Deducted & Remitted, Disposed, Under Review
| Component | Technology |
|---|---|
| Database | Google Sheets |
| Backend | Google Apps Script |
| Frontend | HTML + CSS + Vanilla JavaScript |
| Hosting | Google Apps Script Web App (free) |
| Email Alerts | Gmail via Apps Script |
No frameworks. No npm. No build step. Just paste and deploy.
- A Google account (Gmail / Google Workspace)
- The E-Challan Master Register Google Sheet (template provided below)
- Basic comfort with copy-pasting — no coding required
- Open the template sheet: (https://docs.google.com/spreadsheets/d/10ZuWwrG9CYW4xUvmbKDmqkFAEpB47hNFeduAkCCwWaM/edit?usp=drivesdk)
- Click File → Make a copy
- Save it to your Google Drive
- Note the exact name of the Master Register tab at the bottom — you will need it in Step 3
- In your Google Sheet, click Extensions in the top menu
- Click Apps Script
- A code editor opens in a new tab
- You will see a file called
Code.gson the left panel - Click on it, select all the existing code, and delete it
- Open the file
ChallanWebApp.gsfrom this repository - Copy the entire contents and paste it into
Code.gs - At the top of the file, find the
CONFIGsection and update:
AUTHORISED_USERS: [
"yourname@gmail.com", // ← replace with your actual email
"colleague@gmail.com", // ← add more emails as needed
],
SHEET_NAME: "Master Register", // ← must match your sheet tab name exactly- On the left panel in Apps Script, click the + icon next to "Files"
- Select HTML
- Type exactly
indexas the name (no capital letters, no extension) - A file called
index.htmlappears - Delete any default content inside it
- Open
index.htmlfrom this repository - Copy the entire contents and paste it in
Press Ctrl + S (Windows) or Cmd + S (Mac) to save.
Make sure both Code.gs and index.html show as saved.
- Click the blue Deploy button in the top right
- Click New deployment
- Click the gear icon ⚙️ next to "Type" and select Web app
- Fill in the settings:
- Description:
E-Challan v1 - Execute as:
Me - Who has access:
Anyone with a Google account
- Description:
- Click Deploy
- Google will ask you to Authorise access — click through and approve
- After deployment, you will see a Web app URL — copy and save this link
Open the URL in your browser. You should see the dashboard load with your data.
Share the URL with your team. Anyone you have added to AUTHORISED_USERS can access it with their Google account.
- In Apps Script, in the function dropdown at the top, select
setupMonthlyTrigger - Click Run
- Approve any additional permissions
- Done — you will receive an email on the 1st of every month listing challans open 30+ and 90+ days
To send a test alert immediately: select testAlertNow and click Run.
To update the alert recipients, find this section in ChallanWebApp.gs:
var RECIPIENTS = [
"your_email@company.com",
"colleague@company.com",
];Whenever you update the code (adding users, fixing bugs), you need to redeploy:
- Deploy → Manage deployments
- Click the pencil ✏️ edit icon
- Change version to New version
- Click Deploy
The URL stays the same — your team does not need a new link.
The sheet uses these columns in the Master Register tab:
| Col | Field | Notes |
|---|---|---|
| A | Challan Date | Format: DD/MM/YYYY |
| B | Vehicle No | No spaces or hyphens (e.g. KL08CA1924) |
| C | Vehicle Type | From dropdown |
| D | Plant | Plant 1 / Plant 2 / Plant 3 |
| E | Challan No | Full number from e-challan portal |
| F | Offence Charged | Description of offence |
| G | Fine (₹) | Amount in rupees |
| H | Driver / Operator | Name of driver |
| I | Location | Where the challan was issued |
| J | Court Status | Court or Online Payable |
| K | Resolution | Dropdown — must use exact values |
| L | Remarks | Free text notes |
| M | Paid Amount (₹) | If paid |
| N | Paid Date | DD/MM/YYYY |
| O | HR: Deduction Month | Month salary deducted |
| P | HR: Confirmed | Yes / No |
| Q | Accts: Paid to Authority | Yes / No |
| R | Accts: Payment Date | DD/MM/YYYY |
| S | Accts: Reference No | Payment reference |
| T | Days Open | Auto-calculated formula |
| Value | Meaning |
|---|---|
Pending |
No action taken yet |
Court |
Moved to virtual or physical court |
Paid Online |
Company paid on e-challan portal |
Deducted - Pending Remittance |
Deducted from driver salary, company yet to pay authority |
Deducted & Remitted |
Driver deducted AND company paid authority — fully closed |
Disposed |
Court disposed, no payment needed |
Under Review |
Challan not traceable / being investigated |
When you add a new vehicle to your fleet:
- Add a challan for that vehicle in the Master Register sheet
- The vehicle will automatically appear in the vehicle dropdown in the web app on the next page load
In ChallanWebApp.gs, find the VEHICLE_TYPES array and add or remove types:
VEHICLE_TYPES: [
"TM", "TOWING VEH", "B-BENZ TIPPER",
// add your vehicle types here
],- Not real-time — the web app loads data when you open a tab. Use the Refresh button to get latest data if someone else made changes directly in the sheet.
- Google account required — users must sign in with the Google account you added to
AUTHORISED_USERS - No Parivahan API integration — challans must be entered manually. Auto-import from the portal is not yet implemented.
- Single sheet — designed for one company with one Master Register. Multi-company support not included.
- Auto-import challans from Parivahan portal by vehicle number
- Vehicle-wise report download as PDF
- WhatsApp notification integration
- Multi-plant filtering on dashboard
- Bulk upload of past challans via CSV
Pull requests welcome.
This project was built for an internal use case in the Indian fleet management space. If you work in logistics, RMC, construction, or any fleet-heavy industry in India and have ideas or improvements — open an issue or submit a PR.
If you use this and find it useful, a star on GitHub goes a long way.
MIT License — free to use, modify, and distribute. See LICENSE file.
Built by Kp — Fleet Coordinator, Grasshopper Mobility, Kerala.
"Built this because we needed it. Sharing it because others do too."
