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

# Update profile

> Update the profile process for a business user.

export const RestEndpointSubjects = ({subjects = []}) => {
  const subjectToIconMap = {
    'client': 'browser',
    'user:individual': 'user',
    'user:business': 'briefcase'
  };
  if (subjects.length === 0) {
    return null;
  }
  return <>
      {subjects.map(subject => <a key={subject} href="/rest-apis/authentication#subjects" className="border-0 opacity-85 hover:opacity-100 transition-opacity">
          <Badge stroke size="lg" icon={subjectToIconMap[subject]} color="gray" className="mr-1">
            {subject}
          </Badge>
        </a>)}
    </>;
};

<RestEndpointSubjects subjects={["user:business"]} />

<Note>This endpoint is currently available in **Sandbox** only. It is not yet available in **Production**.</Note>

**Update profile** submits the business's own identifying information: its legal entity name, formation date, industry, government-issued legal identifiers, and addresses.

The endpoint is partial — fields you omit keep their current value, so you can build the profile up across several calls as the business provides information.

## Fields set at user creation

Some profile fields are established when the business user is created and cannot be changed here:

* `legalEntityType` is fixed at creation and is only readable through [Get overview](./get-overview).
* `registrationAddress.country` and `operatingAddress.country` are fixed at creation. You can still update the remaining address fields, such as `subdivision`, `city`, `line1`, `line2`, and `postalCode`.

<Tip>You can seed most of the profile directly in the [Create user](../users/create-user) request instead of submitting it afterwards.</Tip>

## Industry

The `industry` object classifies what the business actually does, through a `sector` and its corresponding `subSector`.

<AccordionGroup>
  <Accordion title="financial-institutions-and-money-services" icon="building-columns">
    `money-transmitters`, `remittance-services`, `vasp-casp`, `payment-processors`, `fx-providers`, `other-regulated-nbfi`

    Businesses in this sector must also complete the [financial institution](./update-financial-institution) process.
  </Accordion>

  <Accordion title="crypto-services-and-products" icon="bitcoin-sign">
    `exchanges`, `custodial-wallet-providers`, `non-custodial-wallet-providers`, `miners`, `nft-platforms`, `defi-projects`
  </Accordion>

  <Accordion title="personal-investment-vehicles" icon="piggy-bank">
    `private-trusts`, `roth-ira`, `llc-spe-for-holding-assets`
  </Accordion>

  <Accordion title="family-offices-and-investment-funds" icon="chart-pie">
    `family-offices`, `pooled-investment-vehicles`, `private-investment-funds`
  </Accordion>

  <Accordion title="professional-services" icon="briefcase">
    `law-firms`, `accounting-firms`, `consultants`, `company-formation-or-secretarial-services`
  </Accordion>

  <Accordion title="technology-and-software" icon="microchip">
    `it-services`, `saas`, `gaming-studios`, `cybersecurity`, `data-analytics`, `ai-firms`
  </Accordion>

  <Accordion title="ecommerce-and-retail" icon="cart-shopping">
    `online-marketplaces`, `merchants`, `wholesalers`, `direct-to-consumer-retailers`
  </Accordion>

  <Accordion title="real-estate-and-property-management" icon="building">
    `brokerages`, `property-developers`, `management-companies`, `investment-vehicles`
  </Accordion>

  <Accordion title="high-value-goods-and-luxury-dealers" icon="gem">
    `jewelry`, `art`, `precious-metals`, `automobiles`, `auction-houses`
  </Accordion>

  <Accordion title="other" icon="ellipsis">
    When no sector applies, use `other` and describe the business's activity in the `otherSector` field instead of a `subSector`.
  </Accordion>
</AccordionGroup>

## Legal identifiers

`legalIds` carries the government-issued identifiers of the business. Two types are supported:

* `tax-id`: the business's tax identification number.
* `registration-id`: the business's company registration number.

Each identifier declares its own `country`. Only those issued by the country of the business's `registrationAddress` count towards completing the process, but the array is not limited to them — ask the business whether it is registered for tax anywhere else, and declare those identifiers here as well. Submitting an empty array clears every previously submitted identifier.

