Skip to main content

Enterprise Credential Vocabulary

Abstract

This specification describes an experimental vocabulary for asserting Enterprise Credentials. Enterprises can use these credentials to prove certain claims about themselves to business partners. In addition, Enterprise Credentials can be used for authorisation purposes.

Click here to open the JSON-LD file: oid.jsonld

Use Case and Requirements

The following vocabulary is derived from the enterprise data collected and managed by the Bundesanzeiger. It provides an overview of the current presentation of existing data and maps it to credential schema definitions (JSON-LD). These can be used to create and define credentials, representing the data schema as the single source of truth for credentials based on these schemas.

Examples

The examples presented in this section are W3C-Credentials. For brevity, they are shown without proof. W3C-Credentials can be issued using any of the following proofs:

  • LD-Proof
  • JOSE
  • JOSE + "Selective Disclosure for JWTs"

Natural Person Credential

The following example represents the credential of a Natural Person (NaturalPerson):

{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://oid.spherity.com/contexts/oid/v1.jsonld"
],
"type": [
"VerifiableCredential",
"LegalEntityCertificate"
],
"id": "urn:uuid:f086cced-1153-4540-993b-b4d52ca499c2",
"validFrom": "2019-12-03T12:19:52Z",
"validUntil": "2029-12-03T12:19:52Z",
"issuer": "did:key:z6MkiY62766b1LJkExWMsM3QG4WtX7QpY823dxoYzr9qZvJ3",
"credentialSubject": {
"id": "did:key:fictive-1",
"type": "NaturalPerson",
"givenName": "JOHN",
"familyName": "DOE",
"gender": "Male",
"birthDate": "1970-01-01",
"domicile": {
"postalCode": "10119",
"addressCountry": "Germany",
"addressLocality": "Berlin"
}
}
}

This particular credential uses key binding to bind the credential to the holder. The holder of this credential is the Natural Person described in the credential subject. Therefore, a DID which is controlled by the Natural Persons is assigned to the term id of the credential subject. This enables the Natural Person to present this credential in form of a verifiable credential.

The following example shows a Legal Person Identification Data (LPID) Credential:

{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://oid.spherity.com/contexts/oid/v1.jsonld"
],
"type": [
"VerifiableCredential",
"LegalEntityCertificate"
],
"id": "urn:uuid:f086cced-1153-4540-993b-b4d52ca499c2",
"validFrom": "2019-12-03T12:19:52Z",
"validUntil": "2029-12-03T12:19:52Z",
"issuer": "did:key:z6MkiY62766b1LJkExWMsM3QG4WtX7QpY823dxoYzr9qZvJ3",
"credentialSubject": {
"id": "did:key:fictive-1",
"type": "LegalPersonId",
"euid": "DEPLPOAG.123456789",
"companyName": "Flower Power AG"
}
}

This credential is bound to the Legal Entity. Therefore, a DID which is under control of the Legal Person is assigned to the term id of the credential subject.

The following example shows a credential which includes two types within the credentialSubject. The LegalPersonBaseData extends the LegalPersonId by additional base data of the enterprise.

{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://oid.spherity.com/contexts/oid/v1.jsonld"
],
"type": [
"VerifiableCredential",
"LegalEntityCertificate"
],
"id": "urn:uuid:f086cced-1153-4540-993b-b4d52ca499c2",
"validFrom": "2019-12-03T12:19:52Z",
"validUntil": "2029-12-03T12:19:52Z",
"issuer": "did:key:z6MkiY62766b1LJkExWMsM3QG4WtX7QpY823dxoYzr9qZvJ3",
"credentialSubject": {
"id": "did:key:fictive-1",
"type": [
"LegalPersonId",
"LegalPersonBaseData"
],
"euid": "DEPLPOAG.123456789",
"companyName": "Flower Power AG",
"companyIdentifier": "urn:mdms:12345678",
"address": {
"type": "oid:LegalPersonAddress",
"postalCode": "10119",
"addressCountry": "Germany",
"addressLocality": "Berlin"
},
"registerIdentification": {
"registerType": "ABC123",
"registerTypeDescription": "Amtsgericht Tiergarten",
"registerLocation": "Berlin, Moabit",
"registerNumber": "123AVB",
"companyId": "ACDC",
"companyIdCountryCode": "DE"
},
"previousName": ["AL", "DI"],
"status": "active",
"liquidationStatus": "none",
"insolvencyStatus": "none",
"legalForm": "GmbH",
"isFoundation": false,
"isNfrdObligated": false,
"isTrust": false,
"businessObject": "Trading Company",
"registrationDate": "2010-01-01",
"exchange": {
"name": "Boerse Stuttgart",
"country": "Germany",
"marketIdentificationCode": "AA",
"tickerSymbol": "BB"
},
"isin": "1234567890",
"vatId": "22222ABC",
"ekrn": "3333",
"regulator": {
"name": "BaFin",
"regulatorId": "DeBa",
"description": "Int. Trade"
},
"wz2008": {
"type": "Industry",
"code": "IT",
"industryDescription": "Tech Int. Trade"
},
"nace020": {
"type": "Industry",
"code": "IT",
"industryDescription": "Tech Int. Trade"
},
"lei": "ABC988",
"leiStatus": "active",
"leiNextIssuance": "2027-01-10"
}
}

This example shows a credential which holds the complete information about an enterprise in the credential subject including the relations to other legal entities.

{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://oid.spherity.com/contexts/oid/v1.jsonld"
],
"type": [
"VerifiableCredential",
"LegalEntityCertificate"
],
"id": "urn:uuid:f086cced-1153-4540-993b-b4d52ca499c2",
"validFrom": "2019-12-03T12:19:52Z",
"validUntil": "2029-12-03T12:19:52Z",
"issuer": "did:key:z6MkiY62766b1LJkExWMsM3QG4WtX7QpY823dxoYzr9qZvJ3",
"credentialSubject": {
"id": "did:key:fictive-1",
"type": [
"LegalPersonId",
"LegalPersonBaseData",
"LegalPerson"
],
"euid": "ANY EUID",
"companyName": "Flower Power AG",
"companyIdentifier": "urn:mdms:12345678",
"address": {
"postalCode": "10119",
"addressCountry": "Germany",
"addressLocality": "Berlin"
},
"registerIdentification": {
"registerType": "ABC123",
"registerTypeDescription": "Amtsgericht Tiergarten",
"registerLocation": "Berlin, Moabit",
"registerNumber": "123AVB",
"companyId": "ACDC",
"companyIdCountryCode": "DE"
},
"previousName": ["AL", "DI"],
"status": "active",
"liquidationStatus": "none",
"insolvencyStatus": "none",
"legalForm": "GmbH",
"isFoundation": false,
"isNfrdObligated": false,
"isTrust": false,
"businessObject": "Trading Company",
"registrationDate": "2010-01-01",
"exchange": {
"name": "Boerse Stuttgart",
"country": "Germany",
"marketIdentificationCode": "AA",
"tickerSymbol": "BB"
},
"isin": "1234567890",
"vatId": "22222ABC",
"ekrn": "3333",
"regulator": {
"name": "BaFin",
"regulatorId": "DeBa",
"description": "Int. Trade"
},
"wz2008": {
"@type": "Industry",
"code": "IT",
"description": "Tech Int. Trade"
},
"nace020": {
"@type": "Industry",
"code": "IT",
"description": "Tech Int. Trade"
},
"lei": "ABC988",
"leiStatus": "active",
"leiNextIssuance": "2027-01-10",
"businessYear": {
"revenue": "2933",
"currency": "EUR",
"employeeCount": "39",
"balance": {
"@type": "Balance",
"amount": "399399",
"currency": "EUR"
},
"date": "2024-01-01"
},
"ultimateBeneficiaryOwner": {
"naturalPersonId": "did:key:fictive-2",
"capital": {
"share": {
"@type": "Share",
"relative": "20",
"absolute": {
"@type": "Balance",
"amount": "399399",
"currency": "EUR"
},
"absoluteInEur": {
"@type": "Balance",
"amount": "399399",
"currency": "EUR"
},
"isDirectShare": true
},
"votingRightsRelativeDirect": "20",
"shareRelativeDirect": "20"
},
"votingRights": {
"share": {
"@type": "Share",
"relative": "20",
"absolute": {
"@type": "Balance",
"amount": "399399",
"currency": "EUR"
},
"absoluteInEur": {
"@type": "Balance",
"amount": "399399",
"currency": "EUR"
},
"isDirectShare": true
},
"votingRightsRelativeDirect": "20",
"votingRightsRelative": "20",
"shareRelativeDirect": "20",
"otherControlReason": "20"
},
"otherControl": {
"share": {
"@type": "Share",
"relative": "20",
"absolute": {
"@type": "Balance",
"amount": "399399",
"currency": "EUR"
},
"absoluteInEur": {
"@type": "Balance",
"amount": "399399",
"currency": "EUR"
},
"isDirectShare": true
},
"votingRightsRelativeDirect": "20",
"shareRelativeDirect": "20"
},
"fictitious": {
"share": {
"@type": "Share",
"relative": "20",
"absolute": {
"@type": "Balance",
"amount": "399399",
"currency": "EUR"
},
"absoluteInEur": {
"@type": "Balance",
"amount": "399399",
"currency": "EUR"
},
"isDirectShare": true
},
"votingRightsRelativeDirect": "20",
"shareRelativeDirect": "20"
}
},
"functionary": {
"legalEntityId": "did:key:fictive-3",
"role": "CEO",
"isAuthorizedRepresentative": true,
"isExclusionOfParagraph181": false,
"authorizationExtent": "full"
},
"shareholder": {
"@type": "Shareholder",
"legalEntityId": "did:key:fictive-4",
"share": {
"@type": "Share",
"relative": "20",
"absolute": {
"@type": "Balance",
"amount": "399399",
"currency": "EUR"
},
"absoluteInEur": {
"@type": "Balance",
"amount": "399399",
"currency": "EUR"
},
"isDirectShare": true
},
"votingRightsRelative": "20"
},
"generalPartner": {
"@type": "Shareholder",
"legalEntityId": "did:key:fictive-6",
"share": {
"@type": "Share",
"relative": "20",
"absolute": {
"@type": "Balance",
"amount": "399399",
"currency": "EUR"
},
"absoluteInEur": {
"@type": "Balance",
"amount": "399399",
"currency": "EUR"
},
"isDirectShare": true
}
},
"directParentCompany": "did:key:fictive-7",
"ultimateParentCompany": "did:key:fictive-8",
"handoverFlag": false,
"handoverDescription": "no flag",
"evidence": {
"@type": "Evidence",
"source": "Transparency register",
"verifiedField": ["CEO", "CTO"],
"verificationDate": "2014-01-01"
}
}
}

