Toll Enroute

3 endpoints · Core API

The Toll Enroute API category provides a comprehensive suite of tools for calculating toll charges and retrieving essential toll and route data across different regions. These APIs enable developers to build intelligent transportation applications that help users plan cost-effective journeys, estimate travel expenses, and make informed routing decisions based on toll charges. Whether you're developing a navigation app, fleet management system, or travel planning platform, this category delivers the toll intelligence needed to optimize routes and provide accurate cost calculations.

Check supported toll plazas — View the full list of 600+ plazas across 24 states before making a request. View Supported Toll Plazas →

Request notes

  • source_state and destination_state are required. Use the state values returned by the toll-state-list API (snake_case, for example uttar_pradesh).
  • source_name and destination_name are required city or town names (for example ghazipur, patna).
  • vehicle_type is required. Use a value returned by the get-vehicle-type API (for example car/jeep/van).
  • Values are not case-sensitive: they are converted to lowercase before the lookup.
GET

/api/v1/nhai/toll-state-list

#

Get the list of states and union territories supported for NHAI toll operations.

docs.signcare.io/core/api/toll/toll-enroute/#get-api-v1-nhai-toll-state-list

The Toll State List API provides a comprehensive list of all Indian states and union territories available for NHAI (National Highways Authority of India) toll-related operations. This endpoint serves as a foundational reference for toll data queries, returning standardized state identifiers that can be used across various toll management systems and applications.

This API is essential for applications that need to display state selection options, validate geographic inputs, or filter toll data by geographical regions. It ensures consistency in state naming conventions across your toll management ecosystem.

Key Benefits:

→ Complete Coverage: Returns all 36 states and union territories of India in a standardized format.

→ Consistent Naming: Provides uniform state identifiers for seamless integration with other NHAI APIs.

→ Real-time Data: Always returns the current list of available states for toll operations.

→ Easy Integration: Simple GET request with no parameters required for quick implementation.

Use Cases:

→ State-wise Toll Collection Reports: Generate comprehensive toll revenue reports filtered by specific states.

→ Geographic Route Planning: Plan optimal routes considering toll plazas across different states.

→ Compliance Monitoring: Track toll collection compliance across various state jurisdictions.

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.

Responses

200OK
  • success
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 200
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • data
    objectoptional
    No description.
    1 field
    • state_list
      array<string>optional
      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": { "state_list": [ "string" ] }, "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 GET 'https://uat-ext.signcare.io/api/v1/nhai/toll-state-list' \ -H 'X-API-KEY: YOUR_API_KEY' \ -H 'X-API-APP-ID: YOUR_APP_ID'
GET

/api/v1/nhai/get-vehicle-type

#

Get the list of vehicle types supported for toll calculation.

docs.signcare.io/core/api/toll/toll-enroute/#get-api-v1-nhai-get-vehicle-type

The Vehicle Type API provides a comprehensive list of vehicle categories recognized by the National Highways Authority of India (NHAI) for toll calculation and classification purposes. This endpoint returns standardized vehicle type identifiers that are essential for accurate toll rate determination, vehicle classification, and compliance with NHAI toll collection standards.

This API serves as a critical reference for toll management systems, enabling proper vehicle categorization based on axle configuration, size, and commercial usage. The vehicle types returned align with official NHAI toll rate structures and are used across all toll plaza operations in India.

Key Benefits:

→ Official Classification: Returns NHAI-approved vehicle categories for accurate toll calculations.

→ Standardized Identifiers: Provides consistent vehicle type codes for seamless integration.

→ Complete Coverage: Includes all vehicle categories from personal cars to heavy commercial vehicles.

→ Real-time Accuracy: Always returns the current list of recognized vehicle types for toll operations.

Use Cases:

→ Automated Toll Classification: Implement automatic vehicle categorization at toll plazas using camera recognition systems.

→ Rate Calculation Engine: Build dynamic toll rate calculators based on vehicle type and route distance.

→ Revenue Reporting: Generate detailed toll collection reports categorized by vehicle types.

→ Compliance Monitoring: Ensure toll collection adheres to NHAI vehicle classification standards.

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.

Responses

200OK
  • success
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 200
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • data
    objectoptional
    No description.
    1 field
    • vehicle_type
      array<string>optional
      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": { "vehicle_type": [ "string" ] }, "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 GET 'https://uat-ext.signcare.io/api/v1/nhai/get-vehicle-type' \ -H 'X-API-KEY: YOUR_API_KEY' \ -H 'X-API-APP-ID: YOUR_APP_ID'
POST

/api/v1/nhai/toll-enroute

#

Calculate toll charges and route details between two locations.

docs.signcare.io/core/api/toll/toll-enroute/#post-api-v1-nhai-toll-enroute

The Toll Enroute API is a comprehensive route planning and toll calculation service that provides detailed journey information between any two locations in India. This powerful endpoint calculates optimal routes while identifying all toll plazas along the way, providing precise toll costs based on vehicle type, travel duration, total distance, and exact toll plaza coordinates.

