LakiConnect
Onboarding
Overview
Onboarding a connected merchant is a two-step process:
- Create the account — submit business, user, bank, and configuration data.
- Upload KYC documents — submit identity and compliance files for review.
Once submitted, a KYC reviewer updates the account status. Status changes trigger outbound webhook notifications to the master's configured webhook_url.
Step 1 — Create a Connected Account
Endpointbash
POST /api/v2/lakiconnect/connected-accountsRequest Headers
Headerstext
X-API-Key: lk_pub_xxxxxxxxxxxxxxxxxxxx:lk_sec_xxxxxxxxxxxxxxxxxxxx
Content-Type: application/jsonRequest Body
JSONjson
{
"user": {
"first_name": "Selam",
"last_name": "Tesfaye",
"email": "selam@vendorshop.com",
"phone": "+251911000000"
},
"business": {
"name": "Selam Handcrafts PLC",
"type": "company",
"country": "ET",
"address": "Bole Sub-city, Addis Ababa",
"tin": "0012345678"
},
"bank_accounts": [
{
"bank_name": "Commercial Bank of Ethiopia",
"account_number": "1000012345678",
"account_holder_name": "Selam Handcrafts PLC"
}
],
"configuration": {
"business_description": "Handmade jewelry and crafts marketplace seller"
}
}Response — 201 Created
JSONjson
{
"id": "cm_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"master_merchant_id": "mm_9f8e7d6c-b5a4-3210-fedc-ba9876543210",
"status": "pending",
"kyc_status": "pending",
"user": {
"first_name": "Selam",
"last_name": "Tesfaye",
"email": "selam@vendorshop.com"
},
"business": {
"name": "Selam Handcrafts PLC",
"country": "ET"
},
"created_at": "2025-10-01T08:30:00Z"
}Store the returned id — you will use it as the X-Connected-Merchant-ID in subsequent operations.
Step 2 — Upload KYC Documents
Endpointbash
POST /api/v2/lakiconnect/connected-accounts/kyc-documentsRequest Headers
Headerstext
X-API-Key: lk_live_xxxxxxxxxxxxxxxxxxxx
X-Connected-Merchant-ID: cm_a1b2c3d4-e5f6-7890-abcd-ef1234567890
Content-Type: multipart/form-dataForm Fields
| Field | Type | Description |
|---|---|---|
| `tin` | File | Taxpayer Identification Number document. |
| `business_license` | File | Official business registration/license. |
| `national_id` | File | Government-issued identity document. |
Response — 200 OK
JSONjson
{
"connected_merchant_id": "cm_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"kyc_status": "under_review",
"documents_received": ["tin", "business_license", "national_id"],
"submitted_at": "2025-10-01T08:45:00Z"
}KYC Status Lifecycle
| Status | Description |
|---|---|
| `pending` | Account created; KYC documents not yet submitted. |
| `under_review` | Documents submitted; under manual or automated review. |
| `approved` | KYC passed; account is active and can receive payments. |
| `declined` | KYC failed; master receives `connected_account.declined` webhook. |
List Connected Accounts
Endpointbash
GET /api/v2/lakiconnect/connected-accountsQuery Parameters
| Parameter | Type | Description |
|---|---|---|
| `status` | string | Filter by account status. |
| `q` | string | Full-text search (name, email). |
| `created_from` | string | RFC3339 or `YYYY-MM-DD` start date. |
| `created_to` | string | RFC3339 or `YYYY-MM-DD` end date. |
| `page` | integer | Page number (default: 1). |
| `per_page` | integer | Results per page (default: 20, max: 100). |
Response — 200 OK
JSONjson
{
"data": [
{
"id": "cm_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"business_name": "Selam Handcrafts PLC",
"kyc_status": "approved",
"created_at": "2025-10-01T08:30:00Z"
}
],
"pagination": {
"page": 1,
"per_page": 20,
"total": 47,
"total_pages": 3
}
}Get a Single Connected Account
Endpointbash
GET /api/v2/lakiconnect/connected-accounts/:idReturns full account detail including KYC status, business information, and configuration.