API Shell B2B Mobility pour les données de transactions de péage - Guide de démarrage rapide
Version de l'API : 1.0.0 | Authentification : OAuth 2.0 | Statut : Production
Présentation
L'API Shell B2B Mobility « Données de transactions de péage » est une API basée sur REST qui offre un accès complet aux enregistrements de transactions de péage et aux données associées pour les clients de Shell Mobility. Cette API permet aux développeurs de récupérer, filtrer et analyser par programmation les données de transactions de péage à des fins de rapprochement comptable, de vérification de facturation, de gestion des dépenses et de conformité réglementaire.
Principales fonctionnalités
- Récupérer les données de transactions de péage par numéro de compte
- Filtrer les transactions par plage de dates (dates de début et de fin)
- Recherche par statut de facture et numéro d'immatriculation du véhicule (VRN)
- Fonctionnalités de tri avancées sur plusieurs champs
- Prise en charge de la pagination pour les grands ensembles de données
- Filtrage flexible des champs pour optimiser la charge utile de la réponse
- Détails complets sur les péages, y compris les points d’entrée etde sortie
- Prise en charge de plusieurs réseaux et opérateurs de péage
Authentification
OAuth 2.0 (méthode d’authentification standard)
L’API Shell Toll Transaction Data utilise le flux « Client Credentials » d’OAuth 2.0 pour une authentification sécurisée.
Flux OAuth 2.0
Étape 1 : Obtenir un jeton d’accès
Demander un jeton d’accès au point de terminaison de jetons OAuth:
POST /oauth/token Content-Type: application/x-www-form-urlencoded grant_type=client_credentials&client_id=votre-id-client&client_secret=votre-secret-client
Étape 2 : Utiliser le jeton d’accès dans les requêtes API
Authorization: Bearer Content-Type: application/json RequestId : eb621f45-a543-4d9a-a934-2f223b263c42
Gestion des jetons
Meilleures pratiques en matière de gestion des jetons :
- Les jetons d’accès ont une durée de vie limitée (généralement 15 minutes)
- Mettez en place une mise en cache des jetons pour éviter les requêtes inutiles
- Actualisez les jetons avant leur expiration pour garantir un service ininterrompu
- Ne partagez jamais votre client_secret et ne l’intégrez jamais dans du code côté client
Environnements
L’API est disponible dans deux environnements :
| Environnement | URL de base | Objectif |
|---|---|---|
| Production | https://api.shell.com/toll-data/v1 | Environnement de production en direct |
| Test (UAT) | https://api-test.shell.com/toll-data/v1 | Environnement de test et de développement |
URL des jetons OAuth :
| Environnement | URL du jeton |
|---|---|
| Production | https://api.shell.com/v2/oauth/token |
| Test (UAT) | https://api-test.shell.com/v2/oauth/token |
Conseil : Testez toujours votre intégration dans l’environnement de test avant de passer en production.
Démarrage rapide
1. Obtenez vos identifiants OAuth
- Contactez le support technique de Shell
- Demandez des identifiants OAuth 2.0 (client_id et client_secret)
- Consultez les conditions d’utilisation
2. Obtenir un jeton d’accès
Commencez par obtenir votre jeton d’accès OAuth :
Exemple avec cURL :
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=votre-id-client&client_secret=votre-secret-client"
Réponse :
{
"access_token": "eyJhbGciOi*******5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 899
}3. Effectuez votre première requête API
Exemple : recherche de transactions de péage
Exemple avec cURL :
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
}'Exemple de réponse :
{
« 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",
"NomDelco" : "Shell Fleet Solutions Consorzio",
"CodeRéseau" : "TLI",
"Réseau" : "euroShell Consortio",
"PaysD'achat" : "Italie",
« PurchasedInCountryCode » : « IT »,
« CardNumber » : « 707737*******334272 »,
« CardId » : 123456789,
« CardGroupName » : « Shell Fleet Solutions Consorzio »,
"Immatriculation du véhicule" : "KN 00000",
"Centre de coûts" : "100",
"Date de saisie dans le système" : "20260123",
"Heure de saisie dans le système" : "13:14:25",
« TransactionDate » : « 20260120 »,
« TransactionTime » : « 10:30:00 »,
« PostingDate » : « 20260123 »,
"Heure de comptabilisation" : "00:00:00",
"Numéro du payeur" : "NL20016398",
"Numéro de compte" : "NL20027701",
"Nom du compte" : "Nom du compte test",
"DateDeDébut" : "20260120",
"HeureDeDébut" : "06:47:41",
"DateDeFin" : "20260120",
"HeureDeFin" : "07:30:15",
"Point d'entrée du péage" : "ROMA NORD",
"Point de sortie du péage" : "BRENNERO",
"Distance parcourue" : "71,6",
"Description de l'itinéraire" : "ROMA NORD - BRENNERO",
"TypeDeTransaction" : "Péage routier",
"CodeProduit" : "14",
"DescriptionProduit" : "Péage routier",
"MontantNetDeLaTransaction" : "127,1",
"TaxeDeLaTransaction" : "0,0",
« Montant brut de la transaction » : « 127,1 »,
« Code de devise de la transaction » : « EUR »,
« Statut de la transaction » : « Déclaration »,
« Numéro de facture » : « 8600397548 »,
"DateDeFacture" : "20260125",
"InvoiceStatus" : "Facturé",
"PaymentMethod" : "Paiement différé",
"OBUSerialNumber" : "00049000000836932426",
"EmissionClass" : "Euro 6",
"ContractID" : "fb75eb53-46eb-450b-862e-6045002c3fa8",
"ShellTransactionID" : "04176c5c-e7b2-49c8-bcb3-23d07ba583f2",
"TollOperator" : "Toll4Europe",
"TollDomain" : "Toll4Europe",
"TariffRelevantInformation" : "Classe de véhicule : 2, Nombre d'essieux : 2, Catégorie de route : Autoroute",
"AdditionalTransactionInfo" : "Emplacement : 1",
"TCInvoiceNumber" : "12343343",
« TCInvoiceDate » : « 20260123 »
}
]
}Référence des points de terminaison API
Transactions de péage
| Point de terminaison | Méthode | Description |
|---|---|---|
| /toll-data/v1/transactions/search | POST | Récupérer les données des transactions de péage avec filtrage et pagination flexibles |
Cas d’utilisation courants :
- Récupérer les transactions de péage par plage de dates
- Filtrer par statut de facturation (Facturées, Non facturées, Toutes)
- Recherche par numéro d’immatriculation du véhicule (VRN)
- Filtrer par groupe de cartes
- Trier les transactions selon plusieurs critères
- Sélectionner des champs spécifiques pour optimiser la taille de la réponse
Cas d’utilisation courants
Cette section met en correspondance des scénarios métier courants avec des modèles d’utilisation de l’API afin de vous aider à déterminer comment utiliser l’API en fonction de vos besoins spécifiques.
Cas d’utilisation n° 1 : Rapprochement quotidien des transactions de péage
Scénario : Vous devez rapprocher quotidiennement toutes les transactions de péage de votre flotte à des fins comptables.
API recommandée : /toll-data/v1/transactions/search
Pourquoi cette API : Ce point de terminaison fournit des détails complets sur les transactions de péage avec un filtrage flexible par date, prend en charge à la fois les transactions facturées et non facturées, et inclut une pagination pour les grands ensembles de données. Idéal pour les workflows de rapprochement quotidiens.
Paramètres clés :
FromDateetToDate- À définir sur la date d’hier pour le rapprochement quotidienRecherche.InvoiceStatus- Utilisez « All » pour inclure à la fois les transactions facturées et non facturéesPageSize- Définissez la valeur sur 100 pour une récupération efficace des donnéesFiltre- Utilisez « Tout » pour obtenir les détails complets des transactions
Cas d’utilisation n° 2 : validation et vérification des factures
Scénario : Vous avez reçu une facture et devez vérifier tous les détails et montants des transactions de péage.
API recommandée : /toll-data/v1/transactions/search
Pourquoi cette API : L’API fournit des informations détaillées sur les transactions de péage, notamment les numéros de facture, les dates, les montants et les détails du réseau de péage. Elle est idéale pour la validation des factures car elle correspond à la structure de celles-ci.
Paramètres clés :
Search.InvoiceStatus- Définissez la valeur sur « Invoiced» pour ne récupérer que les transactions facturéesFromDateetToDate– À définir sur les dates de la période de facturationFiltre– Spécifiez des champs tels que « InvoiceNumber, InvoiceDate, TransactionGrossAmount » pour une validation ciblée
Cas d’utilisation n° 3 : Analyse de l’utilisation des péages par les véhicules de la flotte
Scénario : Vous devez analyser les habitudes d’utilisation des péages pour des véhicules spécifiques de votre flotte afin d’optimiser les itinéraires et de réduire les coûts liés aux péages.
API recommandée : /toll-data/v1/transactions/search
Pourquoi cette API : L’API permet de filtrer par numéro d’immatriculation du véhicule (VRN) et fournit des informations détaillées sur l’itinéraire, notamment les points d’entrée et de sortie, la distance parcourue et les frais de péage. Idéale pour une analyse au niveau du véhicule.
Paramètres clés :
Search.VehicleRegistrationNumber- Spécifiez le VRN à analyserFromDateetDate de fin- Définissez la période d’analyse (par exemple, les 30 derniers jours)Option de tri- Utilisez 1 (date de transaction par ordre croissant) pour une analyse chronologiqueFiltre- Inclure des champs tels que « RouteDescription, DistanceDriven, TollGateEntry, TollGateExit, TransactionGrossAmount »
Cas d’utilisation n° 4 : Suivi des dépenses par groupe de cartes
Scénario : Vous gérez plusieurs groupes de cartes et devez suivre les dépenses de péage par groupe de cartes à des fins d’allocation budgétaire et de reporting par centre de coûts.
API recommandée : /toll-data/v1/transactions/search
Pourquoi cette API : L’API prend en charge le filtrage par groupe de cartes et inclut des informations sur les centres de coûts, ce qui la rend idéale pour le suivi des dépenses et le reporting au niveau des groupes de cartes.
Paramètres clés :
Search.CardGroup- Spécifiez le nom du groupe de cartes ou utilisez « All » pour tous les groupesFromDateetDateDeFin- Définissez la période de reportingFiltre- Inclure « CardGroupName, CostCenter, TransactionGrossAmount, TransactionNetAmount, TransactionTax »Option de tri- Utilisez 3 (montant de la transaction par ordre croissant) pour l’analyse des dépenses
Cas d’utilisation n° 5 : rapports de péage multi-comptes
Scénario : Vous gérez plusieurs comptes et devez générer des rapports de péage consolidés pour l’ensemble de ces comptes.
API recommandée : /toll-data/v1/transactions/search
Pourquoi cette API : L’API permet d’interroger plusieurs comptes (2 à 5 recommandés) en une seule requête, ce qui réduit le nombre d’appels API et améliore les performances dans les scénarios multi-comptes.
Paramètres clés :
AccountNumber- Indiquez les numéros de compte séparés par des virgules (2 à 5 au maximum pour des performances optimales)FromDateetToDate- Définissez la période de rapportPageSize- Utilisez des tailles de page plus importantes (par exemple, 100 à 500) pour de meilleures performances
Cas d’utilisation n° 6 : Suivi des transactions non facturées
Scénario : Vous souhaitez surveiller les transactions de péage non facturées afin de prévoir les factures à venir et de gérer votre trésorerie.
API recommandée : /toll-data/v1/transactions/search
Pourquoi cette API : L’API permet de filtrer par statut de facturation, ce qui facilite l’identification des transactions non facturées et l’estimation des frais à venir.
Paramètres clés :
Search.InvoiceStatus- À définir sur « Non facturé » pour les frais en attenteFromDateetToDate- Définir sur la période de facturation en coursFiltre- Inclure « TransactionDate, TransactionGrossAmount, AccountNumber, VehicleRegistration »
Cas d’utilisation n° 7 : Analyse de l’utilisation du réseau de péage
Scénario : Vous devez analyser quels réseaux de péage et quels opérateurs votre flotte utilise le plus fréquemment afin de négocier de meilleurs tarifs ou d’optimiser les itinéraires.
API recommandée : /toll-data/v1/transactions/search
Pourquoi cette API : L’API fournit des informations détaillées sur les réseaux à péage, notamment la description du réseau, l’opérateur de péage, le code du percepteur de péage et le code du réseau, ce qui est idéal pour l’analyse de l’utilisation des réseaux.
Paramètres clés :
FromDateetToDate- À définir en fonction de la période d’analyse (par exemple, trimestrielle)Filtre- Inclure « NetworkDescription, TollOperator, TollChargerCode, Network, TransactionGrossAmount »Taille de la page- Utiliser une taille de page plus grande pour une extraction complète des données
Exemples d’utilisation
Exemple 1 : Recherche de transactions de péage par compte et plage de dates
Requête :
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
}Réponse :
{
"RequestId" : "eb621f45-a543-4d9a-a934-2f223b263c42",
"Status" : "SUCCESS",
"Page" : 1,
"TotalRecords" : 150,
"TotalPages" : 15,
"PageSize" : 10,
"Data" : [
{
"NetworkDescription" : "Societa Autostradali",
"TollChargerCode" : "410|610",
"CodeDelco" : "714",
"NomDelco" : "Shell Fleet Solutions Consorzio",
"CodeRéseau" : "TLI",
« Network » : « euroShell Consortio »,
« PurchasedInCountry » : « Italy »,
« PurchasedInCountryCode » : « IT »,
« CardNumber » : « 707737*******334272 »,
"CardId" : 123456789,
"CardGroupName" : "Shell Fleet Solutions Consorzio",
"VehicleRegistration" : "KN 00000",
"CostCenter" : "100",
« Date de saisie dans le système » : « 20260123 »,
« Heure de saisie dans le système » : « 13:14:25 »,
« Date de la transaction » : « 20260120 »,
"HeureDeTransaction" : "10:30:00",
"DateDeComptabilisation" : "23/01/2026",
"HeureDeComptabilisation" : "00:00:00",
"NuméroDePayeur" : "NL20016398",
"NuméroDeCompte" : "NL20027701",
"NomDuCompte" : "Nom du compte test",
"DateDeDébut" : "20260120",
« StartTime » : « 06:47:41 »,
« EndDate » : « 20260120 »,
« EndTime » : « 07:30:15 »,
« TollGateEntry » : « ROMA NORD »,
"TollGateExit" : "BRENNERO",
"DistanceDriven" : "71,6",
"RouteDescription" : "ROMA NORD - BRENNERO",
"TransactionType" : "Péage routier",
"CodeProduit" : "14",
"DescriptionProduit" : "Péage routier",
"MontantNetTransaction" : "127,1",
"TaxeTransaction" : "0,0",
"MontantBrutTransaction" : "127,1",
"CodeDeviseTransaction" : "EUR",
"StatutTransaction" : "Déclaration",
"NuméroDeFacture" : "8600397548",
"DateDeFacture" : "20260125",
"InvoiceStatus" : "Facturé",
"PaymentMethod" : "Paiement différé",
"OBUSerialNumber" : "00049000000836932426",
"EmissionClass" : "Euro 6",
"ContractID" : "fb75eb53-46eb-450b-862e-6045002c3fa8",
"ShellTransactionID" : "04176c5c-e7b2-49c8-bcb3-23d07ba583f2",
"TollOperator" : "Toll4Europe",
"TollDomain" : "Toll4Europe",
"TariffRelevantInformation" : "Catégorie de véhicule : 2, Nombre d'essieux : 2, Catégorie de route : Autoroute",
"AdditionalTransactionInfo" : "Emplacement : 1",
"TCInvoiceNumber" : "12343343",
"TCInvoiceDate": "20260123"
}
]
}Exemple 2 : Filtrer les transactions par numéro d'immatriculation du véhicule (VRN)
Requête :
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
}Réponse :
{
"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"
},
{
"Immatriculation du véhicule" : "KN 00000",
"DescriptionDeL'Itinéraire" : "MILAN EST - VÉRONE SUD",
"MontantBrutDeLaTransaction" : "85,4",
"DateDeLaTransaction" : "20260125"
}
]
}Exemple 3 : Recherche par groupe de cartes
Requête :
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
}Réponse :
{
"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",
"DateDeTransaction" : "20260120"
},
{
"NomDuGroupeDeCartes" : "Shell Fleet Solutions Consorzio",
"NuméroD'immatriculationDuVéhicule" : "LM 11111",
"MontantBrutDeLaTransaction" : "95,8",
"DateDeLaTransaction" : "20260122"
}
]
}Exemple 4 : plusieurs comptes avec des champs spécifiques
Requête :
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
}Réponse :
{
"RequestId": "eb621f45-a543-4d9a-a934-2f223b263c42",
"Status" : "SUCCESS",
"Page" : 1,
"TotalRecords" : 245,
"TotalPages" : 3,
"PageSize" : 100,
"Data": [
{
"AccountNumber": "NL20027701",
"AccountName": "Nom du compte test",
"TransactionDate": "20260120",
"MontantBrutDeLaTransaction" : "127,1",
"NuméroD'immatriculationDuVéhicule" : "KN 00000"
},
{
"NuméroDeCompte" : "NL20027702",
"NomDuCompte" : "Nom du deuxième compte",
"DateDeTransaction" : "20260121",
"MontantBrutDeLaTransaction" : "98,5",
"NuméroD'immatriculationDuVéhicule" : "PQ 22222"
}
]
}Gestion des erreurs
Codes d’erreur courants
| Statut HTTP | Code d’erreur | Description | Solution |
|---|---|---|---|
| 200 | N/A | Statut : SUCCÈS | N/A |
| 400 | E0001 | Erreur de validation | Vérifiez les paramètres de la requête, assurez-vous que les champs obligatoires sont renseignés et valides |
| 401 | E0003 | Non autorisé | Vérifiez que le jeton OAuth est valide et n’a pas expiré |
| 404 | E0005 | Introuvable | Vérifiez que l’URL du point de terminaison et la ressource existent |
| 500 | E0002 | Erreur inconnue / Erreur interne du serveur | Contactez l’assistance en indiquant l’identifiant de la requête (RequestId) |
| 503 | E0012 | Service indisponible / Erreur de connectivité | Réessayez plus tard ; si le problème persiste, contactez l’assistance |
Exemple de réponse d’erreur
Erreur de validation (E0001) :
{
"RequestId" : "eb621f45-a543-4d9a-a934-2f223b263c42",
"Status" : "FAILED",
"Errors": [
{
"Code": "E0001",
"Title": "Erreur de validation",
"Detail": "Valeur(s) manquante(s) ou non valide(s) pour : ColCoCode",
"AdditionalInfo": null
}
]
}Erreur d'accès non autorisé (E0003) :
{
"RequestId" : "eb621f45-a543-4d9a-a934-2f223b263c42",
"Status" : "FAILED",
"Errors" : [
{
"Code" : "E0003",
"Title": "Non autorisé",
"Detail": "Les identifiants fournis ne sont pas valides ou l'utilisateur n'a pas accès à l'opération",
"AdditionalInfo": null
}
]
}Bonnes pratiques
1. Utilisez l’authentification OAuth 2.0
IMPORTANT : Utilisez toujours l’authentification OAuth 2.0. Mettez en place une gestion appropriée des jetons :
- Mettez en cache les jetons d’accès et réutilisez-les jusqu’à leur expiration
- Actualiser les jetons avant leur expiration (recommandé 60 secondes avant)
- Stocker les identifiants client en toute sécurité (utilisez des variables d’environnement ou un gestionnaire de secrets)
- Ne jamais enregistrer ni exposer les jetons d’accès dans le code côté client
2. Toujours inclure un RequestId
Toujours inclure un RequestId unique (au format UUID) dans l’en-tête pour assurer la traçabilité de bout en bout. C’est essentiel pour le dépannage et l’assistance.
3. Mettre en place une gestion des erreurs
Mettre en place une gestion robuste des erreurs :
- Vérifiez le champ « Status » dans chaque réponse
- Enregistrez l’identifiant de requête (RequestId) à des fins de dépannage
- Mettre en place une logique de réessai pour les erreurs transitoires (503)
- Gérer les erreurs de validation (E0001) en vérifiant les paramètres d’entrée
Assistance et ressources
Assistance technique
- Assistance : Assistance technique Shell
- E-mail : api@shell.com
Documentation
Obtenir de l’aide
Lorsque vous contactez l’assistance, veuillez fournir :
- Votre client_id (ne communiquez jamais votre client_secret ni vos jetons d’accès)
- l'identifiant de requête (RequestId) figurant dans la réponse de l’API
- Horodatage de la requête
- Environnement (Production/Test)
- Codes d’erreur et messages reçus
Dernière mise à jour : 4 août 2026
Version du document : 1.0
Version de l’API : 1.0.0
