Had this exact headache on my boat last winter. Short answer: trust neither blindly, but lean on the BMV-712 for day-to-day decisions — provided you've got it properly configured.
The BMV works on coulomb counting, so its accuracy lives or dies on three settings:
- Charged voltage — needs to match your actual absorption endpoint
- Tail current — typically 4% for LiFePO4
- Peukert exponent — set to 1.05 for lithium, not the default lead-acid value
Most cheap BMS units (looking at you, JBD/Daly) report SOC based on resting cell voltage, which is notoriously flat across 20–80% on LiFePO4. That makes their SOC readout almost meaningless in normal operation.
That said, the BMV will drift over time if it's not seeing proper full charges to reset its sync point. If your system rarely hits 100% absorption, the BMV's figure quietly wanders.
My current setup on the static van uses a Fogstar Drift 200Ah with its internal BMS alongside a BMV-712. I reconcile them roughly weekly and they stay within 3–4% of each other once I sorted the tail current setting.
Where I'd override the BMV is cell-level protection — if your BMS is screaming high voltage cutoff, believe it regardless of what the BMV says.
What battery chemistry are you running, and have you synced the BMV recently after a full charge? That'll help narrow down where the discrepancy is coming from. Others on here will have more experience with specific BMS brands too — worth knowing which unit you've got.