Since you only provided us with a small piece of code, I can't see the context in which this code is run. The GetNewObjectKey method gives you back the LAST Object Key that was created by the SAP system, so it should really only be used immediately after creating a document as the very next code line.
Have you cast the line:
diPayDraft .GetByKey(Convert.ToInt32(DiCompany.GetNewObjectKey()));
To an integer and put a breakpoint there to validate that the DocEntry is in fact the same DocEntry that you wish to update? If you didn't put this code immediately after the document creation code, then it could pull another document entirely, which you would then be updating by mistake!
That's just my initial thoughts.