Had this exact situation with my shepherd's hut build last summer. Short answer: trust the BMV-712, but understand why they disagree.
The Daly BMS calculates SOC primarily from voltage, which is notoriously unreliable mid-charge-cycle — especially with LiFePO4's flat discharge curve. It also has no concept of charge efficiency losses or self-discharge over time.
The BMV-712 uses coulomb counting through a proper shunt, so it's tracking actual electrons in and out. It's far more accurate provided you've got it configured correctly:
- Charged voltage — set this to whatever your charger's absorption voltage is (typically 14.2–14.4V for 12V LiFePO4)
- Tail current — I run mine at 2% of battery capacity
- Peukert exponent — set to 1.05 for lithium, not the default lead-acid value
- Charge efficiency factor — 99% for LiFePO4
The BMV will also drift over time if it rarely sees a full synchronisation event. If your system never properly tops out and triggers that "charged" threshold, the SOC reading slowly becomes less reliable.
One thing worth noting — the two units should broadly agree when the battery is full or nearly empty, because those are the points where voltage actually means something on a LiFePO4 cell. If they're miles apart at 100% or at low SOC, that's telling you something's misconfigured somewhere.
What battery are you running, and what charge source? Worth knowing whether the Daly is getting accurate cell voltage data too — a dodgy balance lead will skew its readings completely.