Disclosures (Legacy)
On this page
Disclosures control what information users reveal during identity verification. You configure them in the frontend disclosures object, which contains two types of settings:
- Verification Requirements - conditions that must be met (must match backend)
- Disclosure Requests - information users will reveal (frontend only)
Verification Requirements
These settings define verification conditions and must match your backend verification_config:
minimumAge
Verifies user is at least this age without revealing exact age or date of birth.
disclosures: {
minimumAge: 18, // User must be 18 or older
}
excludedCountries
Blocks users from specific countries using ISO 3-letter country codes.
disclosures: {
excludedCountries: ['IRN', 'PRK'], // Block Iran and North Korea
}
ofac
Enables OFAC (sanctions) checking against official watchlists.
disclosures: {
ofac: true, // Enable sanctions checking
}
Disclosure Requests
These settings specify what information users will reveal. Configure only in frontend - backend receives this data automatically.
Personal Information
name: User’s full name from the verified documentnationality: User’s nationalitygender: User’s gender (M/F)date_of_birth: Full date of birth
Document Information
passport_number: Document number (use carefully for privacy)expiry_date: Document expiry dateissuing_state: Country that issued the document
Example Configuration
The disclosure configuration in SelfAppBuilder controls what verification rules are applied and what data users reveal:
const app = new SelfAppBuilder({
// ... other config
disclosures: {
// Verification rules (must match backend/contract config exactly)
minimumAge: 18,
excludedCountries: ["IRN", "PRK"],
ofac: true,
// Data disclosures (frontend only — what users reveal)
nationality: true,
gender: true,
name: false,
date_of_birth: false,
passport_number: false,
expiry_date: false,
issuing_state: false,
},
}).build();
Verification Result
When verification succeeds, disclosed information is available in result.discloseOutput:
const result = await selfBackendVerifier.verify(/*...*/);
if (result.isValidDetails.isValid) {
const data = result.discloseOutput;
console.log(data.nationality); // "USA" (if requested)
console.log(data.gender); // "M" or "F" (if requested)
console.log(data.olderThan); // "18" (if minimumAge set)
console.log(data.name); // undefined (if not requested)
}
Frontend & Backend Alignment
For example, if the backend requires minimumAge: 18 but the frontend specifies minimumAge: 21, verification will fail. The values must be identical, not just compatible.
Privacy Best Practices
- Request only what you need: Each disclosure reveals personal information
- Avoid sensitive fields: Be cautious with
passport_numberandname - Consider alternatives: Use
minimumAgeinstead ofdate_of_birthfor age verification - Store carefully: Implement proper data protection for disclosed information
Common Use Cases
Age verification only:
disclosures: {
minimumAge: 18, // No personal data revealed
}
Basic identity with nationality:
disclosures: {
minimumAge: 18,
nationality: true,
gender: true,
}
Complete identity verification:
disclosures: {
minimumAge: 21,
ofac: true,
nationality: true,
name: true,
date_of_birth: true,
} Thanks — what went wrong?
Thanks for your feedback!