Skip to content

Changelog

Chaque entrée dit ce qui change et ce que votre intégration doit faire. Les changements cassants sont signalés comme tels.

04/11/2026 — L'identité complète d'un chauffeur

  • PATCH /v1/accounts/me/subaccounts/{id} accepte et les réponses rendent preferred_language (en, es, fr), driver_card_number, emergency_contact_name, emergency_contact_phone et external_identifier (unique dans le compte : fleet.driver_reference_already_exists sinon).
  • Pour ces champs et driving_license_number, une valeur null ou vide efface la donnée ; un champ omis ne change pas.

04/11/2026 — Le chauffeur, seul compte terrain

  • Cassant — un sous-compte se crée et s'invite en type driver seulement (POST /v1/accounts/me/subaccounts et /subaccounts/invitations). Les types vehicle et warehouse_staff sont retirés ; type vaut driver par défaut et tout autre valeur est refusée (422). type ne se modifie plus par PATCH. Un sous-compte peut encore se lire en type generic : c'est le signataire terrain que la signature AdES enregistre. À faire : envoyez driver, ou n'envoyez pas type.
  • Cassant — linked_subaccount_id est retiré des véhicules, avec le code vehicle.invalid_subaccount_link : il n'est plus rendu, et il est ignoré s'il est envoyé.

04/11/2026 — Retrait du chauffeur de l'annuaire

  • Cassant — /v1/accounts/me/drivers est retiré (les cinq méthodes répondent 404), avec les codes driver.not_found, driver.external_identifier_already_exists et driver.invalid_subaccount_link. Cette fiche n'était lue par rien. À faire : un chauffeur se gère comme sous-compte de type driver (/v1/accounts/me/subaccounts).

21/10/2026 — Vérification d'une signature

  • content_matches_signature (GET .../signatures/{id}/verify) ne signale plus une signature comme « contenu modifié » parce que le transport a avancé : le statut et les dates réelles sont pris tels qu'ils étaient au moment de la signature. Seule une modification du contenu (marchandise, parties, dates prévues…) le fait passer à false.
  • Signature manuscrite : GET .../signatures/{id}/image rend le tracé d'une signature sur écran, en SVG cadré sur le tracé (permission VIEW).
  • Chronologie : GET /v1/freightdocuments/{id}/timeline rend tout ce qui est arrivé au document, trié : création, assignation, chauffeur, signatures, événements de terrain, pièces jointes, commentaires, livraison, archivage. Les entrées du lien d'accès ne sont rendues qu'à l'émetteur.

21/10/2026 — Livré, puis archivé

  • Cassant — DELIVERED est l'état final d'une lettre de voiture. Elle ne passe plus à CLOSED 21 jours après la livraison ; les documents qui portaient CLOSED sont revenus à DELIVERED. À faire : traitez DELIVERED comme la fin du transport.
  • Archivage : POST /v1/freightdocuments/{id}/archive (et /unarchive), réservé à l'émetteur, sur un document livré seulement (freight_document.not_delivered sinon). Le document reste lisible ; archived_at le signale.
  • Cassant — la liste exclut les documents archivés par défaut : GET /v1/freightdocuments?archived=true les liste.

21/10/2026 — Plus d'e-mail sur les parties d'un e-CMR

  • Cassant — email est refusé sur un rôle d'e-CMR (freight_document.invalid_role_assignment), comme sur le DeCA. Une partie est identifiée par son nom, son adresse et son identité fiscale, ou désigne un compte avec account_id. À faire : retirez email de vos rôles.
  • Plus de notification à la création : aucune partie ne reçoit plus l'e-mail « un rôle vous a été attribué », et la flotte n'est plus prévenue d'un document qui ne lui est pas attribué. Seul le chauffeur assigné est notifié.

