LakiConnect

Onboarding

Overview

Onboarding a connected merchant is a two-step process:

  1. Create the account — submit business, user, bank, and configuration data.
  2. 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-accounts

Request Headers

Headerstext
X-API-Key: lk_pub_xxxxxxxxxxxxxxxxxxxx:lk_sec_xxxxxxxxxxxxxxxxxxxx
Content-Type: application/json

Request 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-documents

Request Headers

Headerstext
X-API-Key: lk_live_xxxxxxxxxxxxxxxxxxxx
X-Connected-Merchant-ID: cm_a1b2c3d4-e5f6-7890-abcd-ef1234567890
Content-Type: multipart/form-data

Form Fields

FieldTypeDescription
`tin`FileTaxpayer Identification Number document.
`business_license`FileOfficial business registration/license.
`national_id`FileGovernment-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

StatusDescription
`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-accounts

Query Parameters

ParameterTypeDescription
`status`stringFilter by account status.
`q`stringFull-text search (name, email).
`created_from`stringRFC3339 or `YYYY-MM-DD` start date.
`created_to`stringRFC3339 or `YYYY-MM-DD` end date.
`page`integerPage number (default: 1).
`per_page`integerResults 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/:id

Returns full account detail including KYC status, business information, and configuration.