TransXChange files contain identifiers for specific elements, these can be internal references to other elements within the same file (e.g. which operator a service belongs to), or external identifiers used for cross-referencing data between files, and uniquely/consistently identifying the same element across different systems (e.g. Passenger & SIRI suppliers), for example:

ElementExternal ID’s
OperatorNationalOperatorCode (or OperatorCode, depending on the data provided and your configuration)
ServiceServiceCode (or PrivateCode if defined)


A list of identifier fields can be found on page 133 of the TransXChange 2.4 schema.

We encourage the use of correct “External A” identifiers, such as NationalOperatorCode and ATCOCode.

  • A NationalOperatorCode should exist within the TNDS NOC Dataset, and should represent the most granular operator, not a group/parent operator.
    • If your NOC is not present in the Traveline database, please contact
  • An ATCOCode should exist within NaPTAN

We encourage following the TransXChange UK PTI Profile for guidance on populating the ServiceCode field:

  1. For registered services, this shall be the registration reference as given when the service is registered with Office of the Traffic Commissioner (OTC)
    1. This takes the form of the “O-licence” number, a forward slash, and a sequential number; for example, PF0000459/134 is the registration reference for Stagecoach service 3 in Bedford
    2. You can search for the service registration number on
  2. For unregistered services, see section of the TransXChange UK PTI Profile

We also encourage the use of consistent PrivateCode identifiers, such as for routes and vehicle journeys.

By using the same consistent identifiers across multiple files/datasets, Passenger will be able to correctly identify elements, merging/skipping/creating/updating both persistent and dataset-specific information where appropriate.

If identifiers change between datasets, this can lead to duplication and mismatching. This is because the data is presenting a new element with an identifier we haven’t seen before, so we’ll import it as a distinct element.

It is therefore important to ensure that all external identifiers are always unique, and consistent between datasets.

Continue to the next article on TransXChange: Validating TransXChange