I assume ADP pulls data from the payroll they actually process then adjust for the payroll they don't process. I'm guessing much of the discrepancy is that ADPs adjustment factors are off.
ADP's calculations could be very off and here is why.
I use runpayroll by them.
When I hire someone, lets say the 21st. I do not actually put them in the system until the day I run payroll for the time they worked. At that time, as I run payroll, I add them and put in the hire date. But if I hired them on 21st payroll wouldnt happen until the following month so the "monthly number" would be off.
Also, if this person was then hired but didnt work out and was terminated or just quit, I would not terminate them out until the next payroll and put the term date in then.
This means I could hire someone in july, fire them in july for never showing up for work, and then number would show gain in august and loss in august, but depending on how fast they update the term sight might not show the loss until oct meaning it would show a growth that never happened.
ADP also isnt very good at real time stats. Trust me.