Which identifiers are required depends on the country the business is registered in:

| Type / Region         | <Tooltip tip="United Kingdom">UK</Tooltip>                            | <Tooltip tip="United States of America">US</Tooltip>           | Notes |
| --------------------- | --------------------------------------------------------------------- | -------------------------------------------------------------- | ----- |
| **`tax-id`**          | <Icon icon="check" size={12} color="#10b981" /> Required (UTRN)       | <Icon icon="check" size={12} color="#10b981" /> Required       | —     |
| **`registration-id`** | <Icon icon="check" size={12} color="#10b981" /> Required (EIN or SSN) | <Icon icon="xmark" size={12} color="#ef4444" /> Not applicable | —     |

<Note>Tax ID format validation only runs in **Production**. In **Sandbox**, any non-empty value is accepted. Failures can be triggered by using `INVALID`.</Note>


## OpenAPI

````yaml _media/specs/core-openapi.mintlify.json patch /core/kyb/processes/profile
openapi: 3.1.0
info:
  version: 0.1.0
  title: Core API
  description: >-
    The Core API provides essential building blocks that empower businesses to
    embed financial services into their applications.
  contact:
    name: Uphold API Team
    email: developers@uphold.com
    url: https://developer.uphold.com
servers:
  - url: https://api.enterprise.sandbox.uphold.com
    description: Sandbox
  - url: https://api.enterprise.uphold.com
    description: Production
security:
  - OAuth2: []
tags:
  - name: Authentication
    description: Authentication.
  - name: Countries
    description: Countries.
  - name: Users
    description: Users.
  - name: KYC
    description: Individual User's KYC.
  - name: KYB
    description: Business User's KYB.
  - name: Capabilities
    description: User capabilities.
  - name: Terms of service
    description: User terms of service.
  - name: Files
    description: Files.
  - name: Assets
    description: Assets, networks and rails.
  - name: Accounts
    description: Accounts.
  - name: External accounts
    description: External accounts.
  - name: Transactions
    description: Transactions.
  - name: Portfolio
    description: Portfolio.
  - name: Statements
    description: Statements.
  - name: Metadata
    description: Metadata.
  - name: Webhooks
    description: Webhooks.
paths:
  /core/kyb/processes/profile:
    patch:
      tags:
        - KYB
      summary: Update profile
      description: Update the profile process for a business user.
      operationId: core.update-kyb-profile
      requestBody:
        $ref: '#/components/requestBodies/update-kyb-profile-request-body'
      responses:
        '200':
          $ref: '#/components/responses/update-kyb-profile-response'
        '409':
          $ref: '#/components/responses/update-kyb-profile-conflict-response'
      security:
        - OAuth2:
            - core.kyb.profile:update