Concepts

The Enterprise Credential embeds existing enterprise data into credentials. As a result, the embedded information can be used prove certain claims about the enterprise. It also enables representatives to prove their role within an enterprise to service providers and business partners.

For example, when opening a bank account on behalf of a company, the applicant needs to provide proof of authorisation and company information to undergo a KYC process. Today, this KYC process is mainly a manual endeavour that requires manual labour and involves waiting times. With the presentation of corporate credentials, the process can be fully automated, reducing time, overhead and liability risks. Verifiable credentials permit sharing information based on cryptographically signed data. The enterprise requests the credentials from the Bundesanzeiger receives an Enterprise Credential based on the official registered data. The Bundesanzeiger cryptographically asserts the correctness and authenticity of the data. The enterprise can then use this for further service providers With this setup, the bank institute can validate the data by itself and can check, if the credential was issued by a well known and eligible authority (e.g. the Bundesanzeiger).

Information Model - Enterprise Credential

Verifiable Credentials

The Enterprise Credential is a list of LegalEntityCertificate credentials. There are two kinds of legal entities: human and non-human. In law, a human person is called a Natural Person and a non-human person is called a Legal Person. Therefore, there are two types of credential subjects derived from the abstract class LegalEntity:

  • NaturalPerson
  • LegalPerson

Legal Entity Certificate

The full data model of a Legal Person is shown below. There are three types representing a Legal Person depending on the amount of disclosed data:

  • LegalPersonId only containing ID and name of the company
  • LegalPersonBaseData containing only the base data of the Legal Person, mostly describing the Legal Person itself
  • LegalPerson describing the full structure of the Legal Person, including their relationship to other legal entities (Natural Persons and Legal Personss)

Legal Person Inheritance

Please note that an Enterprise Credential issued by the register consists of a list of credentials which contains:

LegalPersonId (aka LPID)

The LegalPersonId is an unique identifier of a Legal Person, i.e. a corporation, firm or organisation.

Legal Person Id

LegalPersonBaseData

The LegalPersonBaseData extends the LegalPersonId by base data about the Legal Person.

Legal Person Base Data

LegalPerson

Legal Persons are entities such as corporations, firms or organisations. They are treated in law as if they were persons. The LegalPerson extends the LegalPersonBaseData by comprehensive data about the Legal Person, like relations to other legal entities.

Legal Person

Natural Person

Natural persons acquire legal personality "naturally", simply by being born.

Natural Person

Credential Vocabulary

LegalEntityCertificate

The LegalEntityCertificate is the top-level type of the Enterprise Credential which describes a legal entity.

euid

EUID technical structure (source):

<country code><business register code>.<domestic registration number>_<optional validation character>

Example from Bolagsverket: SEBOLREG.5560678965s

KeyValue
Termeuid
URLhttps://oid.spherity.com/oid#euid
Expected Valuestring

otherControlReason

Reason for Other Control of the Ultimate Beneficial Owner.

KeyValue
TermotherControlReason
URLhttps://oid.spherity.com/oid#otherControlReason
Expected Valuestring

shareRelativeDirect

Percentage of Direct Shares in the Company Held by the Person.

KeyValue
TermshareRelativeDirect
URLhttps://oid.spherity.com/oid#shareRelativeDirect
Expected Valuestring

votingRightsRelative

Total Percentage of Voting Rights in the Company Held Directly or Indirectly by the Person.

KeyValue
TermvotingRightsRelative
URLhttps://oid.spherity.com/oid#votingRightsRelative
Expected Valuestring

votingRightsRelativeDirect

Percentage of Direct Voting Rights of the Company Held by the Person.

KeyValue
TermvotingRightsRelativeDirect
URLhttps://oid.spherity.com/oid#votingRightsRelativeDirect
Expected Valuestring

votingRightsShare

Total Percentage of Voting Rights in the Company Held Directly or Indirectly by the Person.

KeyValue
TermvotingRightsShare
URLhttps://oid.spherity.com/oid#votingRightsShare
Expected Valuestring

NaturalPerson

A natural person describes a human who may act as a legal entity.

FieldDescription
familyNameNatural person's family name
givenNameNatural person's given name
genderNatural person's specified gender
birthDateNatural person's birth date
birthPlaceNatural person's birth place
postalAddressNatural person's postal address
taxDomicileNatural person's tax domicile
isAliveIndicates if natural person is alive
jobTitleNatural person's job title
citizenshipNatural person's citizenship
domicileNatural person's current domicile

familyName

Natural person's family name.

KeyValue
TermfamilyName
URLhttp://schema.org/familyName

givenName

Natural person's given name.

KeyValue
TermgivenName
URLhttp://schema.org/givenName

gender

Natural person's specified gender.

KeyValue
Termgender
URLhttp://schema.org/gender

birthDate

Natural person's birth date.

KeyValue
TermbirthDate
URLhttp://schema.org/birthDate

jobTitle

Natural person's job title.

KeyValue
TermfamilyName
URLhttp://schema.org/jobTitle

birthPlace

Natural person's birth place.

KeyValue
TermbirthPlace
URLhttp://schema.org/birthPlace

postalAddress

Natural person's postal address.

KeyValue
TermpostalAddress
URLhttp://schema.org/PostalAddress

taxDomicile

Natural person's tax domicile.

KeyValue
TermtaxDomicile
URLhttps://oid.spherity.com/oid#NaturalPerson_taxDomicile
Expected Valuehttp://schema.org/addressCountry

isAlive

Indicates whether the natural person is alive.

