When relisting an item here are some things that you want to keep in mind:
If you do not specify a field in the relist call, the original values carry over. This applies to the required and optional fields such as enhancements.
Here are some examples:
Item.Description: If you do not specify the item Description field, it will automatically carry over from the original item.
Item.SubTitle: If you do not remove it in the RelistItem call, the new item will list with the original SubTitle and fees if any, will be applicable.
If you do not need an enhancement or an optional feature, check the API documentation for details on how you can remove it. The mechanism for removing a feature can vary. For instance, to remove the SubTitle, you need to use DeletedField, however to remove PicturePack you need to set item.PictureDetails.PhotoDisplay to None.
If you want to check the fees that will be applicable to your relisted item, make use of VerifyRelistItem. This call was released in version 653. Ensure that your XSD, WSDL or SDK has been updated to version 653 or later to make use of this feature.
Avoid duplicate relists. If you use RelistItem, make use of UUID. If you use RelistFixedPriceItem, make use of the InventoryTrackingMethod set to SKU or UUID. This will prevent duplicate relisting in case your application does not get a response for the first relist call.
Set the WarningLevel field to High, to catch any fields that are passed incorrectly in the request. If you send in an unrecognized field, it will be ignored. Note that field names are case sensitive - for instance "Description" is not the same as "description".