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

# Transfer Product Item

> Transfer a product item from one user to another. The product must have `is_transferable` set to true. Users can be identified by email or user ID.



## OpenAPI

````yaml post /v1/products/{id}/transfer
openapi: 3.1.0
info:
  title: Wallet API
  version: 2.72.0
servers:
  - url: https://dev.api.mufi.app/
    description: Staging
security: []
paths:
  /v1/products/{id}/transfer:
    post:
      tags:
        - engagement
      summary: Transfer Product Item
      description: >-
        Transfer a product item from one user to another. The product must have
        `is_transferable` set to true. Users can be identified by email or user
        ID.
      parameters:
        - schema:
            type: string
            format: uuid
            description: The product ID.
          required: true
          description: The product ID.
          name: id
          in: path
      requestBody:
        description: Transfer request with sender and recipient identifiers.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransferProductRequest'
      responses:
        '200':
          description: Product item transferred successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferProductResponse'
        '400':
          description: A bad request will contain a list of errors for invalid fields.
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: string
                required:
                  - errors
        '401':
          description: >-
            Unauthorized. The API key is missing or has expired if you are using
            a key with an expiration date that you configured when creating the
            key.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '403':
          description: >-
            Forbidden. The API key that you provided is not valid or does not
            exist.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '404':
          description: Product item, sender, or recipient not found.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '422':
          description: >-
            Product not transferable, item already redeemed, sender not owner,
            self-transfer, recipient not a project customer, or recipient
            exceeds max_per_account.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
      security:
        - BearerAuth: []
components:
  schemas:
    TransferProductRequest:
      type: object
      properties:
        product_item_id:
          type: string
          format: uuid
          description: The ID of the product item to transfer.
        sender_email:
          type: string
          format: email
          description: Email of the current owner (sender).
        sender_user_id:
          type: string
          format: uuid
          description: User ID of the current owner (sender).
        recipient_email:
          type: string
          format: email
          description: Email of the recipient.
        recipient_user_id:
          type: string
          format: uuid
          description: User ID of the recipient.
      required:
        - product_item_id
    TransferProductResponse:
      type: object
      properties:
        product_item:
          type: object
          properties:
            id:
              type: string
              format: uuid
            item_id:
              type: integer
            product_id:
              type: string
              format: uuid
            product_name:
              type: string
            product_type:
              $ref: '#/components/schemas/ProductType'
            redemption_count:
              type: integer
            redemption_quantity:
              type: integer
            is_fully_redeemed:
              type: boolean
            redeemed_at:
              type:
                - integer
                - 'null'
          required:
            - id
            - item_id
            - product_id
            - product_name
            - product_type
            - redemption_count
            - redemption_quantity
            - is_fully_redeemed
            - redeemed_at
        previous_owner:
          type: object
          properties:
            id:
              type: string
              format: uuid
            email:
              type:
                - string
                - 'null'
              format: email
            first_name:
              type:
                - string
                - 'null'
            last_name:
              type:
                - string
                - 'null'
          required:
            - id
            - email
            - first_name
            - last_name
        new_owner:
          type: object
          properties:
            id:
              type: string
              format: uuid
            email:
              type:
                - string
                - 'null'
              format: email
            first_name:
              type:
                - string
                - 'null'
            last_name:
              type:
                - string
                - 'null'
          required:
            - id
            - email
            - first_name
            - last_name
        transferred_at:
          type: integer
      required:
        - product_item
        - previous_owner
        - new_owner
        - transferred_at
    ProductType:
      type: string
      enum:
        - admission
        - presale
        - perks
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: A JWT Access Token obtained from Google Cloud.

````