Had this exact headache last year with my setup. Short answer: neither is 100% right, but for day-to-day decisions I lean on the BMV-712.
Here's my reasoning — the BMV is doing proper coulomb counting with a quality shunt, and once you've nailed the Peukert exponent and charge efficiency factor for your specific cells, it's genuinely accurate over time. Most budget BMS units (looking at you, anything bundled with a cheap Fogstar knockoff) are estimating SOC from voltage curves, which is notoriously unreliable especially mid-charge and under load.
That said, the BMV does drift if you don't let it sync properly. It needs to hit your set charge voltage and hold there long enough to trigger a full sync — if your system rarely does a proper absorption cycle, the displayed SOC creeps away from reality over weeks.
A few things worth checking:
- Is your BMV shunt correctly sized and wired as the only path for current?
- Have you set the charged voltage threshold to match what your BMS actually considers full?
- What's the discrepancy — 2-3% or more like 15-20%?
A small gap is probably just calibration. A large consistent gap suggests either your BMS is being optimistic (common) or your BMV settings need revisiting in VictronConnect.
What BMS are you running? Some of the JK units actually have decent SOC tracking once you've run a few full cycles through them. Would be useful to know the specifics before anyone gives you concrete advice.