Some merchant accounts might specify when you are "allowed" to charge the customer, but normally, you AUTHORIZE the customer's credit card at the time of purchase for the sale amount (this holds the funds to make sure the customer has enough available credit to pay for the order) and then you FINALIZE (or batch or "mark as shipped") the authorization after you have shipped the merchandise.
This way, you are guaranteed the money for the sale when you DO ship the merchandise, but if you never ship the merchandise, your "authorization" falls off the customers credit card after a while and you don't have to reverse a sale.
This way, you are guaranteed the money for the sale when you DO ship the merchandise, but if you never ship the merchandise, your "authorization" falls off the customers credit card after a while and you don't have to reverse a sale.