Skip to main content

B2B Mobility Toll Transaction Data 1.0.0

Get status change, maintenance and version updates about this API.

Shell B2B Mobility Toll Transaction Data API - Quick Start Guide

API Version: 1.0.0 | Authentication: OAuth 2.0 | Status: Production

Overview

The Shell B2B Mobility Toll Transaction Data API is a REST-based API that provides comprehensive access to toll transaction records and related data for Shell mobility customers. This API enables developers to retrieve, filter, and analyze toll transaction data programmatically for account reconciliation, billing verification, expense management, and compliance requirements.

Key Features

  • Retrieve toll transaction data by account number
  • Filter transactions by date range (from and to dates)
  • Search by invoice status and VRN (Vehicle Registration Number)
  • Advanced sorting capabilities on multiple fields
  • Pagination support for large datasets
  • Flexible field filtering to optimize response payload
  • Comprehensive toll details including entry/exit points
  • Support for multiple toll networks and operators

Authentication

OAuth 2.0 (Standard Authentication Method)

The Shell Toll Transaction Data API uses OAuth 2.0 Client Credentials flow for secure authentication.

OAuth 2.0 Flow

Step 1: Obtain Access Token

Request an access token from the OAuth token endpoint:

POST /oauth/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id=your-client-id&client_secret=your-client-secret

Step 2: Use Access Token in API Requests

Authorization: Bearer <access-token>
Content-Type: application/json
RequestId: eb621f45-a543-4d9a-a934-2f223b263c42

Token Management

Token management best practices:

  • Access tokens have a limited lifetime (typically 15 mins)
  • Implement token caching to avoid unnecessary token requests
  • Refresh tokens before expiry to ensure uninterrupted service
  • Never share your client_secret or embed it in client-side code

Environments

The API is available in two environments:

Environment Base URL Purpose
Production https://api.shell.com/toll-data/v1 Live production environment
Test (UAT) https://api-test.shell.com/toll-data/v1 Testing and development environment

OAuth Token URLs:

Environment Token URL
Production https://api.shell.com/v2/oauth/token
Test (UAT) https://api-test.shell.com/v2/oauth/token

Tip: Always test your integration in the Test environment before moving to production.

Quick Start

1. Get Your OAuth Credentials

2. Obtain Access Token

First, get your OAuth access token:

cURL Example:

curl -X POST https://api-test.shell.com/v2/oauth/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials&client_id=your-client-id&client_secret=your-client-secret"

Response:

{
  "access_token": "eyJhbGciOi*******5cCI6IkpXVCJ9...",
  "token_type": "Bearer",
  "expires_in": 899
}

3. Make Your First API Request

Example: Search Toll Transactions

cURL Example:

curl -X POST https://api-test.shell.com/toll-data/v1/transactions/search \
  -H "Authorization: Bearer eyJhbGci******NiIsInR5cCI6IkpXVCJ9..." \
  -H "Content-Type: application/json" \
  -H "RequestId: eb621f45-a543-4d9a-a934-2f223b263c42" \
  -d '{
    "Filters": {
        "ColCoCode": 86,
        "PayerNumber": "NL20016398",
        "AccountNumber": "NL20027701",
        "Filter": "All",
        "FromDate": "2026-01-01",
        "ToDate": "2026-01-31"
    },
    "Page": 1,
    "PageSize": 10
}'

Example Response:

