The documentation for the taBankTransactionHeader node says "This node uses document exchange for updates. All existing values are overwritten with the value specified by the update document. If a field in the update is blank, the existing value is changed to be blank." (https://msdn.microsoft.com/en-us/library/jj193288.aspx) However, I am having difficulty getting updates to work.
Basically, if I create a BRBankTransactionType and send it to econnect via the CreateTransactionEntity() method, it creates an entry in the CM20200 table as expected, with the proper checkbook ID and check number. It creates the one required distribution, and I am creating the matching distribution for the proper account. From the documentation, I expected that using the UpdateTransactionEntity() method would allow me to update the transaction, assuming that the checkbook ID and check number matched an existing record. The actual behavior is that using UpdateTransactionEntity() creates a second record in CM20200, so that I now have duplicate records with the same checkbook ID and check number, exactly the same as if I had used CreateTransactionEntity(). Using DeleteTransactionEntity() gives the same result.
What am I doing wrong, here? I could use BRBankTransactionVoidType to void the check and then re-enter it, however a) I'm not sure how that will work with Positive Pay (i.e. will the void and the re-entry be sent in the same batch?), and b) there will be a problem if duplicate checkbookID-checknumber records already exist - the void will fail, requiring a control number, and I'm not sure how it should be handled. I would prefer to just update the existing record.