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

# Transfer Inventory Items

> Transfer inventory items. When transferring across collections, a 202 response indicates that the transfer did not complete within the timeframe of the request. You can identify the pending operations by looking for OperationStatus = 'InProgress'. You can check on the operation status at anytime within 1 day of the request by passing the TransactionToken to the GetInventoryOperationStatus API. More information about item transfer scenarios can be found here: https://learn.microsoft.com/en-us/gaming/playfab/features/economy-v2/inventory/?tabs=inventory-game-manager#transfer-inventory-items

Allowed entity token types: title, master_player_account, title_player_account

## Error codes

This operation may return the following PlayFab errors:

| Error | Code |
| --- | --- |
| DatabaseThroughputExceeded | 1113 |
| InsufficientFunds | 1059 |
| ItemNotFound | 1047 |
| PreconditionFailed | 1610 |




## OpenAPI

````yaml post /Inventory/TransferInventoryItems
openapi: 3.0.0
info:
  version: '260922'
  title: PlayFab Economy API
  description: >-
    API methods for managing the catalog. Inventory manages in-game assets for
    any given entity. API methods for managing the versioned catalogs.
  termsOfService: https://playfab.com/terms/
  contact:
    url: https://community.playfab.com/index.html
  license:
    name: Apache 2.0
    url: https://github.com/PlayFab/API_Specs/blob/master/LICENSE
servers:
  - url: https://{titleId}.playfabapi.com
    description: PlayFab title endpoint
    variables:
      titleId:
        default: your_title_id
        description: Your PlayFab title ID (hex).
security: []
tags:
  - name: Catalog
    description: |-
      Catalog Management APIs. In general for Catalog APIs, 
                          Read APIs are limited to 100 requests in 60 seconds 
                          for Player Entities while Title Entities are limited to 10000 requests
                          in 10 seconds. For Write APIs, Player Entities are limited to 10 requests 
                          in 30 seconds and Title Entities are limited to 1000 requests in 10 seconds.
  - name: Inventory
    description: |-
      Player Inventory Management APIs. Inventory operations work on an 
                          eventually consistent system against a cache of the Catalog. It can take a few moments for 
                          changes to propagate. In general for Inventory APIs, Read APIs are limited to 100 requests 
                          in 60 seconds for Player Entities while Title Entities are limited to 10000 requests
                          in 10 seconds. For Write APIs, Player Entities are limited to 30 requests 
                          in 90 seconds and Title Entities are limited to 1000 requests in 10 seconds.
  - name: VersionedCatalog
    description: ''
paths:
  /Inventory/TransferInventoryItems:
    post:
      tags:
        - Inventory
      summary: Transfer Inventory Items
      description: >
        Transfer inventory items. When transferring across collections, a 202
        response indicates that the transfer did not complete within the
        timeframe of the request. You can identify the pending operations by
        looking for OperationStatus = 'InProgress'. You can check on the
        operation status at anytime within 1 day of the request by passing the
        TransactionToken to the GetInventoryOperationStatus API. More
        information about item transfer scenarios can be found here:
        https://learn.microsoft.com/en-us/gaming/playfab/features/economy-v2/inventory/?tabs=inventory-game-manager#transfer-inventory-items


        Allowed entity token types: title, master_player_account,
        title_player_account


        ## Error codes


        This operation may return the following PlayFab errors:


        | Error | Code |

        | --- | --- |

        | DatabaseThroughputExceeded | 1113 |

        | InsufficientFunds | 1059 |

        | ItemNotFound | 1047 |

        | PreconditionFailed | 1610 |
      operationId: TransferInventoryItems
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransferInventoryItemsRequest'
        description: >-
          Transfer the specified inventory items of an entity's container Id to
          another entity's container Id.
      responses:
        '200':
          $ref: '#/components/responses/TransferInventoryItemsResponse'
        '400':
          $ref: '#/components/responses/ApiErrorWrapper'
      security:
        - EntityToken: []