21/10/2026 — Preuve de la signature sur écran

  • Cassant — signer_attested: true est obligatoire sur POST /v1/signatures/sign-on-glass : le signataire atteste signer lui-même et accepte les procédures e-CMR. Sinon signature.attestation_required (422). À faire : présentez l'attestation au signataire et envoyez le champ.
  • Procédures e-CMR : ecmr_procedures_url et ecmr_procedures_version sur le défi de signature et son contexte. Le PDF officiel les cite.
  • Scellement : chaque signature sur écran est scellée (empreinte du dossier de preuve, cachet de la plateforme, horodatage). GET .../signatures/{id}/verify renvoie seal_hash et seal_intact.
  • Chauffeur : il ne peut plus être changé après sa signature de prise en charge (case 23).

21/10/2026 — Livraison, clôture et mention CMR

  • Cassant — la signature de livraison mène à DELIVERED, plus à CLOSED. Le document reste livré 21 jours, la fenêtre des réserves du destinataire (CMR art. 30), puis passe automatiquement à CLOSED. Un webhook de statut est émis à chacune des deux transitions. À faire : traitez DELIVERED comme « livré », et CLOSED comme la fin définitive.
  • Mention CMR : le PDF officiel porte désormais la mention « soumis à la Convention CMR » (art. 6 §1 k) en trois langues.
  • PDF avant prise en charge : tant que l'expéditeur et le transporteur n'ont pas signé (cases 22 et 23), le PDF porte « En attente des signatures de prise en charge ».
  • Transport direct par votre propre flotte : un SUBSEQUENTCARRIER est refusé (freight_document.invalid_role_addition), à la création comme ensuite.
  • Signature sur écran : la prise en charge du chauffeur (case 23) est rattachée à la session qui l'ouvre, sans téléphone. Le signal signer_phone_unrecognized n'est plus calculé pour une signature sur écran.

