I tested IsPaidItem using a known paid skin workshopID and it returned false. This seems to fix it, at least for IsPaidItem:
const string WORKSHOP_ID = "workshopid";
foreach (Steamworks.InventoryDef inventoryDef in Steamworks.SteamInventory.Definitions)
{
if (!ulong.TryParse(inventoryDef.GetProperty(WORKSHOP_ID), out ulong skinId))
{
if (!_contentIdToSkin.ContainsKey(inventoryDef.Id))
continue;
skinId = (ulong)inventoryDef.Id;
}
//Trader08 added
_contentIdToSkin[inventoryDef.Id] = ItemSkinDirectory.FindByInventoryDefinitionId(inventoryDef.Id);
_workshopToContentId[skinId] = inventoryDef.Id;
}