Certificate Of Registration credential schema
When to use
Use this skill when you issue or ask for a Certificate Of Registration. A business register issues this credential to attest that a company exists: its registered name and number, its legal form and status, its business activity, the date of registration, and its registered address. It is a core credential of a European Business Wallet (EUBW) integration.
The registry publishes this schema in all three formats:
| Format | Metadata flag | Identifier to send |
|---|---|---|
dc+sd-jwt |
isSdJwt: true |
vct |
jwt_vc_json |
isJwt: true |
type |
mso_mdoc |
isMsoMdoc: true |
doctype |
This page describes registry version 2025.7.1, the latest version of the template.
Claim path pointer document - dc+sd-jwt
| Fact | Value |
|---|---|
| Title | Certificate Of Registration |
| Credential type | CertificateOfRegistration |
| Namespace | org.iso.18013.5.1.cor |
| Format | dc+sd-jwt |
| Supported version | version_01 |
{
"claims": [
{
"path": [
"name"
],
"mandatory": true,
"limitDisclosure": true
},
{
"path": [
"legalForm"
],
"limitDisclosure": true,
"mandatory": true
},
{
"path": [
"activity"
],
"limitDisclosure": true,
"mandatory": true
},
{
"path": [
"registrationDate"
],
"limitDisclosure": true,
"mandatory": true
},
{
"path": [
"legalStatus"
],
"limitDisclosure": true,
"mandatory": true
},
{
"path": [
"registeredAddress"
],
"limitDisclosure": true,
"mandatory": true
},
{
"path": [
"registeredAddress",
"adminUnitLevel1"
],
"limitDisclosure": true,
"mandatory": true
},
{
"path": [
"registeredAddress",
"fullAddress"
],
"limitDisclosure": true,
"mandatory": true
},
{
"path": [
"registeredAddress",
"locatorDesignator"
],
"limitDisclosure": true,
"mandatory": true
},
{
"path": [
"registeredAddress",
"postCode"
],
"limitDisclosure": true,
"mandatory": true
},
{
"path": [
"registeredAddress",
"postName"
],
"limitDisclosure": true,
"mandatory": true
},
{
"path": [
"registeredAddress",
"thoroughFare"
],
"limitDisclosure": true,
"mandatory": true
},
{
"path": [
"orgNumber"
],
"limitDisclosure": true,
"mandatory": true
}
]
}
Claim path pointer document - jwt_vc_json
| Fact | Value |
|---|---|
| Title | Certificate Of Registration |
| Credential type | CertificateOfRegistration |
| Namespace | org.iso.18013.5.1.cor |
| Format | jwt_vc_json |
| Supported version | version_01 |
{
"claims": [
{
"path": ["credentialSubject", "name"],
"mandatory": true
},
{
"path": ["credentialSubject", "legalForm"],
"mandatory": true
},
{
"path": ["credentialSubject", "activity"],
"mandatory": true
},
{
"path": ["credentialSubject", "registrationDate"],
"mandatory": true
},
{
"path": ["credentialSubject", "legalStatus"],
"mandatory": true
},
{
"path": ["credentialSubject", "registeredAddress"],
"mandatory": true
},
{
"path": ["credentialSubject", "registeredAddress", "adminUnitLevel1"],
"mandatory": true
},
{
"path": ["credentialSubject", "registeredAddress", "fullAddress"],
"mandatory": true
},
{
"path": ["credentialSubject", "registeredAddress", "locatorDesignator"],
"mandatory": true
},
{
"path": ["credentialSubject", "registeredAddress", "postCode"],
"mandatory": true
},
{
"path": ["credentialSubject", "registeredAddress", "postName"],
"mandatory": true
},
{
"path": ["credentialSubject", "registeredAddress", "thoroughFare"],
"mandatory": true
},
{
"path": ["credentialSubject", "orgNumber"],
"mandatory": true
}
]
}
Claim path pointer document - mso_mdoc
| Fact | Value |
|---|---|
| Title | Certificate Of Registration |
| Credential type | CertificateOfRegistration |
| Doctype | org.iso.18013.5.1.cor |
| Namespace in the metadata | org.iso.18013.5.1.cor |
| Namespace in the claim paths | org.iso.18013.5.1 |
| Format | mso_mdoc |
| Supported version | version_01 |
{
"claims": [
{
"path": ["org.iso.18013.5.1", "name"],
"mandatory": true,
"limitDisclosure": true
},
{
"path": ["org.iso.18013.5.1", "legalForm"],
"mandatory": true,
"limitDisclosure": true
},
{
"path": ["org.iso.18013.5.1", "activity"],
"mandatory": true,
"limitDisclosure": true
},
{
"path": ["org.iso.18013.5.1", "registrationDate"],
"mandatory": true,
"limitDisclosure": true
},
{
"path": ["org.iso.18013.5.1", "legalStatus"],
"mandatory": true,
"limitDisclosure": true
},
{
"path": ["org.iso.18013.5.1", "registeredAddress"],
"mandatory": true,
"limitDisclosure": true
},
{
"path": ["org.iso.18013.5.1", "registeredAddress", "adminUnitLevel1"],
"mandatory": true,
"limitDisclosure": true
},
{
"path": ["org.iso.18013.5.1", "registeredAddress", "fullAddress"],
"mandatory": true,
"limitDisclosure": true
},
{
"path": ["org.iso.18013.5.1", "registeredAddress", "locatorDesignator"],
"mandatory": true,
"limitDisclosure": true
},
{
"path": ["org.iso.18013.5.1", "registeredAddress", "postCode"],
"mandatory": true,
"limitDisclosure": true
},
{
"path": ["org.iso.18013.5.1", "registeredAddress", "postName"],
"mandatory": true,
"limitDisclosure": true
},
{
"path": ["org.iso.18013.5.1", "registeredAddress", "thoroughFare"],
"mandatory": true,
"limitDisclosure": true
},
{
"path": ["org.iso.18013.5.1", "orgNumber"],
"mandatory": true,
"limitDisclosure": true
}
]
}
The metadata namespace and the namespace in the claim paths are not the same
value. The claim paths use org.iso.18013.5.1. Send the paths as the schema
document gives them, because the issuer builds the mdoc from the paths.
How to read the fields
Each item of the claims array is one claim path pointer.
pathis an array that selects one claim. Each element is a string for an object key, an integer for an array index, ornullfor every element of an array. The three formats point at the same claims with three different prefixes:dc+sd-jwtuses the bare claim name.jwt_vc_jsonstarts every path withcredentialSubject.mso_mdocstarts every path with the mDoc namespaceorg.iso.18013.5.1. Every path of the configuration must start with the same namespace element.
mandatorysays if the claim must hold a value when you issue. The issuer reads a missingmandatoryastrue. Every claim of this schema is mandatory. Remove the claims that you do not issue from your credential definition.limitDisclosuresays if the holder can disclose the claim on its own. Thedc+sd-jwtandmso_mdocdocuments set it totrueon every claim. Thejwt_vc_jsondocument leaves it out, becausejwt_vc_jsonhas no selective disclosure.
registeredAddress appears twice in the pattern of the paths. One pointer
selects the whole address object, and six more pointers select its parts:
adminUnitLevel1 (the region), fullAddress, locatorDesignator (the house
number), postCode, postName (the town) and thoroughFare (the street). The
holder can disclose the whole address, or one part of it.
orgNumber holds the registration number of the company. legalForm holds the
company form. legalStatus says if the registration is active. activity holds
the business activity.
Use with the iGrant.io API
Create a credential definition with:
POST /v2/config/digital-wallet/openid/sdjwt/credential-definition
Put one entry in credentialDefinitions[] for each format that you publish, and
copy the claims array of the matching schema document into that entry.
- Set
versiontoversion_01at the top level of the request. - For
dc+sd-jwt: setvcttoCertificateOfRegistration, put the array inclaims.claims, and setvalidationPathto$. - For
jwt_vc_json: settypeto an array that holdsCertificateOfRegistration, put the array incredentialDefinition.claims, and setvalidationPathto$.vc. - For
mso_mdoc: setdoctypetoorg.iso.18013.5.1.cor, put the array inclaims.claims, and setvalidationPathto$.
{
"label": "Issue Certificate Of Registration",
"version": "version_01",
"credentialDefinitions": [
{
"credentialFormat": "dc+sd-jwt",
"vct": "CertificateOfRegistration",
"validationPath": "$",
"supportRevocation": true,
"revocationMethod": "status_list",
"claims": {
"claims": [
{ "path": ["name"], "mandatory": true, "limitDisclosure": true },
{ "path": ["orgNumber"], "mandatory": true, "limitDisclosure": true },
{
"path": ["registeredAddress", "postCode"],
"mandatory": true,
"limitDisclosure": true
}
]
}
}
]
}
The example shows three claims. Send the full array when you want the full
schema. A company can close, so set supportRevocation to true.
When you issue, the top key of claims for the mso_mdoc entry is the
namespace org.iso.18013.5.1.
Read igrantio-api-issuer for the full operation reference: every request
field, the display options, revocation, and the issue operation that fills these
claims. Read igrantio-api-verifier for the DCQL query that asks for the
company number.
Source is the registry
This skill mirrors the claim path pointer template in the iGrant.io verifiable data registry. If this skill and the registry file disagree, the registry wins. Fetch the source before you rely on a claim path:
- Template: https://github.com/decentralised-dataexchange/verifiable-data-registry/tree/main/credentialSchemas/claimPathPointer/certificateOfRegistration
- Raw SD-JWT schema: https://raw.githubusercontent.com/decentralised-dataexchange/verifiable-data-registry/main/credentialSchemas/claimPathPointer/certificateOfRegistration/2025.7.1/dc%2Bsd-jwt.schema.json
- Raw JWT schema: https://raw.githubusercontent.com/decentralised-dataexchange/verifiable-data-registry/main/credentialSchemas/claimPathPointer/certificateOfRegistration/2025.7.1/jwt_vc_json.schema.json
- Raw mdoc schema: https://raw.githubusercontent.com/decentralised-dataexchange/verifiable-data-registry/main/credentialSchemas/claimPathPointer/certificateOfRegistration/2025.7.1/mso_mdoc.schema.json
Each schema file has a .schema.metadata.json file beside it. A newer version
directory can appear in the registry. Check the directory listing for a version
above 2025.7.1 and use the newest one.