> ## 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.

# Subtract Inventory Items

> Subtract 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/SubtractInventoryItems
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/SubtractInventoryItems:
    post:
      tags:
        - Inventory
      summary: Subtract Inventory Items
      description: >
        Subtract 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: SubtractInventoryItems
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubtractInventoryItemsRequest'
        description: >-
          Given an entity type, entity identifier and container details, will
          subtract the specified inventory items. 
      responses:
        '200':
          $ref: '#/components/responses/SubtractInventoryItemsResponse'
        '400':
          $ref: '#/components/responses/ApiErrorWrapper'
      security:
        - EntityToken: []
components:
  schemas:
    SubtractInventoryItemsRequest:
      description: >-
        Given an entity type, entity identifier and container details, will
        subtract the specified inventory items. 
      type: object
      properties:
        Amount:
          description: The amount to subtract for the current item.
          type: number
          x-actualtype: int32
        CollectionId:
          description: >-
            The id of the entity's collection to perform this action on.
            (Default="default"). The number of inventory collections is
            unlimited.
          type: string
        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
        DurationInSeconds:
          description: The duration to subtract from the current item expiration date.
          type: number
          x-actualtype: double
        Entity:
          allOf:
            - $ref: '#/components/schemas/EntityKey'
          description: The entity to perform this action on.
        ETag:
          description: >-
            ETags are used for concurrency checking when updating resources.
            More information about using ETags can be found here:
            https://learn.microsoft.com/en-us/gaming/playfab/features/economy-v2/catalog/etags
          type: string
        IdempotencyId:
          description: >-
            The Idempotency ID for this request. Idempotency IDs can be used to
            prevent operation replay in the medium term but will be garbage
            collected eventually.
          type: string
        Item:
          allOf:
            - $ref: '#/components/schemas/InventoryItemReference'
          description: The inventory item the request applies to.
      required:
        - DeleteEmptyStacks
      example:
        Item:
          Id: 11111111-1111-1111-1111-111111111111
        Amount: 3
    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
    SubtractInventoryItemsResponse:
      type: object
      properties:
        ETag:
          description: >-
            ETags are used for concurrency checking when updating resources.
            More information about using ETags can be found here:
            https://learn.microsoft.com/en-us/gaming/playfab/features/economy-v2/catalog/etags
          type: string
        IdempotencyId:
          description: The idempotency id used in the request.
          type: string
        TransactionIds:
          description: The ids of transactions that occurred as a result of the request.
          type: array
          items:
            type: string
      example:
        IdempotencyId: idempotencyId
        TransactionIds:
          - transactionId1
          - transactionId2
    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:
    SubtractInventoryItemsResponse:
      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/SubtractInventoryItemsResponse'
            example:
              code: 200
              status: OK
              data:
                IdempotencyId: idempotencyId
                TransactionIds:
                  - transactionId1
                  - transactionId2
    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

- [Subtract Inventory Items](/api-reference/inventory/subtract-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)
- [PFInventorySubtractInventoryItemsRequest](/services/playfab/api-references/c/pfinventorytypes/structs/pfinventorysubtractinventoryitemsrequest.md)
- [PFInventorySubtractInventoryItemsAsync](/services/playfab/api-references/c/pfinventory/functions/pfinventorysubtractinventoryitemsasync.md)