This API integrates real-time NHAI toll rate data with advanced routing algorithms to deliver accurate cost estimations and route planning capabilities. It's essential for logistics companies, fleet operators, and travel applications that need precise toll cost calculations and route optimization for commercial and personal vehicles.

Key Benefits:

→ Complete Route Intelligence: Get comprehensive journey details including duration, distance, and all toll plazas with exact costs.

→ Vehicle-Specific Pricing: Accurate toll calculations based on NHAI vehicle classification standards for precise cost estimation.

→ Real-time Toll Data: Access current toll rates and plaza information directly from NHAI systems.

→ Geospatial Accuracy: Precise latitude/longitude coordinates for each toll plaza enabling GPS integration and mapping.

Use Cases:

→ Route Cost Optimization: Calculate and compare multiple route options to minimize toll expenses for commercial fleets.

→ Trip Budget Planning: Provide accurate toll cost estimates for logistics planning and customer quotations.

→ Fleet Expense Tracking: Monitor and analyze toll expenses across different routes and vehicle types.

→ Delivery Route Planning: Optimize delivery routes considering toll costs, distance, and time constraints.

Request Body Parameters:

→ source_state (required): State of the starting location in snake_case, as returned by the toll-state-list API (e.g., "uttar_pradesh").

→ source_name (required): City or town where the journey starts (e.g., "ghazipur").

→ destination_state (required): State of the destination in snake_case, as returned by the toll-state-list API (e.g., "bihar").

→ destination_name (required): City or town where the journey ends (e.g., "patna").

→ vehicle_type (required): Vehicle category for toll calculation, as returned by the get-vehicle-type API (e.g., "car/jeep/van"). Values are not case-sensitive.

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
  • consent
    stringrequired
    Required. The end user's consent to this verification. Send `Y`.
    minLength 1default Y
  • consent_text
    stringrequired
    Required. The consent statement shown to the end user. Send the default text from the sample.
    minLength 1default I hear by declare my consent agreeme…
  • request_id
    stringoptional
    Optional. Your own id to correlate this call in your logs. A unique id is generated if you leave it out.
    nullable
  • source_state
    stringrequired
    Required. State of the starting location, in snake_case as returned by the toll-state-list API, for example uttar_pradesh. Case is ignored.
    minLength 1default uttar_pradesh
  • source_name
    stringrequired
    Required. City or town where the journey starts, for example ghazipur. Case is ignored.
    minLength 1default ghazipur
  • destination_state
    stringrequired
    Required. State of the destination, in snake_case as returned by the toll-state-list API, for example bihar. Case is ignored.
    minLength 1default bihar
  • destination_name
    stringrequired
    Required. City or town where the journey ends, for example patna. Case is ignored.
    minLength 1default patna
  • vehicle_type
    stringrequired
    Required. Vehicle category used to price the tolls. Use a value returned by the get-vehicle-type API, for example car/jeep/van. Case is ignored.
    minLength 1default car/jeep/van
Sample request body
{ "consent": "Y", "consent_text": "I hear by declare my consent agreement for fetching my information via SignCare API", "source_state": "uttar_pradesh", "source_name": "ghazipur", "destination_state": "bihar", "destination_name": "patna", "vehicle_type": "car/jeep/van" }

Responses

200OK
  • success
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 200
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • data
    objectoptional
    No description.
    8 fields
    • source_state
      stringoptional
      No description.
      nullable
    • source_name
      stringoptional
      No description.
      nullable
    • destination_state
      stringoptional
      No description.
      nullable
    • destination_name
      stringoptional
      No description.
      nullable
    • vehicle_type
      stringoptional
      No description.
      nullable
    • duration
      stringoptional
      No description.
      nullable
    • distance
      stringoptional
      No description.
      nullable
    • toll_plaza_details
      array<object>optional
      No description.
      nullable
      Each item: 4 fields
      • toll_plaza_name
        stringoptional
        No description.
        nullable
      • cost
        stringoptional
        No description.
        nullable
      • toll_plaza_longitude
        stringoptional
        No description.
        nullable
      • toll_plaza_latitude
        stringoptional
        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": { "source_state": "string", "source_name": "string", "destination_state": "string", "destination_name": "string", "vehicle_type": "string", "duration": "string", "distance": "string", "toll_plaza_details": [ { "toll_plaza_name": "string", "cost": "string", "toll_plaza_longitude": "string", "toll_plaza_latitude": "string" } ] }, "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/nhai/toll-enroute' \ -H 'X-API-KEY: YOUR_API_KEY' \ -H 'X-API-APP-ID: YOUR_APP_ID' \ -H 'Content-Type: application/json' \ -d '{ "consent": "Y", "consent_text": "I hear by declare my consent agreement for fetching my information via SignCare API", "source_state": "uttar_pradesh", "source_name": "ghazipur", "destination_state": "bihar", "destination_name": "patna", "vehicle_type": "car/jeep/van" }'