> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hifi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update a UBO

> Update a UBO for the user.




## OpenAPI

````yaml https://production.hifi.com/api/v2/openapi.json post /v2/users/{userId}/kyc/ubos/{uboId}
openapi: 3.0.0
info:
  title: Hifi 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: Common
    description: Common endpoints
  - name: User
    description: User endpoints
  - name: Kyc
    description: Kyc endpoints
  - name: Wallet
    description: Wallet endpoints
  - name: Account
    description: Account endpoints
  - name: External Account
    description: External Account endpoints for managing beneficiary bank accounts
  - name: Fiat Account
    description: Fiat Account endpoints
  - name: Virtual Account
    description: Virtual Account endpoints
  - name: Onramp
    description: Onramp endpoints
  - name: Offramp
    description: Offramp endpoints
  - name: Orchestration Address
    description: >-
      Orchestration Address endpoints — persistent on-chain wallets that
      automatically off-ramp incoming stablecoin deposits to a USD bank account
  - name: Crypto Transfer
    description: Crypto Transfer endpoints
  - name: Cross-Chain Bridge
    description: Cross-Chain Bridge endpoints
  - name: Token Swap
    description: Token Swap endpoints
  - name: Canton Offers
    description: Canton Offers endpoints
  - name: Transfer Rules
    description: Transfer approval rules and configuration
  - name: Transfer Approvals
    description: Transfer approval workflow and admin actions
  - name: File
    description: File endpoints
  - name: Reporting
    description: Reporting and metrics endpoints
paths:
  /v2/users/{userId}/kyc/ubos/{uboId}:
    post:
      tags:
        - Kyc
      summary: Update a UBO
      description: |
        Update a UBO for the user.
      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'
components:
  parameters:
    UserIdPathParameter:
      name: userId
      in: path
      schema:
        type: string
      description: ID of the user
      required: true
    UboIdPathParameter:
      name: uboId
      in: path
      schema:
        type: string
      description: The ID of the Ultimate Beneficial Owner (UBO).
      required: true
  requestBodies:
    UpdateUboBody:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UboUpdate'
  responses:
    UboObjectResponse:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UboObject'
          examples:
            UboObjectExample:
              $ref: '#/components/examples/UboObjectExample'
    UnauthorizedResponse:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Unauthorized'
    NotFoundResponse:
      description: Resource not found
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: string
                enum:
                  - error
              error:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
    InternalServerErrorResponse:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/InternalServerError'
  schemas:
    UboUpdate:
      type: object
      title: Add UBO
      allOf:
        - $ref: '#/components/schemas/UltimateBeneficialOwner'
    UboObject:
      type: object
      title: UBO Object
      allOf:
        - $ref: '#/components/schemas/UboAdd'
    Unauthorized:
      type: object
      properties:
        code:
          type: integer
          description: Error code
        error:
          type: string
          description: Error type
        errorDetails:
          type: string
          description: Detailed error message
    InternalServerError:
      type: object
      properties:
        code:
          type: integer
          description: Error code
        error:
          type: string
          description: Error type
        errorDetails:
          type: string
          description: Detailed error message
    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:
          $ref: '#/components/schemas/Address'
          type: object
          description: Address of the user.
        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
        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
    UboAdd:
      type: object
      title: Add UBO
      allOf:
        - $ref: '#/components/schemas/UltimateBeneficialOwner'
      required:
        - roles
        - firstName
        - lastName
    Address:
      type: object
      properties:
        addressLine1:
          type: string
        addressLine2:
          type: string
        city:
          type: string
        stateProvinceRegion:
          type: string
          description: >
            The second part of the [ISO 3166-2 subdivision
            code](https://en.wikipedia.org/wiki/ISO_3166-2). This must be
            provided if the country has subdivisions.


            An ISO 3166-2 code consists of two parts, separated by a hyphen
            (`-`):
              1. The first part is the ISO 3166-1 alpha-2 code of the country (e.g., `US`, `CA`, `BR`);
              2. The second part is a string of up to three alphanumeric characters representing a specific subdivision (e.g., state, province). This is typically based on national standards or developed by ISO.

              Only provide the second part of the code (e.g., `CA` for California in `US-CA`, or `SP` for São Paulo in `BR-SP`).
        postalCode:
          type: string
          description: Must be supplied for countries that use postal codes.
        country:
          type: string
          description: >-
            Three-letter alpha-3 country code as defined in the [ISO 3166-1
            spec](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3).
      required:
        - addressLine1
        - city
        - stateProvinceRegion
        - postalCode
        - country
  examples:
    UboObjectExample:
      summary: UBO Object
      value:
        id: 03aef9fa-0e58-4f42-a22f-46de619b42e0
        role: OWNER_OR_OPERATOR
        roles:
          - UBO
          - DIRECTOR
        businessTitle: CEO
        firstName: John
        firstNameLocal: John
        middleName: null
        middleNameLocal: null
        lastName: Doe
        lastNameLocal: Doe
        nationality: USA
        email: example@gmail.com
        phone: '+12223334444'
        address:
          addressLine1: 123 Main St
          addressLine2: null
          city: San Francisco
          stateProvinceRegion: CA
          postalCode: '94105'
          country: USA
        dateOfBirth: '1990-01-01'
        countryOfBirth: USA
        stateOfBirth: NJ
        placeOfBirth: null
        gender: M
        country: USA
        taxIdentificationNumber: '123456789'
        taxResidenceCountry: USA
        ipAddress: null
        hasOwnership: true
        hasControl: true
        isSigner: true
        relationshipEstablishedAt: '2020-01-01'
        govIdCountry: USA
        govIdType: PASSPORT
        govIdNumber: '123456789'
        govIdFrontUrl: https://example.com
        govIdBackUrl: https://example.com
        govIdIssuanceDate: '2020-01-01'
        govIdExpirationDate: '2027-01-01'
        govIdIssuanceAuthority: null
        proofOfAddressType: UTILITY_BILL
        proofOfAddressUrl: https://example.com
        authLetterUrl: https://example.com
        shareProportion: 25
        supplementaryInfo: null
        supplementaryUrl: null
        documents: []
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````