Hifi Kyc API

Kyc endpoints

Operations 15

POST /v2/users/{userId}/kyc Update KYC information
GET /v2/users/{userId}/kyc Retrieve KYC information
GET /v2/users/{userId}/kyc/requirements Retrieve KYC requirements
POST /v2/users/{userId}/kyc/submissions Submit KYC
GET /v2/users/{userId}/kyc/status Retrieve KYC status
GET /v2/kyc/status List all KYC statuses
POST /v2/kyc-link Generate a KYC link
POST /v2/users/{userId}/kyc/ubos Add a UBO
GET /v2/users/{userId}/kyc/ubos List all UBOs
POST /v2/users/{userId}/kyc/ubos/{uboId} Update a UBO
GET /v2/users/{userId}/kyc/ubos/{uboId} Retrieve a UBO
POST /v2/users/{userId}/kyc/documents Add documents
GET /v2/users/{userId}/kyc/documents List all documents
POST /v2/users/{userId}/kyc/documents/{documentId} Update a document
GET /v2/users/{userId}/kyc/documents/{documentId} Retrieve a document

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/hifi-kyc-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

hifi-kyc-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Hifi Account Kyc API
  version: 2.0.0
  description: API documentation for Hifi
servers:
- url: https://production.hifibridge.com
  description: Production server
- url: https://sandbox.hifibridge.com
  description: Sandbox server
security:
- bearerAuth: []
tags:
- name: Kyc
  description: Kyc endpoints
