I believe you would prefer the official response, but I'd like to join with few comments and I hope you don't mind! :)
Yes, I too see reports are
sometimes slightly different, but not very much and when I refresh (several times in few minutes)
www.google.com/adsense home page, I can see the very same, so I am considering today reports as what they are - estimations, and real-time data.
It's not so notable when the traffic is very low. Also, I don't have any idea how AdSense works, but (to be honest) I wouldn't be very surprised if real-time, estimated values depend on which node was queried.
If your reports show much lower and consistent values than the AdSense home page, then I'd suggest you to check your code and see if there is any caching on your side. (Cache is good - don't remove it, just decrease refresh time to some safe value.)
And I don't think it could be the problem, but it wont hurt if you can see & check in your logs what are you sending as startDate and endDate.