Need to accept orders now, but collect payment in the future? Maybe for a product that's set to ship a few months from now? Or maybe something like Kickstarter, where you gauge interest now but only bill once things are complete? Those would be what we'd consider a preorder .
Similarly, a backorder is also a "accept the transaction now but the payment in the future," though the use case is typically for a product that already exists but might be out of stock. For instance, if you accept an order for a book that hasn't yet been published and released to the public, that'd be a pre-order. But if you accept an order for a book that's already been published and released, but is currently out of stock, it'd be a backorder.
Regardless, they're conceptually very similar, so we'll discuss them both on this page. As with most things ecommerce, there are myriad possible solutions and approaches, but we'll discuss two approaches that can work in Foxy, with some pros and cons. For the rest of this article, we'll primarily reference preorders, but unless otherwise noted these approaches will work for backorders as well. First though, a note:
Option 1: Verify initial transactions, then auth+capture on shipment.
One recommended option to handle preorders is to use the card verification functionality in Foxy. A "card verification" is a way to ensure a payment method (ie. a credit card) is valid without actually charging the card, by making a $0 or $1 authorization request to the card. Foxy then vaults the card (or uses your gateway's vault), and you can then modify the Foxy transaction as needed before, in the future, charging the customer the full amount. This can be done either via the API or the admin, though for any decent volume, you'll likely want to automate things with the API (likely tied into your fulfillment systems).
The net result is that the customer completes their order, their payment method (typically a credit card) is verified, and at a later date they're charged the full amount. This "feels" the best all around, but there are some downsides:
- The payment method might fail when you attempt the full charge. This is unavoidable, but something to keep in mind.
- Verifying a card is a per transaction setting, set via the
template_set
(and its correspondingpayment_set
). As such, you can't easily combine preordered (or backordered) products and regular products in a single cart. (If this is a firm requirement, there are some possibilities that work well with automated fulfillment processes, but contact us so we can discuss your needs.) - Not every payment methods supports verification.
Option 2: Preorders via subscriptions.
Another possibility that can work to accept preorders is to use Foxy's subscription functionality. In this approach, the pre-ordered product is added to the cart as a subscription with a future start date (with an enddate for the day after). The item won't be charged now (though depending on your store settings, the card may still be verified as above), and at the specified date in the future, Foxy will automatically charge the customer. Then, on the following day, the subscription will end.
One requirement of this approach is to modify your store's language strings to change any "subscription" language to instead reference "preorders", and to hide some of the cart parameters (such as the subscription frequency and end date). For instance, instead of the cart displaying a product parameter of "Subscription Details: Start Date", you may want "Preorder Details: Estimated Billing Date". Some pros and cons:
➕ It's quite easy, assuming you have a firm billing date. (If you need to modify the date, you'd need to do it manually or via the API to update all matching subscriptions.)
➕ These preorder items can be combined in a cart with non-preordered items.
➖ If you also actually sell subscriptions, this approach wouldn't work. (Or not without extra work.)
➖ It's certainly a bit of a hacky workaround, in that it's using subscription functionality for non-subscription products.
Future Subscription
Other Options:
Use a simple form or mailing list.
For backorders in particular, if you don't anticipate this being a major issue, an easier solution is simply replacing your "add to cart" button with a "Get notified when back in stock" link to a form to collect the customer's email.
Collect payment at the time of the transaction.
If the delay isn't too long, this is hands down the easiest approach. Just collect payment as normal, and ship when you're able. We recommend adding a note on your site or checkout indicating the order may be delayed, and perhaps contacting impacted customers post-order to ensure there aren't any surprises. We can't recommend this approach for everybody, all the time, but it's the default starting point you'll want to compare all the above options against.
Custom Functionality & Enterprise Plans:
If you have very specific fulfillment processes and would like to talk with us about advanced or custom possibilities, please reach out. We've supported numerous larger users implement tightly integrated order flows using a variety of third-party logistic (3PL) providers, such as ShipStation, ShipFusion, ShippingEasy, and more.