---
title: "Create Connect sub-merchant account"
method: POST
path: "/api/connect/accounts"
tags: ["Connect"]
---

# Create Connect sub-merchant account

`POST /api/connect/accounts`

Creates a SUB_MERCHANT user under the authenticated marketplace account, provisions a KYC provider account, and immediately returns unified nextUrl/nextSteps for the initial KYC flow based on account type.

## Request body

- CreateConnectAccountDto
  - `customerType` 'individual' | 'business' — Account type for this sub-merchant. Determines the KYC flow: `individual` triggers a personal KYC, `business` triggers a KYB.
  - `email` string, email, required — Email of the sub-merchant account
  - `firstName` string — First name of the sub-merchant (individual accounts only). If omitted, derived from `merchantName` or the email prefix.
  - `lastName` string — Last name of the sub-merchant (individual accounts only). If omitted, defaults to `Merchant`.
  - `merchantName` string — Display name / merchant name for the sub-merchant
  - `marketplaceMetadata` object — Arbitrary marketplace metadata attached to the sub-merchant
  - `redirectUrlKyc` string, uri — Optional redirect URL used to build the initial hosted KYC link returned at sub-merchant creation
  - `bridgeCustomerType` 'individual' | 'business'

## Response `201`

Create Connect sub-merchant account successful

- ConnectAccountDto
  - `id` string, required
  - `email` string, required
  - `merchantName` string, nullable, required
  - `firstName` string, nullable, required
  - `lastName` string, nullable, required
  - `accountType` 'INDIVIDUAL' | 'MARKETPLACE' | 'SUB_MERCHANT', required
  - `marketplaceUserId` string, required
  - `marketplaceMetadata` object, nullable, required
  - `customerId` string, nullable, required — KYC provider customer id linked to this sub-merchant
  - `custodialWalletAddress` string, nullable, required — Custodial wallet address for this sub-merchant
  - `stopProcessingSettlement` boolean, required
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required

## Other responses

- `400` — Invalid account payload
- `401` — Unauthorized - Invalid API key
- `409` — A sub-merchant with this email already exists under this marketplace

---

[API](https://skmtc.net/inflowpay/apis/inflow-api.md) · [All operations](https://skmtc.net/inflowpay/apis/inflow-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/inflowpay/inflow-api/versions/3012dd3dd14a/schema)
