Vehicle Toll Summary

1 endpoint · Core API

POST

/api/v1/vehicle-toll/summary

#

Retrieve consolidated toll trip summary for a vehicle over the past 72 hours.

docs.signcare.io/core/api/toll/vehicle-toll-summary/#post-api-v1-vehicle-toll-summary

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-KEY
    stringrequired
    Your secret API key for the environment you are calling (Stage and Live use different keys).
  • X-API-APP-ID
    stringrequired
    The App ID issued together with the key.
  • Content-Type
    stringrequired
    application/json

Body parameters

application/json
  • vehicleNumber
    stringrequired
    Required. Vehicle registration number in uppercase, without spaces or hyphens, e.g. GJ01AB1234.
    nullabledefault GJ01AB1234
  • request_id
    stringoptional
    Optional. Your own reference ID for this call; echoed back in the response. A new one is generated when omitted.
    nullable
Sample request body
{ "vehicleNumber": "GJ01AB1234", "request_id": "string" }

Responses

200OK
  • success
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 200
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • data
    objectoptional
    Consolidated 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
    • vehicleNumber
      stringoptional
      No description.
      nullable
    • totalTolls
      integer (int32)optional
      No description.
    • totalAmount
      number (double)optional
      No description.
    • dataWindowHours
      integer (int32)optional
      Data window in hours (always 72 — ULIP FASTAG/01 limitation).
    • comVehicle
      stringoptional
      Commercial vehicle flag from FASTAG/02 tag details ('T' = commercial, 'F' = personal).
      nullable
    • tagId
      stringoptional
      FASTag tag ID from FASTAG/02 tag details.
      nullable
    • tripDetails
      array<object>optional
      No description.
      nullable
      Each item: 8 fields
      • tollPlaza
        stringoptional
        No description.
        nullable
      • state
        stringoptional
        No description.
        nullable
      • crossedAt
        stringoptional
        No description.
        nullable
      • amount
        number (double)optional
        Expected toll charge calculated from NHAI rate tables. 0 for exempt plazas.
      • vehicleType
        stringoptional
        No description.
        nullable
      • geoCode
        stringoptional
        No description.
        nullable
      • laneDirection
        stringoptional
        No description.
        nullable
      • isReturnTrip
        booleanoptional
        Whether this crossing qualifies as a return leg (same plaza, opposite direction N↔S/E↔W, within 24 h).
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • isBillable
    booleanoptional
    Whether 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.
Example
{ "success": false, "statusCode": 200, "message": "XXXXX", "data": { "vehicleNumber": "string", "totalTolls": 0, "totalAmount": 0, "dataWindowHours": 0, "comVehicle": "string", "tagId": "string", "tripDetails": [ { "tollPlaza": "string", "state": "string", "crossedAt": "string", "amount": 0, "vehicleType": "string", "geoCode": "string", "laneDirection": "string", "isReturnTrip": false } ] }, "messages": [ "string" ], "request_id": "string", "isBillable": false }
400Bad Request
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 400
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 400 }
401Unauthorized
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 401
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 401 }
429Too Many Requests
  • success
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 200
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • data
    anyoptional
    No description.
    nullable
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • isBillable
    booleanoptional
    Whether 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.
Example
{ "success": false, "statusCode": 200, "message": "XXXXX", "data": null, "messages": [ "string" ], "request_id": "string", "isBillable": false }
500Internal Server Error
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 500
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 500 }
Code samplescurl · Node.js · Python
Stage: uat-ext.signcare.io
curl -X POST 'https://uat-ext.signcare.io/api/v1/vehicle-toll/summary' \ -H 'X-API-KEY: YOUR_API_KEY' \ -H 'X-API-APP-ID: YOUR_APP_ID' \ -H 'Content-Type: application/json' \ -d '{ "vehicleNumber": "GJ01AB1234", "request_id": "string" }'