IPP v3 API now supports Void BillPayment
Void a billpayment
Use a sparse update operation with include=void to void an existing BillPayment object; include a minimum of BillPayment.Id and BillPayment.SyncToken. The transaction remains active but all amounts and quantities are zeroed, all lines are cleared, and the string, Voided, is injected into BillPayment.PrivateNote, prepended to existing text if present.
https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/billpayment#void-a-billpayment