How to Manage Inventory for Items Using the Infoplus API

Learn how to use the Infoplus API to automate the management of virtual inventory levels from outside vendors.

Some users have come to us with the request to manage inventory levels for items in Infoplus, which are not being received through Infoplus's standard Receiving processes, nor allocated from inventory using Fulfillment processes.  These use cases typically revolve around the management of virtual inventory, possibly for an outside supplier or vendor, or for items that you have sent to an outside fulfillment center (e.g., FBA).  


To manage inventory levels like this, using the Infoplus API, you can use a workflow like the following:

  • Identify if the Item has been previously received in Infoplus
  • If the item has never been previously received:
    • Create & execute a Quick Receipt for the Item
  • Otherwise, if the Item has been previously received:
    • Create & execute Quick Adjustment for the Item

To get specific on the API calls needed for each of those steps:


Identify if the Item has been previously received in Infoplus

  • The most accurate way to identify this would be a search on the itemReceipt resource, specifying the Infoplus SKU for the item as well as the warehouseId that is being used to track the inventory:
GET v2.0/itemReceipt/search?filter=sku+eq+'ABCD1234'+and+warehouseId+eq+9999&limit=1


Create & execute a quick receipt for the item

  • You'll need to make 2 calls to perform this:  First, you'll create a quickReceipt entity, specifying the SKU, warehouseId, and quantity
POST -d'{"warehouseId":9999,"sku":"ABCD1234","lobId":9999,"locationId":9999,"quantity":350,
"unitsPerWrap": 1,"weightPerWrap": 1,"wrapCode": "EACH","unitCode": "EACH"}' v2.0/quickReceipt
  • Second, using the id that came back in the POST call above, you'll then execute the receipt as:  (And note, this call is only available on the beta version of the API at this point in time):
POST -d'{"idList":[1234]}', beta/quickReceipt/executeQuickReceipt


Create & execute quick adjustments for the Item

  • Similar to quick receipt, you'll need to make 2 calls to perform this:  First, you'll create a quickAdjustment entity, specifying the SKU, warehouseId, and quantity:
    POST -d'{"warehouseId":9999,"sku":"ABCD1234","locationId":9999,"totalQuantity":350,
    "adjustmentCode":"CYCLE COUNT"}' v2.0/quickAdjustment
    • Note that the totalQuantity field represents the total inventory quantity that should be in this location after the quickAdjustment is executed.  It is not a delta or change to the quantity.  
    • The following set of values are accepted for the adjustmentCode field:
      • OBSOLETE AND DESTROY
      • DAMAGED MERCHANDISE
      • VFY-ZERO (BOOK TO PHYS)
      • PHYSICAL INV ADJUSTMENT
      • SAMPLE
      • TRANSFER
      • VENDOR PACKAGING ERROR
      • PICK/PACK ERROR
      • CUSTOMER AUDIT
      • DESTRUCTION
      • PRICE CHANGE ADJUSTMENT
      • RETURN TO VENDOR PER CUST
      • RETURN FROM VENDOR
      • FIX INTERNAL DISCREPANCY
      • PACKAGING WRAP CHANGE
      • KIT RELATED
      • RESHIP
      • RECEIVING RELATED
      • OVERLOOKED REPAIR
      • SPOILAGE
      • BAS OWNERSHIP CONVERSION
      • DAMAGED BY DISTRIBUTOR
      • DAMAGED BY VENDOR
      • CORRECTION TO ADJUSTMENT
      • CYCLE COUNT

    • Second, using the id that came back in the POST call above, you'll then execute the receipt as:  (Again, note, this call is only available on the beta version of the API at this point in time):
      POST -d'{"idList":[1234]}', beta/quickAdjustment/executeQuickAdjustment

    One detail not mentioned above is the locationId field.  You would generally have two different options for how to use this field, depending on your business needs:

    1. Use a single warehouseLocation in to store all virtual items (in which this locationId could essentially be hard-coded)
    2. Create a location through the API for each SKU, using, perhaps, the SKU as part of the location's address.  In this case, you would need additional calls to lookup and/or create those records (unless you store those ids in your middleware).