curl -X POST https://api.vouchmark.com/v1/kyb/applicants/app_aBcD.../submit \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"notes": "Manual review completed, documents verified."
}'
{
"success": true,
"data": {
"id": "app_aBcD...",
"widgetId": "wgt_aBcD...",
"environment": "live",
"status": "approved",
"subject": {
"businessName": "Acme Trading Ltd",
"registrationNumber": "RC123456",
"tin": "12345678-0001",
"email": "admin@acme.com",
"phone": "+2348012345678",
"jurisdiction": "NG",
"industry": "fintech"
},
"referenceId": "your_ref_123",
"riskScore": 92,
"decisionReason": null,
"moduleOrder": ["business_profile", "cac_verification", "tin_verification"],
"totalSpentKobo": 200000,
"startedAt": "2026-06-01T10:00:00Z",
"submittedAt": "2026-06-01T10:25:00Z",
"decidedAt": "2026-06-01T10:25:30Z",
"createdAt": "2026-06-01T10:00:00Z",
"updatedAt": "2026-06-01T10:25:30Z"
}
}
Onboarding (KYB)
Submit applicant
Submit an applicant for a final decision after its modules have run.
POST
/
v1
/
kyb
/
applicants
/
{applicantId}
/
submit
curl -X POST https://api.vouchmark.com/v1/kyb/applicants/app_aBcD.../submit \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"notes": "Manual review completed, documents verified."
}'
{
"success": true,
"data": {
"id": "app_aBcD...",
"widgetId": "wgt_aBcD...",
"environment": "live",
"status": "approved",
"subject": {
"businessName": "Acme Trading Ltd",
"registrationNumber": "RC123456",
"tin": "12345678-0001",
"email": "admin@acme.com",
"phone": "+2348012345678",
"jurisdiction": "NG",
"industry": "fintech"
},
"referenceId": "your_ref_123",
"riskScore": 92,
"decisionReason": null,
"moduleOrder": ["business_profile", "cac_verification", "tin_verification"],
"totalSpentKobo": 200000,
"startedAt": "2026-06-01T10:00:00Z",
"submittedAt": "2026-06-01T10:25:00Z",
"decidedAt": "2026-06-01T10:25:30Z",
"createdAt": "2026-06-01T10:00:00Z",
"updatedAt": "2026-06-01T10:25:30Z"
}
}
Submits an applicant and triggers the risk engine to produce a final decision based on the widget’s configured thresholds. Returns the full applicant object with its updated
The decision follows the widget’s risk configuration:
status, riskScore, and decision timestamps.
Requires Authorization: Bearer $TOKEN. Rate limited to 10 requests per minute.
Path parameters
string
required
The applicant ID to submit.
Body
string
Optional reviewer notes. Up to 2000 characters.
curl -X POST https://api.vouchmark.com/v1/kyb/applicants/app_aBcD.../submit \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"notes": "Manual review completed, documents verified."
}'
{
"success": true,
"data": {
"id": "app_aBcD...",
"widgetId": "wgt_aBcD...",
"environment": "live",
"status": "approved",
"subject": {
"businessName": "Acme Trading Ltd",
"registrationNumber": "RC123456",
"tin": "12345678-0001",
"email": "admin@acme.com",
"phone": "+2348012345678",
"jurisdiction": "NG",
"industry": "fintech"
},
"referenceId": "your_ref_123",
"riskScore": 92,
"decisionReason": null,
"moduleOrder": ["business_profile", "cac_verification", "tin_verification"],
"totalSpentKobo": 200000,
"startedAt": "2026-06-01T10:00:00Z",
"submittedAt": "2026-06-01T10:25:00Z",
"decidedAt": "2026-06-01T10:25:30Z",
"createdAt": "2026-06-01T10:00:00Z",
"updatedAt": "2026-06-01T10:25:30Z"
}
}
- Score ≥
autoApproveThreshold→approved - Score ≤
autoRejectThreshold→rejected - Between thresholds, or a flagged condition (PEP, sanctions, adverse media) →
requires_review
