---
title: "Create a sub-account"
method: POST
path: "/v1/sub_accounts"
tags: ["subAccounts"]
---

# Create a sub-account

`POST /v1/sub_accounts`

Creates a sub-account and provisions an initial sandbox API key. external_id is an idempotency key unique within the parent account: repeating a request with the same external_id returns the existing sub-account with 200 and no api_keys field. With inherit_products_from_parent enabled (the default), parent product changes cascade to the sub-account. When disabled, products is required and the sub-account is independent.

## Headers

- `Authorization` string, required

## Request body

- object
  - `name` string, required — Display name for the sub-account
  - `external_id` string, required — Idempotency key unique within the parent account. Reusing it returns the existing sub-account instead of creating another one.
  - `products` TypeSubAccountsSubAccountCreateParamProductsItem[] — Products enabled for the sub-account. Every value must be enabled on the parent account. Required when inherit_products_from_parent is false.
  - `inherit_products_from_parent` boolean — When true, product changes on the parent cascade to this sub-account. When false, the sub-account's products are independent and products is required.
  - `website` string — Required for accounts with a Middesk partner profile
  - `vertical` 'fintech_non_bank_financial_services' | 'banks' | 'manufacturing_industrial' | 'technology_companies' | 'freight_logistics' | 'other' | 'government' — Required for accounts with a Middesk partner profile
  - `sub_vertical` 'digital_banking_neobanks' | 'insurance' | 'lending_non_bank_digital' | 'lending_non_bank_traditional' | 'payments_acquiring_issuing' | 'payroll_benefits_management' | 'other_fintech_non_bank_financial_services' | 'community_banks' | 'credit_unions' | 'national_banks' | 'regional_banks' | 'automotive' | 'construction' | 'healthcare_medical' | 'other_manufacturing_industrial' | 'b2b_software_vertical_saas' | 'data_services' | 'ecommerce' | 'hardware' | 'marketplaces' | 'telecomm' | 'other_technology_companies' | 'freight_logistics' | 'government' | 'other' — Required for accounts with a Middesk partner profile. The value must belong to the selected vertical.
  - `use_case` 'banking' | 'lending' | 'payments' | 'business_marketplace' | 'agent' | 'tax_registrations' | 'less_regulated_kyb' | 'account_opening' | 'term_loans' | 'working_capital_loans' | 'equipment_finance' | 'line_of_credit' | 'invoice_factoring' | 'merchant_cash_advance' | 'trade_credit' | 'expense_management' | 'payroll_tax_account' | 'compliance_for_bank_account_opening' | 'compliance_for_commercial_mortgages' | 'compliance_for_issuing_an_insurance_policy' | 'compliance_for_loan_origination' | 'compliance_for_payments_merchant_onboarding' | 'compliance_for_treasury_management' | 'compliance_other' | 'credit_decisioning_for_loan_origination' | 'filing_a_lien_for_loan_origination' | 'filing_a_lien_other' | 'fraud_prevention_for_bank_account_opening' | 'fraud_prevention_for_issuing_an_insurance_policy' | 'fraud_prevention_for_loan_origination' | 'fraud_prevention_for_payments_merchant_onboarding' | 'fraud_prevention_for_un_regulated_business_onboarding' | 'fraud_prevention_other' | 'tax_compliance_requirements_for_processing_payroll' | 'underwriting_for_issuing_an_insurance_policy' | 'other' — Required for accounts with a Middesk partner profile
  - `contact` TypeSubAccountsSubAccountCreateParamContact — Required for accounts with a Middesk partner profile
    - `first_name` string, required
    - `middle_name` string
    - `last_name` string, required
    - `email` string, email, required
  - `deal_name` string
  - `estimated_volume` integer
  - `go_live_date` string, date — Future date in YYYY-MM-DD format

## Response `200`

existing sub-account returned for the external ID

- TypeSubAccount — A customer account provisioned and managed by a parent partner account
  - `object` 'sub_account', required
  - `id` string, uuid, required
  - `name` string, required
  - `external_id` string, nullable, required — Idempotency key supplied by the parent account, unique within that parent
  - `enabled` boolean, required
  - `products` string[], required
  - `created_at` string, date-time, required

## Other responses

- `400` — invalid request
- `403` — sub-account provisioning not enabled

## Changes

- **2026-09-03** `ac0d9be94846` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/middesk/apis/middesk-api/changes/v1/sub_accounts/post.md)

---

[API](https://skmtc.dev/middesk/apis/middesk-api.md) · [All operations](https://skmtc.dev/middesk/apis/middesk-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/middesk/middesk-api/revisions/ac0d9be94846/schema)