KeyValue
TermisAlive
URLhttps://oid.spherity.com/oid#NaturalPerson_isAlive
Expected Valuehttp://schema.org/Boolean

citizenship

Natural person's citizenship.

KeyValue
Termcitizenship
URLhttps://oid.spherity.com/oid#NaturalPerson_citizenship
Expected Valuehttp://schema.org/addressCountry

domicile

Natural person's current domicile.

KeyValue
Termdomicile
URLhttps://oid.spherity.com/oid#NaturalPerson_domicile
FieldDescription
postalCodeNatural person's postal code
addressLocalityNatural person's address
addressCountryNatural person's county code

postalCode

Natural person's domicile postal code.

KeyValue
TermpostalCode
URLhttps://oid.spherity.com/oid#NaturalPerson_domicile_postalCode
Expected Valuehttps://schema.org/postalCode

addressLocality

Natural person's domicile address.

KeyValue
TermaddressLocality
URLhttps://oid.spherity.com/oid#NaturalPerson_domicile_addressLocality
Expected Valuehttp://schema.org/addressLocality

addressCountry

Natural person's domicile country code.

KeyValue
TermaddressCountry
URLhttps://oid.spherity.com/oid#NaturalPerson_domicile_addressCountry
Expected Valuehttp://schema.org/addressCountry

LegalPersonId

The Legal Person Identification Data uniquely identifies a legal person, as defined by the EWC.

FieldDescription
euidUnique id for legal persons
companyNameName of the company

companyName

The name of the company as defined in the official company registers.

KeyValue
TermcompanyName
URLhttps://oid.spherity.com/oid#LegalPersonId_companyName
Expected Valuehttps://schema.org/name

LegalPersonBaseData

Description of a Legal Entity according to registry.

Field
companyIdentifier
address
registerIdentification
previousName
status
liquidationStatus
insolvencyStatus
legalForm
isFoundation
isNfrdObligated
isTrust
businessObject
registrationDate
exchange
isin
vatId
ekrn
regulator
wz2008
nace020
lei
isOnOrganizedMarket
leiStatus
leiNextIssuance

companyIdentifier

The unique identification number provided by Bundesanzeiger Verlag, which identifies the company to be checked (focus Legal Entity) or entity (as part of the MDMS service).

KeyValue
TermcompanyIdentifier
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_companyIdentifier
Expected Valuestring

address

Address of the Legal Person according to the address in the official register.

KeyValue
Termaddress
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_address
FieldDescription
postalCodeLegal Person's postal code
addressLocalityLegal Person's address
addressCountryCountry the Legal Person is registered in

registerIdentification

Information about the official register in which the focus company is registered.

KeyValue
TermregisterIdentification
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_registerIdentification
FieldDescription
registerTypeRegister code
registerTypeDescriptionRegistration authority
registerLocationName of the district court
registerNumberOfficial identification number
companyIdIdentification number of the company
companyIdCountryCodeCountry code for the identification number
registerType

Register code in which the focus company is registered according to the official register.

KeyValue
TermregisterType
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_registerIdentification_registerType
Expected Valuestring
registerTypeDescription

Registration authority where the focus company is registered according to the official register.

KeyValue
TermregisterTypeDescription
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_registerIdentification_registerType
Expected Valuestring
registerLocation

Name of the district court where the focus company is registered according to the official register.

KeyValue
TermregisterLocation
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_registerIdentification_registerLocation
Expected Valuestring
registerNumber

Official identification number of the district court where the focus company is registered according to the official register.

KeyValue
TermregisterNumber
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_registerIdentification_registerNumber
Expected Valuestring
companyId

Identification number of the company in the register (international) according to the official national register.

KeyValue
TermcompanyId
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_registerIdentification_companyId
Expected Valuestring
companyIdCountryCode

Country code for the identification number of the company in the register (international) according to the official national register.

KeyValue
TermcompanyIdCountryCode
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_registerIdentification_companyIdCountryCode
Expected Valuestring

previousName

Previous registered names of the focus company according to the official register

KeyValue
TermpreviousName
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_previousName
Expected Valuestring

status

Activity status of the focus company according to the official register.

KeyValue
Termstatus
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_status
Expected Valuestring

liquidationStatus

Liquidation status of the focus company.

KeyValue
TermliquidationStatus
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_liquidationStatus
Expected Valuestring

insolvencyStatus

Insolvency status of the focus company.

KeyValue
TerminsolvencyStatus
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_insolvencyStatus
Expected Valuestring

legalForm

Legal form of the focus company according to the official register.

KeyValue
TermlegalForm
URLhttps://oid.spherity.com/oid#legalForm
Expected Valuestring

isFoundation

Indicates whether the focus company is a foundation.

KeyValue
TermisFoundation
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_isFoundation
Expected Valuehttps://schema.org/Boolean

isNfrdObligated

Indicates whether the focus company is required to report under the Nfrd (Non financial reporting directive) with regard to the new CSRD - Corprate Sustainability Reporting Directive.

KeyValue
TermisNfrdObligated
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_isNfrdObligated
Expected Valuehttps://schema.org/Boolean

isTrust

Indicates whether the focus company is a trust.

KeyValue
TermisTrust
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_isTrust
Expected Valuehttps://schema.org/Boolean

businessObject

Description of the type of business activities of the company, including the type and purpose according to the official register.

KeyValue
TermbusinessObject
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_businessObject
Expected Valuestring

registrationDate

Date the company was registered.

KeyValue
TermregistrationDate
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_registrationDate
Expected Valuehttps://schema.org/date

exchange

Stock exchange of the focus Legal Entity.

KeyValue
Termexchange
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_exchange
FieldDescription
nameName of the stock exchange
countryCountry of the stock exchange
marketIdentificationCodeStock exchange identification code
ticketSymbolStock ticker symbol
marketIdentificationCode

Stock exchange identification code of the focus Legal Entity.

KeyValue
Termcountry
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_exchange_marketIdentificationCode
Expected Valuestring
tickerSymbol

Stock ticker symbol of the focus Legal Entity.

KeyValue
TermticketSymbol
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_exchange_tickerSymbol
Expected Valuestring

isin

ISIN - international securities identification number for the uniquely identified security of the focus Legal Entity.

KeyValue
Termisin
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_isin
Expected Valuestring

ekrn

EKRN (Uniform and Continuous Legal Entity Number) is the identification number assigned to the focus company by the transparency register upon initial registration.

KeyValue
Termekrn
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_ekrn
Expected Valuestring

regulator

Descriptions of the responsible regulator.

KeyValue
Termregulator
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_regulator
FieldDescription
nameRegulator name
regulatorIdAssigned ID
descriptionClassification of the type of entity
regulatorId

Identification of whether the company is registered with BaFin (Federal Financial Supervisory Authority in Germany).

KeyValue
TermregulatorId
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_regulator_regulatorId
Expected Valuestring
description

Classification of the type of entity according to BaFin (Federal Financial Supervisory Authority in Germany) definition.

KeyValue
Termdescription
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_regulator_description
Expected Valuestring
wz2008

wz2008 industry description.

KeyValue
Termwz2008
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_wz2008
Expected Valuehttps://oid.spherity.com/oid#Industry
nace020

nace020 industry description.

KeyValue
Termnace020
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_nace020
Expected Valuehttps://oid.spherity.com/oid#Industry

lei

Company ID according to LEI (Legal Entity Identifier).

KeyValue
Termlei
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_lei
Expected Valuestring

isOnOrganizedMarket

Company ID according to LEI (Legal Entity Identifier).

KeyValue
TermisOnOrganizedMarket
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_isOnOrganizedMarket
Expected Valuehttps://schema.org/Boolean

leiStatus

Status of the LEI (Legal Entity Identifier).

KeyValue
TermleiStatus
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_leiStatus
Expected Valuestring

leiNextIssuance

Next date for a new LEI (Legal Entity Identifier) issuance.

KeyValue
TermleiNextIssuance
URLhttps://oid.spherity.com/oid#LegalPersonBaseData_leiNextIssuance
Expected Valuehttps://schema.org/date

Industry

Description of Industries according defined by different authorities.

KeyValue
TermIndustry
URLhttps://oid.spherity.com/oid#Industry

code

Standardized industry code.

