Hi @ccberlin,
Glad you reached out here, happy to help!
There’s no mechanism within GiveWP to automatically refund if a goal is not reached, or to delay charging until a goal is reached.
A truly kickstarter-like experience (where it doesn’t charge until the goal is reached) might be possible with some custom code, depending on the gateway in use. The tricky part would be around PCI compliance, because you can’t ever store payment information on your server.
The only currently-possible method to do it would be to manually refund the donations. You’ll want to be careful with that approach, as it may end up costing your organization money as some gateways don’t refund processing fees. Additionally, if you have too many refunds that can cause the gateway to take action like shutting down the account. I’d check with the gateway (PayPal/Stripe) before deciding to go that route.
Hello Ben,
thanks for the quick reply! We’re already modifying quite a few places in the give code, so a bit more custom code should not be a problem 🙂
Could you give me any pointers on what the modifications should do (we have a premium subscription if it helps)? Gateway-wise our client wants to support basically everything, so that might get tedious..
Hi @ccberlin
It’s strongly recommended to not modify the plugin code itself, so that when updates come out your changes are not overwritten. GiveWP is extendable via WordPress hooks and filters, so always do your modifications in the form of a custom snippet (some use a must-use plugin while others add a new helper plugin that they can activate and deactivate, while others put the code into their theme’s functions.php)
With that preface out of the way, I wouldn’t even know where to start in coding the gateways to capture but not charge payment info. The two gateways included in our free product (which is all we are allowed to discuss here per forum rules) are Stripe and PayPal. You’d probably find it easiest to extend the Stripe integration in this way, but what you’d essentially need to do is something like their pre-approval functionality, but that maxes out at 7 days between when you authorize and capture the charge. The way to do that would be to filter the array of charge args sent to the gateway.
Have a great day!