21/10/2026 — La lettre de voiture est émise à l'assignation ; signature sur écran sans compte ; suivi client

  • Cassant — POST /v1/freightdocuments/{id}/issue est retiré. Une lettre de voiture passe à ISSUED à la première assignation d'un chauffeur (PATCH .../roles/{roleId}/assign-subaccount, ou driver_phone_number à la création). Ce même appel fige le PDF officiel et facture l'unité du document. À faire : remplacez votre appel issue par l'assignation du chauffeur.
  • PDF officiel et lien public. GET .../pdf sert le PDF figé à l'assignation, puis refigé à chaque signature d'enlèvement, de prise en charge et de livraison. Son QR mène à GET /v1/public/ecmr/{token}, sans authentification. Ajout : rien à faire.
  • Module e-CMR. Créer une lettre de voiture exige que Fincargo ait activé le module ECMR sur votre compte ; sinon account.module_not_enabled (403).
  • Signature sur écran sans compte. phone_number devient facultatif sur POST /v1/signatures/sign-on-glass, et le signataire n'a plus besoin de compte Fincargo. SignatureResponse.signer_subaccount_id peut donc être null ; le nouveau champ signer_declared_name porte le nom déclaré. À faire : acceptez null dans signer_subaccount_id.
  • Suivi client par e-mail. Le nouveau champ facultatif party_tracking (consignor_email, consignee_email, les deux ensemble) à la création d'une lettre de voiture envoie à l'expéditeur et au destinataire un e-mail à l'enlèvement et un autre à la livraison, avec le détail du transport et le lien vers le PDF officiel. Gratuit. Ajout : rien à faire.
  • Lien d'accès du chauffeur. POST /v1/freightdocuments/{id}/roles/{roleId}/access-link remet au chauffeur de votre flotte, déjà assigné, un lien qui ouvre ce seul document sans connexion ; .../access-link/whatsapp l'envoie par WhatsApp (facturé s'il est accepté). Le lien cesse d'ouvrir le document quand il est remplacé, quand le chauffeur change ou quand le transport est terminé. Ajout : rien à faire.
  • Signature renforcée (AdES) fermée à la création pour l'instant : signature_mechanism: "ADES" est refusé (freight_document.signature_mechanism_not_settable). Les documents AdES existants restent signables.

Voir L'émission et Signature électronique.

20/10/2026 — Vos chauffeurs par l'API, désignés par votre référence

  • GET /v1/fleet/drivers, GET /v1/fleet/drivers/{id} : vos chauffeurs, lisibles par clé API (droit directory:read).
  • PATCH /v1/fleet/drivers/{id} : posez votre référence TMS sur un chauffeur (external_identifier, unique dans votre compte).
  • driver_ref désigne un chauffeur par cette référence à la création d'un DeCa, à son attribution, au changement de chauffeur et à l'attribution d'une tournée. Ajout : rien à faire.

Voir Vos chauffeurs.

20/10/2026 — Le contrat OpenAPI publié en production

  • https://ecmr.fincargo.ai/openapi.json et /redoc sont désormais servis en production, comme en test. Swagger (/docs) reste réservé à l'environnement de test.
  • Les routes de la console interne Fincargo ne figurent plus dans le schéma : elles ne font pas partie du contrat d'intégration.

Voir Environnements.

20/10/2026 — Droits des clés et plafond d'appels

  • Les clés API et les clients OAuth2 portent des droits (scopes) par famille : deca, directory, ecmr, account, en :read ou :write. Les clés et clients existants ont reçu tous les droits : rien ne change pour eux.
  • Changement cassant (création de client OAuth2) : accounts:read n'est plus accepté à la création — utilisez les nouveaux scopes, ou omettez scopes pour tous les droits. Un jeton déjà émis avec accounts:read reste valable (il ouvre tout) jusqu'à son expiration.
  • Plafond de 600 appels par minute et par compte, avec les en-têtes RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, et 429 + Retry-After au-delà.

Voir Authentification.

20/10/2026 — Statut, actions possibles et rattrapage (DeCa)

  • Nouveau champ status sur chaque DeCa : draft, awaiting_vehicle, issued, finished, deletion_requested, deleted, superseded, cancelled. Ajout : rien à faire.
  • Nouveau champ available_actions, rempli par la lecture d'un document et par la création, null dans la liste.
  • Nouveaux filtres de liste : status (répétable), updated_since, external_identifier. Avec l'un d'eux et sans archived, la recherche porte sur les deux côtés de la ligne d'archivage ; sans eux, la liste ne change pas.

Voir Cycle de vie d'un DeCa.

20/10/2026 — Références par compte et rejeux sans effet (DeCa)

  • external_identifier d'un DeCa : unique dans votre compte, et non plus sur toute la plateforme. Assouplissement : rien à faire.
  • Le refus d'une création rejouée porte existing_id, l'identifiant du document déjà créé (control_document.external_identifier_already_exists), ou de la tournée (tour.reference_already_exists). Nouveau champ facultatif dans le corps d'erreur : rien à faire, sauf pour en profiter.
  • Rejouer la même assignation réussit (assign-subaccount, POST /v1/tours/{id}/assignment, POST /v1/tours/{id}/send) : 200 et la ressource, au lieu d'un 400. Changement de comportement : si votre intégration interprétait ce 400 comme « déjà fait », elle reçoit désormais directement le résultat.
  • Un document remplacé garde l'external_identifier de l'original.

Voir Références et rejeux.

08/10/2026 — Annuaire : linked_account_id en lecture seule

  • Changement cassant : linked_account_id n'est plus accepté à la création ni à la modification d'une fiche partenaire ; une valeur envoyée est ignorée. Il reste dans les réponses, posé uniquement par l'acceptation d'une mise en relation entre deux comptes.

16/09/2026 — e-CMR : mécanisme de signature obligatoire

  • Changement cassant : POST /v1/freightdocuments exige signature_mechanism (SIGN_ON_GLASS ou ADES). Sans lui, la création est refusée (freight_document.signature_mechanism_required, 400). Il n'y a pas de valeur par défaut, et le choix est figé pour la vie du document.

Version initiale

L'API e-CMR telle que publiée à l'ouverture du portail partenaires.