KeyValue
Termcode
URLhttps://oid.spherity.com/oid#Industry_code
Expected Valuestring

industryDescription

Standardized industry description.

KeyValue
TermindustryDescription
URLhttps://oid.spherity.com/oid#Industry_description
Expected Valuestring

LegalPerson

Description of a Legal Person, including its business details and ownership information.

FieldDescription
businessYearInformation about the business year, including revenue, currency, employee count, balance, and date
ultimateBeneficiaryOwnerDetails of the ultimate beneficiary owner, including person, capital, voting rights, other control, and fictitious entries
functionaryInformation about the functionary associated with the Legal Person
shareholderInformation about shareholders
generalPartnerInformation about general partners
directParentCompanyInformation about the direct parent company
ultimateParentCompanyInformation about the ultimate parent company
handoverFlagIndicator whether there is a handover
handoverDescriptionDescription of the handover
evidenceEvidence related to the Legal Person

businessYear

Details about the business year of the Legal Person.

KeyValue
TermbusinessYear
URLhttps://oid.spherity.com/oid#LegalPerson_businessYear
FieldDescription
revenueRevenue of the Legal Entity during the business year
currencyCurrency of the revenue
employeeCountNumber of employees during the business year
balanceBalance information for the business year
dateDate of the financial statements
revenue

Revenue of the Legal Entity during the business year.

KeyValue
Termrevenue
URLhttps://oid.spherity.com/oid#LegalPerson_businessYear_revenue
Expected Valuestring
employeeCount

Number of employees during the business year.

KeyValue
TermemployeeCount
URLhttps://oid.spherity.com/oid#LegalPerson_businessYear_employeeCount
Expected Valuestring
balance

Balance information for the business year.

KeyValue
Termbalance
URLhttps://oid.spherity.com/oid#LegalPerson_businessYear_balance
Expected Valuehttps://oid.spherity.com/oid#Balance

ultimateBeneficiaryOwner

Details of the ultimate beneficiary owner.

KeyValue
TermultimateBeneficiaryOwner
URLhttps://oid.spherity.com/oid#LegalPerson_ultimateBeneficiaryOwner
FieldDescription
naturalPersonIdNatural person Id of the ultimate ultimate beneficiary owner
natureOfInterestElement used to provide information about nature of interest
descriptionTextual description of the entity
ownershipTypeDirect or indirect ownership
registrableDateDate of UBO registration
inactiveDateSpecifies when the entity became inactive
lastChangeDateLast date the UBO information was changed
capitalDetails about the capital held by the ultimate beneficiary owner
votingRightsInformation about the voting rights held by the ultimate beneficiary owner
otherControlOther control details of the ultimate beneficiary owner
fictitiousFictitious details of the ultimate beneficiary owner
natureOfInterest

The element is used to provide information about nature of interest.

KeyValue
TermnatureOfInterest
URLhttps://oid.spherity.com/oid#LegalPerson_ultimateBeneficiaryOwner_natureOfInterest
Expected Valuestring
description

Optional textual description of the entity.

KeyValue
Termdescription
URLhttps://oid.spherity.com/oid#LegalPerson_ultimateBeneficiaryOwner_description
Expected Valuestring
ownershipType

Specifies if the ownership is direct or indirect.

KeyValue
TermownershipType
URLhttps://oid.spherity.com/oid#LegalPerson_ultimateBeneficiaryOwner_ownershipType
Expected Valuestring
registrableDate

Specifies the date the UBO was first registered.

KeyValue
TermregistrableDate
URLhttps://oid.spherity.com/oid#LegalPerson_ultimateBeneficiaryOwner_registrableDate
Expected Valuehttp://schema.org/Date
inactiveDate

Specifies the date the UBO became inactive.

KeyValue
TerminactiveDate
URLhttps://oid.spherity.com/oid#LegalPerson_ultimateBeneficiaryOwner_inactiveDate
Expected Valuehttp://schema.org/Date
lastChangeDate

Specifies the date the UBO was last modified.

KeyValue
TermlastChangeDate
URLhttps://oid.spherity.com/oid#LegalPerson_ultimateBeneficiaryOwner_lastChangeDate
Expected Valuehttp://schema.org/Date
naturalPersonId

Unique Id of the person who is the ultimate beneficiary owner. This Id is the Id of the credentials subject information of the natural person certificate providing all natural person information.

KeyValue
TermnaturalPersonId
URLhttps://oid.spherity.com/oid#LegalPerson_ultimateBeneficiaryOwner_naturalPersonId
Expected ValueDID
capital

Details about the capital held by the ultimate beneficiary owner.

KeyValue
Termcapital
URLhttps://oid.spherity.com/oid#LegalPerson_ultimateBeneficiaryOwner_capital
FieldDescription
shareInformation about the share held
votingRightsRelativeDirectRelative direct voting rights
shareRelativeDirectRelative direct share
share
warning

This term appears multiple times in the document. Needs to be reviewed.

Information about the share held by the ultimate beneficiary owner.

KeyValue
Termshare
URLhttps://oid.spherity.com/oid#LegalPerson_ultimateBeneficiaryOwner_capital_share
Expected Valuehttps://oid.spherity.com/oid#Share
votingRights

Information about the voting rights held by the ultimate beneficiary owner.

KeyValue
TermvotingRights
URLhttps://oid.spherity.com/oid#LegalPerson_ultimateBeneficiaryOwner_votingRights
FieldDescription
shareInformation about the share of voting rights
votingRightsRelativeDirectRelative direct voting rights
votingRightsRelativeRelative voting rights
shareRelativeDirectRelative direct share
otherControlReasonReason for other control
share
warning

This term appears multiple times in the document. Needs to be reviewed.

Information about the share of voting rights held by the ultimate beneficiary owner.

KeyValue
Termshare
URLhttps://oid.spherity.com/oidLegalPerson_ultimateBeneficiaryOwner_votingRights_share
Expected Valuehttps://oid.spherity.com/oid#Share
otherControl

Other control details of the ultimate beneficiary owner.

KeyValue
TermotherControl
URLhttps://oid.spherity.com/oid#LegalPerson_ultimateBeneficiaryOwner_otherControl
FieldDescription
shareInformation about the share
votingRightsRelativeDirectRelative direct voting rights
shareRelativeDirectRelative direct share
fictitious

Fictitious details of the ultimate beneficiary owner.

KeyValue
Termfictitious
URLhttps://oid.spherity.com/oidLegalPerson_ultimateBeneficiaryOwner_fictitious
FieldDescription
shareInformation about the share
votingRightsRelativeDirectRelative direct voting rights
shareRelativeDirectRelative direct share
share
warning

This term appears multiple times in the document. Needs to be reviewed.

Information about the share in fictitious control.

KeyValue
Termshare
URLhttps://oid.spherity.com/oid#fictitiousShareLegalPerson_ultimateBeneficiaryOwner_fictitious_share)
Expected Valuehttps://oid.spherity.com/oid#Share

functionary

Information about the functionary associated with the Legal Person

KeyValue
Termfunctionary
URLhttps://oid.spherity.com/oid#LegalPerson_functionary
FieldDescription
legalEntityIdLegal entity id of the functionary
roleRole of the functionary
isAuthorizedRepresentativeIndicator if the functionary is an authorized representative
isExclusionOfParagraph181Indicator if the functionary is excluded from Paragraph 181
authorizationExtentExtent of the functionary's authorization
legalEntityId

Legal entity of the functionary.

KeyValue
TermlegalEntityId
URLhttps://oid.spherity.com/oid#LegalPerson_functionary_legalEntityId
Expected ValueDID
role

Role of the functionary.

KeyValue
Termrole
URLhttps://oid.spherity.com/oid#LegalPerson_functionary_role
Expected Valuestring
isAuthorizedRepresentative

Indicator if the functionary is an authorized representative.

KeyValue
TermisAuthorizedRepresentative
URLhttps://oid.spherity.com/oid#LegalPerson_functionary_isAuthorizedRepresentative
Expected Valuehttps://schema.org/Boolean
isExclusionOfParagraph181

Indicator if the functionary is excluded from Paragraph 181.