components:
  schemas:
    TransferInventoryItemsRequest:
      description: >-
        Transfer the specified inventory items of an entity's container Id to
        another entity's container Id.
      type: object
      properties:
        Amount:
          description: The amount to transfer .
          type: number
          x-actualtype: int32
        CustomTags:
          description: >-
            The optional custom tags associated with the request (e.g. build
            number, external trace identifiers, etc.).
          type: object
        DeleteEmptyStacks:
          description: >-
            Indicates whether stacks reduced to an amount of 0 during the
            request should be deleted from the inventory. (Default = false)
          type: boolean
        GivingCollectionId:
          description: >-
            The inventory collection id the request is transferring from.
            (Default="default")
          type: string
        GivingEntity:
          allOf:
            - $ref: '#/components/schemas/EntityKey'
          description: >-
            The entity the request is transferring from. Set to the caller by
            default.
        GivingETag:
          description: >-
            ETags are used for concurrency checking when updating resources
            (before transferring from). More information about using ETags can
            be found here:
            https://learn.microsoft.com/en-us/gaming/playfab/features/economy-v2/catalog/etags
          type: string
        GivingItem:
          allOf:
            - $ref: '#/components/schemas/InventoryItemReference'
          description: The inventory item the request is transferring from.
        IdempotencyId:
          description: The idempotency id for the request.
          type: string
        NewStackValues:
          allOf:
            - $ref: '#/components/schemas/InitialValues'
          description: The values to apply to a stack newly created by this request.
        ReceivingCollectionId:
          description: >-
            The inventory collection id the request is transferring to.
            (Default="default")
          type: string
        ReceivingEntity:
          allOf:
            - $ref: '#/components/schemas/EntityKey'
          description: >-
            The entity the request is transferring to. Set to the caller by
            default.
        ReceivingItem:
          allOf:
            - $ref: '#/components/schemas/InventoryItemReference'
          description: The inventory item the request is transferring to.
      required:
        - DeleteEmptyStacks
      example:
        GivingItem:
          Id: 11111111-1111-1111-1111-111111111111
        ReceivingItem:
          Id: 11111111-1111-1111-1111-111111111111
        Amount: 1
        GivingCollectionId: default
        ReceivingCollectionId: backpack
    EntityKey:
      description: >-
        Combined entity type and ID structure which uniquely identifies a single
        entity.
      type: object
      properties:
        Id:
          description: Unique ID of the entity.
          type: string
        Type:
          description: >-
            Entity type. See
            https://learn.microsoft.com/gaming/playfab/features/data/entities/available-built-in-entity-types
          type: string
      required:
        - Id
    InventoryItemReference:
      type: object
      properties:
        AlternateId:
          allOf:
            - $ref: '#/components/schemas/AlternateId'
          description: The inventory item alternate id the request applies to.
        Id:
          description: The inventory item id the request applies to.
          type: string
        StackId:
          description: >-
            The inventory stack id the request should redeem to.
            (Default="default")
          type: string
    InitialValues:
      type: object
      properties:
        DisplayProperties:
          description: >-
            Game specific properties for display purposes. The Display
            Properties field has a 1000 byte limit.
          type: object
    TransferInventoryItemsResponse:
      type: object
      properties:
        GivingETag:
          description: >-
            ETags are used for concurrency checking when updating resources
            (after transferring from). More information about using ETags can be
            found here:
            https://learn.microsoft.com/en-us/gaming/playfab/features/economy-v2/catalog/etags
          type: string
        GivingTransactionIds:
          description: >-
            The ids of transactions that occurred as a result of the request's
            giving action.
          type: array
          items:
            type: string
        IdempotencyId:
          description: The idempotency id for the request.
          type: string
        OperationStatus:
          description: >-
            The transfer operation status. Possible values are 'InProgress' or
            'Completed'. If the operation has completed, the response code will
            be 200. Otherwise, it will be 202.
          type: string
        OperationToken:
          description: >-
            The token that can be used to get the status of the transfer
            operation. This will only have a value if OperationStatus is
            'InProgress'.
          type: string
        ReceivingTransactionIds:
          description: >-
            The ids of transactions that occurred as a result of the request's
            receiving action.
          type: array
          items:
            type: string
      example:
        IdempotencyId: idempotencyId
        GivingTransactionIds:
          - givingTransactionId1
          - givingTransactionId2
        ReceivingTransactionIds:
          - receivingTransactionId1
          - receivingTransactionId2
    ApiErrorWrapper:
      description: The basic wrapper around every failed API response
      type: object
      properties:
        code:
          description: Numerical HTTP code
          type: integer
        status:
          description: String HTTP code
          type: string
        error:
          description: Playfab error code
          type: string
        errorCode:
          description: Numerical PlayFab error code
          type: integer
        errorMessage:
          description: Description for the PlayFab errorCode
          type: string
        errorDetails:
          description: Detailed description of individual issues with the request object
          type: object
      required:
        - code
        - errorCode
    AlternateId:
      type: object
      properties:
        Type:
          description: Type of the alternate ID.
          type: string
        Value:
          description: Value of the alternate ID.
          type: string
  responses:
    TransferInventoryItemsResponse:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              code:
                type: integer
                description: >-
                  The Http status code. If X-ReportErrorAsSuccess header is set
                  to true, this will report the actual http error code.
              status:
                type: string
                description: The Http status code as a string.
              data:
                $ref: '#/components/schemas/TransferInventoryItemsResponse'
            example:
              code: 200
              status: OK
              data:
                IdempotencyId: idempotencyId
                GivingTransactionIds:
                  - givingTransactionId1
                  - givingTransactionId2
                ReceivingTransactionIds:
                  - receivingTransactionId1
                  - receivingTransactionId2
    ApiErrorWrapper:
      description: This is the outer wrapper for all responses with errors
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiErrorWrapper'
  securitySchemes:
    EntityToken:
      type: apiKey
      in: header
      name: X-EntityToken
      description: >-
        This API requires an Entity Session Token, available from the Entity
        GetEntityToken method.

````

## Related topics

- [Transfer Inventory Items](/api-reference/inventory/transfer-inventory-items.md)
- [Inventory Stacks](/services/playfab/economy-monetization/economy-v2/inventory/stacks.md)
- [PlayFab Inventory APIs](/services/playfab/economy-monetization/economy-v2/inventory/index.md)
- [PFInventoryTransferInventoryItemsRequest](/services/playfab/api-references/c/pfinventorytypes/structs/pfinventorytransferinventoryitemsrequest.md)
- [PFInventoryTransferInventoryItemsAsync](/services/playfab/api-references/c/pfinventory/functions/pfinventorytransferinventoryitemsasync.md)
