---
title: "POST /api/v1/customer/verification/link"
method: POST
path: "/api/v1/customer/verification/link"
tags: ["Customers"]
---

# POST /api/v1/customer/verification/link

`POST /api/v1/customer/verification/link`

Create customer with entitlements and generate KYC verification link

## Headers

- `idempotency-key` string, uuid, required — Required for mutating calls. Use a V4 UUID. The server stores the first result for 24h and returns it on subsequent retries with the same key.

## Request body

- union
  - CreateIndividualWithVerificationLink — Individual + link
    - `external_customer_id` string — External customer ID
    - `customer_type` 'individual', required
    - `email` string, email — Email address
    - `phone` string, e164 — Phone number
    - `entitlements` string[] — Feature-based entitlements for the customer
    - `metadata` Metadata
    - `first_name` string — First name of the applicant
    - `last_name` string — Last name of the applicant
    - `middle_name` string — Middle name of the applicant
    - `dob` string — Date of birth in YYYY-MM-DD format
    - `nationality` string — Country code
    - `tax_id_number` string — Tax Identification Number (TIN)
    - `address` SubmitVerificationAddressRequest
      - `line1` string — Address line 1
      - `line2` string — Address line 2
      - `city` string — City
      - `state` string — State or province
      - `postal_code` string — Postal or ZIP code
      - `country` string — Country code (ISO 3166-1 alpha-2)
    - `proof_of_address_documents` SubmitProofOfAddressDocumentRequest[] — Proof of address document
      - `document_type` 'UTILITY_BILL' | 'OTHER', required — Document type
      - `front_image_data` string, required — Front image as a Data URL (base64-encoded content)
      - `back_image_data` string — Back image as a Data URL (base64-encoded content)
      - `country` string, required — Country code (ISO 3166-1 alpha-2)
    - `source_of_wealth_documents` SubmitSourceOfWealthDocumentRequest[] — Source of wealth documents (required for INDIVIDUAL_ENHANCED)
      - `front_image_data` string, required — Front image as a Data URL (base64-encoded content)
      - `back_image_data` string — Back image as a Data URL (base64-encoded content)
      - `country` string, required — Country code (ISO 3166-1 alpha-2)
    - `id_documents` SubmitIndividualIdVerificationDocumentRequest[] — Documents of the applicant
      - `document_type` 'PASSPORT' | 'DRIVERS_LICENSE' | 'NATIONAL_ID' | 'RESIDENCE_PERMIT', required — Document type
      - `front_image_data` string, required — Front image as a Data URL (base64-encoded content)
      - `back_image_data` string — Back image as a Data URL (base64-encoded content)
      - `country` string, required — Country code (ISO 3166-1 alpha-2)
    - `selfie_photo` SubmitSelfiePhotoRequest
      - `data` string, required — Data of the selfie photo
    - `ttl_in_secs` integer — Time-to-live for the KYC link in seconds (default: 1800)
    - `redirect` object — Custom redirect URLs for KYC completion
      - `success_url` string, uri — URL to redirect to after successful verification
      - `reject_url` string, uri — URL to redirect to after rejected verification
      - `sign_key` string — Secret key for HMAC signature verification of redirect URLs
      - `allowed_query_params` string[] — Query parameters to preserve in redirect URLs (max 4)
  - CreateBusinessWithVerificationLink — Business + link
    - `external_customer_id` string — External customer ID
    - `customer_type` 'business', required
    - `email` string, email — Email address
    - `phone` string, e164 — Phone number
    - `entitlements` string[] — Feature-based entitlements for the customer
    - `metadata` Metadata
    - `company_name` string — Company name
    - `country` string — Country code (ISO 3166-1 alpha-2)
    - `registration_number` string — Registration number
    - `legal_address` SubmitVerificationAddressRequest
      - `line1` string — Address line 1
      - `line2` string — Address line 2
      - `city` string — City
      - `state` string — State or province
      - `postal_code` string — Postal or ZIP code
      - `country` string — Country code (ISO 3166-1 alpha-2)
    - `incorporated_on` string — Date of incorporation in YYYY-MM-DD format
    - `type` string — Company type
    - `tax_id` string — Tax ID
    - `registration_location` string — Registration location (country-specific, e.g., state for USA)
    - `website` string, uri — Website URL
    - `postal_address` SubmitVerificationAddressRequest
      - `line1` string — Address line 1
      - `line2` string — Address line 2
      - `city` string — City
      - `state` string — State or province
      - `postal_code` string — Postal or ZIP code
      - `country` string — Country code (ISO 3166-1 alpha-2)
    - `alternative_names` string[] — Alternative names (brand names or local language variants)
    - `beneficiaries` CompanyBeneficiary[] — Company beneficiaries (UBOs, shareholders, directors)
      - `category` 'ubos' | 'shareholders' | 'directors', required — Category of beneficiary
      - `can_skip` boolean — Whether this beneficiary can be skipped
      - `share_size` number — Share size/percentage (for shareholders and UBOs)
      - `individual` object — Individual beneficiary information
        - `first_name` string, required — First name
        - `last_name` string, required — Last name
        - `middle_name` string — Middle name
        - `dob` string — Date of birth in YYYY-MM-DD format
        - `email` string, email — Email address
        - `phone` string, e164 — Phone number
        - `tax_residence_country` string — Tax residence country (ISO 3166-1 alpha-2)
        - `share_size` number — Share size/percentage (for shareholders and UBOs)
        - `address` SubmitVerificationAddressRequest
          - `line1` string — Address line 1
          - `line2` string — Address line 2
          - `city` string — City
          - `state` string — State or province
          - `postal_code` string — Postal or ZIP code
          - `country` string — Country code (ISO 3166-1 alpha-2)
        - `nationality` string — Nationality country code (ISO 3166-1 alpha-2)
        - `id_documents` SubmitIndividualIdVerificationDocumentRequest[] — ID verification documents for the beneficiary
          - `document_type` 'PASSPORT' | 'DRIVERS_LICENSE' | 'NATIONAL_ID' | 'RESIDENCE_PERMIT', required — Document type
          - `front_image_data` string, required — Front image as a Data URL (base64-encoded content)
          - `back_image_data` string — Back image as a Data URL (base64-encoded content)
          - `country` string, required — Country code (ISO 3166-1 alpha-2)
        - `proof_of_address_documents` SubmitProofOfAddressDocumentRequest[] — Proof of address documents for the beneficiary
          - `document_type` 'UTILITY_BILL' | 'OTHER', required — Document type
          - `front_image_data` string, required — Front image as a Data URL (base64-encoded content)
          - `back_image_data` string — Back image as a Data URL (base64-encoded content)
          - `country` string, required — Country code (ISO 3166-1 alpha-2)
        - `selfie_photo` SubmitSelfiePhotoRequest
          - `data` string, required — Data of the selfie photo
      - `company` object — Company beneficiary information
        - `company_name` string, required — Company name
        - `country` string, required — Country code (ISO 3166-1 alpha-2)
        - `registration_number` string — Registration number
        - `legal_address` SubmitVerificationAddressRequest
          - `line1` string — Address line 1
          - `line2` string — Address line 2
          - `city` string — City
          - `state` string — State or province
          - `postal_code` string — Postal or ZIP code
          - `country` string — Country code (ISO 3166-1 alpha-2)
        - `share_size` number — Share size/percentage (for shareholders)
    - `company_registration_documents` SubmitCompanyRegistrationDocumentRequest[] — Company registration documents (INFORMATION_STATEMENT and INCORPORATION_CERT)
      - `document_type` 'COMPANY_DOC', required — Document type (must be COMPANY_DOC)
      - `id_doc_sub_type` 'INFORMATION_STATEMENT' | 'INCORPORATION_CERT', required — Subtype of company registration document
      - `front_image_data` string, required — Front image as a Data URL (base64-encoded content)
      - `back_image_data` string — Back image as a Data URL (base64-encoded content)
      - `country` string, required — Country code (ISO 3166-1 alpha-2)
    - `id_documents` SubmitIndividualIdVerificationDocumentRequest[] — Company identification documents
      - `document_type` 'PASSPORT' | 'DRIVERS_LICENSE' | 'NATIONAL_ID' | 'RESIDENCE_PERMIT', required — Document type
      - `front_image_data` string, required — Front image as a Data URL (base64-encoded content)
      - `back_image_data` string — Back image as a Data URL (base64-encoded content)
      - `country` string, required — Country code (ISO 3166-1 alpha-2)
    - `describe_business` string — Description of the business
    - `conduct_money_services` boolean — Whether the company conducts money services
    - `describe_compliance_controls` string — Description of compliance controls
    - `main_source_of_funds` 'BUSINESS_LOANS' | 'GRANTS' | 'INTER_COMPANY_FUNDS' | 'INVESTMENT_PROCEEDS' | 'LEGAL_SETTLEMENT' | 'OWNERS_CAPITAL' | 'PENSION_RETIREMENT' | 'SALE_OF_ASSETS' | 'SALES_OF_GOODS_AND_SERVICES' | 'THIRD_PARTY_FUNDS' | 'TREASURY_RESERVES' — Main source of funds
    - `how_did_you_come_across_stables` string — How did you come across Stables?
    - `describe_money_services` string — Describe the money services your business conducts (required if conductMoneyServices is true)
    - `account_purpose` 'CHARITABLE_DONATIONS' | 'ECOMMERCE_RETAIL_PAYMENTS' | 'INVESTMENT_PURPOSES' | 'PAYMENTS_TO_FRIENDS_OR_FAMILY_ABROAD' | 'PAYROLL' | 'PERSONAL_OR_LIVING_EXPENSES' | 'PROTECT_WEALTH' | 'PURCHASE_GOODS_AND_SERVICES' | 'RECEIVE_PAYMENTS_FOR_GOODS_AND_SERVICES' | 'TAX_OPTIMIZATION' | 'THIRD_PARTY_MONEY_TRANSMISSION' | 'TREASURY_MANAGEMENT' | 'OTHER' — What will you use Stables for?
    - `account_purpose_other` string — Explain what you would use Stables for (required if accountPurpose is other)
    - `is_dao` boolean — Is your business a DAO?
    - `industry_selection` string — What industry is your business in? (NAICS code)
    - `expected_annual_revenue` '0_99999' | '100000_999999' | '1000000_9999999' | '10000000_49999999' | '50000000_249999999' | '250000000_plus' — Estimated annual revenue in USD
    - `expected_monthly_payments` string — Expected monthly payments in USD (numeric)
    - `source_of_funds` 'BUSINESS_LOANS' | 'GRANTS' | 'INTER_COMPANY_FUNDS' | 'INVESTMENT_PROCEEDS' | 'LEGAL_SETTLEMENT' | 'OWNERS_CAPITAL' | 'PENSION_RETIREMENT' | 'SALE_OF_ASSETS' | 'SALES_OF_GOODS_AND_SERVICES' | 'THIRD_PARTY_FUNDS' | 'TREASURY_RESERVES' — Source of funds
    - `source_of_funds_description` string — Describe where your business funds come from
    - `operate_in_prohibited_country` boolean — Does your business operate in any prohibited countries?
    - `does_your_business_engage_in_high_risk_activities` 'yes' | 'no' — Does your business potentially engage in any High Risk activities?
    - `high_risk_activities` string[] — High risk activities (required if doesYourBusinessEngageInHighRiskActivities is yes)
    - `accept_terms` boolean — Accept Stables' terms of service and privacy policy
    - `bank_statement_file_data` string — Bank statement file data (base64 encoded data URL, e.g., data:image/jpeg;base64,...)
    - `flow_of_funds_file_data` string — Flow of funds document file data (base64 encoded data URL, required if conductMoneyServices is true)
    - `ttl_in_secs` integer — Time-to-live for the KYC link in seconds (default: 1800)
    - `redirect` object — Custom redirect URLs for KYC completion
      - `success_url` string, uri — URL to redirect to after successful verification
      - `reject_url` string, uri — URL to redirect to after rejected verification
      - `sign_key` string — Secret key for HMAC signature verification of redirect URLs
      - `allowed_query_params` string[] — Query parameters to preserve in redirect URLs (max 4)

## Response `200`

Default Response

- GenerateVerificationLinkResponse
  - `customer_id` string, uuid, required — Customer UUID
  - `kyc_link` string, uri, required — URL for customer to complete KYC process

## Other responses

- `400` — Default Response
- `404` — Default Response
- `409` — Default Response

---

[API](https://skmtc.net/stables/apis/stables-api.md) · [All operations](https://skmtc.net/stables/apis/stables-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/stables/stables-api/revisions/40ed0bdb89e1/schema)