KeyValue
TermisExclusionOfParagraph181
URLhttps://oid.spherity.com/oid#LegalPerson_functionary_isExclusionOfParagraph181
Expected Valuehttps://schema.org/Boolean
authorizationExtent

Extent of the functionary's authorization.

KeyValue
TermauthorizationExtent
URLhttps://oid.spherity.com/oid#LegalPerson_functionary_authorizationExtent
Expected Valuestring

shareholder

Information about shareholders.

KeyValue
Termshareholder
URLhttps://oid.spherity.com/oid#LegalPerson_shareholder
Expected Valuehttps://oid.spherity.com/oid#Shareholder

generalPartner

Information about general partners.

KeyValue
TermgeneralPartner
URLhttps://oid.spherity.com/oid#LegalPerson_generalPartner
Expected Value[https://oid.spherity.com/oid#Shareholder

directParentCompany

Unique Id of the direct parent company. This Id is the Id of the credential subject of the legal entity certificate.

KeyValue
TermdirectParentCompany
URLhttps://oid.spherity.com/oid#LegalPerson_directParentCompany
Expected ValueDID

ultimateParentCompany

Unique Id of the ultimate parent company. This Id is the Id of the credential subject of the legal entity certificate.

KeyValue
TermultimateParentCompany
URLhttps://oid.spherity.com/oid#LegalPerson_ultimateParentCompany
Expected ValueDID

handoverFlag

Indicator whether there is a handover.

KeyValue
TermhandoverFlag
URLhttps://oid.spherity.com/oid#LegalPerson_handoverFlag
Expected Valuehttps://schema.org/Boolean

handoverDescription

Description of the handover.

KeyValue
TermhandoverDescription
URLhttps://oid.spherity.com/oid#LegalPerson_handoverDescription
Expected Valuestring

evidence

Evidence related to the Legal Entity.

KeyValue
Termevidence
URLhttps://oid.spherity.com/oid#LegalPerson_evidence
Expected Valuehttps://oid.spherity.com/oid#Evidence

Balance

Balance information for the Legal Entity.

KeyValue
TermBalance
URLhttps://oid.spherity.com/oid#Balance
FieldDescription
amountAmount of the balance
currencyCurrency of the balance
amount

Amount of the balance.

KeyValue
Termamount
URLhttps://oid.spherity.com/oid#Balance_amount
Expected Valuestring

Share

Information about shares.

KeyValue
TermShare
URLhttps://oid.spherity.com/oid#Share
FieldDescription
relativeRelative share value
absoluteAbsolute share value
absoluteInEurAbsolute share value in EUR
isDirectShareIndicator if it is a direct share
relative

Relative share value.

KeyValue
Termrelative
URLhttps://oid.spherity.com/oid#Share_relative
Expected Valuestring
absolute

Absolute share value.

KeyValue
Termabsolute
URLhttps://oid.spherity.com/oid#Share_absolute
Expected Valuehttps://oid.spherity.com/oid#Balance
absoluteInEur

Absolute share value in EUR.

KeyValue
TermabsoluteInEur
URLhttps://oid.spherity.com/oid#Share_absoluteInEur
Expected Valuehttps://oid.spherity.com/oid#Balance
isDirectShare

Indicator if it is a direct share.

KeyValue
TermisDirectShare
URLhttps://oid.spherity.com/oid#Share_isDirectShare
Expected Valuehttps://schema.org/Boolean

Shareholder

Information about shareholders.

KeyValue
TermShareholder
URLhttps://oid.spherity.com/oid#Shareholder
FieldDescription
legalEntityIdLegal entity Id of the shareholder
shareShare information
votingRightsRelativeRelative voting rights
legalEntityId
warning

This term should be checked

Legal Entity Id of the shareholder. This Id is the Id of the credential subject of the legal entity certificate.

KeyValue
TermlegalEntityId
URLhttps://oid.spherity.com/oid#Shareholder_legalEntityId
Expected ValueDID
share
warning

This term appears multiple times in the document. Needs to be reviewed

Share information of the shareholder.

KeyValue
Termshare
URLhttps://oid.spherity.com/oid#Shareholder_share
Expected Valuehttps://oid.spherity.com/oid#Share

ShareholderLegalPerson

Information about Legal Persons who are shareholders.

KeyValue
TermShareholderLegalPerson
URLhttps://oid.spherity.com/oid#ShareholderLegalPerson
FieldDescription
handoverHandover information
handoverDescriptionDescription of the handover
shareholderInformation about the shareholder
generalPartnerInformation about the general partner
handover

Handover information for the Legal Person.

KeyValue
Termhandover
URLhttps://oid.spherity.com/oid#ShareholderLegalPerson_handover
Expected Valuehttps://schema.org/Boolean
handoverDescription

Description of the handover.

KeyValue
TermhandoverDescription
URLhttps://oid.spherity.com/oid#ShareholderLegalPerson_handoverDescription
Expected Valuestring
shareholder

Information about the shareholder.

KeyValue
Termshareholder
URLhttps://oid.spherity.com/oid#ShareholderLegalPerson_shareholder
Expected Valuehttps://oid.spherity.com/oid#Shareholder
generalPartner

Information about the general partner.

KeyValue
TermgeneralPartner
URLhttps://oid.spherity.com/oid#ShareholderLegalPerson_generalPartner
Expected Valuehttps://oid.spherity.com/oid#Shareholder

Evidence

Evidence related to the Legal Entity.

KeyValue
TermEvidence
URLhttps://oid.spherity.com/oid#Evidence
FieldDescription
sourceSource of the evidence
verifiedFieldVerified field
verificationDateDate of verification
source

Source of the evidence.

KeyValue
Termsource
URLhttps://oid.spherity.com/oid#Evidence_source
Expected Valuestring
verifiedField

Verified field in the evidence.

KeyValue
TermverifiedField
URLhttps://oid.spherity.com/oid#Evidence_verifiedField
Expected Valuestring
verificationDate

Date of verification.

KeyValue
TermverificationDate
URLhttps://oid.spherity.com/oid#Evidence_verificationDate
Expected Valuehttps://schema.org/date

References

Annex A - Proof comparison with LPID credential

Annex A.1 - EcdsaSecp256r1Signature2019

Example of a LPID W3C credential protected by a LD-Proof using a EcdsaSecp256r1Signature2019 signature.

{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://oid.spherity.com/contexts/oid/v1.jsonld"
],
"type": [
"VerifiableCredential",
"LegalEntityCertificate"
],
"credentialSubject": {
"id": "did:key:zDnaeyXvqvYVJhVBe2ysSQ2Z4LwW8L8ZWrkqzsczLTf8PjDGA",
"type": "LegalPersonId",
"euid": "HUOCCSZ12345678",
"companyName": "Flower Power AG"
},
"issuer": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP",
"validFrom": "2023-08-24T13:06:21Z",
"proof": {
"@context": "https://www.w3.org/ns/credentials/v2",
"type": "EcdsaSecp256r1Signature2019",
"created": "2023-08-24T13:06:21Z",
"proofPurpose": "assertionMethod",
"verificationMethod": "did:key:zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP#zDnaepBuvsQ8cpsWrVKw8fbpGpvPeNSjVPTWoq6cRqaYzBKVP",
"proofValue": "8upuIPtJVkTkunL9/tKH/cgnVZweG1f8mdMaAdu7KG3zWqfQhKuHuwnjmUttBhdzDhfdVB1qSh/2pcXWgYdQ/w=="
}
}

The holder controls the private key belonging to the credential subject id did:key:zDnaeyXvqvYVJhVBe2ysSQ2Z4LwW8L8ZWrkqzsczLTf8PjDGA. He signs the presentation using this key in order to authenticates as holder against the verifier.

Annex A.2 - Ecdsa 2023 with selective disclosure

Example of a LPID W3C credential including a LD-Proof using a ecdsa-sd-2023 signature. The example uses ecdsa multikeys and uses did:key method for issuer and holder binding.

Specifications:

