Went through exactly this with my garden office setup last spring — maddening, isn't it?
The short answer I landed on: trust your BMS for protection, trust your SmartShunt for trends.
My Fogstar Drift 200Ah has its own BMS that watches individual cell voltages and will disconnect if anything goes sideways. That's non-negotiable safety kit. But the SOC percentage it reports is essentially calculated from voltage curves, which get wobbly in the middle ranges — you know, that annoyingly flat LiFePO4 plateau between roughly 20% and 80%.
The SmartShunt, meanwhile, is doing proper coulomb counting — it's watching every amp flowing in and out. Over time, if you've got the charged voltage, tail current, and Peukert settings dialled in correctly, it builds a much more accurate picture of what's actually in the battery. Mine took about a week of full cycles to really settle down.
Where it does drift is if you have small parasitic loads it's not monitoring, or if the shunt isn't positioned to see every single load. Worth double-checking your wiring.
For EV charging days when I'm hammering the system harder, I rely on the SmartShunt reading in VictronConnect almost entirely — the BMS SOC can sit at 40% while the shunt shows 28%, and the shunt has proven more accurate against actual capacity tests.
Has anyone found a smart way to reconcile the two automatically? I've been wondering whether Node-RED through a Cerbo could flag when they diverge by more than 10% as an early warning of something going wrong.