---
title: "Create a new check for a user"
method: POST
path: "/users/{user_id}/checks"
tags: ["User Checks"]
---

# Create a new check for a user

`POST /users/{user_id}/checks`

## Request

- Base URL: `https://sandbox.upvest.co`
- URL: `https://sandbox.upvest.co/users/{user_id}/checks`
- Auth: OAuth 2 (client credentials, token URL `https://sandbox.upvest.co/auth/token`, scopes: `checks:admin`)

Creates a new check for a user specified by ID.

## Request body

- union: Request payload for creating a user check: KYC, proof of residence, instrument fit, guardian, or self-assessment.
  - object: The KYC (Know your customer) check is completed by the client sharing the valid and relevant KYC data for the user.
    - `type` string, required: The type of check must be “KYC”.
    - `check_confirmed_at` string, date-time, required: Completion date and time of the KYC check. Must not be older than 24 months.
    - `data_download_link` string, url, required: Download URL for the KYC evidence file. The file size must not exceed 250 MB.
    - `document_type` 'PASSPORT' | 'ID_CARD' | 'RESIDENCE_PERMIT' | 'DRIVING_LICENSE' | 'TWO_PLUS_TWO_VERIFICATION_PROOF', required: The type of document used in the KYC process. * PASSPORT - Passport * ID_CARD - National Identification document * RESIDENCE_PERMIT - Residence Permit * DRIVING_LICENSE - Driving License * TWO_PLUS_TWO_VERIFICATION_PROOF - Two plus two verification proof (for GB residence users only)
    - `document_expiration_date` string, date: Expiration date of the document used in KYC process in YYYY-MM-DD format. **The field is required for the following document types:** * PASSPORT * ID_CARD * RESIDENCE_PERMIT * DRIVING_LICENSE
    - `nationality` string: Issuing country of the document used in the KYC process. [ISO 3166 alpha-2 codes](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). **The field is required for the following document types:** * PASSPORT * ID_CARD * RESIDENCE_PERMIT * DRIVING_LICENSE
    - `provider` string, required: Provider that was used to perform the KYC check.
    - `method` 'VIDEO_ID' | 'IN_PERSON_ID' | 'ELECTRONIC_ID' | 'LIVENESS_PHOTO_ID' | 'QUALIFIED_ELECTRONIC_SIGNATURE_WITH_TX' | 'TWO_PLUS_TWO_VERIFICATION' | 'ID_COLLECTION', required: Method used for AML-compliant KYC process * VIDEO_ID - Video identification * IN_PERSON_ID - In-person identification at the post office or the client's outlet * ELECTRONIC_ID - Advanced electronic identification methods (namely German eID) * LIVENESS_PHOTO_ID - Photos and security features of the identification document in combination with a video-based liveness check (residence country must not be Germany in this case) * QUALIFIED_ELECTRONIC_SIGNATURE_WITH_TX - Qualified electronic signature accompanied by a bank transaction for verification * TWO_PLUS_TWO_VERIFICATION - A method of verifying identity by matching at least two personal details from two separate sources (for GB residence users only) * ID_COLLECTION - The identification document of the user is collected but has not undergone verification
    - `confirmed_address` object: Address. Must not be a P.O. box or c/o address.
      - `address_line1` string, required: First address line of the address.
      - `address_line2` string: Second address line of the address.
      - `postcode` string, required: Postal code (postcode, PIN or ZIP code)
      - `country` 'AD' | 'AE' | 'AF' | 'AG' | 'AI' | 'AL' | 'AM' | 'AO' | 'AQ' | 'AR' | 'AS' | 'AT' | 'AU' | 'AW' | 'AX' | 'AZ' | 'BA' | 'BB' | 'BD' | 'BE' | 'BF' | 'BG' | 'BH' | 'BI' | 'BJ' | 'BL' | 'BM' | 'BN' | 'BO' | 'BQ' | 'BR' | 'BS' | 'BT' | 'BV' | 'BW' | 'BY' | 'BZ' | 'CA' | 'CC' | 'CD' | 'CF' | 'CG' | 'CH' | 'CI' | 'CK' | 'CL' | 'CM' | 'CN' | 'CO' | 'CR' | 'CU' | 'CV' | 'CW' | 'CX' | 'CY' | 'CZ' | 'DE' | 'DJ' | 'DK' | 'DM' | 'DO' | 'DZ' | 'EC' | 'EE' | 'EG' | 'EH' | 'ER' | 'ES' | 'ET' | 'FI' | 'FJ' | 'FK' | 'FM' | 'FO' | 'FR' | 'GA' | 'GB' | 'GD' | 'GE' | 'GF' | 'GG' | 'GH' | 'GI' | 'GL' | 'GM' | 'GN' | 'GP' | 'GQ' | 'GR' | 'GS' | 'GT' | 'GU' | 'GW' | 'GY' | 'HK' | 'HM' | 'HN' | 'HR' | 'HT' | 'HU' | 'ID' | 'IE' | 'IL' | 'IM' | 'IN' | 'IO' | 'IQ' | 'IR' | 'IS' | 'IT' | 'JE' | 'JM' | 'JO' | 'JP' | 'KE' | 'KG' | 'KH' | 'KI' | 'KM' | 'KN' | 'KP' | 'KR' | 'KW' | 'KY' | 'KZ' | 'LA' | 'LB' | 'LC' | 'LI' | 'LK' | 'LR' | 'LS' | 'LT' | 'LU' | 'LV' | 'LY' | 'MA' | 'MC' | 'MD' | 'ME' | 'MF' | 'MG' | 'MH' | 'MK' | 'ML' | 'MM' | 'MN' | 'MO' | 'MP' | 'MQ' | 'MR' | 'MS' | 'MT' | 'MU' | 'MV' | 'MW' | 'MX' | 'MY' | 'MZ' | 'NA' | 'NC' | 'NE' | 'NF' | 'NG' | 'NI' | 'NL' | 'NO' | 'NP' | 'NR' | 'NU' | 'NZ' | 'OM' | 'PA' | 'PE' | 'PF' | 'PG' | 'PH' | 'PK' | 'PL' | 'PM' | 'PN' | 'PR' | 'PS' | 'PT' | 'PW' | 'PY' | 'QA' | 'RE' | 'RO' | 'RS' | 'RU' | 'RW' | 'SA' | 'SB' | 'SC' | 'SD' | 'SE' | 'SG' | 'SH' | 'SI' | 'SJ' | 'SK' | 'SL' | 'SM' | 'SN' | 'SO' | 'SR' | 'SS' | 'ST' | 'SV' | 'SX' | 'SY' | 'SZ' | 'TC' | 'TD' | 'TF' | 'TG' | 'TH' | 'TJ' | 'TK' | 'TL' | 'TM' | 'TN' | 'TO' | 'TR' | 'TT' | 'TV' | 'TW' | 'TZ' | 'UA' | 'UG' | 'UM' | 'US' | 'UY' | 'UZ' | 'VA' | 'VC' | 'VE' | 'VG' | 'VI' | 'VN' | 'VU' | 'WF' | 'WS' | 'XK' | 'YE' | 'YT' | 'ZA' | 'ZM' | 'ZW', required: Accepted country code. [ISO 3166-1 alpha-2 codes](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
      - `state` string: State, province, county. [ISO 3166 alpha-2 Codes](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
      - `city` string, required: The name of a city, as it appears in a postal address.
    - `kyc_update` boolean: Marks this check as a KYC refresh/update as opposed to an initial record.
  - object: The PoR (Proof of residency) check is completed by the client sharing a valid PoR document, if not fulfilled by the KYC check.
    - `type` string, required: The type of check must be POR.
    - `check_confirmed_at` string, date-time, required: Completion date and time of the PoR check.
    - `issuance_date` string, date, required: Issuance date in YYYY-MM-DD format.
    - `data_download_link` string, url, required: Download URL for the PoR evidence file. The file size must not exceed 250 MB.
    - `document_type` 'UTILITY_BILL' | 'TELEPHONE_BILL' | 'INTERNET_BILL' | 'BANK_STATEMENT' | 'REGISTRATION_CERT' | 'RESIDENCE_PERMIT' | 'ID_CARD', required: The type of document used in the PoR process. Maximum age of the document is 12 months (stated on the document) applicable for: Utility bills (water, gas, electricity), Telephone bills (only landline), Internet bills, Bank account statements. Documents that need to be still valid - Registration certificate (must be valid and issued within the past 5 years), Residence permit e.g. Blue Card (as long as valid and contains the registration address), ID Card that contains the registration address. * UTILITY_BILL - * TELEPHONE_BILL - * INTERNET_BILL - * BANK_STATEMENT - * REGISTRATION_CERT - * RESIDENCE_PERMIT - * ID_CARD -
    - `confirmed_address` object, required: Address. Must not be a P.O. box or c/o address.
      - `address_line1` string, required: First address line of the address.
      - `address_line2` string: Second address line of the address.
      - `postcode` string, required: Postal code (postcode, PIN or ZIP code)
      - `country` 'AD' | 'AE' | 'AF' | 'AG' | 'AI' | 'AL' | 'AM' | 'AO' | 'AQ' | 'AR' | 'AS' | 'AT' | 'AU' | 'AW' | 'AX' | 'AZ' | 'BA' | 'BB' | 'BD' | 'BE' | 'BF' | 'BG' | 'BH' | 'BI' | 'BJ' | 'BL' | 'BM' | 'BN' | 'BO' | 'BQ' | 'BR' | 'BS' | 'BT' | 'BV' | 'BW' | 'BY' | 'BZ' | 'CA' | 'CC' | 'CD' | 'CF' | 'CG' | 'CH' | 'CI' | 'CK' | 'CL' | 'CM' | 'CN' | 'CO' | 'CR' | 'CU' | 'CV' | 'CW' | 'CX' | 'CY' | 'CZ' | 'DE' | 'DJ' | 'DK' | 'DM' | 'DO' | 'DZ' | 'EC' | 'EE' | 'EG' | 'EH' | 'ER' | 'ES' | 'ET' | 'FI' | 'FJ' | 'FK' | 'FM' | 'FO' | 'FR' | 'GA' | 'GB' | 'GD' | 'GE' | 'GF' | 'GG' | 'GH' | 'GI' | 'GL' | 'GM' | 'GN' | 'GP' | 'GQ' | 'GR' | 'GS' | 'GT' | 'GU' | 'GW' | 'GY' | 'HK' | 'HM' | 'HN' | 'HR' | 'HT' | 'HU' | 'ID' | 'IE' | 'IL' | 'IM' | 'IN' | 'IO' | 'IQ' | 'IR' | 'IS' | 'IT' | 'JE' | 'JM' | 'JO' | 'JP' | 'KE' | 'KG' | 'KH' | 'KI' | 'KM' | 'KN' | 'KP' | 'KR' | 'KW' | 'KY' | 'KZ' | 'LA' | 'LB' | 'LC' | 'LI' | 'LK' | 'LR' | 'LS' | 'LT' | 'LU' | 'LV' | 'LY' | 'MA' | 'MC' | 'MD' | 'ME' | 'MF' | 'MG' | 'MH' | 'MK' | 'ML' | 'MM' | 'MN' | 'MO' | 'MP' | 'MQ' | 'MR' | 'MS' | 'MT' | 'MU' | 'MV' | 'MW' | 'MX' | 'MY' | 'MZ' | 'NA' | 'NC' | 'NE' | 'NF' | 'NG' | 'NI' | 'NL' | 'NO' | 'NP' | 'NR' | 'NU' | 'NZ' | 'OM' | 'PA' | 'PE' | 'PF' | 'PG' | 'PH' | 'PK' | 'PL' | 'PM' | 'PN' | 'PR' | 'PS' | 'PT' | 'PW' | 'PY' | 'QA' | 'RE' | 'RO' | 'RS' | 'RU' | 'RW' | 'SA' | 'SB' | 'SC' | 'SD' | 'SE' | 'SG' | 'SH' | 'SI' | 'SJ' | 'SK' | 'SL' | 'SM' | 'SN' | 'SO' | 'SR' | 'SS' | 'ST' | 'SV' | 'SX' | 'SY' | 'SZ' | 'TC' | 'TD' | 'TF' | 'TG' | 'TH' | 'TJ' | 'TK' | 'TL' | 'TM' | 'TN' | 'TO' | 'TR' | 'TT' | 'TV' | 'TW' | 'TZ' | 'UA' | 'UG' | 'UM' | 'US' | 'UY' | 'UZ' | 'VA' | 'VC' | 'VE' | 'VG' | 'VI' | 'VN' | 'VU' | 'WF' | 'WS' | 'XK' | 'YE' | 'YT' | 'ZA' | 'ZM' | 'ZW', required: Accepted country code. [ISO 3166-1 alpha-2 codes](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
      - `state` string: State, province, county. [ISO 3166 alpha-2 Codes](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
      - `city` string, required: The name of a city, as it appears in a postal address.
  - object: Instrument fit check is completed by the client providing the user's answers to the instrument appropriateness or suitability questionnaire.
    - `type` string, required: The type of check must be INSTRUMENT_FIT.
    - `check_confirmed_at` string, date-time, required: Completion date and time of the instrument fit check.
    - `instrument_suitability` object, required: Outcome of the user's instrument suitability assessment.
      - `suitability` boolean, required: Did the user go through a suitability assessment and the outcome indicated suitability.
  - object: The Guardian check is completed by the client providing documentation proving the guardian relationship with the child user.
    - `type` string, required: The type of check must be “GUARDIAN“.
    - `check_confirmed_at` string, date-time, required: Completion date and time of the PoR check.
    - `role_id` string, uuid, required: Unique identifier for the role that this guardian check is associated with.
    - `document_type` 'BIRTH_CERTIFICATE' | 'SOLE_CUSTODY_PROOF', required: The type of document used in the Guardian check. A check carries one document, so a guardian with sole custody submits the birth certificate and the proof of custody as two checks of this type. * BIRTH_CERTIFICATE - Birth certificate proving guardian relationship * SOLE_CUSTODY_PROOF - Document proving the guardian holds sole custody of the child. Accepted only when the role identified by role_id has a custody_type of SOLE_CUSTODY.
    - `data_download_link` string, url, required: Download URL for the guardian evidence file. The file size must not exceed 250 MB.
  - object: The User Self-Assessment check is completed by the client providing self-assessment information about the user for AML risk monitoring.
    - `type` string, required: The type of check must be "USER_SELF_ASSESSMENT".
    - `check_confirmed_at` string, date-time, required: The date and time when the self assessment information was provided by the end user.
    - `user_occupation` 'EMPLOYEE' | 'HOMEMAKER' | 'PENSIONER' | 'PUBLIC_OFFICIAL' | 'UNEMPLOYED' | 'SELF_EMPLOYED_FREELANCER' | 'STUDENT' | 'TRAINEE' | 'OTHER', required: The user's employment/occupation status.
    - `user_industry` 'AGRICULTURE_FORESTRY_AND_FISHING' | 'MANUFACTURING' | 'UTILITIES_AND_ENERGY' | 'WHOLESALE_TRADE' | 'RETAIL_TRADE' | 'TRANSPORTATION_AND_LOGISTICS_RAIL_AND_STORAGE' | 'INFORMATION_TECHNOLOGY_AND_MEDIA_PRINT_PUBLISHING' | 'ADMIN_AND_SUPPORT_SERVICES_CLEANING_AND_FACILITIES' | 'EDUCATION_HIGHER_EDUCATION' | 'ENTERTAINMENT_ARTS_AND_RECREATION_NATURE_AND_ZOOS' | 'EXTRATERRITORIAL_AND_HOUSEHOLD_ACTIVITIES' | 'MANUFACTURING_PHARMACEUTICALS' | 'CONSTRUCTION' | 'RETAIL_TRADE_SPECIALITY' | 'WHOLESALE_TRADE_INDUSTRIAL' | 'TRANSPORTATION_AND_LOGISTICS' | 'ACCOMMODATION_AND_HOSPITALITY' | 'INFORMATION_TECHNOLOGY_AND_MEDIA' | 'REAL_ESTATE' | 'PROFESSIONAL_AND_TECHNICAL_SERVICES' | 'ADMIN_AND_SUPPORT_SERVICES' | 'PUBLIC_ADMINISTRATION' | 'EDUCATION' | 'HEALTHCARE' | 'ENTERTAINMENT_ARTS_AND_RECREATION' | 'PERSONAL_AND_OTHER_SERVICES' | 'MINING_AND_QUARRYING' | 'MANUFACTURING_WEAPONS_AND_HAZARDOUS' | 'MANUFACTURING_PRECIOUS_METALS_AND_JEWELLERY' | 'RETAIL_TRADE_SPECIFIC_SECTORS' | 'WHOLESALE_TRADE_PETROLEUM_AND_CHEMICALS' | 'WHOLESALE_TRADE_LUXURY_AND_COLLECTIBLES' | 'INFORMATION_TECHNOLOGY_AND_MEDIA_TELECOMMUNICATIONS' | 'TRANSPORTATION_AND_LOGISTICS_CRUISE_LINES' | 'ACCOMMODATION_AND_HOSPITALITY_TIMESHARING' | 'FOOD_AND_BEVERAGE_SERVICES' | 'INFORMATION_TECHNOLOGY_AND_MEDIA_ONLINE_GAMING' | 'FINANCIAL_SERVICES' | 'REAL_ESTATE_AGENCY_AND_BROKERAGE' | 'PROFESSIONAL_AND_TECHNICAL_SERVICES_LEGAL_AND_FIDUCIARY' | 'PROFESSIONAL_AND_TECHNICAL_SERVICES_UNREGULATED' | 'ADMIN_AND_SUPPORT_SERVICES_SPECIFIC_SECTORS' | 'ADMIN_AND_SUPPORT_SERVICES_SECURITY_AND_INVESTIGATION' | 'PUBLIC_ADMINISTRATION_JUDICIAL' | 'HEALTHCARE_COUNSELLING_AND_SOCIAL_SERVICES' | 'ENTERTAINMENT_ARTS_AND_RECREATION_SPECIFIC_SECTORS' | 'PERSONAL_AND_OTHER_SERVICES_NONPROFIT_AND_MEMBERSHIP_ORGANISATIONS' | 'PERSONAL_AND_OTHER_SERVICES_ADULT_AND_WELLNESS' | 'OTHER', required: The industry the user is professionally active in.
    - `yearly_gross_income` object, required: A monetary range defined by a lower bound and an optional upper bound.
      - `currency` 'EUR' | 'GBP', required: Alphabetic three-letter [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) currency code. * EUR — Euro. * GBP — Pound Sterling.
      - `lower_bound` number, required: The lower bound of the monetary range.
      - `upper_bound` number: The upper bound of the monetary range.
    - `income_sources` string[], required: The user's sources of income. More than one may apply.
  - object: The US Withholding Tax Status check is completed by the client providing the user's US tax person classification and supporting documentation used to determine US withholding obligations. Only the following combinations of `person_type` and `documentation_type` are valid: * NON_RESIDENT_ALIEN + KYC * NON_RESIDENT_ALIEN + W8-BEN * NON_RESIDENT_ALIEN + UNDOCUMENTED * US_PERSON + W9 * US_PERSON + UNDOCUMENTED For a non-resident alien, `KYC` is accepted for every operating model; whether `W8-BEN` and `UNDOCUMENTED` are also accepted depends on your operating model. `data_download_link` is only required when `documentation_type` is "W8-BEN" or "W9", and only when your operating model requires supporting documents to be supplied to Upvest.
    - `type` string, required: The type of check must be "US_WITHHOLDING_TAX_STATUS".
    - `check_confirmed_at` string, date-time, required: The date and time when the US withholding tax status was confirmed.
    - `data_download_link` string, url: Download URL for the withholding status evidence file. Only required when `documentation_type` is "W8-BEN" or "W9", and only when your operating model requires supporting documents to be supplied to Upvest. The file size must not exceed 250 MB.
    - `person_type` 'US_PERSON' | 'NON_RESIDENT_ALIEN', required: US tax person classification of the user. * US_PERSON - The user is a US person for tax purposes. * NON_RESIDENT_ALIEN - The user is a non-resident alien for US tax purposes.
    - `documentation_type` 'KYC' | 'W8-BEN' | 'W9' | 'UNDOCUMENTED', required: Type of documentation supporting the US withholding tax status. * KYC - Withholding status derived from the existing KYC data (non-resident aliens only). * W8-BEN - IRS Form W-8BEN provided by the user (non-resident aliens only). * W9 - IRS Form W-9 provided by the user (US persons only). * UNDOCUMENTED - No documentation is available for the user. For a non-resident alien, "KYC" is accepted for every operating model; whether "W8-BEN" and "UNDOCUMENTED" are also accepted depends on your operating model.
    - `valid_from` string, date, required: The date from which the US withholding tax status is valid, in YYYY-MM-DD format.
    - `valid_to` string, date, nullable: The date until which the US withholding tax status is valid, in YYYY-MM-DD format. Null if the status has no defined end date.

## Response `202`

The request has been successfully accepted.

- object: Response containing the unique identifier of the user check created.
  - `id` string, uuid, required: User Check unique identifier.

## Other responses

- `400`: Bad Request. The incoming request had a malformed parameter/object.
- `401`: Unauthorized. The caller has not been authenticated.
- `403`: Forbidden. The caller has been authenticated but is not allowed to take the requested action.
- `404`: Not Found. The requested resource could not be found.
- `406`: Not Acceptable. The resource does not have a current representation that would be acceptable to the user agent. "Accept" header defined unsupported value.
- `429`: Too Many Requests. The caller has exceeded their quota for the time period and has been throttled.
- `500`: Internal Server Error. The service encountered an unexpected error.
- `503`: Service Unavailable. The service handling for this request cannot be reached at this time.
- `504`: Gateway Timeout. The service gateway has reached its internal timeout.

## Changes

- **2026-09-17** `079ede5fe507`: 1 info
  - added the new `SOLE_CUSTODY_PROOF` enum value to the request property `oneOf[subschema #4: User Check - Guardian - Create - Request]/document_type`
- **2026-09-07** `210928eb221a`: 1 info
  - added `subschema #6: User Check - US Withholding Tax Status - Create - Request` to the request body `oneOf` list
- **2026-08-27** `1af410059bda`: 1 info
  - added `subschema #5: User Check - User Self Assessment - Create - Request` to the request body `oneOf` list

[Operation history](https://skmtc.dev/upvest/apis/upvest-investment-api/changes/users/:user_id/checks/post.md)

---

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