{
  "RequestId": "eb621f45-a543-4d9a-a934-2f223b263c42",
  "Status": "SUCCESS",
  "Page": 1,
  "TotalRecords": 150,
  "TotalPages": 15,
  "PageSize": 10,
  "Data": [
    {
      "NetworkDescription": "Societa Autostradali",
      "TollChargerCode": "410|610",
      "DelcoCode": "714",
      "DelcoName": "Shell Fleet Solutions Consorzio",
      "NetworkCode": "TLI",
      "Network": "euroShell Consortio",
      "PurchasedInCountry": "Italy",
      "PurchasedInCountryCode": "IT",
      "CardNumber": "707737*******334272",
      "CardId": 123456789,
      "CardGroupName": "Shell Fleet Solutions Consorzio",
      "VehicleRegistration": "KN 00000",
      "CostCenter": "100",
      "SystemEntryDate": "20260123",
      "SystemEntryTime": "13:14:25",
      "TransactionDate": "20260120",
      "TransactionTime": "10:30:00",
      "PostingDate": "20260123",
      "PostingTime": "00:00:00",
      "PayerNumber": "NL20016398",
      "AccountNumber": "NL20027701",
      "AccountName": "Test Account Name",
      "StartDate": "20260120",
      "StartTime": "06:47:41",
      "EndDate": "20260120",
      "EndTime": "07:30:15",
      "TollGateEntry": "ROMA NORD",
      "TollGateExit": "BRENNERO",
      "DistanceDriven": "71.6",
      "RouteDescription": "ROMA NORD - BRENNERO",
      "TransactionType": "Road tax",
      "ProductCode": "14",
      "ProductDescription": "Road tax",
      "TransactionNetAmount": "127.1",
      "TransactionTax": "0.0",
      "TransactionGrossAmount": "127.1",
      "TransactionCurrencyCode": "EUR",
      "TransactionStatus": "Reporting",
      "InvoiceNumber": "8600397548",
      "InvoiceDate": "20260125",
      "InvoiceStatus": "Invoiced",
      "PaymentMethod": "Post Pay",
      "OBUSerialNumber": "00049000000836932426",
      "EmissionClass": "Euro 6",
      "ContractID": "fb75eb53-46eb-450b-862e-6045002c3fa8",
      "ShellTransactionID": "04176c5c-e7b2-49c8-bcb3-23d07ba583f2",
      "TollOperator": "Toll4Europe",
      "TollDomain": "Toll4Europe",
      "TariffRelevantInformation": "Vehicle Class: 2, Axle Count: 2, Road Category: Motorway",
      "AdditionalTransactionInfo": "Location:1",
      "TCInvoiceNumber": "12343343",
      "TCInvoiceDate": "20260123"
    }
  ]
}

API Endpoints Reference

Toll Transactions

Endpoint Method Description
/toll-data/v1/transactions/search POST Retrieve toll transaction data with flexible filtering and pagination

Common Use Cases:

  • Retrieve toll transactions by date range
  • Filter by invoice status (Invoiced, Uninvoiced, All)
  • Search by vehicle registration number (VRN)
  • Filter by card group
  • Sort transactions by multiple criteria
  • Select specific fields to optimize response size

Common Use Cases

This section maps common business scenarios to API usage patterns to help you quickly identify how to use the API for your specific needs.

Use Case 1: Daily Toll Transaction Reconciliation

Scenario: You need to reconcile all toll transactions from your fleet on a daily basis for accounting purposes.

Recommended API: /toll-data/v1/transactions/search

Why this API: This endpoint provides comprehensive toll transaction details with flexible date filtering, supports both invoiced and uninvoiced transactions, and includes pagination for large datasets. Perfect for daily reconciliation workflows.

Key Parameters:

  • FromDate and ToDate - Set to yesterday's date for daily reconciliation
  • Search.InvoiceStatus - Use "All" to include both invoiced and uninvoiced transactions
  • PageSize - Set to 100 for efficient data retrieval
  • Filter - Use "All" to get complete transaction details

Use Case 2: Invoice Validation and Verification

Scenario: You received an invoice and need to verify all toll transaction details and charges.

Recommended API: /toll-data/v1/transactions/search

Why this API: The API provides detailed toll transaction information including invoice numbers, dates, amounts, and toll network details. Ideal for invoice validation as it matches the invoice structure.

Key Parameters:

  • Search.InvoiceStatus - Set to "Invoiced" to retrieve only billed transactions
  • FromDate and ToDate - Set to invoice period dates
  • Filter - Specify fields like "InvoiceNumber, InvoiceDate, TransactionGrossAmount" for focused validation

Use Case 3: Fleet Vehicle Toll Usage Analysis

Scenario: You need to analyze toll usage patterns for specific vehicles in your fleet to optimize routes and reduce toll costs.

Recommended API: /toll-data/v1/transactions/search

Why this API: The API allows filtering by Vehicle Registration Number (VRN) and provides detailed route information including entry/exit points, distance driven, and toll charges. Perfect for vehicle-level analysis.

