With most payment gateways you can send a single auth+capture AKA "sale" transaction or you can send an authorize and capture transaction as two separate requests.
If you are worried about transactional consistancy issues with sending a single sale transaction my recommendation is to send an authorize to first reserve the funds and then send a capture at the end of your ordering process.
If the system fails during the initial authorize worse case the funds are freed within three days when your auth expires. You should take care to not have the worse case for authorize occur as it blocks the authorized funds from being used until cleared which can occasionally lead to upset customers.
If the system fails during the final capture and you cannot record status you can simply rerun the capture later in which case the result will either be success or a message from the gateway indicating the capture already occured which can then be used to update the payment status of your system.