We had this problem on one of the projects and it appeared, that there is an undocumented feature in the module.
The documentation states that one must create an invoice, but it actually sends capture requests on creating a shipment as well, once it's configured as Charge on Shipment.
In this case all subsequent capture requests fail and it's not possible ...
So, the issue is resolved, there is a file /vendor/magento/module-tax/Model/Sales/Pdf/Shipping.php, I override this file and add canDisplay() function in it:
public function canDisplay()
$amount = $this->getAmount();
/* TO DISPLAY SHIPPING & HANDLING IN INVOICE PDF IF ITS $0.00 - PARTAB SAIFUDDIN */