paths:
  /v2/users/{userId}/kyc:
    post:
      summary: Update KYC information
      description: 'Update the user''s KYC information.


        The Update KYC endpoint allows you to add or modify the user''s existing KYC data. This is the only endpoint available for making changes to the user''s KYC information.


        HIFI does not provide services to users or businesses from sanctioned and high-risk regions or unsupported US states. See [here](https://docs.hifibridge.com/docs/compliance/regions) for supported regions.

        '
      tags:
      - Kyc
      parameters:
      - $ref: '#/components/parameters/UserIdPathParameter'
      requestBody:
        $ref: '#/components/requestBodies/KycUpdateBody'
      responses:
        '200':
          $ref: '#/components/responses/KycObjectResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
    get:
      summary: Retrieve KYC information
      description: 'Get the KYC information the user currently holds.

        '
      tags:
      - Kyc
      parameters:
      - $ref: '#/components/parameters/UserIdPathParameter'
      responses:
        '200':
          $ref: '#/components/responses/KycObjectResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
  /v2/users/{userId}/kyc/requirements:
    get:
      summary: Retrieve KYC requirements
      description: "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.\n\nThe 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)). \nAdditionally, 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.\n\nThis 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.\n"
      tags:
      - Kyc
      parameters:
      - $ref: '#/components/parameters/UserIdPathParameter'
      - $ref: '#/components/parameters/RailsTypeParameter'
      responses:
        '200':
          $ref: '#/components/responses/KycRequirementResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
  /v2/users/{userId}/kyc/submissions:
    post:
      summary: Submit KYC
      description: "Submit the user's current KYC data to unlock a specific rail. Any updates to the user's KYC data prior to submission should be made using the [Update KYC](https://docs.hifibridge.com/api-reference/kyc/update-kyc-information) endpoint.)      \n\nThe KYC data will only be submitted if all the required KYC fields for the rail are provided. If any required fields are missing, no submission will occur, and the user must supply the missing information using the [Update KYC](https://docs.hifibridge.com/api-reference/kyc/update-kyc-information) endpoint.\n\nA successful submission is confirmed when the response includes a KYC status object. If no such object is returned, the submission did not occur.\n\nFor more details on required and optional KYC fields for unlocking each rail, visit our [KYC Rails Requirement page](https://docs.hifibridge.com/docs/rails/overview).\nTo learn more about KYC, our KYC endpoints, and an example flow for unlocking a rail, see our [KYC Overview page](https://docs.hifibridge.com/guides/usd-rail/submit-kyb).\n"
      tags:
      - Kyc
      parameters:
      - $ref: '#/components/parameters/UserIdPathParameter'
      requestBody:
        $ref: '#/components/requestBodies/RailsBody'
      responses:
        '200':
          $ref: '#/components/responses/KycStatusSubmitResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
  /v2/users/{userId}/kyc/status:
    get:
      summary: Retrieve KYC status
      description: "Get the user's latest KYC status for a specific rail after a KYC submission. If no KYC submission has been made for the rail, it will have an `INACTIVE` status.\n\nThe Get KYC Status endpoint provides the current KYC status of a rail, including details on any invalid or incomplete fields that may require updates. \nTo address any invalid or incomplete fields, use the [Update KYC endpoint](https://docs.hifibridge.com/api-reference/kyc/update-kyc-information), and then resubmit the data using the [Submit KYC endpoint](https://docs.hifibridge.com/api-reference/kyc/submit-kyc).\n"
      tags:
      - Kyc
      parameters:
      - $ref: '#/components/parameters/UserIdPathParameter'
      - $ref: '#/components/parameters/RailsTypeOptionalParameter'
      responses:
        '200':
          $ref: '#/components/responses/KycStatusResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
  /v2/kyc/status:
    get:
      summary: List all KYC statuses
      description: 'List all KYC statuses based on the provided filters.

        '
      tags:
      - Kyc
      parameters:
      - $ref: '#/components/parameters/UserIdOptionalParameter'
      - $ref: '#/components/parameters/UserNameParameter'
      - $ref: '#/components/parameters/UserEmailV2Parameter'
      - $ref: '#/components/parameters/RailsTypeOptionalParameter'
      - $ref: '#/components/parameters/KycStatusArrayOptionalParameter'
      - $ref: '#/components/parameters/LimitParameter'
      - $ref: '#/components/parameters/CreatedBeforeParameter'
      - $ref: '#/components/parameters/CreatedAfterParameter'
      responses:
        '200':
          $ref: '#/components/responses/AllKycStatusesResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
  /v2/kyc-link:
    post:
      summary: Generate a KYC link
      description: 'Generate a KYC link to create a user, unlock rails for a user, or submit KYC for a user.


        This endpoint allows you to generate a HIFI-hosted KYC link that can be shared with users to collect their KYC information. The collected data can be used for User Creation, KYC Submission, or unlocking KYC rails for the user.

        '
      tags:
      - Kyc
      requestBody:
        $ref: '#/components/requestBodies/KycLinkBody'
      responses:
        '200':
          $ref: '#/components/responses/KycLinkResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
  /v2/users/{userId}/kyc/ubos:
    post:
      summary: Add a UBO
      description: 'Add a UBO to the user.

        '
      tags:
      - Kyc
      parameters:
      - $ref: '#/components/parameters/UserIdPathParameter'
      requestBody:
        $ref: '#/components/requestBodies/AddUboBody'
      responses:
        '200':
          $ref: '#/components/responses/UboObjectResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
    get:
      summary: List all UBOs
      description: 'Get all UBOs associated with the user.

        '
      tags:
      - Kyc
      parameters:
      - $ref: '#/components/parameters/UserIdPathParameter'
      responses:
        '200':
          $ref: '#/components/responses/UboObjectAllRecordsResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
  /v2/users/{userId}/kyc/ubos/{uboId}:
    post:
      summary: Update a UBO
      description: 'Update a UBO for the user.

        '
      tags:
      - Kyc
      parameters:
      - $ref: '#/components/parameters/UserIdPathParameter'
      - $ref: '#/components/parameters/UboIdPathParameter'
      requestBody:
        $ref: '#/components/requestBodies/UpdateUboBody'
      responses:
        '200':
          $ref: '#/components/responses/UboObjectResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
    get:
      summary: Retrieve a UBO
      description: 'Get a specific UBO associated with the user.

        '
      tags:
      - Kyc
      parameters:
      - $ref: '#/components/parameters/UserIdPathParameter'
      - $ref: '#/components/parameters/UboIdPathParameter'
      responses:
        '200':
          $ref: '#/components/responses/UboObjectResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
  /v2/users/{userId}/kyc/documents:
    post:
      summary: Add documents
      description: 'Add documents to the user''s KYC.

        '
      tags:
      - Kyc
      parameters:
      - $ref: '#/components/parameters/UserIdPathParameter'
      requestBody:
        $ref: '#/components/requestBodies/AddDocumentBody'
      responses:
        '200':
          $ref: '#/components/responses/DocumentObjectAllRecordsResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
    get:
      summary: List all documents
      description: 'Get all documents associated with the user.

        '
      tags:
      - Kyc
      parameters:
      - $ref: '#/components/parameters/UserIdPathParameter'
      responses:
        '200':
          $ref: '#/components/responses/DocumentObjectAllRecordsResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
  /v2/users/{userId}/kyc/documents/{documentId}:
    post:
      summary: Update a document
      description: 'Update a document for the user.

        '
      tags:
      - Kyc
      parameters:
      - $ref: '#/components/parameters/UserIdPathParameter'
      - $ref: '#/components/parameters/DocumentIdPathParameter'
      requestBody:
        $ref: '#/components/requestBodies/UpdateDocumentBody'
      responses:
        '200':
          $ref: '#/components/responses/DocumentObjectResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
    get:
      summary: Retrieve a document
      description: 'Get a specific document associated with the user or ubo.

        '
      tags:
      - Kyc
      parameters:
      - $ref: '#/components/parameters/UserIdPathParameter'
      - $ref: '#/components/parameters/DocumentIdPathParameter'
      responses:
        '200':
          $ref: '#/components/responses/DocumentObjectResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
components:
  parameters:
    UserIdPathParameter:
      name: userId
      in: path
      schema:
        type: string
      description: ID of the user
      required: true
    RailsTypeOptionalParameter:
      name: rails
      in: query
      schema:
        $ref: '#/components/schemas/RailsEnum'
      description: The type of rail.
      required: false
    UserIdOptionalParameter:
      name: userId
      in: query
      schema:
        type: string
      description: The user ID.
      required: false
    CreatedAfterParameter:
      name: createdAfter
      in: query
      schema:
        type: string
        format: date
      description: 'ISO format: YYYY-MM-DD'
      required: false
    RailsTypeParameter:
      name: rails
      in: query
      schema:
        $ref: '#/components/schemas/RailsEnum'
      required: true
    CreatedBeforeParameter:
      name: createdBefore
      in: query
      schema:
        type: string
        format: date
      description: 'ISO format: YYYY-MM-DD'
      required: false
    UserNameParameter:
      name: userName
      in: query
      schema:
        type: string
      required: false
    DocumentIdPathParameter:
      name: documentId
      in: path
      schema:
        type: string
      description: The ID of the document.
      required: true
    UboIdPathParameter:
      name: uboId
      in: path
      schema:
        type: string
      description: The ID of the Ultimate Beneficial Owner (UBO).
      required: true
    LimitParameter:
      name: limit
      in: query
      schema:
        type: string
        minimum: 1
        maximum: 100
      description: default to 10, maximum to 100
      required: false
    KycStatusArrayOptionalParameter:
      name: status
      in: query
      schema:
        type: array
        items:
          $ref: '#/components/schemas/KycStatusEnum'
        minItems: 1
      description: The statuses of the KYC.
      required: false
    UserEmailV2Parameter:
      name: userEmail
      in: query
      schema:
        type: string
      required: false
  schemas:
    KycStatusEnum:
      type: string
      enum:
      - INACTIVE
      - CREATED
      - PENDING
      - INCOMPLETE
      - RFI_PENDING
      - ACTIVE
      - REJECTED
      - CONTACT_SUPPORT
      description: 'Kyc Status

        - `INACTIVE`: No KYC submission has been made.

        - `CREATED`: KYC application has been submitted.

        - `PENDING`: Review in progress.

        - `RFI_PENDING`: An RFI (Request for Information) email has been sent and is pending user response.

        - `INCOMPLETE`: RFI or resubmission required.

        - `ACTIVE`: User approved and onboarded.

        - `REJECTED`: KYC application rejected.

        - `CONTACT_SUPPORT`: Unexpected issue encountered during KYC review.

        '
    UltimateBeneficialOwner:
      type: object
      properties:
        role:
          type: string
          deprecated: true
          description: The role of the ubo in the business.
          enum:
          - OWNER_OR_OPERATOR
          - PARTNER
          - UBO
          - DIRECTOR_CONTROL_PERSON_OR_LEGAL_REP
          - AGENT_OR_AUTHORISED_PERSON
        roles:
          type: array
          description: The roles of the ubo in the business.
          items:
            type: string
            enum:
            - UBO
            - DIRECTOR
            - REPRESENTATIVE
            - SHAREHOLDER
        businessTitle:
          type: string
          description: Agent or authorised person‘s job title.
        firstName:
          type: string
          description: first name in local language.
        firstNameLocal:
          type: string
        middleName:
          type: string
        middleNameLocal:
          type: string
          description: middle name in local language.
        lastName:
          type: string
        lastNameLocal:
          type: string
          description: last name in local language.
        nationality:
          type: string
          description: Three-letter alpha-3 country code as defined in the ISO 3166-1 spec.
        email:
          type: string
          format: email
        phone:
          type: string
        address:
          type: object
          description: Address of the user.
          $ref: '#/components/schemas/Address'
        dateOfBirth:
          type: string
          description: Date of birth in format yyyy-mm-dd.
          format: date
        countryOfBirth:
          type: string
          description: Three-letter alpha-3 country code as defined in the ISO 3166-1 spec.
        stateOfBirth:
          type: string
        placeOfBirth:
          type: string
        gender:
          type: string
          enum:
          - M
          - F
        taxIdentificationNumber:
          type: string
          description: For US owners, SSN should be used. For non-US individual owners, a national ID is preferred where applicable; however, a tax ID can also be used as an alternative.
        taxResidenceCountry:
          type: string
          description: Three-letter alpha-3 country code as defined in the ISO 3166-1 spec.
        govIdType:
          type: string
          enum:
          - PASSPORT
          - ID_CARD
          - DRIVERS
        govIdCountry:
          type: string
          description: Three-letter alpha-3 country code of the submitted government id as defined in the ISO 3166-1 spec.
        govIdNumber:
          type: string
        govIdFrontUrl:
          type: string
          description: 'URL or Base64 encoded string of the front of the user''s government issued ID.


            *If the file is base64 encoded, it must start with "data:"


            *Maximum file size 3MB and minimum file size 10KB


            *Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif

            '
        govIdBackUrl:
          type: string
          description: 'URL or Base64 encoded string of the back of the user''s government issued ID.


            *If the file is base64 encoded, it must start with "data:"


            *Maximum file size 3MB and minimum file size 10KB


            *Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif

            '
        govIdIssuanceDate:
          type: string
          format: date
          description: The issue date of the Gov ID document in format yyyy-mm-dd.
        govIdExpirationDate:
          type: string
          format: date
          description: The expiry date of the Gov ID document in format yyyy-mm-dd.
        govIdIssuanceAuthority:
          type: string
          description: Issuing authority of the Gov ID document.
        proofOfAddressType:
          type: string
          enum:
          - UTILITY_BILL
          - BANK_STATEMENT
          - RENTAL_AGREEMENT
          - TAX_DOCUMENT
        proofOfAddressUrl:
          type: string
          description: 'URL or Base64 encoded string of the file of the proof of address.


            *If the file is base64 encoded, it must start with "data:"


            *Maximum file size 3MB and minimum file size 10KB


            *Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif

            '
        authLetterUrl:
          type: string
          description: 'URL or Base64 encoded string of the authorization letter that the authorised person can act on behalf of the business.


            *If the file is base64 encoded, it must start with "data:"


            *Maximum file size 3MB and minimum file size 10KB


            *Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif

            '
        shareProportion:
          type: number
          description: 'Percentage of shares owned (greater than or equal to 25%), only for UBOs.

            '
        hasOwnership:
          type: boolean
          description: True if the person has at least 25% ownership of the business.
        hasControl:
          type: boolean
          description: True if the person has a significant responsibility to control, manage, or direct the activities of the business. At least one of the ultimateBeneficialOwners needs to have this set to true.
        isSigner:
          type: boolean
          description: True if the person can authorize transactions on behalf of the business. At least one of the ultimateBeneficialOwners needs to have this set to true.
        relationshipEstablishedAt:
          type: string
          format: date
          description: The date that the ultimateBeneficialOwners first became an owner, control person, or signer for the business in format yyyy-mm-dd.
        supplementaryInfo:
          type: string
          description: 'This field allows the inclusion of additional textual information or context that may be relevant to the KYC process.

            '
        supplementaryUrl:
          type: string
          description: 'This field is designed to contain supplementary documents or files that can be uploaded as part of the KYC process.


            URL or Base64 encoded string of the file of the supplementary information.


            *If the file is base64 encoded, it must start with "data:"


            *Maximum file size 3MB and minimum file size 10KB


            *Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif

            '
    IndividualKycUpdate:
      type: object
      title: Update Individual User KYC
      properties:
        firstName:
          type: string
        firstNameLocal:
          type: string
          description: first name in local language.
        middleName:
          type: string
        middleNameLocal:
          type: string
          description: middle name in local language.
        lastName:
          type: string
        lastNameLocal:
          type: string
          description: last name in local language.
        nationality:
          type: string
          description: Three-letter alpha-3 country code as defined in the ISO 3166-1 spec.
        email:
          type: string
          description: E-mail address for compliance-related communications.
          format: email
        phone:
          type: string
          description: Phone number in E.164 format "+12223334444".
        address:
          type: object
          description: Address of the user.
          $ref: '#/components/schemas/Address'
        dateOfBirth:
          type: string
          format: date
          description: Date of birth in format yyyy-mm-dd.
        countryOfBirth:
          type: string
          description: Three-letter alpha-3 country code as defined in the ISO 3166-1 spec.
        stateOfBirth:
          type: string
          description: The state, region, district, county or another territorial entity of birth inside a country, if applicable.
        placeOfBirth:
          type: string
          description: User place of birth. This can be a city, a town or another settlement type.
        gender:
          type: string
          enum:
          - M
          - F
        country:
          type: string
          description: "User country. This is usually a country of the last uploaded ID document, and it may differ from the country of birth. \nThree-letter alpha-3 country code as defined in the ISO 3166-1 spec.\n"
        taxIdentificationNumber:
          type: string
          description: "Taxpayer identification number that is unique to each taxpayer.\nFor individual US customers, SSN should be used. \nFor business US customers, EIN should be used.\n"
        taxResidenceCountry:
          type: string
          description: Three-letter alpha-3 country code as defined in the ISO 3166-1 spec.
        ipAddress:
          type: string
          description: "IP address of the user. \n\n(See [here](https://docs.hifibridge.com/docs/compliance/regions) for the list of unsupported countries/states.)\n"
          format: ipv4
        govIdType:
          type: string
          enum:
          - PASSPORT
          - ID_CARD
          - DRIVERS
        govIdFrontUrl:
          type: string
          description: 'URL or Base64 encoded string of the front of the user''s government issued ID.


            *Maximum file size 3MB and minimum file size 10KB


            *If the file is base64 encoded, it must start with "data:"


            *Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif

            '
        govIdBackUrl:
          type: string
          description: 'URL or Base64 encoded string of the back of the user''s government issued ID.


            *Maximum file size 3MB and minimum file size 10KB


            *If the file is base64 encoded, it must start with "data:"


            *Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif

            '
        govIdCountry:
          type: string
          description: 'Alpha-3 country code of the provided government id as defined in the ISO 3166-1 spec. Note that the government ID may be different from the ''country'' above.

            '
        govIdNumber:
          type: string
        govIdIssuanceDate:
          type: string
          format: date
          description: The issue date of the Gov ID document in format yyyy-mm-dd.
        govIdExpirationDate:
          type: string
          format: date
          description: 'The expiry date of the Gov ID document in format yyyy-mm-dd.

            '
        govIdIssuanceAuthority:
          type: string
          description: Issuing authority of the Gov ID document.
        govIdHandHoldUrl:
          type: string
          description: 'URL or Base64 encoded string of image of the user holding their government issued ID next to their face.


            *Maximum file size 3MB and minimum file size 10KB


            *If the file is base64 encoded, it must start with "data:"


            *Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif

            '
        proofOfAddressType:
          type: string
          enum:
          - UTILITY_BILL
          - BANK_STATEMENT
          - RENTAL_AGREEMENT
          - TAX_DOCUMENT
        proofOfAddressUrl:
          type: string
          description: 'URL or Base64 encoded string of the file of the proof of address.


            (See [here](https://docs.hifibridge.com/docs/compliance/regions) for the list of unsupported countries/states.)


            *Maximum file size 3MB and minimum file size 10KB


            *If the file is base64 encoded, it must start with "data:"


            *Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif

            '
        sofEuQuestionnaire:
          type: object
          title: Source of Funds and Expected Use Questionnaire
          description: Source of Funds and Expected Use Questionnaire
          $ref: '#/components/schemas/SofEuKycQuestionnaire'
        idType:
          type: string
          enum:
          - PASSPORT
          - ID_CARD
          - DRIVERS
          - NIN
        idNumber:
          type: string
        additionalIdType:
          type: string
          description: 'Required only for "AFRICA_NIGERIA" rail and must be "BVN" type:

            '
        additionalIdNumber:
          type: string
          description: 'Required only for "AFRICA_NIGERIA" rail and must be the BVN number.

            '
        purpose:
          type: array
          description: "The purposes for unlocking this rail. Multiple values can be put into an array. Only required for `MULTI_CURRENCY_ACCOUNT` rail. \n\nLook up the purpose code [here](https://docs.hifibridge.com/docs/compliance/references/account-purposes).\n"
        productServiceCategory:
          type: string
          description: 'The category of the product or service the user is in. Only required for `MULTI_CURRENCY_ACCOUNT` rail.


            Look up the product and service category code [here](https://docs.hifibridge.com/docs/compliance/references/product-service-categories).

            '
        supplementaryInfo:
          type: string
          description: 'This field allows the inclusion of additional textual information or context that may be relevant to the KYC process.

            '
        supplementaryUrl:
          type: string
          description: 'This field is designed to contain supplementary documents or files that can be uploaded as part of the KYC process.


            URL or Base64 encoded string of the file of the supplementary information.


            *Maximum file size 3MB and minimum file size 10KB


            *If the file is base64 encoded, it must start with "data:"


            *Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif

            '
    USDRailBusinessDocReqOptObject:
      type: object
      title: Document Group Requirements (Business)
      properties:
        legalPresence:
          $ref: '#/components/schemas/DocGroupRequirementObject'
        ownershipStructure:
          $ref: '#/components/schemas/DocGroupRequirementObject'
        companyDetails:
          $ref: '#/components/schemas/DocGroupRequirementObject'
        controlStructure:
          $ref: '#/components/schemas/DocGroupRequirementObject'
    AllKycStatusesObject:
      type: array
      items:
        type: object
        properties:
          user:
            type: object
            properties:
              id:
                type: string
                format: uuid
              type:
                type: string
                enum:
                - individual
                - business
              name:
                type: string
              email:
                type: string
                format: email
          rails:
            $ref: '#/components/schemas/RailsEnum'
          createdAt:
            type: string
            format: date-time
          updatedAt:
            type: string
            format: date-time
          status:
            $ref: '#/components/schemas/KycStatusEnum'
    ReviewDetailsBusinessObject:
      type: object
      title: Review Details Business Object
      properties:
        companyInfo:
          $ref: '#/components/schemas/VerificationStatusObject'
        companyDocuments:
          $ref: '#/components/schemas/DocumentVerificationStatusObject'
        questionnaire:
          $ref: '#/components/schemas/VerificationStatusObject'
        ultimateBeneficialOwners:
          type: object
          properties:
            reviewResult:
              $ref: '#/components/schemas/ReviewResultObject'
            details:
              type: array
              items:
                allOf:
                - type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: UBO ID.
                - $ref: '#/components/schemas/UsdRailIndividualKycStatusObject'
    DocumentVerificationStatusObject:
      type: object
      title: Document Verification Status
      properties:
        reviewResult:
          $ref: '#/components/schemas/ReviewResultObject'
        details:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
              type:
                type: string
                description: Document type.
              subType:
                type: string
                description: Document subType.
              reviewResult:
                $ref: '#/components/schemas/ReviewResultObject'
    KycBusinessObject:
      type: object
      title: KYC Object (Business)


# --- truncated at 32 KB (144 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/hifi/refs/heads/main/openapi/hifi-kyc-api-openapi.yml