In the same workflow, enable the option to WAIT until invoice is partially paid, or paid, or any other status.
The reason why its best in the same workflow, is to update the same opportunity after. If we try to do the same from a trigger, it would create duplicate opportunities.