Had exactly this with my 100/30 on the shepherd's hut build last summer. Turned out the default absorption time was far too short for my battery state — Victron's adaptive algorithm was seeing a voltage spike and calling it "full" prematurely.
Few things worth checking:
- BMS communication — if you're running a smart LiFePO4 (I use Fogstar Drift cells), make sure the MPPT is actually receiving accurate SoC data rather than guessing from voltage alone
- Tail current setting — this is the one most people miss. If your tail current threshold is set too high, it'll exit absorption early. I dropped mine to around 2% of battery capacity and it made a noticeable difference
- Wire losses — voltage sensed at the controller versus actual battery terminal voltage can fool the algorithm. Remote voltage sensing via the VE.Direct port sorts this properly
Also worth checking whether you've got BatteryLife enabled in VictronConnect. It's designed for partial SoC operation and will actively avoid full charges to preserve cycle life — which sounds exactly like what you're describing if you weren't expecting it.
On my emergency backup system in the house I run a SmartSolar 150/35 and had similar behaviour until I disabled BatteryLife and set a fixed absorption time of 2 hours. Much more predictable since.
What battery chemistry are you running and what does your absorption voltage look like in the history tab? That'll narrow it down considerably.