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

# Update KYC Link Metadata

> Replace the metadata of an entity's KYC link. Send an empty object to clear it; the link then returns `metadata` as an empty object.



## OpenAPI

````yaml put /v3/entity/{entity_id}/kyc_link
openapi: 3.1.0
info:
  title: sandbox
  version: '3'
servers:
  - url: https://service-sandbox.tazapay.com
security:
  - sec0: []
paths:
  /v3/entity/{entity_id}/kyc_link:
    put:
      tags:
        - Entity KYC Links
      summary: Update KYC Link Metadata
      description: >-
        Replace the metadata of an entity's KYC link. Send an empty object to
        clear it; the link then returns `metadata` as an empty object.
      operationId: update-kyc-link-metadata
      parameters:
        - name: entity_id
          in: path
          description: Tazapay unique ID of the entity
          schema:
            type: string
          required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                metadata:
                  type: object
                  additionalProperties: true
                  description: Custom key-value metadata. Replaces the existing metadata.
            example:
              metadata:
                customer_reference: customer_demo_001
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KYCLinkResponse'
              example:
                status: success
                message: ''
                data:
                  entity_id: ent_aaaaaaaaaaaaaaaaaaaa
                  kyc_link:
                    url: https://verify.example.com/kyc/demo-link-001
                    status: pending
                    created_at: '2026-09-25T10:00:00Z'
                    expires_at: '2026-10-25T10:00:00Z'
                    completed_at: null
                    verification_result: null
                    metadata:
                      customer_reference: customer_demo_001
        '404':
          description: Entity or KYC link not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - sec0: []
components:
  schemas:
    KYCLinkResponse:
      type: object
      properties:
        status:
          type: string
          description: Response status.
          enum:
            - success
        message:
          type: string
          description: >-
            Response message. Set when an unexpired KYC link is returned
            unchanged.
          example: ''
        data:
          type: object
          properties:
            entity_id:
              type: string
              description: Tazapay unique ID of the entity.
              pattern: ^ent_.{20}$
              minLength: 24
              maxLength: 24
              example: ent_aaaaaaaaaaaaaaaaaaaa
            kyc_link:
              $ref: '#/components/schemas/KYCLink'
          required:
            - entity_id
            - kyc_link
      required:
        - status
        - message
        - data
    ErrorResponse:
      type: object
      description: Standard error response structure
      properties:
        status:
          type: string
          enum:
            - error
          description: Always 'error' for error responses
        message:
          type: string
          description: High-level error message
        errors:
          type: array
          description: Array of detailed error objects
          items:
            type: object
            properties:
              code:
                type: integer
                description: Specific error code
              message:
                type: string
                description: Detailed error message
              remarks:
                type: string
                description: Additional context or suggestions for resolution
    KYCLink:
      type: object
      properties:
        url:
          type: string
          description: Hosted verification URL to share with the individual.
          format: uri
        status:
          type: string
          description: Current link status.
          enum:
            - pending
            - requires_action
            - approved
            - rejected
            - expired
        created_at:
          type: string
          description: Creation timestamp (RFC 3339, with optional fractional seconds).
          format: date-time
        expires_at:
          type: string
          description: >-
            Timestamp when the link expires. When the link is expired early with
            Expire a KYC Link or Submit Entity, it is set to the time of the
            expiry.
          format: date-time
        completed_at:
          type: string
          nullable: true
          description: >-
            Recorded when the link becomes approved, rejected, or expired.
            `null` until the link reaches one of these statuses.
          format: date-time
        verification_result:
          $ref: '#/components/schemas/KYCLinkVerificationResult'
          nullable: true
          description: Verification outcome. `null` until the link is approved or rejected.
        metadata:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Custom key-value metadata attached to the KYC link. `null` when no
            metadata has been set, and an empty object after it is cleared.
      required:
        - url
        - status
        - created_at
        - expires_at
    KYCLinkVerificationResult:
      type: object
      properties:
        outcome:
          type: string
          description: >-
            Verification outcome. The current workflow builds results for
            terminal approved/rejected outcomes.
          enum:
            - approved
            - rejected
            - requires_action
        rejection_type:
          type: string
          nullable: true
          description: >-
            Provider rejection classification, for example FINAL or RETRY.
            Preserve the received value. `null` when the verification is not
            rejected.
        rejection_reasons:
          type: array
          description: Available rejection reasons; an empty array when there are none.
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  Rejection reason code from Sumsub, for example
                  SELFIE_MISMATCH. See [Sumsub rejection
                  labels](https://docs.sumsub.com/docs/rejection-explanatory-buttons)
                  for the full list of codes and their meanings.
              description:
                type: string
                description: Description supplied with the review.
              user_message:
                type: string
                description: Explanation or instructions supplied for the individual.
        checks:
          type: object
          nullable: true
          properties:
            identity:
              $ref: '#/components/schemas/KYCLinkIdentityCheck'
              nullable: true
            address:
              $ref: '#/components/schemas/KYCLinkAddressCheck'
              nullable: true
            selfie:
              $ref: '#/components/schemas/KYCLinkIdentityCheck'
              nullable: true
          description: >-
            Available checks. A check that was not performed for the review is
            `null`, for example `selfie` when the verification level has no
            liveness check.
        extracted_data:
          type: object
          nullable: true
          properties:
            first_name:
              type: string
              nullable: true
              description: Extracted first name.
            last_name:
              type: string
              nullable: true
              description: Extracted last name.
            date_of_birth:
              type: string
              nullable: true
              description: Date of birth in YYYY-MM-DD format.
              format: date
            nationality:
              type: string
              nullable: true
              description: Country code returned by verification, for example IND.
            address:
              type: object
              nullable: true
              properties:
                line1:
                  type: string
                  nullable: true
                  description: First address line (building number and street).
                line2:
                  type: string
                  nullable: true
                  description: Second address line (flat, building name or sub-street).
                city:
                  type: string
                  nullable: true
                  description: City.
                state:
                  type: string
                  nullable: true
                  description: State, province or region.
                postal_code:
                  type: string
                  nullable: true
                  description: Postal code.
                country:
                  type: string
                  nullable: true
                  description: Country code returned by verification.
          description: >-
            Available extracted identity details, including on some rejected
            outcomes. Fields that were not extracted are `null`.
      required:
        - outcome
    KYCLinkIdentityCheck:
      type: object
      properties:
        status:
          type: string
          description: Result of the check.
          enum:
            - passed
            - failed
        document_type:
          type: string
          nullable: true
          description: Document type returned by the provider. `null` when not returned.
        document_country:
          type: string
          nullable: true
          description: >-
            Document country code returned by verification, for example IND.
            `null` when not returned.
        document_number:
          type: string
          nullable: true
          description: >-
            Document number, returned unmasked in API responses (masked in
            webhooks). `null` when not returned.
        document_expiry:
          type: string
          nullable: true
          description: Document expiry in YYYY-MM-DD format. `null` when not returned.
          format: date
      required:
        - status
    KYCLinkAddressCheck:
      type: object
      properties:
        status:
          type: string
          description: Result of the check.
          enum:
            - passed
            - failed
        document_type:
          type: string
          nullable: true
          description: Document type returned by the provider. `null` when not returned.
      required:
        - status
  securitySchemes:
    sec0:
      type: http
      scheme: basic

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.