battery monitoring by Solar charge controllers is largely a big guess. It is done by measuring the current required to hold absorption voltage. The lower the current required the higher the state of charge.
But there are so many variables to this as to make any displays by such a method just about worthless. First the solar controller has no Idea how much juice is going to power loads vs how much is going into the battery(s), Second all batteries differ in the amount of juice required to hold a battery at absorption voltage. Third this amount of current changes as the battery ages, and changes at different temperatures.
So the whole state of charge display on a solar controller is basically some warm and fuzzy bells and whistles, signifying nothing.
The only real way to have an accurate battery state of charge is with a battery monitor that has a Shunt that can measure amps flowing in and out of a battery. these, when properly programmed, and wired, can do well upto the 95% accuracy range, but they also need to be rezeroed fairly frequently or the accuracy drifts.
If the charge controller stores data than can be downloaded to a laptop, by all means this is valuable information which can allow the user to learn their system very well but any state of charge readings without a separate shunt that actually can count amps flow into and out of the battery is Not accurate, and if the user does put a lot of weight to the readings, can negatively affect battery longevity through false confidence.
Remember just because a charge controller drops out of absorption stage and goes to float stage does not mean the battery was fully charged, it only means the absorption voltage was held as long as it was programmed to do so.
Ideal absorption voltage and duration are a moving target, figured out with an Ammeter and a hydrometer, and by trial and error, so any stock controller settings employed are just a general area which likely will not fully charge a battery.
The flashing green 'full charge' light, without verification, means NOTHING, and if believed, can lead to premature battery failure.
Trust if you want, but verify before completely trusting your confidence in the charge controller.
New flooded batteries should have their baseline maximum specific gravity recorded. For maximum battery lifespan, Absorption voltage is then to be held as long as it takes for specific gravity to rise to within 0.005 of this maximum baseline. Anything less is a compromise to some degree or another.
AGM batteries are considered fully charged when it only takes 0.5% of capacity in current to hold the battery at the manufacturer recommended absorption voltage at 77F/. 0.5 amps per 100AH of battery capacity. If your charge controller reverts to float before amps taper to 0.5 per 100AH of battery capacity, your AGM battery is not happy and will not last as long as if it were held at absorption voltage longer.
So in both cases the duration at which the battery is held at absorption voltage is the key to fully charging the battery and getting maximum service life from it.
Ideal absorption voltage and duration are different for each and every battery.
preprogrammed absorption voltages and durations are compromises, largely hit and miss.
Do not let blinking green lights soothe you, unless you have programmed Absorption voltage and duration Via an Ammeter and or Hydrometer and reconfirm it every 60 cycles or so.
Wildly Incorrect ABSV and duration can destroy a battery in 200 cycles or less, where as proper ABSV and duration can yield 500 cycles or more, depending on the quality of the battery and depth of discharge