Key Parameters:

  • Search.VehicleRegistrationNumber - Specify the VRN to analyze
  • FromDate and ToDate - Set to analysis period (e.g., last 30 days)
  • SortOption - Use 1 (Transaction Date ascending) for chronological analysis
  • Filter - Include fields like "RouteDescription, DistanceDriven, TollGateEntry, TollGateExit, TransactionGrossAmount"

Use Case 4: Card Group Expense Tracking

Scenario: You manage multiple card groups and need to track toll expenses by card group for budget allocation and cost center reporting.

Recommended API: /toll-data/v1/transactions/search

Why this API: The API supports filtering by card group and includes cost center information, making it ideal for expense tracking and reporting at the card group level.

Key Parameters:

  • Search.CardGroup - Specify the card group name or use "All" for all groups
  • FromDate and ToDate - Set to reporting period
  • Filter - Include "CardGroupName, CostCenter, TransactionGrossAmount, TransactionNetAmount, TransactionTax"
  • SortOption - Use 3 (Transaction Amount ascending) for expense analysis

Use Case 5: Multi-Account Toll Reporting

Scenario: You manage multiple accounts and need to generate consolidated toll reports across all accounts.

Recommended API: /toll-data/v1/transactions/search

Why this API: The API supports querying multiple accounts (2-5 recommended) in a single request, reducing API calls and improving performance for multi-account scenarios.

Key Parameters:

  • AccountNumber - Provide comma-separated account numbers (max 2-5 for optimal performance)
  • FromDate and ToDate - Set to reporting period
  • PageSize - Use larger page sizes (e.g., 100-500) for better performance

Use Case 6: Uninvoiced Transaction Monitoring

Scenario: You want to monitor unbilled toll transactions to forecast upcoming invoices and manage cash flow.

Recommended API: /toll-data/v1/transactions/search

Why this API: The API allows filtering by invoice status, making it easy to identify uninvoiced transactions and estimate upcoming charges.

Key Parameters:

  • Search.InvoiceStatus - Set to "Uninvoiced" for pending charges
  • FromDate and ToDate - Set to current billing period
  • Filter - Include "TransactionDate, TransactionGrossAmount, AccountNumber, VehicleRegistration"

Use Case 7: Toll Network Usage Analysis

Scenario: You need to analyze which toll networks and operators your fleet uses most frequently to negotiate better rates or optimize routes.

Recommended API: /toll-data/v1/transactions/search

Why this API: The API provides detailed toll network information including network description, toll operator, toll charger code, and network code, perfect for network usage analysis.

Key Parameters:

  • FromDate and ToDate - Set to analysis period (e.g., quarterly)
  • Filter - Include "NetworkDescription, TollOperator, TollChargerCode, Network, TransactionGrossAmount"
  • PageSize - Use larger page size for comprehensive data extraction

Usage Examples

Example 1: Search Toll Transactions by Account and Date Range

Request:

POST /toll-data/v1/transactions/search

{
  "Filters": {
    "ColCoCode": 86,
    "PayerNumber": "NL20016398",
    "AccountNumber": "NL20027701",
    "Filter": "All",
    "FromDate": "2026-01-01",
    "ToDate": "2026-01-31"
  },
  "Page": 1,
  "PageSize": 10
}

Response:

