---
title: "Submit KYC Data"
method: POST
path: "/partner/applications/{app_id}/kyc"
tags: ["Partner Onboarding"]
---

# Submit KYC Data

`POST /partner/applications/{app_id}/kyc`

## Request

- Base URL: `https://api.meow.com/v1`
- URL: `https://api.meow.com/v1/partner/applications/{app_id}/kyc`
- Auth: API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/meow/apis/meow-api/docs/partner/applications/:app_id/kyc/post.ts> (a function with typed inputs; its response is checked against the schema)

Submit identity (KYC) data you have already collected for the applicant, with their consent. Verification runs server-side; the applicant does not need to complete a verification link. The result is usually available asynchronously: poll the application status endpoint for the final `kyc_status`, or subscribe to the `identity_verification.*` webhook events. Repeat submissions while a verification is in progress are idempotent and return the current status without re-sending data; corrected data is applied on a new submission after the current attempt completes or fails.

## Path parameters

- `app_id` string, required: The onboarding application, as returned when it was created.

## Request body

- PartnerKycSubmissionRequest
  - `first_name` string, required: Legal first name.
  - `last_name` string, required: Legal last name.
  - `date_of_birth` string, date, required: ISO 8601 full-date in the format `YYYY-MM-DD` (per [IETF RFC 3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14)).
  - `id_number` string, password, nullable: Government ID number matching `id_type`. For `us_ssn` use nine digits, with or without dashes (123-45-6789 or 123456789); for `us_ssn_last_4` use the last four digits; for non-US ID types provide the number as issued. Formatting characters are stripped before verification. Required when the representative's country issues an ID type we can verify, and must be omitted when it does not (e.g. the United Kingdom, which has no supported ID type).
  - `id_type` 'ar_dni' | 'au_drivers_license' | 'au_passport' | 'br_cpf' | 'ca_sin' | 'cl_run' | 'cn_resident_card' | 'co_nit' | 'dk_cpr' | 'eg_national_id' | 'es_dni' | 'es_nie' | 'hk_hkid' | 'in_pan' | 'in_epic' | 'it_cf' | 'jo_civil_id' | 'jp_my_number' | 'ke_huduma_namba' | 'kw_civil_id' | 'mx_curp' | 'mx_rfc' | 'my_nric' | 'ng_nin' | 'nz_drivers_license' | 'om_civil_id' | 'ph_psn' | 'pl_pesel' | 'ro_cnp' | 'sa_national_id' | 'se_pin' | 'sg_nric' | 'tr_tc_kimlik' | 'us_ssn' | 'us_ssn_last_4' | 'za_smart_id'
  - `address` OnboardingAddress, required
    - `address` string, required: Street address line 1.
    - `address_2` string, nullable: Street address line 2.
    - `city` string, required: City name.
    - `state` string, nullable: State or province code.
    - `zip` string, required: Postal or ZIP code.
    - `country` 'AW' | 'AF' | 'AO' | 'AI' | 'AX' | 'AL' | 'AD' | 'AE' | 'AR' | 'AM' | 'AS' | 'AQ' | 'TF' | 'AG' | 'AU' | 'AT' | 'AZ' | 'BI' | 'BE' | 'BJ' | 'BQ' | 'BF' | 'BD' | 'BG' | 'BH' | 'BS' | 'BA' | 'BL' | 'BY' | 'BZ' | 'BM' | 'BO' | 'BR' | 'BB' | 'BN' | 'BT' | 'BV' | 'BW' | 'CF' | 'CA' | 'CC' | 'CH' | 'CL' | 'CN' | 'CI' | 'CM' | 'CD' | 'CG' | 'CK' | 'CO' | 'KM' | 'CV' | 'CR' | 'CU' | 'CW' | 'CX' | 'KY' | 'CY' | 'CZ' | 'DE' | 'DJ' | 'DM' | 'DK' | 'DO' | 'DZ' | 'EC' | 'EG' | 'ER' | 'EH' | 'ES' | 'EE' | 'ET' | 'FI' | 'FJ' | 'FK' | 'FR' | 'FO' | 'FM' | 'GA' | 'GB' | 'GE' | 'GG' | 'GH' | 'GI' | 'GN' | 'GP' | 'GM' | 'GW' | 'GQ' | 'GR' | 'GD' | 'GL' | 'GT' | 'GF' | 'GU' | 'GY' | 'HK' | 'HM' | 'HN' | 'HR' | 'HT' | 'HU' | 'ID' | 'IM' | 'IN' | 'IO' | 'IE' | 'IR' | 'IQ' | 'IS' | 'IL' | 'IT' | 'JM' | 'JE' | 'JO' | 'JP' | 'KZ' | 'KE' | 'KG' | 'KH' | 'KI' | 'KN' | 'KR' | 'KW' | 'LA' | 'LB' | 'LR' | 'LY' | 'LC' | 'LI' | 'LK' | 'LS' | 'LT' | 'LU' | 'LV' | 'MO' | 'MF' | 'MA' | 'MC' | 'MD' | 'MG' | 'MV' | 'MX' | 'MH' | 'MK' | 'ML' | 'MT' | 'MM' | 'ME' | 'MN' | 'MP' | 'MZ' | 'MR' | 'MS' | 'MQ' | 'MU' | 'MW' | 'MY' | 'YT' | 'NA' | 'NC' | 'NE' | 'NF' | 'NG' | 'NI' | 'NU' | 'NL' | 'NO' | 'NP' | 'NR' | 'NZ' | 'OM' | 'PK' | 'PA' | 'PN' | 'PE' | 'PH' | 'PW' | 'PG' | 'PL' | 'PR' | 'KP' | 'PT' | 'PY' | 'PS' | 'PF' | 'QA' | 'RE' | 'RO' | 'RU' | 'RW' | 'SA' | 'SD' | 'SN' | 'SG' | 'GS' | 'SH' | 'SJ' | 'SB' | 'SL' | 'SV' | 'SM' | 'SO' | 'PM' | 'RS' | 'SS' | 'ST' | 'SR' | 'SK' | 'SI' | 'SE' | 'SZ' | 'SX' | 'SC' | 'SY' | 'TC' | 'TD' | 'TG' | 'TH' | 'TJ' | 'TK' | 'TM' | 'TL' | 'TO' | 'TT' | 'TN' | 'TR' | 'TV' | 'TW' | 'TZ' | 'UG' | 'UA' | 'UM' | 'UY' | 'US' | 'UZ' | 'VA' | 'VC' | 'VE' | 'VG' | 'VI' | 'VN' | 'VU' | 'WF' | 'WS' | 'XK' | 'YE' | 'ZA' | 'ZM' | 'ZW', required
  - `phone_number` string, nullable: Phone number in E.164 format (e.g. +14155550123).
  - `ip` string, ipvanyaddress, required: IPv4 or IPv6 address of the end user submitting this verification. Forwarded to the identity-verification provider as a fraud signal.
  - `user_email` string, email, required: Email address of the applicant this KYC data belongs to. Must match the `user_email` the application was created with.

## Response `200`

Successful Response

- PartnerKycSubmissionResponse
  - `application_id` string, uuid, required: Unique application identifier.
  - `user_email` string, required: Email address of the verified applicant.
  - `kyc_status` 'not_started' | 'pending' | 'action_required' | 'approved' | 'rejected', required

## Other responses

- `400`: The request could not be processed.
- `401`: Authentication failed.
- `403`: The API key is not authorized for this operation.
- `429`: Too many requests.

---

[API](https://skmtc.dev/meow/apis/meow-api.md) - [All operations](https://skmtc.dev/meow/apis/meow-api/llms.txt) - [OpenAPI document](https://skmtc.dev/meow/apis/meow-api/revisions/ea2d7e25b63b?raw)
