When billing retainage the amount of retainage held is tracked both by the contract in Contracts and by the customer in Accounts Receivable. One possible cause is that the customer on the contract was changed which, though the amount held on the contract shows the same amount billed, will post to AR as over billed has the customer account did not have that amount to bill.
WHen there are unposted entries in Contract the retianage may also post as overbilled though the invoice did hold the retainage.This is caused by the retainage billed being higher than the total retainage held on the contrat.
Another possible cause is an entry error. it is possible that when billing retainage the wrong amount was entered. The entry would be allowed to post and would be track in AR as over billed retainage.