Our store currently uses stripe to process credit card payments, and we have it set to charge the card immediately. However, this also immediately creates an invoice, which we don't want to have happen. We realize that this can be accomplished by turning off auth and capture, but the problem is that window of time that passes between order placement and fulfillment can be 10-14 days, and the charge will be expired by that point. In a perfect world things would work this way:
- Order placed using store credit + credit card
- credit card amount is authorized and charged
- in magento, no invoice is created
- as internal team processes orders and they are ready to bill, we then manually invoice in magento
- credit card payment gets thrown on the first invoice that is created even though it was already charged previously
I can't figure out where in the code to even begin on this, as it seems that the credit card payment + invoice process is very tightly coupled into the Magento core. Any ideas/suggestions?
It is possible to achieve your desired workflow by customizing the Magento payment module. You would need to create a custom payment module or extend the existing Stripe payment module to override the default behavior. Here's one possible approach:
- Modify the payment module to authorize the payment but not capture it. This would create an "authorized" transaction in Stripe but no invoice in Magento.
- Implement a custom module or extension that listens to the order fulfillment event and creates an invoice for the authorized payment.
- Update the payment module to capture the payment when the invoice is created. This would complete the transaction in Stripe and update the Magento order status accordingly.
This approach allows you to separate the payment authorization from the invoice creation, giving you more control over when the payment is captured and when the invoice is generated. Keep in mind that customizing payment modules can be complex and may require a thorough understanding of the Magento architecture and the Stripe API. It is recommended to work with a qualified Magento developer to implement this solution.
With out the hassle, you could try you using extension to help you integrate. This Stripe Global module is what I recommend.
There are two main ways to prevent auto invoice with Stripe credit card payments in Magento:
Create a custom payment module. This is the most comprehensive solution, as it allows you to completely customize the payment process. To do this, you would need to extend the existing Stripe payment module and override the default behavior. Specifically, you would need to modify the module to authorize the payment but not capture it. This would create an "authorized" transaction in Stripe but no invoice in Magento. Once the order is fulfilled, you could then manually capture the payment and create an invoice in Magento.
Use a custom module or extension. There are a number of custom modules and extensions available that can help you to prevent auto invoice with Stripe credit card payments. These extensions typically work by listening for the order fulfillment event and creating an invoice for the authorized payment.
If you are not familiar with coding, I recommend using a custom module or extension. There are a number of reputable extensions available on the Magento Marketplace.
Here are some specific steps you can follow to prevent auto invoice with Stripe credit card payments using a custom module or extension:
Here are some additional tips:
I hope this information is helpful. Please let me know if you have any other questions.