# Get checks for a user

Lists all checks for a user specified by ID.

Endpoint: GET /users/{user_id}/checks
Version: 1.172.0
Security: oauth-client-credentials

## Security:

  - `oauth-client-credentials` (unknown)
    oauth2 scopes: checks:read, checks:admin

## Path parameters:

  - `user_id` (string, required)
    The unique identifier of the user. Universally Unique Identifier (UUID).

## Query parameters:

  - `list_history` (boolean)
    If true, return the full history of checks (all records) instead of only the latest check per type.

  - `type` (string)
    Filter the returned checks to a single allowed check type (e.g. US_WITHHOLDING_TAX_STATUS).

## Header parameters:

  - `upvest-client-id` (string, required)
    Your client ID, issued by Upvest. Identifies the client making the request. Universally Unique Identifier (UUID).

  - `Authorization` (string, required)
    Bearer (access) token from the OAuth flow with correct scopes.
https://datatracker.ietf.org/doc/html/rfc6750

  - `signature` (string, required)
    https://tools.ietf.org/id/draft-ietf-httpbis-message-signatures-01.html#name-the-signature-http-header

  - `signature-input` (string, required)
    https://tools.ietf.org/id/draft-ietf-httpbis-message-signatures-01.html#name-the-signature-input-http-he

  - `upvest-api-version` (string)
    Upvest API version (Note: Do not include quotation marks)

## Response 200:

  - `200` (unknown)
    OK

