Had this exact head-scratcher on my narrowboat last winter. Both my Fogstar 200Ah LiFePO4 BMS and the Victron SmartShunt were confidently telling me completely different things — one said 74%, the other 61%. Maddening.
After a fair bit of digging, here's what I landed on: the SmartShunt is generally the more trustworthy day-to-day SOC reading, provided you've set it up properly — correct battery capacity, Peukert exponent, charge efficiency factor, all of that. It's measuring actual coulombs in and out, sitting on the negative bus and watching everything.
The BMS SOC, on the other hand, tends to be estimated from cell voltages, which on LiFePO4 is notoriously unreliable across that big flat middle section of the discharge curve. A tiny voltage difference can swing the reading wildly.
That said, neither is infallible. The SmartShunt drifts over time if it never gets a proper synchronisation point — i.e. a full charge to let it reset to 100%. I found mine had been drifting for weeks because my solar wasn't quite hitting absorption properly through all the grey days.
The fix that worked for me: trust the SmartShunt, but make sure it's syncing correctly on full charges. Keep the BMS reading as a secondary sanity check — if they diverge by more than 10-15%, something needs investigating rather than ignoring.
Curious whether anyone running Victron kit with a different BMS brand has found a way to get them talking to each other properly? I've seen mentions of CAN bus integration but never gone down that rabbit hole.