Verification Profiles
Create custom identity verification workflows tailored to your risk appetite, compliance requirements, and user experience goals.
Verification Profiles
Design custom verification workflows by combining document checks, biometrics, database lookups, and risk assessments to match your specific compliance and business requirements.
What are Verification Profiles?
Verification profiles are reusable workflow templates that define:
- Which checks to perform (document, biometric, database)
- In what order checks execute
- Automatic vs. manual review rules
- Pass/fail thresholds
- Required vs. optional steps
Flexibility
Create multiple profiles for different customer segments (e.g., retail customers vs. high-net-worth individuals, low-value vs. high-value transactions).
Pre-Built Profiles
VeriPlus includes 3 standard profiles:
Express Profile
Checks: Document verification only Time: 30 seconds Cost: 1 Credit Risk Level: Low-Medium
Best For:
- Low-risk customers
- Small transaction values (<$1,000)
- Quick onboarding required
- Non-regulated industries
Process:
- User uploads ID document
- AI verifies authenticity
- Data extracted automatically
- Auto-approve if document valid
Limitations:
- No proof of possession (could be stolen ID)
- No liveness check
- Higher fraud risk
Standard Profile
Checks: Document + Selfie + Face Match Time: 60 seconds Cost: 1 Credit Risk Level: Medium
Best For:
- General KYC compliance
- Most use cases
- Regulated industries (basic tier)
- E-commerce, marketplace
Process:
- User uploads ID document
- Document verified
- User takes selfie
- Face match performed
- Auto-approve if both pass
Security: Proves person possesses the document (not just a photo of it)
Enhanced Profile
Checks: Document + Selfie + Liveness + Face Match Time: 90 seconds Cost: 2 Credits Risk Level: Low (High Assurance)
Best For:
- High-risk customers (PEPs, sanctions screening required)
- Large transactions (>$10,000)
- Cryptocurrency exchanges
- Financial institutions
- Gaming/gambling
Process:
- User uploads ID document
- Document verified
- User takes selfie with liveness check
- Liveness verified (real person)
- Face match performed
- Auto-approve if all pass
Security: Maximum fraud prevention with liveness detection
Creating Custom Profiles
Profile Builder
POST /api/v3/verification-profiles
{
"name": "High-Value Customer",
"description": "For transactions above $10,000",
"steps": [
{
"type": "document",
"required": true,
"allowedDocuments": ["passport", "national_id"],
"fraudThreshold": 30
},
{
"type": "selfie",
"required": true,
"livenessType": "active"
},
{
"type": "face_match",
"required": true,
"minimumScore": 85
},
{
"type": "aml_screening",
"required": true,
"categories": ["sanctions", "pep", "adverse_media"]
}
],
"autoApprove": {
"enabled": false // Always manual review
}
}Step Types
| Step Type | Description | Credit Cost |
|---|---|---|
document | ID document verification | 1 |
non_document | Database/credit bureau checks | 1 |
selfie | Selfie capture (with/without liveness) | 1 |
face_match | Compare selfie to document | Included |
aml_screening | Sanctions/PEP screening | 1-5 |
deepfake | AI-generated content detection | 2-10 |
kyt_crypto | Crypto wallet screening | 2 |
manual_review | Human review required | 0 |
Conditional Logic
Add conditional steps based on risk signals:
{
"steps": [
{
"type": "document",
"required": true
},
{
"type": "aml_screening",
"required": false,
"conditions": {
"triggerIf": {
"country": ["RU", "IR", "KP"], // High-risk countries
"OR": {
"transactionValue": ">= 10000"
}
}
}
},
{
"type": "deepfake",
"required": false,
"conditions": {
"triggerIf": {
"documentFraudScore": ">= 40"
}
}
}
]
}Conditional Triggers:
- Country of residence
- Transaction value
- Customer risk score
- Document fraud score
- Age
- Previous verification history
Auto-Approval Rules
Configure when verifications auto-approve vs. require manual review:
Rule Configuration
{
"autoApprove": {
"enabled": true,
"rules": [
{
"condition": "ALL",
"checks": [
{ "documentFraudScore": "< 30" },
{ "faceMatchScore": ">= 85" },
{ "livenessResult": "== pass" },
{ "amlHits": "== 0" }
]
}
]
},
"autoReject": {
"enabled": true,
"rules": [
{
"condition": "ANY",
"checks": [
{ "documentFraudScore": ">= 70" },
{ "faceMatchScore": "< 60" },
{ "amlSanctionsHit": "== true" }
]
}
]
}
}Review Queue
Verifications that don't auto-approve or auto-reject go to manual review:
{
"manualReview": {
"assignTo": "compliance_team",
"priority": "high", // or "medium", "low"
"sla": 4 // hours
}
}Risk-Based Profiles
Different profiles for different customer risk levels:
Low-Risk Profile
Criteria: Small transactions, low-risk countries, existing customer Workflow: Express (document only) Cost: 1 Credit
Medium-Risk Profile
Criteria: Standard transactions, most countries, new customer Workflow: Standard (document + selfie) Cost: 1 Credit
High-Risk Profile
Criteria: Large transactions, high-risk countries, PEPs Workflow: Enhanced + AML Cost: 6 credits (3 for Enhanced + 3 for AML)
Dynamic Profile Selection:
function selectProfile(applicant, transaction) {
const riskScore = calculateRisk(applicant);
if (riskScore < 30) return 'low_risk_profile';
if (riskScore < 70) return 'medium_risk_profile';
return 'high_risk_profile';
}Industry-Specific Profiles
Cryptocurrency Exchange
Requirements:
- Document verification (passport or national ID)
- Liveness detection (prevent deepfakes)
- AML screening (sanctions, PEP)
- KYT crypto wallet screening
- Manual review for PEPs
{
"name": "Crypto Exchange KYC",
"steps": [
{ "type": "document", "allowedDocuments": ["passport", "national_id"] },
{ "type": "selfie", "livenessType": "active" },
{ "type": "face_match", "minimumScore": 90 },
{ "type": "aml_screening", "categories": ["sanctions", "pep"] },
{ "type": "kyt_crypto", "walletAddress": "{{applicant.cryptoWallet}}" }
],
"autoApprove": {
"enabled": true,
"rules": [
{ "amlHits": "== 0" },
{ "kytRiskScore": "< 40" }
]
}
}Online Gaming/Gambling
Requirements:
- Age verification (18+ or 21+)
- Document verification
- Address verification
- Responsible gambling checks
{
"name": "Gaming Age Verification",
"steps": [
{ "type": "age_estimation", "minimumAge": 18 },
{ "type": "document", "required": true },
{ "type": "selfie", "required": true },
{ "type": "face_match", "minimumScore": 80 }
],
"autoReject": {
"rules": [
{ "estimatedAge": "< 18" },
{ "documentExpired": "== true" }
]
}
}Fintech/Banking
Requirements:
- Document + biometric
- AML screening
- Credit bureau check (optional)
- Address verification
{
"name": "Bank Account Opening",
"steps": [
{ "type": "document" },
{ "type": "selfie", "livenessType": "passive" },
{ "type": "face_match", "minimumScore": 85 },
{ "type": "aml_screening", "categories": ["sanctions", "pep", "adverse_media"] },
{ "type": "non_document", "methods": ["credit_bureau", "address_verification"] }
],
"manualReview": {
"always": false,
"triggerIf": {
"amlHits": "> 0",
"OR": { "faceMatchScore": "< 85" }
}
}
}Healthcare
Requirements:
- Identity verification
- Insurance verification
- HIPAA compliance
{
"name": "Patient Onboarding",
"steps": [
{ "type": "document" },
{ "type": "selfie" },
{ "type": "face_match" }
],
"dataRetention": {
"period": "7_years", // HIPAA requirement
"deleteAfter": true
}
}Re-Verification Profiles
For existing customers requiring periodic re-verification:
{
"name": "Annual Re-Verification",
"steps": [
{ "type": "selfie", "livenessType": "passive" },
{ "type": "face_match", "compareTo": "original_document" }
],
"skipIf": {
"lastVerification": "< 365_days",
"riskScore": "< 30"
}
}Re-Verification Triggers:
- Annual compliance requirement
- Transaction threshold exceeded
- Risk score increase
- Customer request
- Regulatory requirement
Testing Profiles
Test profiles in sandbox before production:
POST /api/v3/verification-profiles/:id/test
{
"testData": {
"document": "sample_passport.jpg",
"selfie": "sample_selfie.jpg"
}
}
// Returns simulated results
{
"result": "approved",
"steps": [
{ "type": "document", "status": "pass", "duration": "2.3s" },
{ "type": "selfie", "status": "pass", "duration": "1.1s" },
{ "type": "face_match", "status": "pass", "score": 92 }
],
"totalCost": 2,
"totalDuration": "5.2s"
}Profile Analytics
Track performance metrics for each profile:
GET /api/v3/verification-profiles/:id/analytics
{
"profile": "Standard KYC",
"period": "last_30_days",
"metrics": {
"totalVerifications": 1245,
"autoApproved": 892, // 71.6%
"manualReview": 287, // 23.0%
"autoRejected": 66, // 5.3%
"averageCost": 2.1,
"averageDuration": "58s",
"passRate": 95.2%
},
"stepPerformance": {
"document": { "passRate": 98.1%, "avgDuration": "12s" },
"face_match": { "passRate": 94.3%, "avgDuration": "3s" }
}
}Optimization Insights:
- Which steps cause most manual reviews?
- Average cost per verification
- Conversion rate (completed verifications)
- User drop-off points
Best Practices
- Start with Standard profile - Works for most use cases
- Test before deploying - Use sandbox to validate profile logic
- Monitor analytics - Adjust thresholds based on false positive/negative rates
- Have clear triggers - Know when to use each profile
- Document your profiles - Explain why each step is required (for audits)
- Balance security vs. UX - More steps = higher security but worse conversion
- Regular review - Update profiles as regulations and fraud patterns change
- A/B test - Compare profiles to optimise pass rates and cost
Migration Between Profiles
Upgrade existing customers to higher assurance levels:
POST /api/v3/applicants/:id/upgrade-verification
{
"fromProfile": "express",
"toProfile": "standard",
"reason": "Transaction limit increase"
}
// Only performs incremental steps (e.g., adds selfie if document already done)Compliance Mapping
Map profiles to regulatory requirements:
| Regulation | Minimum Profile | Notes |
|---|---|---|
| 6AMLD (EU) | Standard | Enhanced for PEPs |
| PATRIOT Act (US) | Standard | + AML screening |
| FATF Recommendations | Standard | Enhanced for high-risk |
| MiCA (Crypto - EU) | Enhanced | + KYT crypto |
| GDPR (EU) | Any | Consent + data minimization |
| UK MLR 2017 | Standard | Enhanced for PEPs |
Next Steps
Ready to get started?
Start with our free plan. No credit card required.