## Response 200 fields (application/json):

  - `data` (array, required)
    List of checks conducted for the user

  - `data.id` (string, required)
    User Check unique identifier.

  - `data.user_id` (string, required)
    Unique identifier of the user, as a UUID.

  - `data.type` (string, required)
    The type of check must be “KYC”.

  - `data.check_confirmed_at` (string, required)
    Completion date and time of the KYC check. Must not be older than 24 months.

  - `data.data_download_link` (string, required)
    Download URL for the KYC evidence file. The file size must not exceed 250 MB.

  - `data.document_type` (string, 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)
    Enum: "PASSPORT", "ID_CARD", "RESIDENCE_PERMIT", "DRIVING_LICENSE", "TWO_PLUS_TWO_VERIFICATION_PROOF"

  - `data.document_expiration_date` (string)
    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

  - `data.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

  - `data.status` (string, required)
    Final status of the KYC check.
* IN_PROGRESS - KYC check is in progress
* PASSED - KYC check passed
* FAILED - KYC check failed
    Enum: "IN_PROGRESS", "PASSED", "FAILED"

  - `data.provider` (string, required)
    Provider that was used to perform the KYC check.

  - `data.method` (string, 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
    Enum: "VIDEO_ID", "IN_PERSON_ID", "ELECTRONIC_ID", "LIVENESS_PHOTO_ID", "QUALIFIED_ELECTRONIC_SIGNATURE_WITH_TX", "TWO_PLUS_TWO_VERIFICATION", "ID_COLLECTION"

  - `data.confirmed_address` (object)
    Address. Must not be a P.O. box or c/o address.

  - `data.confirmed_address.address_line1` (string, required)
    First address line of the address.

  - `data.confirmed_address.address_line2` (string)
    Second address line of the address.

  - `data.confirmed_address.postcode` (string, required)
    Postal code (postcode, PIN or ZIP code)

  - `data.confirmed_address.country` (string, required)
    Accepted country code. [ISO 3166-1 alpha-2 codes](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
    Enum: "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"

  - `data.confirmed_address.state` (string)
    State, province, county. [ISO 3166 alpha-2 Codes](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).

  - `data.confirmed_address.city` (string, required)
    The name of a city, as it appears in a postal address.

  - `data.kyc_update` (boolean)
    Marks this check as a KYC refresh/update as opposed to an initial record.

  - `data.type` (string, required)
    The type of check must be POR.

  - `data.check_confirmed_at` (string, required)
    Completion date and time of the PoR check.

  - `data.issuance_date` (string, required)
    Issuance date in YYYY-MM-DD format.

  - `data.data_download_link` (string, required)
    Download URL for the PoR evidence file. The file size must not exceed 250 MB.

  - `data.document_type` (string, 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 -
* PASSPORT -
    Enum: "UTILITY_BILL", "TELEPHONE_BILL", "INTERNET_BILL", "BANK_STATEMENT", "REGISTRATION_CERT", "RESIDENCE_PERMIT", "ID_CARD", "PASSPORT"

  - `data.status` (string, required)
    Final status of the PoR check.
* IN_PROGRESS -
* PASSED -
* FAILED -
    Enum: "IN_PROGRESS", "PASSED", "FAILED"

  - `data.type` (string, required)
    The type of check must be INSTRUMENT_FIT.

  - `data.check_confirmed_at` (string, required)
    Completion date and time of the instrument fit check.

  - `data.status` (string, required)
    Final status of the instrument fit check.
* IN_PROGRESS - Instrument fit check is in progress
* PASSED - Instrument fit check passed
* FAILED - Instrument fit check failed
    Enum: "IN_PROGRESS", "PASSED", "FAILED"

  - `data.instrument_suitability` (object, required)
    Outcome of the user's instrument suitability assessment.

  - `data.instrument_suitability.suitability` (boolean, required)
    Did the user go through a suitability assessment and the outcome indicated suitability.

  - `data.type` (string, required)
    The type of check must be COMPLIANCE.

  - `data.status` (string)
    Final status of the COMPLIANCE check.
* IN_PROGRESS - Compliance check is in progress
* PASSED - Compliance check passed
* FAILED - Compliance check failed
    Enum: "IN_PROGRESS", "PASSED", "FAILED"

  - `data.check_confirmed_at` (string, required)
    Completion date and time of the COMPLIANCE check.

  - `data.type` (string, required)
    The type of check must be “GUARDIAN“.

  - `data.role_id` (string, required)
    Unique identifier for the GUARDIAN role for this check. The check counts only towards the activation of this role..

  - `data.document_type` (string, 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. Required for every guardian role.
* SOLE_CUSTODY_PROOF - Document proving the guardian holds sole custody of the child. Required in addition to the birth certificate when the role identified by role_id has a custody_type of SOLE_CUSTODY, and accepted only for such a role.
    Enum: "BIRTH_CERTIFICATE", "SOLE_CUSTODY_PROOF"

  - `data.data_download_link` (string, required)
    Download URL for the guardian evidence file. The file size must not exceed 250 MB.

  - `data.status` (string, required)
    Final status of the Guardian check.
* IN_PROGRESS - Guardian check is in progress
* PASSED - Guardian check passed
* FAILED - Guardian check failed
    Enum: "IN_PROGRESS", "PASSED", "FAILED"

  - `data.type` (string, required)
    The type of check must be "US_WITHHOLDING_TAX_STATUS".

  - `data.check_confirmed_at` (string, required)
    The date and time when the US withholding tax status was confirmed.

  - `data.data_download_link` (string)
    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.

  - `data.person_type` (string, 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.
    Enum: "US_PERSON", "NON_RESIDENT_ALIEN"

  - `data.documentation_type` (string, 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.
    Enum: "KYC", "W8-BEN", "W9", "UNDOCUMENTED"

  - `data.valid_from` (string, required)
    The date from which the US withholding tax status is valid, in YYYY-MM-DD format.

  - `data.valid_to` (string)
    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.

  - `data.status` (string, required)
    Final status of the US Withholding Tax Status check.
* IN_PROGRESS - US Withholding Tax Status check is in progress
* PASSED - US Withholding Tax Status check passed
* FAILED - US Withholding Tax Status check failed

A documented status ("KYC", "W8-BEN" or "W9") is corroborated against the user's tax residency: it fails when the declared `person_type` contradicts the tax residency Upvest holds for the user, or when the user has no active tax residency on record. An "UNDOCUMENTED" status is recorded as declared and is not corroborated against tax residency.
    Enum: "IN_PROGRESS", "PASSED", "FAILED"

## Response 200 headers (application/json):

  - `upvest-request-id` (string, required)
    Example: 169ae4c7-ebd7-4041-94da-25369653eba7

## Response 400:

  - `400` (unknown)
    Bad Request. The incoming request had a malformed parameter/object.

## Response 400 fields (application/problem+json):

  - `type` (string, required)
    URL to a document describing the error condition.

  - `status` (integer, required)
    Transmission of the HTTP status code so that all information can be found in one place, but also to correct changes in the status code due to the use of proxy servers.

  - `title` (string)
    A short, human-readable title for the general error type; the title should not change for given types.

  - `detail` (string)
    A human-readable description of the specific error.

  - `instance` (string)
    This optional key may be present, with a unique URI for the specific error; this will often point to an error log for that specific response.

  - `request_id` (string)
    Correlation ID for the original request.

## Response 400 headers (application/problem+json):

  - `upvest-request-id` (string, required)
    Example: 169ae4c7-ebd7-4041-94da-25369653eba7

## Response 401:

  - `401` (unknown)
    Unauthorized. The caller has not been authenticated.

## Response 401 fields (application/problem+json):

  - `type` (string, required)
    URL to a document describing the error condition.

  - `status` (integer, required)
    Transmission of the HTTP status code so that all information can be found in one place, but also to correct changes in the status code due to the use of proxy servers.

  - `title` (string)
    A short, human-readable title for the general error type; the title should not change for given types.

  - `detail` (string)
    A human-readable description of the specific error.

  - `instance` (string)
    This optional key may be present, with a unique URI for the specific error; this will often point to an error log for that specific response.

  - `request_id` (string)
    Correlation ID for the original request.

## Response 401 headers (application/problem+json):

  - `upvest-request-id` (string, required)
    Example: 169ae4c7-ebd7-4041-94da-25369653eba7

## Response 403:

  - `403` (unknown)
    Forbidden. The caller has been authenticated but is not allowed to take the requested action.

## Response 403 fields (application/problem+json):

  - `type` (string, required)
    URL to a document describing the error condition.

  - `status` (integer, required)
    Transmission of the HTTP status code so that all information can be found in one place, but also to correct changes in the status code due to the use of proxy servers.

  - `title` (string)
    A short, human-readable title for the general error type; the title should not change for given types.

  - `detail` (string)
    A human-readable description of the specific error.

  - `instance` (string)
    This optional key may be present, with a unique URI for the specific error; this will often point to an error log for that specific response.

  - `request_id` (string)
    Correlation ID for the original request.

## Response 403 headers (application/problem+json):

  - `upvest-request-id` (string, required)
    Example: 169ae4c7-ebd7-4041-94da-25369653eba7

## Response 404:

  - `404` (unknown)
    Not Found. The requested resource could not be found.

## Response 404 fields (application/problem+json):

  - `type` (string, required)
    URL to a document describing the error condition.

  - `status` (integer, required)
    Transmission of the HTTP status code so that all information can be found in one place, but also to correct changes in the status code due to the use of proxy servers.

  - `title` (string)
    A short, human-readable title for the general error type; the title should not change for given types.

  - `detail` (string)
    A human-readable description of the specific error.

  - `instance` (string)
    This optional key may be present, with a unique URI for the specific error; this will often point to an error log for that specific response.

  - `request_id` (string)
    Correlation ID for the original request.

## Response 404 headers (application/problem+json):

  - `upvest-request-id` (string, required)
    Example: 169ae4c7-ebd7-4041-94da-25369653eba7

## Response 406:

  - `406` (unknown)
    Not Acceptable. The resource does not have a current representation that would be acceptable to the user agent. "Accept" header defined unsupported value.

## Response 406 fields (application/problem+json):

  - `type` (string, required)
    URL to a document describing the error condition.

  - `status` (integer, required)
    Transmission of the HTTP status code so that all information can be found in one place, but also to correct changes in the status code due to the use of proxy servers.

  - `title` (string)
    A short, human-readable title for the general error type; the title should not change for given types.

  - `detail` (string)
    A human-readable description of the specific error.

  - `instance` (string)
    This optional key may be present, with a unique URI for the specific error; this will often point to an error log for that specific response.

  - `request_id` (string)
    Correlation ID for the original request.

## Response 406 headers (application/problem+json):

  - `upvest-request-id` (string, required)
    Example: 169ae4c7-ebd7-4041-94da-25369653eba7

## Response 429:

  - `429` (unknown)
    Too Many Requests. The caller has exceeded their quota for the time period and has been throttled.

## Response 429 fields (application/problem+json):

  - `type` (string, required)
    URL to a document describing the error condition.

  - `status` (integer, required)
    Transmission of the HTTP status code so that all information can be found in one place, but also to correct changes in the status code due to the use of proxy servers.

  - `title` (string)
    A short, human-readable title for the general error type; the title should not change for given types.

  - `detail` (string)
    A human-readable description of the specific error.

  - `instance` (string)
    This optional key may be present, with a unique URI for the specific error; this will often point to an error log for that specific response.

  - `request_id` (string)
    Correlation ID for the original request.

## Response 429 headers (application/problem+json):

  - `upvest-request-id` (string, required)
    Example: 169ae4c7-ebd7-4041-94da-25369653eba7

## Response 500:

  - `500` (unknown)
    Internal Server Error. The service encountered an unexpected error.

## Response 500 fields (application/problem+json):

  - `type` (string, required)
    URL to a document describing the error condition.

  - `status` (integer, required)
    Transmission of the HTTP status code so that all information can be found in one place, but also to correct changes in the status code due to the use of proxy servers.

  - `title` (string)
    A short, human-readable title for the general error type; the title should not change for given types.

  - `detail` (string)
    A human-readable description of the specific error.

  - `instance` (string)
    This optional key may be present, with a unique URI for the specific error; this will often point to an error log for that specific response.

  - `request_id` (string)
    Correlation ID for the original request.

## Response 500 headers (application/problem+json):

  - `upvest-request-id` (string, required)
    Example: 169ae4c7-ebd7-4041-94da-25369653eba7

## Response 503:

  - `503` (unknown)
    Service Unavailable. The service handling for this request cannot be reached at this time.

## Response 503 fields (application/problem+json):

  - `type` (string, required)
    URL to a document describing the error condition.

  - `status` (integer, required)
    Transmission of the HTTP status code so that all information can be found in one place, but also to correct changes in the status code due to the use of proxy servers.

  - `title` (string)
    A short, human-readable title for the general error type; the title should not change for given types.

  - `detail` (string)
    A human-readable description of the specific error.

  - `instance` (string)
    This optional key may be present, with a unique URI for the specific error; this will often point to an error log for that specific response.

  - `request_id` (string)
    Correlation ID for the original request.

## Response 503 headers (application/problem+json):

  - `upvest-request-id` (string, required)
    Example: 169ae4c7-ebd7-4041-94da-25369653eba7

## Response 504:

  - `504` (unknown)
    Gateway Timeout. The service gateway has reached its internal timeout.

## Response 504 fields (application/problem+json):

  - `type` (string, required)
    URL to a document describing the error condition.

  - `status` (integer, required)
    Transmission of the HTTP status code so that all information can be found in one place, but also to correct changes in the status code due to the use of proxy servers.

  - `title` (string)
    A short, human-readable title for the general error type; the title should not change for given types.

  - `detail` (string)
    A human-readable description of the specific error.

  - `instance` (string)
    This optional key may be present, with a unique URI for the specific error; this will often point to an error log for that specific response.

  - `request_id` (string)
    Correlation ID for the original request.

## Response 504 headers (application/problem+json):

  - `upvest-request-id` (string, required)
    Example: 169ae4c7-ebd7-4041-94da-25369653eba7

