Skip to main content
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 status, riskScore, and decision timestamps. Requires Authorization: Bearer $TOKEN. Rate limited to 10 requests per minute.

Path parameters

applicantId
string
required
The applicant ID to submit.

Body

notes
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"
  }
}
The decision follows the widget’s risk configuration:
  • Score ≥ autoApproveThresholdapproved
  • Score ≤ autoRejectThresholdrejected
  • Between thresholds, or a flagged condition (PEP, sanctions, adverse media) → requires_review