"$schema": https://json-schema.org/draft/2020-12/schema
title: Road Consignment Note (CMR)
description: A transport document issued under the Convention on the Contract for the International Carriage of Goods by Road (CMR) evidencing the contract of carriage between the consignor and the carrier for cross-border road freight.
type: object
required:
  - "@context"
  - type
  - credentialSchema
  - issuer
  - credentialSubject
properties:
  "@context":
    type: string
    format: uri
    description: 'Linked Data context for semantic interoperability'
    const: "https://un.opensource.unicc.org/unece/uncefact/spec-unvtd/road-consignment-note-context.json"
  type:
    type: array
    description: 'Credential types'
    items:
      type: string
      enum:
        - VerifiableCredential
        - RoadConsignmentNote
    minItems: 2
    maxItems: 2
    example:
      - VerifiableCredential
      - RoadConsignmentNote
  credentialSchema:
    type: object
    description: 'Reference to the credential schema for validation'
    properties:
      id:
        type: string
        format: uri
        const: "https://un.opensource.unicc.org/unece/uncefact/spec-unvtd/road-consignment-note-schema.yaml"
        description: 'Public location of the schema'
      type:
        type: string
        const: "JsonSchema"
        description: 'Schema type identifier'
    required:
      - id
      - type
  id:
    type: string
    format: uri
    description: 'Unique identifier for the credential'
    example: "urn:uuid:cmr-2025-fr-001234"
  validFrom:
    example: 2025-03-10T00:00:00Z
    type: string
    format: date-time
    description: 'Credential validity start date'
  validTo:
    example: 2026-03-10T00:00:00Z
    type: string
    format: date-time
    description: 'Credential validity end date'
  issuer:
    description: 'Identifier of the consignor issuing the road consignment note (e.g., DID)'
    type: string
    format: uri
    example: did:web:surfpro-europe.example.com
  credentialSubject:
    name: RoadConsignmentNote
    description: 'Road consignment note (CMR) details'
    type: object
    required:
      - documentIdentifier
      - issueDate
      - deliveryDate
      - consignmentLoadingDate
      - buyer
      - carrier
      - consignee
      - consignor
      - issuerDrawer
      - deliveryLocation
      - destinationCountry
      - baseportUnloadingLocation
      - placeOfIssue
      - grossWeight
      - volume
      - descriptionOfGoods
      - transportMeansIdentifier
      - vehicleRegistrationNumber
      - transportEquipmentIdentifier
    properties:
      documentIdentifier:
        example: CMR-2025-FR-001234
        type: string
        description: Reference number identifying the road consignment note.
      issueDate:
        example: '2025-03-10T00:00:00Z'
        type: string
        format: date-time
        description: Date that the road consignment note was issued.
      deliveryDate:
        example: '2025-03-13T00:00:00Z'
        type: string
        format: date-time
        description: Date on which the goods are to be delivered to the consignee.
      consignmentLoadingDate:
        example: '2025-03-10T08:00:00Z'
        type: string
        format: date-time
        description: Date when the consignment is loaded onto the road vehicle.
      bookingReferenceNumber:
        example: TRK-2025-FR-001234
        type: string
        description: Reference number assigned to identify the transport booking.
      houseWaybillDocumentIdentifier:
        example: GFS-HAWB-2025-001
        type: string
        description: Reference number of the house waybill issued by the freight forwarder.
      customsDeclarationReference:
        example: FR-EX-2025-001234
        type: string
        description: Reference number of the associated customs declaration.
      consignmentNoteNumber:
        example: CNOTE-2025-FR-001
        type: string
        description: Reference number of the associated transport contract or consignment note.
      ucr:
        example: FR2025SURF001234
        type: string
        description: Unique Consignment Reference identifying the consignment.
      invoiceNumber:
        example: INV-2025-031-001
        type: string
        description: Reference number of the commercial invoice for the goods.
      freightForwarderReferenceNumber:
        example: GFS-FR-2025-001234
        type: string
        description: Reference number assigned by the freight forwarder to the consignment.
      certificateNumber:
        example: CoO-FR-2025-001
        type: string
        description: Reference number of an associated certificate of origin.
      actualArrivalDate:
        example: '2025-03-13T14:00:00Z'
        type: string
        format: date-time
        description: Actual date and time of arrival of the vehicle at the delivery location.
      latestPickupDate:
        example: '2025-03-10T10:00:00Z'
        type: string
        format: date-time
        description: Latest date by which the goods must be collected from the consignor.
      despatchDate:
        example: '2025-03-10T09:00:00Z'
        type: string
        format: date-time
        description: Date when the goods are despatched from the place of taking over.
      estimatedTimeOfDeparture:
        example: '2025-03-10T09:00:00Z'
        type: string
        format: date-time
        description: Estimated date and time of departure of the vehicle.
      actualDepartureDate:
        example: '2025-03-10T09:30:00Z'
        type: string
        format: date-time
        description: Actual date and time of departure of the vehicle.
      estimatedTimeOfArrival:
        example: '2025-03-13T12:00:00Z'
        type: string
        format: date-time
        description: Estimated date and time of arrival of the vehicle at the delivery location.
      consignor:
        description: Party consigning the goods for road carriage.
        type: object
        properties:
          type:
            type: string
            default: Consignor
            enum:
            - Consignor
          id:
            example: did:web:surfpro-europe.example.com
            type: string
            format: uri
            description: A unique party identifier.
          name:
            example: SurfPro Europe SARL
            type: string
            description: Trade party name.
          street:
            example: 24 Rue du Port
            type: string
            description: The street component of the address.
          city:
            example: Bordeaux
            type: string
            description: The city component of the address.
          zip:
            example: 33000
            type: number
            description: Postal code.
          country:
            example: FR
            type: string
            description: Country.
      consignee:
        description: Party to which the goods are consigned for road delivery.
        type: object
        properties:
          type:
            type: string
            default: Consignee
            enum:
            - Consignee
          id:
            example: did:web:waveridersports-de.example.com
            type: string
            format: uri
            description: A unique party identifier.
          name:
            example: Wave Rider Sports GmbH
            type: string
            description: Trade party name.
          street:
            example: 88 Hafenstrasse
            type: string
            description: The street component of the address.
          city:
            example: Hamburg
            type: string
            description: The city component of the address.
          zip:
            example: 20457
            type: number
            description: Postal code.
          country:
            example: DE
            type: string
            description: Country.
      buyer:
        description: Party to which merchandise is sold.
        type: object
        properties:
          type:
            type: string
            default: Buyer
            enum:
            - Buyer
          id:
            example: did:web:waveridersports-de.example.com
            type: string
            format: uri
            description: A unique party identifier.
          name:
            example: Wave Rider Sports GmbH
            type: string
            description: Trade party name.
          country:
            example: DE
            type: string
            description: Country.
      carrier:
        description: Party providing the road transport of goods.
        type: object
        properties:
          type:
            type: string
            default: Carrier
            enum:
            - Carrier
          id:
            example: did:web:transeurope-freight.example.com
            type: string
            format: uri
            description: A unique party identifier.
          name:
            example: TransEurope Freight GmbH
            type: string
            description: Trade party name.
          street:
            example: 12 Industriestrasse
            type: string
            description: The street component of the address.
          city:
            example: Cologne
            type: string
            description: The city component of the address.
          zip:
            example: 50667
            type: number
            description: Postal code.
          country:
            example: DE
            type: string
            description: Country.
      issuerDrawer:
        description: Party issuing or completing the road consignment note (typically the consignor).
        type: object
        properties:
          type:
            type: string
            default: IssuerDrawer
            enum:
            - IssuerDrawer
          id:
            example: did:web:surfpro-europe.example.com
            type: string
            format: uri
            description: A unique party identifier.
          name:
            example: SurfPro Europe SARL
            type: string
            description: Trade party name.
          country:
            example: FR
            type: string
            description: Country.
      deliveryParty:
        description: Party to whom the goods are to be physically delivered (if different from consignee).
        type: object
        properties:
          type:
            type: string
            default: DeliveryParty
            enum:
            - DeliveryParty
          id:
            example: did:web:waveridersports-de.example.com
            type: string
            format: uri
            description: A unique party identifier.
          name:
            example: Wave Rider Sports GmbH
            type: string
            description: Trade party name.
          country:
            example: DE
            type: string
            description: Country.
      freightForwarder:
        description: Party arranging road transport on behalf of the consignor.
        type: object
        properties:
          type:
            type: string
            default: FreightForwarder
            enum:
            - FreightForwarder
          id:
            example: did:web:gfs-france.example.com
            type: string
            format: uri
            description: A unique party identifier.
          name:
            example: Global Freight Solutions France SARL
            type: string
            description: Trade party name.
          country:
            example: FR
            type: string
            description: Country.
      notifyParty:
        description: Party to be notified of the cargo's arrival.
        type: object
        properties:
          type:
            type: string
            default: NotifyParty
            enum:
            - NotifyParty
          id:
            example: did:web:waveridersports-de.example.com
            type: string
            format: uri
            description: A unique party identifier.
          name:
            example: Wave Rider Sports GmbH
            type: string
            description: Trade party name.
          country:
            example: DE
            type: string
            description: Country.
      despatchPickupParty:
        description: Party responsible for despatching or picking up the goods.
        type: object
        properties:
          type:
            type: string
            default: DespatchPickupParty
            enum:
            - DespatchPickupParty
          id:
            example: did:web:surfpro-europe.example.com
            type: string
            format: uri
            description: A unique party identifier.
          name:
            example: SurfPro Europe SARL
            type: string
            description: Trade party name.
          country:
            example: FR
            type: string
            description: Country.
      warehouse:
        description: Warehouse where goods are stored in connection with the road carriage.
        type: object
        properties:
          type:
            type: string
            default: Warehouse
            enum:
            - Warehouse
          id:
            example: did:web:bordeaux-warehouse.example.com
            type: string
            format: uri
            description: A unique party identifier.
          name:
            example: Bordeaux Logistics Centre
            type: string
            description: Warehouse name.
          country:
            example: FR
            type: string
            description: Country.
      emergencyContact:
        description: Emergency contact party for dangerous goods incidents.
        type: object
        properties:
          name:
            example: SurfPro Europe Emergency Response
            type: string
            description: Emergency contact name.
          phone:
            example: "+33-5-56-00-0000"
            type: string
            description: Emergency contact telephone number.
      placeOfIssue:
        description: Location where the road consignment note was issued.
        type: object
        properties:
          city:
            example: Bordeaux
            type: string
            description: City.
          country:
            example: FR
            type: string
            description: Country.
      placeOfTakingOver:
        description: Place where the carrier takes over the goods from the consignor.
        type: object
        properties:
          name:
            example: SurfPro Europe SARL Warehouse
            type: string
            description: Location name.
          city:
            example: Bordeaux
            type: string
            description: City.
          country:
            example: FR
            type: string
            description: Country.
      originalLoadingLocation:
        description: Original location where the goods were loaded onto the road vehicle.
        type: object
        properties:
          name:
            example: SurfPro Europe SARL Warehouse
            type: string
            description: Location name.
          city:
            example: Bordeaux
            type: string
            description: City.
          country:
            example: FR
            type: string
            description: Country.
      despatchLocation:
        description: Place from which the goods are despatched.
        type: object
        properties:
          city:
            example: Bordeaux
            type: string
            description: City.
          country:
            example: FR
            type: string
            description: Country.
      placeOfDeparture:
        description: Place from which the road vehicle departs.
        type: object
        properties:
          city:
            example: Bordeaux
            type: string
            description: City.
          country:
            example: FR
            type: string
            description: Country.
      originCountry:
        example: FR
        type: string
        description: Country of origin of the goods.
      deliveryLocation:
        description: Location to which the goods are to be delivered.
        type: object
        properties:
          name:
            example: Wave Rider Sports GmbH Warehouse
            type: string
            description: Location name.
          street:
            example: 88 Hafenstrasse
            type: string
            description: Street address.
          city:
            example: Hamburg
            type: string
            description: City.
          zip:
            example: 20457
            type: number
            description: Postal code.
          country:
            example: DE
            type: string
            description: Country.
      destinationCountry:
        example: DE
        type: string
        description: Country to which the goods are being transported.
      baseportUnloadingLocation:
        description: Place of delivery or destination where the goods are unloaded.
        type: object
        properties:
          city:
            example: Hamburg
            type: string
            description: City.
          country:
            example: DE
            type: string
            description: Country.
      transportContractConditions:
        example: "Subject to CMR Convention and carrier's standard terms"
        type: string
        description: Reference to the conditions of the road carriage contract.
      handlingInstructions:
        example: "Handle with care — fragile sporting equipment"
        type: string
        description: Instructions for handling the goods during road transport.
      loadingInstructions:
        example: "Stack maximum 2 high"
        type: string
        description: Instructions for loading the goods onto the vehicle.
      deliveryInstructions:
        example: "Deliver to rear loading bay only"
        type: string
        description: Instructions for delivery of the goods at the destination.
      customsValue:
        description: Value of the goods for customs purposes.
        type: object
        properties:
          amount:
            example: 38000.00
            type: number
            format: float
            description: Monetary amount.
          currency:
            example: EUR
            type: string
            minLength: 3
            maxLength: 3
            description: ISO 4217 three-letter currency code.
      goodsValue:
        description: Commercial value of the goods.
        type: object
        properties:
          amount:
            example: 38000.00
            type: number
            format: float
            description: Monetary amount.
          currency:
            example: EUR
            type: string
            minLength: 3
            maxLength: 3
            description: ISO 4217 three-letter currency code.
      freightAndChargesAmount:
        description: Total freight and ancillary charges for the road carriage.
        type: object
        properties:
          amount:
            example: 1800.00
            type: number
            format: float
            description: Monetary amount.
          currency:
            example: EUR
            type: string
            minLength: 3
            maxLength: 3
            description: ISO 4217 three-letter currency code.
      collectCharges:
        description: Charges to be collected from the consignee at delivery.
        type: object
        properties:
          amount:
            example: 0.00
            type: number
            format: float
            description: Monetary amount.
          currency:
            example: EUR
            type: string
            minLength: 3
            maxLength: 3
            description: ISO 4217 three-letter currency code.
      insuranceAmount:
        description: Amount for which the goods are insured during road carriage.
        type: object
        properties:
          amount:
            example: 42000.00
            type: number
            format: float
            description: Monetary amount.
          currency:
            example: EUR
            type: string
            minLength: 3
            maxLength: 3
            description: ISO 4217 three-letter currency code.
      grossWeight:
        description: Total gross weight of the consignment including packaging.
        type: object
        properties:
          amount:
            example: 520.0
            type: number
            format: float
            description: Weight amount.
          unit:
            example: KGS
            type: string
            description: Weight unit.
      volume:
        description: Total volume of the consignment.
        type: object
        properties:
          amount:
            example: 8.5
            type: number
            format: float
            description: Volume amount.
          unit:
            example: CBM
            type: string
            description: Volume unit.
      descriptionOfGoods:
        example: "Surfboards, fins and wetsuits for water sports retail"
        type: string
        description: Plain language description of the nature of the goods.
      numberOfPackages:
        example: 18
        type: number
        description: Number of packages in the consignment.
      shippingMarks:
        example: "SURFPRO-EU/WRS-DE/001-018"
        type: string
        description: Marks and numbers on packages or transport units.
      hsCode:
        example: "950630"
        type: string
        description: Harmonized System code specifying the type of goods for customs purposes.
      dangerousGoodsTechnicalName:
        example: "Not applicable"
        type: string
        description: Technical name of any dangerous goods in the consignment.
      flashpointTemperature:
        description: Flashpoint temperature of dangerous goods.
        type: object
        properties:
          value:
            example: -18.0
            type: number
            format: float
            description: Temperature value.
          unit:
            example: CEL
            type: string
            description: Temperature unit code.
      dangerousGoodsRegulationCode:
        example: ADR
        type: string
        description: Code specifying the dangerous goods regulation applicable to the consignment.
      transportMeansIdentifier:
        example: "DE-KO-TF 123"
        type: string
        description: License plate or other identifier of the road vehicle.
      vehicleRegistrationNumber:
        example: "DE-KO-TF 123"
        type: string
        description: Registration number of the road vehicle or trailer.
      transportEquipmentIdentifier:
        example: TRLR-2025-001
        type: string
        description: Identifier of the trailer or other transport equipment.
      sealIdentifier:
        example: SEAL-2025-CMR-001
        type: string
        description: Identifier of the seal affixed to the transport equipment.
