Vehicle Toll Summary
1 endpoint · Core API
Retrieve consolidated toll trip summary for a vehicle over the past 72 hours.
Fetches FASTag toll crossing transactions for the vehicle, then enriches each crossed toll plaza with live toll rates. Returns per-plaza amounts and a grand total for the 72-hour window.
Key Benefits:
→ Single API call returns both crossing history and toll costs in one response.
→ Automatically maps the vehicle's NHAI class (VC4–VC12) to the correct rate category.
→ Provides a ready-to-display trip ledger with per-plaza cost and total toll amount.
Use Cases:
→ Fleet cost reporting — total toll expenditure for a vehicle in the past 72 hours.
→ Logistics invoice validation — verify toll charges against driver-submitted receipts.
→ Pre-purchase vehicle verification — recent movement and associated toll costs.
Request Body Parameters:
→ vehicleNumber (required): Vehicle registration number in uppercase, without spaces or hyphens (e.g. GJ01AB1234). The value is sent as given and is not normalised.
→ request_id (optional): Your own reference ID for this call; echoed back in the response.
Response Details:
→ totalTolls: Number of toll crossings in the past 72 hours.
→ totalAmount: Sum of toll charges across all crossings (₹).
→ dataWindowHours: Always 72 — data covers the past 72 hours only.
→ tripDetails: Per-crossing breakdown with tollPlaza, state, crossedAt, amount, vehicleType, geoCode.
Note: Toll amount is 0 when a plaza's rate could not be determined. Data covers the past 72 hours only.
Headers
- X-API-KEYstringrequiredYour secret API key for the environment you are calling (Stage and Live use different keys).
- X-API-APP-IDstringrequiredThe App ID issued together with the key.
- Content-Typestringrequiredapplication/json
Body parameters
application/json- vehicleNumberstringrequiredRequired. Vehicle registration number in uppercase, without spaces or hyphens, e.g. GJ01AB1234.nullabledefault GJ01AB1234
- request_idstringoptionalOptional. Your own reference ID for this call; echoed back in the response. A new one is generated when omitted.nullable
Sample request body
Responses
200OK
- successbooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 200
- messagestringoptionalNo description.nullabledefault XXXXX
- dataobjectoptionalConsolidated toll trip summary for a vehicle over the past 72 hours. Each tripDetail corresponds to one FASTag transaction, enriched with the toll rate for that plaza.
7 fields
- vehicleNumberstringoptionalNo description.nullable
- totalTollsinteger (int32)optionalNo description.
- totalAmountnumber (double)optionalNo description.
- dataWindowHoursinteger (int32)optionalData window in hours (always 72 — ULIP FASTAG/01 limitation).
- comVehiclestringoptionalCommercial vehicle flag from FASTAG/02 tag details ('T' = commercial, 'F' = personal).nullable
- tagIdstringoptionalFASTag tag ID from FASTAG/02 tag details.nullable
- tripDetailsarray<object>optionalNo description.nullable
Each item: 8 fields
- tollPlazastringoptionalNo description.nullable
- statestringoptionalNo description.nullable
- crossedAtstringoptionalNo description.nullable
- amountnumber (double)optionalExpected toll charge calculated from NHAI rate tables. 0 for exempt plazas.
- vehicleTypestringoptionalNo description.nullable
- geoCodestringoptionalNo description.nullable
- laneDirectionstringoptionalNo description.nullable
- isReturnTripbooleanoptionalWhether this crossing qualifies as a return leg (same plaza, opposite direction N↔S/E↔W, within 24 h).
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- isBillablebooleanoptionalWhether this request was charged: true if it was, false if not. Errors always show false. Flows that finish later (ITR Fetch, SHCIL eStamp, DigiLocker, eSign) show false here, because the charge is made when the result is ready. eSign charges each signer when they complete signing. DigiLocker deducts the credit when the link is created and refunds it automatically if the link expires before the user completes it.
400Bad Request
- dataobjectoptionalNo description.
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- successbooleanoptionalNo description.default false
- messagestringoptionalNo description.nullabledefault XXXXX
- isBillablebooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 400
401Unauthorized
- dataobjectoptionalNo description.
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- successbooleanoptionalNo description.default false
- messagestringoptionalNo description.nullabledefault XXXXX
- isBillablebooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 401
429Too Many Requests
- successbooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 200
- messagestringoptionalNo description.nullabledefault XXXXX
- dataanyoptionalNo description.nullable
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- isBillablebooleanoptionalWhether this request was charged: true if it was, false if not. Errors always show false. Flows that finish later (ITR Fetch, SHCIL eStamp, DigiLocker, eSign) show false here, because the charge is made when the result is ready. eSign charges each signer when they complete signing. DigiLocker deducts the credit when the link is created and refunds it automatically if the link expires before the user completes it.
500Internal Server Error
- dataobjectoptionalNo description.
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- successbooleanoptionalNo description.default false
- messagestringoptionalNo description.nullabledefault XXXXX
- isBillablebooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 500