{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://oid.spherity.com/contexts/oid/v1.jsonld",
"https://w3id.org/security/data-integrity/v2"
],
"credentialSubject": {
"id": "did:key:zDnaeedsxPevxCm5LG4jQHG2DNgHyny9Duis8aGReRoKNaRtL",
"type": "LegalPersonId",
"euid": "DEPLPOAG.123456789",
"companyName": "Flower Power AG"
},
"validUntil": "2029-12-03T12:19:52Z",
"validFrom": "2019-12-03T12:19:52Z",
"issuer": "did:key:zDnaekozcqN7AkYygVYGAzdsWGjx4vwAAdaDWWvskYZtU2Lbr",
"type": [
"VerifiableCredential",
"LegalEntityCertificate"
],
"proof": {
"type": "DataIntegrityProof",
"created": "2024-07-02T09:44:09Z",
"verificationMethod": "did:key:zDnaekozcqN7AkYygVYGAzdsWGjx4vwAAdaDWWvskYZtU2Lbr#zDnaekozcqN7AkYygVYGAzdsWGjx4vwAAdaDWWvskYZtU2Lbr",
"cryptosuite": "ecdsa-sd-2023",
"proofPurpose": "assertionMethod",
"proofValue": "u2V0AhVhAcFCTqNxuCDdpt-a3UmSLNklG8Hhtcv0hMTY86vu50BhJWSYcFnXPdGAmv080QVojJW_ZCnSmlKqDQGpgEJUwMFgjgCQDvqVEqlWWu0a8r7af4MCUk1BxtGw5u8ODk0g2cseynBVYIPVGUvZXxhBA1RIVjeDLAJzBJqUj20522DKDvB06_sHmiVhA1smUhQcRrv33Io7_nlEh4MI-gSa72DsrgAAy1sSWsj8sGlbBuPHdf3R0cPUNCmSHot2gnCdz_JQp8GhtLgH5iFhAsFmKHHMRvqxTTcvgumLzsWK6gFm6Jynuab7B3jVVCObxXE9GR1xWkNXe8ghruO4YtNrJHg-JIF1yegMIYoYUIVhAqNGuV0vdHFzRb901HIG7FZkvNKpl85lmm3AroKEukrG5EPeZqCnwjzX0z5OoAdxzzCazogelzBBQ7Muiy9167lhAQPkFnVPzvrg6b2doh1hAy21FuD_a5VnCSui4-QGYfl3OXcWxZepBccb6RMf8VFP3gz8AiSZO7KM0ui-PGF1zP1hAUvsgfxK1o-CKeB7_uVSv34sao5rJFqZMJlw6PzJ1pXR4raTIDxeoJuhSN12vJ09LFbC8nofCE9bMf07R7PDLdlhAz41-iAJcwDR0zZAQ4wUQ2nP1un75wI2mHVn6ur8tDHv40rbvAOUUxHTUXaJfJKEaU1S40TXqiY5ALmkBn1dBrFhA2YYD2TQsziVOaIEB4M5_Bw1qW9yeAqjLjR8eAS2MvmhBLFld95WJuv-SaAjPpGFV0d-RfkPJX-5w3JpfwsKaSlhAIoKxsi3vaDyu2tblaw4SBkJINFvd81dtsJMMHqBucww4nQRzQho03V1okSsqjF4coL4AIqOFHMMQfkgeMiloQFhADpQtf26t-dzariHI0j7oZD6mWQRIvzUYRy53GOywgdRNKQ-D1EkE_kQED9_INUkl99W2pphgDMPrf95d-xA7Q4A"
}
}

Each value under the credential subject can be selective disclosed, by deriving the proof. When leaving out the company name, the derived credential would look like this:

{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://oid.spherity.com/contexts/oid/v1.jsonld",
"https://w3id.org/security/data-integrity/v2"
],
"type": [
"VerifiableCredential",
"LegalEntityCertificate"
],
"credentialSubject": {
"id": "did:key:zDnaeqfpRavGNV3EiDTZBJ2CTt8nKZDAfAUcaN1bmBEcGsuAN",
"type": "LegalPersonId",
"euid": "DEPLPOAG.123456789"
},
"proof": {
"type": "DataIntegrityProof",
"created": "2024-07-02T09:49:49Z",
"verificationMethod": "did:key:zDnaeR4heVyHbhLPyzrzEd8xqupG1VAHj7BHXHu2Sb1FaZWSy#zDnaeR4heVyHbhLPyzrzEd8xqupG1VAHj7BHXHu2Sb1FaZWSy",
"cryptosuite": "ecdsa-sd-2023",
"proofPurpose": "assertionMethod",
"proofValue": "u2V0BhVhACd9JgGb9ITlwa8njCT62JEEeBd8vqM59cg9mRcxkc93mAFB-RRVnxXnxP_OgPo_FYfDzz3tKHLId-r10dKnsT1gjgCQDxX2U4HRo5dnWfzlV7P3YM8kb4KsazrcVRPiAGfkJ1yiFWEBfjd2DuF0NDWJ9B1kskLxmGPERiy1swxygG1St4RNo1rIRK1Q9WMOUJa37YcTkW0LZOD-oxq00ZDNqTUYh4dQgWEDsc6ZgyauIOxq7HbT3RiCMiw88-DpwLtET1E5X2en9AIGD6xe-7CF5w8MHW_fPhNt1kLSk9DLBsFZHNqONhukGWEDM3ABMureZc6aSAUBZKJ0e1ViNWvPnsKwNPcjTllKiHSYShRjIAeo4xWDIc2PtHRpjkbwjOjBz0IVYOwZJGEBIWEDvx8Y8i7HiluG5OPWdaK-qCpzo4UUBOka7AhDeCPrvbEjOzfTDlCuyhQ11LmFh6LP3ZVHygFr-JcBtSIkzfNR8WEDMCCX7vydvzCZm_LV_g1cuviBvfYZp4LmYF2GwwAN1_3nPMifPWnkSzv-AjrU9xqNX7R1Br7zgG-ARllaYhjsGoQBYIOA12z6Y1mILTSgzCbX6prmoaKI7zRZhtmjVxpyZT20mgA"
}
}

Annex A.3 - SD-JWT LPID credential

Example of a SD-JWT credential using ES256. Every disclosure value is hashed with a salt value (minimum 128 bits of cryptographically secure random) using the algorithm defined in _sd_alg. This digest, together with dummy decoy digests, is stored with random order in the token (under _sd) and the nonce is kept secret until disclosure. Keep in mind, the following JSON does not contain any proof nor the disclosure definitions it self. Only the string representation of the JWT token is signed by the issuer and contains the disclosures.

{
"vct": "https://oid.spherity.com/oid#LegalPersonId",
"iss": "did:key:zNGbSC9VYff6tTGyp7jPbK5D9BpWMdSMtGdkHd3MDi7QWDPQ2RaaCCXWtaXxo7RGctWKGyGrDr8fmHCa6HX4dsxhw",
"cnf": {
"jwk": {
"key_ops": [
"verify"
],
"ext": true,
"kty": "EC",
"x": "mtXN2SIoPBOl6Ul9sUwZNR3WBYQ8xSMYgARbgp35aco",
"y": "QwXQzHD62zbCQK5Srz8oYoIrrQDlF6nQrD3NvJyih8s",
"crv": "P-256"
}
},
"_sd": [
"09G5wxf4enAsiyQJygcP1BM-AlhVeSYyvWkAlqbtN2E",
"O9x7UwuQHPpX-uQtufKqt_eUg6SiyVuZvzHOJhedN3E",
"SEaUwUR6Z1md0kg2E3u8PxGCP6eld1lvrKpYL0fhTpo",
"TCbyH6UROQc3k_SUVfhMijN_RzoXUS7TXcgPJqyPrnU",
"sgXVCySO78f11XEvBBACI3WTbresOeY3qgeklhyyI_0"
],
"_sd_alg": "SHA-256"
}

This is packed into a JWT token and signed by the issuer. All disclosures are attached to the token as well, separated by ~ character.

