---
title: "Submit Business Verification"
method: POST
path: "/v1/customers/{id}/business-verification"
tags: ["public.customers"]
---

# Submit Business Verification

`POST /v1/customers/{id}/business-verification`

Compatibility route for submitting tier 2 business KYB information for an existing customer. Prefer /v1/customers/{id}/tier2-verification with customer_type=business for new integrations.

## Path parameters

- `id` string, required

## Request body

- SubmitBusinessVerificationRequest
  - `account_purpose` string, required
  - `account_purpose_other` string
  - `associated_persons` AssociatedPerson[], required
    - `birth_date` string, required
    - `documents` Document[]
      - `file` string, required — File must be a base64 data URL up to 5 MiB decoded, for example: data:image/png;base64,iVBORw0KGgo...
      - `purposes` string[], required
    - `email` string, required
    - `first_name` string, required
    - `has_control` boolean, required
    - `has_ownership` boolean, required
    - `identifying_information` IdentifyingInformation[], required
      - `expiration` string
      - `image_back` string — ImageBack must be a base64 data URL up to 1 MiB decoded when provided, for example: data:image/png;base64,iVBORw0KGgo...
      - `image_front` string — ImageFront must be a base64 data URL up to 1 MiB decoded when provided. It is required for passport, drivers_license, and national_id, but optional for tin.
      - `issuing_country` string, required
      - `number` string
      - `type` 'passport' | 'drivers_license' | 'national_id' | 'tin', required
    - `is_director` boolean
    - `is_signer` boolean, required
    - `last_name` string, required
    - `middle_name` string
    - `nationality` string, required
    - `ownership_percentage` integer
    - `phone` string
    - `relationship_established_at` string
    - `residential_address` ResidentialAddress, required
      - `city` string, required
      - `country` string, required
      - `postal_code` string, required
      - `street_line_1` string, required
      - `subdivision` string, required
    - `title` string
  - `business_description` string, required
  - `business_industry` string[]
  - `business_legal_name` string, required
  - `business_type` string, required
  - `conducts_money_services` boolean, required
  - `conducts_money_services_description` string
  - `conducts_money_services_using_bridge` boolean
  - `customer_type` 'business'
  - `documents` Document[], required
    - `file` string, required — File must be a base64 data URL up to 5 MiB decoded, for example: data:image/png;base64,iVBORw0KGgo...
    - `purposes` string[], required
  - `estimated_annual_revenue_usd` string, required
  - `expected_monthly_payments_usd` string, required
  - `has_material_intermediary_ownership` boolean
  - `high_risk_activities` string[]
  - `high_risk_activities_explanation` string
  - `identifying_information` IdentifyingInformation[], required
    - `expiration` string
    - `image_back` string — ImageBack must be a base64 data URL up to 1 MiB decoded when provided, for example: data:image/png;base64,iVBORw0KGgo...
    - `image_front` string — ImageFront must be a base64 data URL up to 1 MiB decoded when provided. It is required for passport, drivers_license, and national_id, but optional for tin.
    - `issuing_country` string, required
    - `number` string
    - `type` 'passport' | 'drivers_license' | 'national_id' | 'tin', required
  - `is_dao` boolean, required
  - `operates_in_prohibited_countries` boolean, required
  - `other_websites` string[]
  - `ownership_threshold` integer
  - `physical_address` ResidentialAddress
    - `city` string, required
    - `country` string, required
    - `postal_code` string, required
    - `street_line_1` string, required
    - `subdivision` string, required
  - `primary_website` string
  - `registered_address` ResidentialAddress, required
    - `city` string, required
    - `country` string, required
    - `postal_code` string, required
    - `street_line_1` string, required
    - `subdivision` string, required
  - `source_of_funds` string, required
  - `source_of_funds_description` string

## Response `200`

OK

- CustomerResponse
  - `capabilities` CustomerCapability[]
    - `name` string — Name is the customer capability identifier. Currently returned values are "base" and "usd_banking".
    - `status` string — Status is the capability state. Returned values are "approved", "pending", "information_requested", "rejected", or "missing".
  - `created_at` string
  - `email` string
  - `first_name` string
  - `id` string
  - `is_verified` boolean
  - `last_name` string
  - `paystack_funding_account_readiness` PaystackFundingAccountReadiness
    - `account_number_last4` string
    - `bank_code` string
    - `missing_fields` string[]
    - `status` 'READY' | 'REQUIRES_INFORMATION'
    - `updated_at` string
  - `rejection_reasons` string[] — RejectionReasons contains the current blocking verification/capability issues. It is empty after approval.
  - `tier_1_kyc_complete` boolean
  - `tier_2_kyc_complete` boolean
  - `updated_at` string

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `404` — Customer not found
- `409` — Verification already in progress or requires operations review
- `500` — Internal server error
- `502` — Verification provider failed

---

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