Had this exact headache with my setup last year. Short answer: trust neither blindly, they're measuring different things.
The BMV-712 is coulomb counting from a shunt — it tracks charge in/out and calculates SOC from that. Dead accurate in theory, but drift accumulates over time if your synchronisation points aren't dialled in (peukert exponent, charged voltage threshold, tail current settings all matter).
Your BMS is typically reading cell voltages and inferring SOC from that. Problem is, LiFePO4's voltage curve is notoriously flat in the middle — so voltage-based SOC readings can be quite wobbly between roughly 20–80%.
What I'd suggest:
- Check your BMV-712 sync settings first. If it's not resetting to 100% properly at full charge, the drift compounds fast
- Compare both readings immediately after a full charge — they should agree at 100%. If they don't, the BMV needs calibrating
- In everyday use, I lean on the BMV for trend data and the BMS for protection thresholds
My Fogstar Drift 200Ah has its own BMS and I also run a BMV-712. They sit within 2-3% of each other most of the time, but after a week of partial cycling without a full charge the BMV can wander noticeably.
Curious what BMS you're running and how far out they are — makes a difference to the advice really. Also worth knowing if you're on LiFePO4 or a different chemistry.