Data Schema / ChangeLog



This is v0.3 of the Beneficial Ownership Data Standard. It includes updates to the data model and codelists as well as additional technical guidance.

Implementers should be aware that future changes are anticipated, before a version 1.0 release. However any structural changes, or major definitional changes, will only take place following consultation, with a clear changelog provided, and with the documentation of previous versions maintained in archive form.

The schema specifies a structure, fields and codelists but does not yet enforce validation constraints on most fields.

[0.3] - 2022-04-15


  • Technical guidance (normative) on ‘Representing beneficial ownership’: providing detailed requirements for the use of beneficialOwnershipOrControl, directOrIndirect, componentStatementIDs, and isComponent.

  • Support for describing the traded securities and status of a publicly listed company (PLC): a new publicListing object has been added to Entity Statements.

  • Support for representing state-owned enterprises (SOEs):

    • New codes ‘state’ and ‘stateBody’ added to the entityType codelist.

    • New entitySubtype property added to Entity Statements. Its value is an object with properties generalCategory (codelist, see below) and localTerm (string).

    • New entitySubtypeCategory. Currently only populated with codes related to state bodies.

    • New formedByStatute property added to Entity Statements. Its value is an object with properties name and date.

    • Changes (below) to accommodate representation of states and state bodies.

  • Technical guidance (normative) on ‘Representing state-owned enterprises’: providing modelling requirements.

  • The interestType codelist has had the following new codes added: ‘controlViaCompanyRulesOrArticles’, ‘controlByLegalFramework’, ‘boardMember’, ‘boardChair’, ‘unknownInterest’, ‘unpublishedInterest’, ‘enjoymentAndUseOfAssets’, ‘rightToProfitOrIncomeFromAssets’.


  • The interestType and unspecifiedReason codelist codes have been changed from using hyphens to camelCase.

  • In the Person Statement, hasPepStatus and pepDetails have been wrapped in a PoliticalExposure object and renamed status and details.

  • incorporatedInJurisdiction property in Entity Statements renamed to jurisdiction and description updated.

  • is now a required field (previously it was defined as “MUST” in the description).

  • is now a required field (previously it was defined as “MUST” in the description).

  • ‘legalEntity’ description in the entityType codelist updated to remove coverage of government departments (which now fall under ‘stateBody’).

  • Clarified is from the ISO 3166-1 list.

  • Clarified Country.code is from the ISO 3166-1 list.

  • Clarified Jurisdiction.code is from the ISO 3166-1 or ISO 3166-2 list.

  • Clarified required values for statementType.

  • interestLevel renamed to directOrIndirect.

  • The interestType codelist codes have had ‘OfTrust’ removed so they refer to any type of legal arrangement. Their descriptions have been edited to reflect these changes. ‘beneficiaryOfTrust’ has been changed to ‘beneficiaryOfLegalArrangement’ to avoid ambiguity and ‘otherInfluenceOrControlOfTrust’ has been removed.

Alterations to schema structure and logic

  • Annotation object refactored.

  • Removed reference to codelist in statementType. This fixes issues caused by the way we use this field to select which subschema to use for validation. This should not impact anyone using the compiled schema, but may affect those using the files in the ‘schema’ directory directly.

[0.2] - 2019-06-30


  • Support for representing details of indirect beneficial ownership relationships (where a beneficial owner owns or controls an entity through intermediaries):

    • A required isComponent property has been added to all three Statement objects. It takes a boolean value and indicates whether a Statement represents part of a primary indirect ownership-or-control relationship.

    • A componentStatementIDs property has been added to Ownership-or-control Statements. It takes an array of Statement IDs, indicating which component statements provide detail about the parent Ownership-or-control Statement.

  • A required publicationDetails property has been added to all three Statement objects. It represents metadata for Statements: information about their original publisher. Sub-properties (and their sub-properties) are:

    • publicationDate*

    • bodsVersion*

    • license

    • publisher* (name, url)

    * required

  • A hasPepStatus property (taking a boolean value) has been added to Person Statements. It is only to be used where disclosure requirements require that Politically Exposed Persons are flagged.

  • PEP Status objects now have the additional properties missingInfoReason and source.

  • A taxResidencies property has been added to Person Statements. It takes an array of Country objects.

  • Support for more structured accounts of missing and anonymised data:

    • unspecifiedPersonDetails has been added to Person Statements (with a required reason sub-property)

    • unspecifiedEntityDetails has been added to Entity Statements (with a required reason sub-property)

    The reason sub-property draws on the Unspecified Reason codelist (as does the Ownership-or-control Statement’s interestedParty.unspecified property).


  • The pepStatus property of Person Statements has been renamed pepStatusDetails (and still references an array of PEP Status objects).

  • The personType property of Person Statements is now required.

  • If Annotation.motivation is ‘linking’, Annotation.url is required.

  • The Interest Type codelist has been amended:

    • ‘influence-or-control’ is renamed ‘other-influence-or-control’

    • ‘rights-to-surplus-assets’ is renamed ‘rights-to-surplus-assets-on-dissolution’

    • ‘rights-granted-by-contract’ has been added

    • ‘conditional-rights-granted-by-contract’ has been added

  • The Address Type codelist has been amended:

    • ‘home’ has been removed (since ‘residence’ can be used instead)

    • ‘business’ has been added

  • The Name Type codelist has been amended:

    • ‘alias’, ‘aka’, and ‘nick’ have all been removed. They are replaced by ‘alternative’

    • ‘transliteration’ has been added

  • The Unspecified Reason codelist has been amended:

    • ‘information-unknown-to-publisher’ has been added

  • All codelist codes now have descriptions.


  • The missingInfoReason property has been removed from Person and Entity Statements. It has been replaced with unspecifiedPersonDetails and unspecifiedEntityDetails respectively.

[0.1] - 2018-12-12


  • beneficialOwnershipOrControl property added to Interest object. Takes a boolean value. Can be used to assert that an interest between a natural person and an entity makes that person a beneficial owner.

  • pepStatus property added to Person Statement object. Allows a natural person to be recorded as a politically exposed person (with a related reason, jurisdiction, start date and end date).

  • annotations property added to all three types of statement. Annotations provide a way of including additional (structured) data or transforming existing data in a targeted way.

  • An unspecified property replaces the nullParty option for interested parties. An unspecifiedReason codelist provides options for describing why an interested party is not recorded.


  • The interestType codelist has been extended to include interests in trusts.

  • The structure of BODS-formatted data has been flattened, to remove extraneous nesting and facilitate serialization using JSON Lines.

  • ‘Beneficial ownership statements’ have been renamed ‘Ownership-or-control statements’ to reflect the scope of their use.


  • Arrays of statementGroup objects (each object with its own statement group id) are no longer used to package arrays of statements. This reflects a flattening of the structure of BODS formatted data.

  • The nullParty option for interested parties. See unspecified property in the Added section above.