Had exactly this head-scratcher at my cabin setup last winter. Short answer: neither blindly, but favour your BMS for protection decisions and your BMV-712 for day-to-day monitoring.
Here's why they diverge:
The BMV-712 calculates SOC via coulomb counting — it tracks every amp in and out from a known reference point (typically a full charge). Errors accumulate over time, especially if your Peukert exponent or charge efficiency factor isn't dialled in correctly for your specific cells.
Your BMS, meanwhile, is likely doing a voltage-based estimation, which is notoriously unreliable mid-discharge on LiFePO4 given how flat the discharge curve is. Some more sophisticated BMS units (Daly being a common culprit for vagueness) do their own coulomb counting too, but calibration and synchronisation points vary wildly.
What I'd check:
- Is your BMV-712 set to sync at 100% SOC at the correct voltage/tail current for your battery? Fogstar Drift cells, for example, need fairly specific charge parameters
- Have you set the Peukert exponent to 1.05 for LiFePO4? Default assumes lead-acid
- What's your charge efficiency factor set to — should be around 99% for lithium
The two readings will naturally drift apart if the BMV isn't synchronising properly on full charges. Over time mine were 12% apart until I sorted the sync settings in VictronConnect.
What BMS are you running and what's your actual cell chemistry? That'll help narrow it down considerably. Others on here have had good results cross-referencing with a clamp meter during charge cycles to see which is tracking more accurately.