Rupee opened weaker at 96.81 and traded in the range of 96.30-96.81 before eventually settling at 96.55 (provisional), up 18 paise from its previous close.