The circulation in Singapore coastal waters is driven by the variable tidal forcing of the surrounding seas, complex bathymetry, irregular coastlines, seasonal monsoons and local winds. An unstructured-grid SUNTANS model, with an average resolution of 100–200 m around Singapore, is applied to Singapore coastal waters. The model is forced at the three open boundaries, located to the west, south and east of Singapore, using tidal constituents as extracted by the OSU Tidal Prediction Software (OTPS) and Absolute Dynamic Topography (ADT) as derived from satellite imagery. The model is also forced by hourly observed wind data at 59 stations in the domain. Our calibration results show that the model accurately predicts sea surface elevations and velocities at locations throughout the model domain. Model results are used to delineate circulation patterns in waters around Singapore, and these results show significant seasonal variation. To examine the effects of different forcing terms on volume transport, a new decomposition method is proposed. It is found that: (1) ADT is the predominant factor that drives monthly mean volume transport, especially in Malacca Strait; (2) the combined effects of tides and local winds influence monthly mean volume transport, especially in Java Sea; (3) SLA affects monthly mean volume transport throughout the whole year; (4) volume transport induced by the combined effects of tides and local winds is highly correlated with tidal-induced volume flux; and (5) the residual effects, which can be attributed to the nonlinear interactions between different forcing terms, tend to reduce the total volume transport.