VCT templates · VCT templates
Bank Customer Credential VCT
VCT template for a "verified customer of us" credential. Issued by a bank after KYC; consumed at partner services to skip re-KYC.
- bank
- kyc
- partner-onboarding
Tested against:credentialIssuer: 1.0.0vctRegistry: 1.0.0
Issuer archetype
A retail bank that has completed KYC on the customer. The bank mints a "verified customer of us" credential the customer can present at partner services — brokerages, insurers, peer banks — to skip re-KYC.
VCT URL
https://thoryn.org/vct/BankCustomerCredential-v1
Claim schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "BankCustomerCredential",
"type": "object",
"required": ["account_holder_name", "kyc_level", "kyc_completed_at"],
"properties": {
"account_holder_name": { "type": "string", "minLength": 1, "maxLength": 200 },
"customer_id": { "type": "string" },
"kyc_level": { "type": "string", "enum": ["LoA-low", "LoA-medium", "LoA-high"] },
"kyc_completed_at": { "type": "string", "format": "date" },
"account_open_date": { "type": "string", "format": "date" },
"country": { "type": "string", "pattern": "^[A-Z]{2}$" },
"pep_flag": { "type": "boolean" },
"sanctions_clear": { "type": "boolean" }
}
}The pep_flag (politically exposed person) and sanctions_clear claims are useful for partner services that need to apply enhanced due diligence — without seeing the underlying check details.
Display metadata
{
"name": "Verified Bank Customer",
"description": "KYC-verified customer credential.",
"background_color": "#1a2a6e",
"text_color": "#ffffff",
"claims": [
{ "path": "account_holder_name", "label": "Account holder" },
{ "path": "kyc_level", "label": "KYC level" },
{ "path": "kyc_completed_at", "label": "Verified" }
]
}Sample minted credential
{
"iss": "did:bank:rabobank",
"sub": "did:key:zQ3sh...",
"vct": "https://thoryn.org/vct/BankCustomerCredential-v1",
"iat": 1735000000,
"exp": 1766000000,
"account_holder_name": "Jan Jansen",
"kyc_level": "LoA-high",
"kyc_completed_at": "2025-11-12",
"country": "NL",
"pep_flag": false,
"sanctions_clear": true
}Lifecycle
- Expiry: 12 months — KYC posture changes; re-mint annually
- Revocation: instant on account closure; status-list driven
- Deferred flow: not used