---
title: "Retrieve KYC requirements"
method: GET
path: "/v2/users/{userId}/kyc/requirements"
tags: ["Kyc"]
---

# Retrieve KYC requirements

`GET /v2/users/{userId}/kyc/requirements`

Get the required and optional KYC fields for a specific rail, along with any invalid KYC fields currently held by the user for unlocking the rail.

The Get KYC Requirements endpoint provides a comprehensive list of required and optional KYC fields needed to initiate a KYC submission (the same set of info available in our [Compliance Guide](https://docs.hifibridge.com/docs/rails/overview)). 
Additionally, it identifies any invalid fields in the user's current KYC data that need to be updated before submission. This is particularly useful for pre-filling KYC forms and addressing issues proactively.

This endpoint is intended **only** for use **before** KYC submission. After submitting KYC data, use the [Retrieve KYC status](https://docs.hifibridge.com/api-reference/kyc/retrieve-kyc-status) endpoint to check the submission status and further identify any fields that may still require updates.

## Path parameters

- `userId` string, required

## Query parameters

- `rails` 'USD' | 'SOUTH_AMERICA_STANDARD' | 'AFRICA_GENERAL' | 'AFRICA_NIGERIA' | 'GLOBAL_NETWORK', required — The type of rail.

## Response `200`

Success

- union
  - USDRailBusinessKYCReqOptObject
    - `userId` string, uuid
    - `rails` 'USD' | 'SOUTH_AMERICA_STANDARD' | 'AFRICA_GENERAL' | 'AFRICA_NIGERIA' | 'GLOBAL_NETWORK' — The type of rail.
    - `type` 'business'
    - `required` object — KYC fields required for this rail. The required fields varies based on the Rail.
      - `businessName` string
      - `businessType` string
      - `businessIndustry` string
      - `registrationNumber` string
      - `registeredAddress` string
      - `address` AddressReqOptObject
        - `required` object
          - `addressLine1` string
          - `city` string
          - `stateProvinceRegion` string
          - `postalCode` string
          - `country` string
        - `optional` object
          - `addressLine2` string
      - `website` string
      - `incorporationDate` string
      - `email` string
      - `phone` string
      - `taxIdentificationNumber` string
      - `sofEuQuestionnaire` SofEuQaKybReqOptObject
        - `required` object
          - `primaryPurpose` string
          - `sourceOfFunds` string
          - `transmitsCustomerFunds` string
          - `conductsMoneyServices` string
          - `highRiskActivities` string
          - `estimatedAnnualRevenueUsd` string
          - `expectedMonthlyPaymentsUsd` string
          - `customerFundsDescription` string
        - `optional` object
          - `operatesInProhibitedCountries` string
          - `primaryPurposeOther` string
          - `sourceOfFundsDescription` string
          - `transmitsCustomerFundsDescription` string
      - `ultimateBeneficialOwners` unknown[]
        - unknown
      - `documents` USDRailBusinessDocReqOptObject
        - `legalPresence` DocGroupRequirementObject — Represents minimum document requirements for a specific rail. Each group specifies the minimum number of documents required from a list of accepted document types. **Note: Only documents provided through the Documents Endpoint will be considered for fulfilling these requirements.**
          - `minCount` integer — Minimum number of documents needed from the `acceptedDocTypes`.
          - `acceptedDocTypes` string[] — List of accepted document types. The user must provide at least `minCount` documents from this list.
        - `ownershipStructure` DocGroupRequirementObject — Represents minimum document requirements for a specific rail. Each group specifies the minimum number of documents required from a list of accepted document types. **Note: Only documents provided through the Documents Endpoint will be considered for fulfilling these requirements.**
          - `minCount` integer — Minimum number of documents needed from the `acceptedDocTypes`.
          - `acceptedDocTypes` string[] — List of accepted document types. The user must provide at least `minCount` documents from this list.
        - `companyDetails` DocGroupRequirementObject — Represents minimum document requirements for a specific rail. Each group specifies the minimum number of documents required from a list of accepted document types. **Note: Only documents provided through the Documents Endpoint will be considered for fulfilling these requirements.**
          - `minCount` integer — Minimum number of documents needed from the `acceptedDocTypes`.
          - `acceptedDocTypes` string[] — List of accepted document types. The user must provide at least `minCount` documents from this list.
        - `controlStructure` DocGroupRequirementObject — Represents minimum document requirements for a specific rail. Each group specifies the minimum number of documents required from a list of accepted document types. **Note: Only documents provided through the Documents Endpoint will be considered for fulfilling these requirements.**
          - `minCount` integer — Minimum number of documents needed from the `acceptedDocTypes`.
          - `acceptedDocTypes` string[] — List of accepted document types. The user must provide at least `minCount` documents from this list.
    - `optional` object — KYC fields that are optional for this rail. The optional fields varies based on the Rail.
      - `incorporationCountry` string
      - `incorporationState` string
    - `invalid` object — KYC fields the user currently holds that are either missing or invalid for this rail. The specific invalid fields vary depending on the user’s current KYC data.
      - `message` string
      - `fields` object — Any missing or invalid fields, which varies depending on the user’s current KYC data.
        - `registrationNumber` string
      - `documents` object — Any missing documents groups, which varies depending on the user’s current KYC documents data.
        - `message` string
        - `groups` object
          - `controlStructure` object
            - `minCount` integer
            - `acceptedDocTypes` string[]
  - USDRailIndividualKYCReqOptObject
    - `userId` string, uuid
    - `rails` 'USD' | 'SOUTH_AMERICA_STANDARD' | 'AFRICA_GENERAL' | 'AFRICA_NIGERIA' | 'GLOBAL_NETWORK' — The type of rail.
    - `type` 'individual'
    - `required` object — KYC fields required for this rail. The required fields varies based on the Rail.
      - `firstName` string
      - `lastName` string
      - `email` string
      - `phone` string
      - `nationality` string
      - `dateOfBirth` string
      - `address` AddressReqOptObject
        - `required` object
          - `addressLine1` string
          - `city` string
          - `stateProvinceRegion` string
          - `postalCode` string
          - `country` string
        - `optional` object
          - `addressLine2` string
      - `taxIdentificationNumber` string
      - `documents` USDRailIndividualDocReqOptObject
        - `identity` DocGroupRequirementObject — Represents minimum document requirements for a specific rail. Each group specifies the minimum number of documents required from a list of accepted document types. **Note: Only documents provided through the Documents Endpoint will be considered for fulfilling these requirements.**
          - `minCount` integer — Minimum number of documents needed from the `acceptedDocTypes`.
          - `acceptedDocTypes` string[] — List of accepted document types. The user must provide at least `minCount` documents from this list.
        - `proofOfResidence` DocGroupRequirementObject — Represents minimum document requirements for a specific rail. Each group specifies the minimum number of documents required from a list of accepted document types. **Note: Only documents provided through the Documents Endpoint will be considered for fulfilling these requirements.**
          - `minCount` integer — Minimum number of documents needed from the `acceptedDocTypes`.
          - `acceptedDocTypes` string[] — List of accepted document types. The user must provide at least `minCount` documents from this list.
    - `optional` object — KYC fields that are optional for this rail. The optional fields varies based on the Rail.
      - `sofEuQuestionnaire` SofEuQaKycReqOptObject
        - `required` object
          - `actingAsIntermediary` string
          - `employmentStatus` string
          - `expectedMonthlyPayments` string
          - `mostRecentOccupation` string
          - `primaryPurpose` string
          - `sourceOfFunds` string
        - `optional` object
          - `primaryPurposeOther` string
    - `invalid` object — KYC fields the user currently holds that are either missing or invalid for this rail. The specific invalid fields vary depending on the user’s current KYC data.
      - `message` string
      - `fields` object — Any missing or invalid fields, which varies depending on the user’s current KYC data.
        - `phone` string
        - `nationality` string
        - `taxIdentificationNumber` string
      - `documents` object — Any missing documents groups, which varies depending on the user’s current KYC documents data.
        - `message` string
        - `groups` object
          - `identity` object
            - `minCount` integer
            - `acceptedDocTypes` string[]

## Other responses

- `401` — Unauthorized
- `404` — Resource not found
- `500` — Internal Server Error

---

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