components:
  requestBodies:
    update-kyb-profile-request-body:
      content:
        application/json:
          schema:
            type: object
            properties:
              input:
                description: Input of the KYB process.
                type: object
                additionalProperties: false
                minProperties: 1
                properties:
                  legalEntityName:
                    allOf:
                      - $ref: '#/components/schemas/string-no-edge-spaces'
                      - description: The full legal entity name.
                        type: string
                        maxLength: 200
                  formationDate:
                    description: The date of the business formation.
                    type: string
                    format: date
                  industry:
                    oneOf:
                      - $ref: '#/components/schemas/kyb-profile-industry-base'
                      - title: Other
                        type: object
                        additionalProperties: false
                        properties:
                          sector:
                            type: string
                            const: other
                          otherSector:
                            allOf:
                              - $ref: '#/components/schemas/string-no-edge-spaces'
                              - description: >-
                                  Free-form description of the sector and
                                  sub-sector.
                                type: string
                                maxLength: 255
                        required:
                          - sector
                  legalIds:
                    type: array
                    description: >-
                      The legal identifiers of the business, usually
                      government-issued.
                    maxItems: 20
                    items:
                      type: object
                      properties:
                        type:
                          description: The type of the legal identifier.
                          type: string
                          enum:
                            - tax-id
                            - registration-id
                        id:
                          allOf:
                            - $ref: '#/components/schemas/string-no-edge-spaces'
                            - description: The legal identifier value.
                              type: string
                              maxLength: 140
                        country:
                          allOf:
                            - $ref: '#/components/schemas/country-code-for-request'
                            - description: The country of the legal identifier.
                  registrationAddress:
                    allOf:
                      - $ref: >-
                          #/components/schemas/update-address-without-country-for-request
                      - description: The registration address of the business.
                  operatingAddress:
                    allOf:
                      - $ref: >-
                          #/components/schemas/update-address-without-country-for-request
                      - description: The operating address of the business.
            required:
              - input
          examples:
            Update Process:
              value:
                input:
                  legalEntityName: ACME Corporation
                  formationDate: '2000-01-01'
                  industry:
                    sector: ecommerce-and-retail
                    subSector: online-marketplaces
                  legalIds:
                    - type: tax-id
                      id: 99L99999
                      country: GB
                    - type: registration-id
                      id: AB123456
                      country: GB
                  registrationAddress:
                    city: Manchester
                    line1: 1 High Street
                    line2: Northern Quarter
                    postalCode: M4 1AA
                  operatingAddress:
                    city: Manchester
                    line1: 1 High Street
                    line2: Northern Quarter
                    postalCode: M4 1AA
                    subdivision: GB-MAN
  responses:
    update-kyb-profile-response:
      description: KYB profile process updated.
      content:
        application/json:
          schema:
            type: object
            properties:
              profile:
                $ref: '#/components/schemas/kyb-profile'
            required:
              - profile
          examples:
            Process Updated:
              value:
                profile:
                  code: profile
                  status: ok
                  input:
                    legalEntityName: ACME Corporation
                    legalEntityType: private-limited-company
                    formationDate: '2000-01-01'
                    industry:
                      sector: ecommerce-and-retail
                      subSector: online-marketplaces
                    legalIds:
                      - type: tax-id
                        id: 99L99999
                        country: GB
                      - type: registration-id
                        id: AB123456
                        country: GB
                    registrationAddress:
                      city: Manchester
                      line1: 1 High Street
                      line2: Northern Quarter
                      postalCode: M4 1AA
                      subdivision: GB-MAN
                      country: GB
                    operatingAddress:
                      city: Manchester
                      line1: 1 High Street
                      line2: Northern Quarter
                      postalCode: M4 1AA
                      subdivision: GB-MAN
                      country: GB
      headers:
        x-uphold-request-id:
          description: >-
            A unique identifier for the request that can be shared with Uphold
            for troubleshooting purposes.
          required: true
          schema:
            type: string
            format: uuid
          examples:
            Request ID:
              value: 9092ee4d-f0fb-42e9-8787-b668dbcec531
    update-kyb-profile-conflict-response:
      description: Business logic error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            Legal Entity Name Contains Invalid Characters:
              value:
                code: invalid_characters
                message: The request has invalid characters
                details:
                  context: body
                  property: input.legalEntityName
            Legal Id Country Not Supported:
              value:
                code: country_not_supported
                message: The country is not supported
                details:
                  context: body
                  property: input.legalIds[0].country
            Legal Id Document Number Invalid:
              value:
                code: document_number_invalid
                message: Tax ID is invalid for country 'US'
                details:
                  context: body
                  property: input.legalIds[0].id
            Formation Date Invalid:
              value:
                code: date_invalid
                message: The date must be in the past
                details:
                  context: body
                  property: input.formationDate
                  rule: difference-greater-than-threshold
                  threshold:
                    limit: 0
                    unit: milliseconds
            Address Subdivision Not Supported:
              value:
                code: subdivision_not_supported
                message: The subdivision is not supported
                details:
                  context: body
                  property: input.operatingAddress.subdivision
            Address PO Box Not Allowed:
              value:
                code: po_boxes_not_allowed
                message: PO boxes are not allowed
                details:
                  context: body
                  property: input.operatingAddress
            Address Postal Code Invalid:
              value:
                code: postal_code_invalid
                message: The postal code is invalid
                details:
                  context: body
                  property: input.operatingAddress.postalCode
            Address Subdivision Update Restricted By Country:
              value:
                code: operation_not_allowed
                message: Subdivision update is restricted by country
                details:
                  reasons:
                    - subdivision-update-restricted-by-country
      headers:
        x-uphold-request-id:
          description: >-
            A unique identifier for the request that can be shared with Uphold
            for troubleshooting purposes.
          required: true
          schema:
            type: string
            format: uuid
          examples:
            Request ID:
              value: 9092ee4d-f0fb-42e9-8787-b668dbcec531
  schemas:
    string-no-edge-spaces:
      type: string
      pattern: ^\S.*\S$|^\S$
    kyb-profile-industry-base:
      description: >-
        The industry classification of the business. Allowed `subSector` values
        depend on the selected `sector`.
      oneOf:
        - title: Financial Institutions and Money Services
          type: object
          additionalProperties: false
          properties:
            sector:
              type: string
              const: financial-institutions-and-money-services
            subSector:
              type: string
              enum:
                - money-transmitters
                - remittance-services
                - vasp-casp
                - payment-processors
                - fx-providers
                - other-regulated-nbfi
          required:
            - sector
        - title: Crypto Services and Products
          type: object
          additionalProperties: false
          properties:
            sector:
              type: string
              const: crypto-services-and-products
            subSector:
              type: string
              enum:
                - exchanges
                - custodial-wallet-providers
                - non-custodial-wallet-providers
                - miners
                - nft-platforms
                - defi-projects
          required:
            - sector
        - title: Personal Investment Vehicles
          type: object
          additionalProperties: false
          properties:
            sector:
              type: string
              const: personal-investment-vehicles
            subSector:
              type: string
              enum:
                - private-trusts
                - roth-ira
                - llc-spe-for-holding-assets
          required:
            - sector
        - title: Family Offices and Investment Funds
          type: object
          additionalProperties: false
          properties:
            sector:
              type: string
              const: family-offices-and-investment-funds
            subSector:
              type: string
              enum:
                - family-offices
                - pooled-investment-vehicles
                - private-investment-funds
          required:
            - sector
        - title: Professional Services
          type: object
          additionalProperties: false
          properties:
            sector:
              type: string
              const: professional-services
            subSector:
              type: string
              enum:
                - law-firms
                - accounting-firms
                - consultants
                - company-formation-or-secretarial-services
          required:
            - sector
        - title: Technology and Software
          type: object
          additionalProperties: false
          properties:
            sector:
              type: string
              const: technology-and-software
            subSector:
              type: string
              enum:
                - it-services
                - saas
                - gaming-studios
                - cybersecurity
                - data-analytics
                - ai-firms
          required:
            - sector
        - title: E-commerce and Retail
          type: object
          additionalProperties: false
          properties:
            sector:
              type: string
              const: ecommerce-and-retail
            subSector:
              type: string
              enum:
                - online-marketplaces
                - merchants
                - wholesalers
                - direct-to-consumer-retailers
          required:
            - sector
        - title: Real Estate and Property Management
          type: object
          additionalProperties: false
          properties:
            sector:
              type: string
              const: real-estate-and-property-management
            subSector:
              type: string
              enum:
                - brokerages
                - property-developers
                - management-companies
                - investment-vehicles
          required:
            - sector
        - title: High-Value Goods and Luxury Dealers
          type: object
          additionalProperties: false
          properties:
            sector:
              type: string
              const: high-value-goods-and-luxury-dealers
            subSector:
              type: string
              enum:
                - jewelry
                - art
                - precious-metals
                - automobiles
                - auction-houses
          required:
            - sector
    country-code-for-request:
      type: string
      pattern: ^[A-Z]{2}$
    update-address-without-country-for-request:
      description: The address information.
      type: object
      additionalProperties: false
      minProperties: 1
      properties:
        subdivision:
          allOf:
            - $ref: '#/components/schemas/subdivision-code-for-request'
            - description: The subdivision of the address.
        city:
          allOf:
            - $ref: '#/components/schemas/string-no-edge-spaces'
            - description: The city of the address.
              type: string
              maxLength: 100
        line1:
          allOf:
            - $ref: '#/components/schemas/string-no-edge-spaces'
            - description: The first line of the address.
              type: string
              maxLength: 150
        line2:
          anyOf:
            - $ref: '#/components/schemas/string-no-edge-spaces'
            - type: 'null'
          description: The second line of the address.
        postalCode:
          allOf:
            - $ref: '#/components/schemas/string-no-edge-spaces'
            - description: The postal code of the address.
              type: string
              maxLength: 20
    kyb-profile:
      description: The KYB profile object.
      type: object
      properties:
        code:
          description: The code of the KYB process.
          type: string
          const: profile
        status:
          $ref: '#/components/schemas/kyb-process-status'
        input:
          description: Input of the KYB process.
          type: object
          properties:
            legalEntityType:
              $ref: '#/components/schemas/business-legal-entity-type'
            legalEntityName:
              description: The full legal entity name.
              type: string
            formationDate:
              description: The date of the business formation.
              type: string
              format: date
            industry:
              $ref: '#/components/schemas/kyb-profile-industry'
            legalIds:
              type: array
              description: >-
                The legal identifiers of the business, usually
                government-issued.
              items:
                type: object
                properties:
                  type:
                    description: The type of the legal identifier.
                    type: string
                    enum:
                      - tax-id
                      - registration-id
                  id:
                    description: The legal identifier value.
                    type: string
                  country:
                    description: The country of the legal identifier.
                    type: string
                required:
                  - type
                  - id
                  - country
            registrationAddress:
              allOf:
                - $ref: '#/components/schemas/address'
                - description: The registration address of the business.
                  type: object
                  required:
                    - country
            operatingAddress:
              allOf:
                - $ref: '#/components/schemas/address'
                - description: The operating address of the business.
          required:
            - legalEntityType
            - registrationAddress
            - operatingAddress
      required:
        - code
        - status
    error:
      description: The error information.
      allOf:
        - $ref: '#/components/schemas/feedback'
    subdivision-code-for-request:
      type: string
      pattern: ^[A-Z]{2}-[A-Z0-9]{1,3}$
    kyb-process-status:
      description: Status of the KYB process.
      type: string
      enum:
        - ok
        - failed
        - running
        - pending
        - exempt
    business-legal-entity-type:
      type: string
      description: Business legal form/classification.
      enum:
        - government-entity
        - non-profit
        - partnership
        - private-limited-company
        - public-company
        - sole-proprietor
    kyb-profile-industry:
      oneOf:
        - $ref: '#/components/schemas/kyb-profile-industry-base'
        - title: Other
          type: object
          additionalProperties: false
          properties:
            sector:
              type: string
              const: other
            otherSector:
              allOf:
                - $ref: '#/components/schemas/string-no-edge-spaces'
                - description: Free-form description of the sector and sub-sector.
                  type: string
          required:
            - sector
    address:
      description: The address information.
      type: object
      properties:
        country:
          description: The country of the address.
          type: string
        subdivision:
          description: The subdivision of the address.
          type: string
        city:
          description: The city of the address.
          type: string
        line1:
          description: The first line of the address.
          type: string
        line2:
          description: The second line of the address.
          type: string
        postalCode:
          description: The postal code of the address.
          type: string
    feedback:
      description: A feedback message with a code and human-readable description.
      type: object
      properties:
        code:
          description: A short string with a brief explanation about the code reported.
          type: string
        message:
          description: A human-readable message providing more details.
          type: string
        details:
          description: Additional information about the feedback reported.
          type: object
          additionalProperties: true
      required:
        - code
        - message
  securitySchemes:
    OAuth2:
      type: oauth2
      description: OAuth 2.0 authentication.
      flows:
        clientCredentials:
          tokenUrl: /core/oauth2/token
          scopes:
            core.users:act-on-behalf-of: Grants access to act on behalf of a user
            core.users:create: Grants access to create users
            core.users:read: Grants access to view users
            core.users:delete: Grants access to delete users
            core.users.metadata:read: Grants access to view user metadata
            core.users.metadata:write: Grants access to modify user metadata
            core.kyc:read: Grants access to view KYC processes
            core.kyc.profile:update: Grants access to update profile KYC process
            core.kyc.address:update: Grants access to update address KYC process
            core.kyc.email:update: Grants access to update email KYC process
            core.kyc.phone:update: Grants access to update phone KYC process
            core.kyc.identity:update: Grants access to update identity KYC process
            core.kyc.proof-of-address:update: Grants access to update proof-of-address KYC process
            core.kyc.customer-due-diligence:update: Grants access to update customer due diligence KYC process
            core.kyc.enhanced-due-diligence:update: Grants access to update enhanced due diligence KYC process
            core.kyc.crypto-risk-assessment:update: Grants access to update crypto risk assessment KYC process
            core.kyc.self-categorization-statement:update: Grants access to update self-categorization statement KYC process
            core.kyc.tax-details:update: Grants access to update tax details KYC process
            core.kyb:read: Grants access to view KYB processes
            core.kyb.profile:update: Grants access to update profile KYB process
            core.kyb.documents:update: Grants access to update documents KYB process
            core.kyb.financial-institution:update: Grants access to update financial institution KYB process
            core.kyb.associated-persons:create: Grants access to create KYB associated persons
            core.kyb.associated-persons:read: Grants access to view KYB associated persons
            core.kyb.associated-persons:delete: Grants access to delete KYB associated persons
            core.kyb.associated-persons.profile:update: Grants access to update profile KYB associated person process
            core.kyb.associated-persons.identity:update: Grants access to update identity KYB associated person process
            core.kyb.associated-persons.proof-of-address:update: >-
              Grants access to update proof-of-address KYB associated person
              process
            core.kyb.attestation:trigger: Grants access to trigger the attestation process
            core.capabilities:read: Grants access to view user capabilities
            core.terms-of-service:read: Grants access to view terms of service
            core.terms-of-service:accept: Grants access to accept terms of service
            core.files:create: Grants access to create files
            core.files:read: Grants access to view files
            core.files.metadata:read: Grants access to view files metadata
            core.files.metadata:write: Grants access to modify files metadata
            core.accounts:create: Grants access to create accounts
            core.accounts:read: Grants access to view accounts
            core.accounts:update: Grants access to update accounts
            core.accounts:archive: Grants access to archive accounts
            core.accounts:deposit-method: >-
              Grants access to deposit method needed for depositing into
              accounts
            core.accounts:use-test-helpers: Grants access to test helpers of accounts
            core.accounts.metadata:read: Grants access to view accounts metadata
            core.accounts.metadata:write: Grants access to modify accounts metadata
            core.assets:use-test-helpers: Grants access to test helpers of assets
            core.external-accounts:create: Grants access to create external accounts
            core.external-accounts:read: Grants access to view external accounts
            core.external-accounts:update: Grants access to update external accounts
            core.external-accounts:delete: Grants access to delete external accounts
            core.external-accounts.metadata:read: Grants access to view external accounts metadata
            core.external-accounts.metadata:write: Grants access to modify external accounts metadata
            core.transactions:create: Grants access to commit quotes
            core.transactions:read: Grants access to view transactions
            core.transactions.metadata:read: Grants access to view transactions metadata
            core.transactions.metadata:write: Grants access to modify transactions metadata
            core.transactions.requests-for-information:read: Grants access to view transactions requests for information
            core.transactions.requests-for-information:update: Grants access to update transactions requests for information
            core.portfolio:read: >-
              Grants access to view portfolio overview, performance, and
              historical balance
            core.statements:read: Grants access to read statements
            core.webhooks:management-link: Grants access to create webhook management links

````