Manual Submissions
Submit an individual national ID for manual verification. Step 1: call List Countries below for supported ISO codes. Step 2: POST with country, type, and id (biodata and files optional). Step 3: fetch results with GET /api/v1/kyc/manual/{batch_token}. Use the sandbox sample IDs below when testing against the sandbox host.
Sandbox test data
Use these values against the sandbox host. Click a value to copy it.
List countries
Returns the countries where Peleza supports manual national ID verification. Call this endpoint before submitting to obtain valid ISO country codes (for example RW, TZ). Optional query: ?q= filters by country name or ISO code (case-insensitive). Auth required; this call is not billed.
{{baseUrl}}/api/v1/kyc/countriesList all eligible countries
{
"success": true,
"response_code": 200,
"message": "Countries retrieved successfully",
"data": {
"countries": [
{ "code": "RW", "name": "Rwanda" },
{ "code": "TZ", "name": "Tanzania" }
]
},
"request_id": "550e8400-e29b-41d4-a716-446655440000"
}Filter by name or code (q=rw)
{
"success": true,
"response_code": 200,
"message": "Countries retrieved successfully",
"data": {
"countries": [
{ "code": "RW", "name": "Rwanda" }
]
},
"request_id": "550e8400-e29b-41d4-a716-446655440000"
}Submit verification
{{baseUrl}}/api/v1/kyc/manualHeader
Body Parameters
Sandbox sample β Complete (RW)
Request payload for Sandbox sample β Complete (RW):
{
"country": "RW",
"type": "national_id",
"id": "85940685"
}Expected response for Sandbox sample β Complete (RW):
{
"success": true,
"response_code": 202,
"message": "Manual verification submitted successfully",
"data": {
"batch_token": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"type": "national_id",
"status": "in_progress",
"submitted_at": "2026-08-27T10:56:00.000000Z",
"note": "This verification requires manual processing and is typically completed within 24-48 hours.",
"waiting_time": 2
},
"request_id": "550e8400-e29b-41d4-a716-446655440000"
}Sandbox sample β Complete (TZ)
Request payload for Sandbox sample β Complete (TZ):
{
"country": "TZ",
"type": "national_id",
"id": "8594068345"
}Expected response for Sandbox sample β Complete (TZ):
{
"success": true,
"response_code": 202,
"message": "Manual verification submitted successfully",
"data": {
"batch_token": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"type": "national_id",
"status": "in_progress",
"submitted_at": "2026-08-27T10:56:00.000000Z",
"note": "This verification requires manual processing and is typically completed within 24-48 hours.",
"waiting_time": 2
},
"request_id": "550e8400-e29b-41d4-a716-446655440000"
}Sandbox sample β Processing (RW)
Request payload for Sandbox sample β Processing (RW):
{
"country": "RW",
"type": "national_id",
"id": "MANUAL0001"
}Expected response for Sandbox sample β Processing (RW):
{
"success": true,
"response_code": 202,
"message": "Manual verification submitted successfully",
"data": {
"batch_token": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"type": "national_id",
"status": "in_progress",
"submitted_at": "2026-08-27T10:56:00.000000Z",
"note": "This verification requires manual processing and is typically completed within 24-48 hours.",
"waiting_time": 2
},
"request_id": "550e8400-e29b-41d4-a716-446655440000"
}With optional biodata and files (TZ sandbox)
Request payload for With optional biodata and files (TZ sandbox):
{
"country": "TZ",
"type": "national_id",
"id": "8594068345",
"first_name": "Jane",
"last_name": "Doe",
"date_of_birth": "1991-06-12",
"gender": "Female",
"files": [
{
"filename": "id-front.jpg",
"mime_type": "image/jpeg",
"content": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcU"
}
]
}Expected response for With optional biodata and files (TZ sandbox):
{
"success": true,
"response_code": 202,
"message": "Manual verification submitted successfully",
"data": {
"batch_token": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"type": "national_id",
"status": "in_progress",
"submitted_at": "2026-08-27T10:56:00.000000Z",
"note": "This verification requires manual processing and is typically completed within 24-48 hours.",
"waiting_time": 2
},
"request_id": "550e8400-e29b-41d4-a716-446655440000"
}Duplicate in-progress request (HTTP 200)
Request payload for Duplicate in-progress request (HTTP 200):
{
"country": "RW",
"type": "national_id",
"id": "85940685"
}Expected response for Duplicate in-progress request (HTTP 200):
{
"success": true,
"response_code": 200,
"message": "Manual verification already in progress",
"data": {
"batch_token": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"type": "national_id",
"status": "in_progress",
"submitted_at": "2026-08-27T10:56:00.000000Z",
"waiting_time": 2
},
"request_id": "550e8400-e29b-41d4-a716-446655440000"
}Response Fields
Fetch results
Fetch results using the batch_token from the submit response. On sandbox, use the sample IDs above β complete IDs return verification_result; MANUAL0001/MANUAL0002 stay in_progress; UNKNOWN999/UNKNOWN888 return unable_to_verify.
{{baseUrl}}/api/v1/kyc/manual/{token}Sandbox β Complete (RW Β· ${MANUAL_RW_COMPLETE_ID})
{
"success": true,
"response_code": 200,
"message": "Status retrieved successfully",
"data": {
"batch_token": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"type": "national_id",
"status": "complete",
"submitted_at": "2026-08-27T10:56:00.000000Z",
"verification_result": {
"first_name": "John",
"last_name": "Doe",
"other_name": null,
"gender": "Male",
"dob": "1990-01-08",
"citizenship": "Rwandan",
"id_number": "85940685",
"valid": true,
"name": "Doe John"
}
},
"request_id": "550e8400-e29b-41d4-a716-446655440000"
}Sandbox β Complete (TZ Β· ${MANUAL_TZ_COMPLETE_ID})
{
"success": true,
"response_code": 200,
"message": "Status retrieved successfully",
"data": {
"batch_token": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"type": "national_id",
"status": "complete",
"submitted_at": "2026-08-27T10:56:00.000000Z",
"verification_result": {
"first_name": "Jane",
"last_name": "Doe",
"other_name": null,
"gender": "Female",
"dob": "1991-06-12",
"citizenship": "Tanzanian",
"id_number": "8594068345",
"valid": true,
"name": "Doe Jane"
}
},
"request_id": "550e8400-e29b-41d4-a716-446655440000"
}Sandbox β Processing (RW Β· ${MANUAL_RW_PROCESSING_ID})
{
"success": true,
"response_code": 200,
"message": "Status retrieved successfully",
"data": {
"batch_token": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"type": "national_id",
"status": "in_progress",
"submitted_at": "2026-08-27T10:56:00.000000Z",
"waiting_time": 2
},
"request_id": "550e8400-e29b-41d4-a716-446655440000"
}Sandbox β Unable (RW Β· ${MANUAL_RW_UNABLE_ID})
{
"success": true,
"response_code": 200,
"message": "Status retrieved successfully",
"data": {
"batch_token": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"type": "national_id",
"status": "unable_to_verify",
"submitted_at": "2026-08-27T10:56:00.000000Z"
},
"request_id": "550e8400-e29b-41d4-a716-446655440000"
}Set {{baseUrl}} to https://api.peleza.com (production) or https://sandbox.peleza.com (sandbox). Authenticated calls need a Bearer token from POST /api/v1/oauth/token.