eyJ0eXAiOiJzZCtqd3QiLCJhbGciOiJFUzI1NiJ9.eyJ2Y3QiOiJodHRwczovL3NwaGVyaXR5LmdpdGh1Yi5pby9vaWQjTGVnYWxQZXJzb25JZCIsImlzcyI6ImRpZDprZXk6ek5HYlNDOVZZZmY2dFRHeXA3alBiSzVEOUJwV01kU010R2RrSGQzTURpN1FXRFBRMlJhYUNDWFd0YVh4bzdSR2N0V0tHeUdyRHI4Zm1IQ2E2SFg0ZHN4aHciLCJjbmYiOnsiandrIjp7ImtleV9vcHMiOlsidmVyaWZ5Il0sImV4dCI6dHJ1ZSwia3R5IjoiRUMiLCJ4IjoibXRYTjJTSW9QQk9sNlVsOXNVd1pOUjNXQllROHhTTVlnQVJiZ3AzNWFjbyIsInkiOiJRd1hRekhENjJ6YkNRSzVTcno4b1lvSXJyUURsRjZuUXJEM052SnlpaDhzIiwiY3J2IjoiUC0yNTYifX0sIl9zZCI6WyIwOUc1d3hmNGVuQXNpeVFKeWdjUDFCTS1BbGhWZVNZeXZXa0FscWJ0TjJFIiwiTzl4N1V3dVFIUHBYLXVRdHVmS3F0X2VVZzZTaXlWdVp2ekhPSmhlZE4zRSIsIlNFYVV3VVI2WjFtZDBrZzJFM3U4UHhHQ1A2ZWxkMWx2cktwWUwwZmhUcG8iLCJUQ2J5SDZVUk9RYzNrX1NVVmZoTWlqTl9Sem9YVVM3VFhjZ1BKcXlQcm5VIiwic2dYVkN5U083OGYxMVhFdkJCQUNJM1dUYnJlc09lWTNxZ2VrbGh5eUlfMCJdLCJfc2RfYWxnIjoiU0hBLTI1NiJ9.qrnJB0HRL2q03BJ0YLJBH1bco80hr_tfonEdtGBi-q2qaegzqbCNpWc8tHDQpiGah2Gm3Za7uQamHKSO7JukJA~WyI3NDM3ZjQ2ZWZjYzg3M2VkIiwiaWQiLCJkaWQ6a2V5OnpRWno1UWtYYmpRYkhUWU02YzQ1VTg3V3J6RW5SS3NmZzM3U0phdXdrQnJoMmZUTjN3V283UDhLUDhqd1JUTWJGbzZUWU1tQmZCelhyQ1V3RUJtcEMxMVdpIl0~WyIyOGFjZTk5NDAxMzdjOGU3IiwiZXVpZCIsIkRFUExQT0FHLjEyMzQ1Njc4OSJd~WyIyNjRjMDEyMGMzZmZiMzZmIiwiY29tcGFueU5hbWUiLCJGbG93ZXIgUG93ZXIgQUciXQ~WyI2ODY4ZmVmYjIwYmZkNWUwIiwib3B0aW9uYWxGaWVsZCIsIm9wdGlvbmFsIHZhbHVlIl0~

The serialized format for an SD-JWT+KB extends the SD-JWT format by concatenating a Key Binding JWT.

<Issuer-signed JWT>~<Disclosure 1>~<Disclosure 2>~...~<Disclosure N>~<KB-JWT>

So we can split the SD-JWT into the following:

  • eyJ0eXAiOiJzZCtqd3QiLCJhbGciOiJFUzI1NiJ9.eyJ2Y3QiOiJodHRwczovL3NwaGVyaXR5LmdpdGh1Yi5pby9vaWQjTGVnYWxQZXJzb25JZCIsImlzcyI6ImRpZDprZXk6ek5HYlNDOVZZZmY2dFRHeXA3alBiSzVEOUJwV01kU010R2RrSGQzTURpN1FXRFBRMlJhYUNDWFd0YVh4bzdSR2N0V0tHeUdyRHI4Zm1IQ2E2SFg0ZHN4aHciLCJjbmYiOnsiandrIjp7ImtleV9vcHMiOlsidmVyaWZ5Il0sImV4dCI6dHJ1ZSwia3R5IjoiRUMiLCJ4IjoibXRYTjJTSW9QQk9sNlVsOXNVd1pOUjNXQllROHhTTVlnQVJiZ3AzNWFjbyIsInkiOiJRd1hRekhENjJ6YkNRSzVTcno4b1lvSXJyUURsRjZuUXJEM052SnlpaDhzIiwiY3J2IjoiUC0yNTYifX0sIl9zZCI6WyIwOUc1d3hmNGVuQXNpeVFKeWdjUDFCTS1BbGhWZVNZeXZXa0FscWJ0TjJFIiwiTzl4N1V3dVFIUHBYLXVRdHVmS3F0X2VVZzZTaXlWdVp2ekhPSmhlZE4zRSIsIlNFYVV3VVI2WjFtZDBrZzJFM3U4UHhHQ1A2ZWxkMWx2cktwWUwwZmhUcG8iLCJUQ2J5SDZVUk9RYzNrX1NVVmZoTWlqTl9Sem9YVVM3VFhjZ1BKcXlQcm5VIiwic2dYVkN5U083OGYxMVhFdkJCQUNJM1dUYnJlc09lWTNxZ2VrbGh5eUlfMCJdLCJfc2RfYWxnIjoiU0hBLTI1NiJ9.qrnJB0HRL2q03BJ0YLJBH1bco80hr_tfonEdtGBi-q2qaegzqbCNpWc8tHDQpiGah2Gm3Za7uQamHKSO7JukJA
  • ~WyI3NDM3ZjQ2ZWZjYzg3M2VkIiwiaWQiLCJkaWQ6a2V5OnpRWno1UWtYYmpRYkhUWU02YzQ1VTg3V3J6RW5SS3NmZzM3U0phdXdrQnJoMmZUTjN3V283UDhLUDhqd1JUTWJGbzZUWU1tQmZCelhyQ1V3RUJtcEMxMVdpIl0
  • ~WyIyOGFjZTk5NDAxMzdjOGU3IiwiZXVpZCIsIkRFUExQT0FHLjEyMzQ1Njc4OSJd
  • ~WyIyNjRjMDEyMGMzZmZiMzZmIiwiY29tcGFueU5hbWUiLCJGbG93ZXIgUG93ZXIgQUciXQ
  • ~WyI2ODY4ZmVmYjIwYmZkNWUwIiwib3B0aW9uYWxGaWVsZCIsIm9wdGlvbmFsIHZhbHVlIl0

Each disclosure is a base64 encoded value, built out of an array with the following format;

  1. A salt value
  2. claim name
  3. claim value

Example:

["28ace9940137c8e7","euid","DEPLPOAG.123456789"]

A presentation, with key binding for holder enabled, will look like this (decoded JWT content). When using key binding for holder, its important to add the cnf containing the holder jwk, otherwise it will not be valid. Not disclosed fields will be simply left out in the string representation of the JWT presentation:

{
"payload": {
"vct": "https://oid.spherity.com/oid#LegalPersonId",
"iss": "did:key:zNGbSC9VYff6tTGyp7jPbK5D9BpWMdSMtGdkHd3MDi7QWDPQ2RaaCCXWtaXxo7RGctWKGyGrDr8fmHCa6HX4dsxhw",
"cnf": {
"jwk": {
"key_ops": [
"verify"
],
"ext": true,
"kty": "EC",
"x": "mtXN2SIoPBOl6Ul9sUwZNR3WBYQ8xSMYgARbgp35aco",
"y": "QwXQzHD62zbCQK5Srz8oYoIrrQDlF6nQrD3NvJyih8s",
"crv": "P-256"
}
},
"id": "did:key:zQZz5QkXbjQbHTYM6c45U87WrzEnRKsfg37SJauwkBrh2fTN3wWo7P8KP8jwRTMbFo6TYMmBfBzXrCUwEBmpC11Wi",
"companyName": "Flower Power AG",
"euid": "DEPLPOAG.123456789"
},
"header": {
"typ": "sd+jwt",
"alg": "ES256"
},
"kb": {
"payload": {
"nonce": "3652191003",
"aud": "https://example.com/verifier",
"iat": 1709576037,
"sd_hash": "r5EFZOtPljnor5IslvxhB-ZkVCp0CWQPrqOowkh3Kuk"
},
"header": {
"typ": "kb+jwt",
"alg": "ES256"
}
}
}