{
  "RequestId": "eb621f45-a543-4d9a-a934-2f223b263c42",
  "Status": "SUCCESS",
  "Page": 1,
  "TotalRecords": 150,
  "TotalPages": 15,
  "PageSize": 10,
  "Data": [
    {
      "NetworkDescription": "Societa Autostradali",
      "TollChargerCode": "410|610",
      "DelcoCode": "714",
      "DelcoName": "Shell Fleet Solutions Consorzio",
      "NetworkCode": "TLI",
      "Network": "euroShell Consortio",
      "PurchasedInCountry": "Italy",
      "PurchasedInCountryCode": "IT",
      "CardNumber": "707737*******334272",
      "CardId": 123456789,
      "CardGroupName": "Shell Fleet Solutions Consorzio",
      "VehicleRegistration": "KN 00000",
      "CostCenter": "100",
      "SystemEntryDate": "20260123",
      "SystemEntryTime": "13:14:25",
      "TransactionDate": "20260120",
      "TransactionTime": "10:30:00",
      "PostingDate": "20260123",
      "PostingTime": "00:00:00",
      "PayerNumber": "NL20016398",
      "AccountNumber": "NL20027701",
      "AccountName": "Test Account Name",
      "StartDate": "20260120",
      "StartTime": "06:47:41",
      "EndDate": "20260120",
      "EndTime": "07:30:15",
      "TollGateEntry": "ROMA NORD",
      "TollGateExit": "BRENNERO",
      "DistanceDriven": "71.6",
      "RouteDescription": "ROMA NORD - BRENNERO",
      "TransactionType": "Road tax",
      "ProductCode": "14",
      "ProductDescription": "Road tax",
      "TransactionNetAmount": "127.1",
      "TransactionTax": "0.0",
      "TransactionGrossAmount": "127.1",
      "TransactionCurrencyCode": "EUR",
      "TransactionStatus": "Reporting",
      "InvoiceNumber": "8600397548",
      "InvoiceDate": "20260125",
      "InvoiceStatus": "Invoiced",
      "PaymentMethod": "Post Pay",
      "OBUSerialNumber": "00049000000836932426",
      "EmissionClass": "Euro 6",
      "ContractID": "fb75eb53-46eb-450b-862e-6045002c3fa8",
      "ShellTransactionID": "04176c5c-e7b2-49c8-bcb3-23d07ba583f2",
      "TollOperator": "Toll4Europe",
      "TollDomain": "Toll4Europe",
      "TariffRelevantInformation": "Vehicle Class: 2, Axle Count: 2, Road Category: Motorway",
      "AdditionalTransactionInfo": "Location:1",
      "TCInvoiceNumber": "12343343",
      "TCInvoiceDate": "20260123"
    }
  ]
}

Example 2: Filter Transactions by Vehicle Registration Number (VRN)

Request:

POST /toll-data/v1/transactions/search

{
  "Filters": {
    "ColCoCode": 86,
    "PayerNumber": "NL20016398",
    "AccountNumber": "NL20027701",
    "Filter": "VehicleRegistration, RouteDescription, TransactionGrossAmount, TransactionDate",
    "FromDate": "2026-01-01",
    "ToDate": "2026-03-31",
    "Search": {
      "VehicleRegistrationNumber": "KN 00000",
      "InvoiceStatus": "All"
    }
  },
  "Page": 1,
  "PageSize": 50
}

Response:

{
  "RequestId": "9d2dee33-7803-485a-a2b1-2c7538e597ee",
  "Status": "SUCCESS",
  "Page": 1,
  "TotalRecords": 45,
  "TotalPages": 1,
  "PageSize": 50,
  "Data": [
    {
      "VehicleRegistration": "KN 00000",
      "RouteDescription": "ROMA NORD - BRENNERO",
      "TransactionGrossAmount": "127.1",
      "TransactionDate": "20260120"
    },
    {
      "VehicleRegistration": "KN 00000",
      "RouteDescription": "MILANO EST - VERONA SUD",
      "TransactionGrossAmount": "85.4",
      "TransactionDate": "20260125"
    }
  ]
}

Example 3: Search by Card Group

Request:

POST /toll-data/v1/transactions/search

{
  "Filters": {
    "ColCoCode": 86,
    "PayerNumber": "NL20016398",
    "AccountNumber": "NL20027701",
    "Filter": "CardGroupName, VehicleRegistration, TransactionGrossAmount, TransactionDate",
    "FromDate": "2026-01-01",
    "ToDate": "2026-01-31",
    "Search": {
      "CardGroup": "Shell Fleet Solutions Consorzio",
      "InvoiceStatus": "All"
    }
  },
  "Page": 1,
  "PageSize": 30
}

Response:

{
  "RequestId": "5f1bded6-416d-4478-ab7f-33905d7b5d4b",
  "Status": "SUCCESS",
  "Page": 1,
  "TotalRecords": 87,
  "TotalPages": 3,
  "PageSize": 30,
  "Data": [
    {
      "CardGroupName": "Shell Fleet Solutions Consorzio",
      "VehicleRegistration": "KN 00000",
      "TransactionGrossAmount": "127.1",
      "TransactionDate": "20260120"
    },
    {
      "CardGroupName": "Shell Fleet Solutions Consorzio",
      "VehicleRegistration": "LM 11111",
      "TransactionGrossAmount": "95.8",
      "TransactionDate": "20260122"
    }
  ]
}

