Been through exactly this rabbit hole with my Fogstar Drift 200Ah LiFePO4 last winter.
Short answer: neither is gospel, but they're measuring different things.
The BMV-712 is doing coulomb counting — it's tracking electrons in and out, starting from whenever it last hit a sync point (usually 100% SOC). Drift a bit on the shunt calibration, leave a small parasitic load uncounted, or fail to reach a proper full charge for a few cycles, and it quietly wanders off reality.
Your BMS, meanwhile, is estimating SOC from cell voltages. That sounds more "honest" but LiFePO4's flat discharge curve means a tiny voltage difference mid-range represents a massive swing in capacity. It's genuinely terrible at mid-SOC precision.
What I actually do:
- Trust the BMV-712 for day-to-day numbers, because it's smoother and more responsive
- Use the BMS as a sanity check at the extremes — near full or near empty is where voltage-based readings get meaningful again
- Make sure the BMV syncs properly at 100% by letting the battery sit at absorption for long enough (I had mine syncing too early)
The gap tends to close once you nail the sync settings. Mine were 2-3% apart constantly until I tightened up the tail current and charged voltage thresholds in the BMV configuration.
What's the spread you're seeing, and what chemistry is your pack? Makes a difference to which way I'd lean.