Annex B - EU Company Certificate

Below we show the EU Core Vocabulary for the EU Company Certificate and how it maps to the OID Vocabulary presented.

EU Core VocabulariesOID Vocabulary
LegalEntity.legalNamecompanyName
LegalEntity.legalFormTypelegalForm
LegalEntity.legalIdentifier.Identifier.notation; Identifier.schemaAgencyregisterNumber
LegalEntity.identifier.Identifier.notationeuid
LegalEntity.registeredAddress.Addressaddress
LegalEntity.registeredAddress.Address OR LegalEntity.contactPoint.ContactPoint.hasEmail?
LegalEntity.registrationDateregistrationDate
LegalEntity.legalEntityStatusstatus
LegalEntity.legalRepresentative?
LegalEntity.legalEntityActivitynace020
LegalEntity.contactPoint.ContactPoint.contactPage?

The presented semantic model enables the efficient issuance of an EU Company Certificate, as presented in the following example:

{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://oid.spherity.com/contexts/oid/v1.jsonld"
],
"type": [
"VerifiableCredential",
"LegalEntityCertificate"
],
"id": "urn:uuid:f086cced-1153-4540-993b-b4d52ca499c2",
"validFrom": "2019-12-03T12:19:52Z",
"validUntil": "2029-12-03T12:19:52Z",
"issuer": "did:key:z6MkiY62766b1LJkExWMsM3QG4WtX7QpY823dxoYzr9qZvJ3",
"credentialSubject": {
"id": "did:key:fictive-1",
"type": [
"LegalPersonId",
"LegalPersonBaseData"
],
"companyName": "Flower Power AG",
"euid": "HUOCCSZ12345678",
"legalForm": "GmbH",
"registerIdentification": {
"registerNumber": "123AVB"
},
"address": {
"postalCode": "10119",
"addressCountry": "Germany",
"addressLocality": "Berlin"
},
"registrationDate": "2010-01-01",
"status": "active",
"nace020": {
"type": "Industry",
"code": "IT",
"industryDescription": "Tech Int. Trade"
}
}
}

Annex C - Ultimate Beneficial Owner Certificate

The Ultimate Beneficial Owners (UBOs) can be declared as a subset of the Legal Entity Certificate. In the following we show how to create an UBO credential by presenting the required subset of propterties from our schema. We provide all the required company information such as name and euid and include the list of UBOs. A unique credential is issued for each natural person. As a result, data duplication is prevented and a natural person can be referenced in multiple ways. For example, a natural person can be a UBO and a functionary at the same time.

The following fields are required to an UBO credential:

VocabularyRequired
companyNamemandatory
euidmandatory
legalFormmandatory
addressmandatory
[ultimateBeneficiaryOwner]mandatory
ultimateBeneficiaryOwner_naturalPersonIdmandatory
ultimateBeneficiaryOwner_natureOfInterestmandatory
ultimateBeneficiaryOwner_descriptionoptional
ultimateBeneficiaryOwner_ownershipTypeoptional
ultimateBeneficiaryOwner_registrableDateoptional
ultimateBeneficiaryOwner_inactiveDateoptional
ultimateBeneficiaryOwner_lastChangeDateoptional

For every UBO, a natural person is referenced using the naturalPersonId:

FieldRequired
familyNamemandatory
givenNamemandatory
birthDatemandatory
birthPlaceoptional
postalAddressoptional
taxDomicileoptional
isAliveoptional
citizenshipmandatory
domicilemandatory

The following example shows a credential with two UBOs. The second UBO contains additional optional data. To comply with the defined standard, the mandatory fields must be present. Since the natural person credentials are issued separately, they are referenced and are part of the credential array:

[
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://oid.spherity.com/contexts/oid/v1.jsonld"
],
"type": [
"VerifiableCredential",
"LegalEntityCertificate"
],
"id": "urn:uuid:f086cced-1153-4540-993b-b4d52ca499c2",
"validFrom": "2019-12-03T12:19:52Z",
"validUntil": "2029-12-03T12:19:52Z",
"issuer": "did:key:z6MkiY62766b1LJkExWMsM3QG4WtX7QpY823dxoYzr9qZvJ3",
"credentialSubject": {
"id": "did:key:fictive-1",
"type": [
"LegalPersonId",
"LegalPersonBaseData",
"LegalPerson"
],
"companyName": "Flower Power AG",
"euid": "HUOCCSZ12345678",
"legalForm": "GmbH",
"address": {
"postalCode": "10119",
"addressCountry": "Germany",
"addressLocality": "Berlin"
},
"ultimateBeneficiaryOwner": [
{
"naturalPersonId": "did:key:fictive-2",
"natureOfInterest": "control through ownership",
"ownershipType": "direct",
"registrableDate": "2024-07-08"
},
{
"naturalPersonId": "did:key:fictive-3",
"natureOfInterest": "voting rights",
"votingRights": {
"share": {
"@type": "Share",
"relative": "20",
"absolute": {
"@type": "Balance",
"amount": "399399",
"currency": "EUR"
},
"absoluteInEur": {
"@type": "Balance",
"amount": "399399",
"currency": "EUR"
},
"isDirectShare": true
},
"votingRightsRelativeDirect": "20",
"votingRightsRelative": "20",
"shareRelativeDirect": "20"
},
"capital": {
"share": {
"@type": "Share",
"relative": "20",
"absolute": {
"@type": "Balance",
"amount": "399399",
"currency": "EUR"
},
"absoluteInEur": {
"@type": "Balance",
"amount": "399399",
"currency": "EUR"
},
"isDirectShare": true
},
"votingRightsRelativeDirect": "20",
"shareRelativeDirect": "20"
},
"otherControl": {
"share": {
"@type": "Share",
"relative": "20",
"absolute": {
"@type": "Balance",
"amount": "399399",
"currency": "EUR"
},
"absoluteInEur": {
"@type": "Balance",
"amount": "399399",
"currency": "EUR"
},
"isDirectShare": true
},
"votingRightsRelativeDirect": "20",
"shareRelativeDirect": "20"
},
"fictitious": {
"share": {
"@type": "Share",
"relative": "20",
"absolute": {
"@type": "Balance",
"amount": "399399",
"currency": "EUR"
},
"absoluteInEur": {
"@type": "Balance",
"amount": "399399",
"currency": "EUR"
},
"isDirectShare": true
},
"votingRightsRelativeDirect": "20",
"shareRelativeDirect": "20"
}
}
]
}
},
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://oid.spherity.com/contexts/oid/v1.jsonld"
],
"type": [
"VerifiableCredential",
"LegalEntityCertificate"
],
"id": "urn:uuid:f086cced-1153-4540-993b-b4d52ca4993",
"validFrom": "2019-12-03T12:19:52Z",
"validUntil": "2029-12-03T12:19:52Z",
"issuer": "did:key:z6MkiY62766b1LJkExWMsM3QG4WtX7QpY823dxoYzr9qZvJ3",
"credentialSubject": {
"id": "did:key:fictive-2",
"type": "NaturalPerson",
"givenName": "John",
"familyName": "Doe",
"gender": "Male",
"taxDomicile": "DE",
"birthDate": "1970-01-01",
"citizenship": "DE",
"domicile": {
"postalCode": "10119",
"addressCountry": "DE",
"addressLocality": "Berlin"
}
}
},
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://oid.spherity.com/contexts/oid/v1.jsonld"
],
"type": [
"VerifiableCredential",
"LegalEntityCertificate"
],
"id": "urn:uuid:f086cced-1153-4540-993b-b4d52ca4994",
"validFrom": "2019-12-03T12:20:52Z",
"validUntil": "2029-12-03T12:20:52Z",
"issuer": "did:key:z6MkiY62766b1LJkExWMsM3QG4WtX7QpY823dxoYzr9qZvJ3",
"credentialSubject": {
"id": "did:key:fictive-3",
"type": "NaturalPerson",
"givenName": "Jane",
"familyName": "Doe",
"gender": "Female",
"birthDate": "1972-01-01",
"isAlive": true,
"citizenship": "FR",
"domicile": {
"postalCode": "10777",
"addressCountry": "DE",
"addressLocality": "Berlin"
}
}
}
]