Example 4: Multiple Accounts with Specific Fields

Request:

POST /toll-data/v1/transactions/search

{
  "Filters": {
    "ColCoCode": 86,
    "PayerNumber": "NL20016398",
    "AccountNumber": "NL20027701, NL20027702",
    "Filter": "AccountNumber, AccountName, TransactionDate, TransactionGrossAmount, VehicleRegistration",
    "FromDate": "2026-01-01",
    "ToDate": "2026-01-31"
  },
  "Page": 1,
  "PageSize": 100
}

Response:

{
  "RequestId": "eb621f45-a543-4d9a-a934-2f223b263c42",
  "Status": "SUCCESS",
  "Page": 1,
  "TotalRecords": 245,
  "TotalPages": 3,
  "PageSize": 100,
  "Data": [
    {
      "AccountNumber": "NL20027701",
      "AccountName": "Test Account Name",
      "TransactionDate": "20260120",
      "TransactionGrossAmount": "127.1",
      "VehicleRegistration": "KN 00000"
    },
    {
      "AccountNumber": "NL20027702",
      "AccountName": "Second Account Name",
      "TransactionDate": "20260121",
      "TransactionGrossAmount": "98.5",
      "VehicleRegistration": "PQ 22222"
    }
  ]
}

Error Handling

Common Error Codes

HTTP Status Error Code Description Solution
200 N/A Status: SUCCESS N/A
400 E0001 Validation Error Check request parameters, ensure required fields are provided and valid
401 E0003 Unauthorized Verify OAuth token is valid and not expired
404 E0005 Not Found Verify endpoint URL and resource exists
500 E0002 Unknown Error / Internal Server Error Contact support with RequestId
503 E0012 Service Unavailable / Connectivity Error Retry after some time, if problem persists contact support

Error Response Example

Validation Error (E0001):

{
  "RequestId": "eb621f45-a543-4d9a-a934-2f223b263c42",
  "Status": "FAILED",
  "Errors": [
    {
      "Code": "E0001",
      "Title": "Validation Error",
      "Detail": "Missing / Invalid value(s) for: ColCoCode",
      "AdditionalInfo": null
    }
  ]
}

Unauthorized Error (E0003):

{
  "RequestId": "eb621f45-a543-4d9a-a934-2f223b263c42",
  "Status": "FAILED",
  "Errors": [
    {
      "Code": "E0003",
      "Title": "Unauthorized",
      "Detail": "Supplied credentials are invalid or user does not have access to the operation",
      "AdditionalInfo": null
    }
  ]
}

Best Practices

1. Use OAuth 2.0 Authentication

IMPORTANT: Always use OAuth 2.0 authentication. Implement proper token management:

  • Cache access tokens and reuse until expiry
  • Refresh tokens before they expire (recommended 60 seconds before)
  • Store client credentials securely (use environment variables or secrets manager)
  • Never log or expose access tokens in client-side code

2. Always Include RequestId

Always include a unique RequestId (UUID format) in the header for end-to-end traceability. This is crucial for troubleshooting and support.

3. Implement Error Handling

Implement robust error handling:

  • Check the Status field in every response
  • Log RequestId for troubleshooting
  • Implement retry logic for transient errors (503)
  • Handle validation errors (E0001) by checking input parameters

Support & Resources

Technical Support

Documentation

Getting Help

When contacting support, provide:

  1. Your client_id (never share your client_secret or access tokens)
  2. RequestId from the API response
  3. Timestamp of the request
  4. Environment (Production/Test)
  5. Error codes and messages received

Last Updated: August 4, 2026
Document Version: 1.0
API Version: 1.0.0

About us

The Shell Developer Portal supports partners in onboarding to Shell APIs and turning ideas into production-ready solutions.

 

Shell logo

Contact

Login to your account

Ask AI Assistant about Shell APIs and API Products