In battery energy storage systems (BESS), state-of-charge (SoC) is of great significance to optimize the charge and discharge schedules. Some existing SoC estimators implemented in battery management system (BMS) of BESS may suffer from significant error, which will cause permanent damage to service life or economic loss. This paper identifies the causes of inaccurate SoC in the practical BESS and confirms the result with laboratory test. On this basis, an online method based on historical operating data is proposed to refine real-time SoC estimation from BMS. In the proposed refining method, SoC reference points are initially located from historical time-series data and the maximum available capacity of charge or discharge are further determined with a weighted least squares fitting. Finally, refined SoC estimation result can be determined by enhanced coulomb counting method. The experimental results based on laboratory test data and operation data from a practical BESS prove that the proposed SoC refining approach can effectively provide more accurate estimation.