Why is my Steam inventory out-of-date?
Before we delve into Steam's inventory cache, first it helps to know how the economy server works.
When you request a user's Steam inventory, your request goes to the Steam economy server. If the economy server has that inventory in its cache, it returns the cached version. If not, it requests the inventory from the game's item server, caches the result that's returned, and then sends it back to you.
This cache does not automatically expire (in most circumstances). However, there are a few actions that can cause an inventory cache for a particular game to expire:
- Launching the game via Steam
- Quitting the game via Steam
- Accepting a trade offer (or having a sent trade offer accepted) which includes items from the game
- Accepting a real-time trade request, or having a real-time trade request which you sent be accepted*
- Publishers can do it at their discretion
* if a real-time trading session is opened for your account, then all games' inventory caches will be invalidated for your account.
I believe it's also supposed to be possible for Steamworks developers to tell the cache to expire at a certain date and time, but I don't believe it works currently.
The Steam inventory cache is what causes your inventory to not appear up-to-date, especially if you craft/receive a new item while the game is running. The easiest way to invalidate the cache in order to get fresh data is to open a real-time trading session.