Mastering Conditional Sales on Shopify: How to Approve Orders Before Charging
Hey everyone! I love diving into the Shopify Community forums because it's where real store owners tackle real-world problems, and often, the solutions are incredibly creative. Recently, I came across a fantastic discussion that really highlighted how versatile Shopify can be, even for tricky scenarios like selling event tickets with a pre-approval process.
Our friend cmc.collective kicked off a thread with a challenge many event organizers might face: they were hosting car shows and needed a way for participants to reserve a spot. But here's the kicker – they couldn't just let anyone in. They needed to personally review a picture of the participant's vehicle, maybe get some additional details, and only then approve them and actually charge their card. Talk about a specific workflow!
The Challenge: Approval Before Payment
The core problem was twofold:
- Conditional Charging: How do you take payment information but only process the charge if the applicant is approved?
- Custom Submissions: How do you collect a vehicle photo and other specific details (like "is it modified?") right on the product page?
This isn't a standard "add to cart and buy" scenario, is it? But the community, as always, came through with some stellar advice.
Solution 1: "Authorize Only" Payments for Conditional Charging
The first crucial piece of the puzzle, as suggested by community members like tim_1 and elaborated by askably_rod, is to use Shopify's "Authorize only" payment setting. This is a game-changer for conditional sales!
Here's how it works:
- When a customer checks out, their credit card is authorized, meaning the funds are put on hold by their bank.
- Your store doesn't actually capture the money yet.
- You, the store owner, can then review the order and decide whether to "capture" the payment (if approved) or "void" the authorization (if rejected).
Step-by-Step for "Authorize Only" Payments:
- Go to your Shopify Admin.
- Navigate to Settings > Payments.
- Find your primary payment provider (e.g., Shopify Payments) and click Manage.
- Under "Payment capture method," change it from "Automatically capture payment" to "Manually capture payment for orders."
- Save your changes.
Important Note: As askably_rod wisely pointed out, authorization holds typically expire after about 7 days (this can vary by payment provider). So, you'll need to review and either capture or void payments promptly to avoid the hold dropping off. If that happens, you'd have to contact the customer to re-authorize payment, which is a bit of a hassle.
Solution 2: Capturing Custom Details with Line Item Properties
Now, how do you get that vehicle photo and those crucial checkbox answers? This is where line item properties come in, a feature that allows you to add custom fields directly to your product pages. PaulNewton and tim_1 initially pointed to this, and askably_rod provided some excellent code for it.
For modern OS 2.0 themes (like Dawn), you can add these custom fields using a "Custom Liquid" block. Here’s what you can do:
Adding Custom Fields to Your Product Page:
- From your Shopify Admin, go to Online Store > Themes.
- Click Customize on your current theme.
- Navigate to the specific product page you're setting up (e.g., your car show ticket product).
- In the left sidebar, find the "Product information" section and click Add block.
- Choose Custom Liquid.
- Paste the following code into the Custom Liquid block. This code creates a file upload field for the photo, some checkboxes, and a text input for vehicle details.
Any input field with name="properties[Whatever]" will show up as a line item property on the order in your Shopify admin. For the file upload, the image gets uploaded to Shopify's CDN, and its URL is attached to the order, so you can easily review it.
Dealing with Accelerated Checkout Buttons
Here’s where things got a bit tricky for cmc.collective. They implemented some JavaScript to validate the file upload, which worked perfectly for the standard "Add to Cart" button. However, those convenient "Buy Now," Apple Pay, or PayPal buttons (often called accelerated or dynamic checkout buttons) still allowed customers to proceed without uploading a file. These buttons typically bypass the cart and go straight to checkout, skipping standard product form validation.
cmc.collective even shared a screenshot of their product page and the code they were using:

This is a common hurdle! The community offered a few practical solutions for this specific problem:
Options for Accelerated Checkout Buttons:
- Remove Them (Simplest): As tim_1 pointed out, you can often remove these buttons entirely via your theme settings. Payment methods will still be available in the checkout process, just not directly on the product page. cmc.collective initially wanted to avoid this for customer experience, preferring a prompt, but it's the most straightforward way to ensure validation isn't bypassed.
- Hide Them Conditionally: PaulNewton suggested hiding these buttons until the required file is uploaded. This can be done with custom JavaScript and CSS. You could also use a CSS trick like
pointer-events: none;to make them unclickable until conditions are met, coupled with visual styling to show they're disabled. - Acknowledge the Manual Process: While ideal to prevent unapproved orders, with the "Authorize only" payment method, even if someone bypasses the upload, you still have the power to void their payment. This makes the risk much lower.
Given the challenge, removing them via theme settings or conditionally hiding them are the most reliable ways to enforce pre-checkout requirements for all checkout paths.
Your New Workflow for Event Reservations
Combining these insights, here’s a robust workflow for selling car show tickets (or any event requiring pre-approval and custom submissions) on Shopify:
- Customer Experience: Participants land on your product page, fill out the custom fields (vehicle photo, details, checkboxes) that you've added as line item properties.
- Checkout: They proceed to checkout. If you've removed or hidden accelerated checkout buttons, they'll use the standard "Add to Cart" and then go to checkout. They enter their payment information.
- Payment Authorization: Because you've set your payment method to "Manually capture payment," their card is authorized, but no money is taken yet.
- Your Review: You receive the order. In your Shopify admin, you can see all the line item properties (the image URL, vehicle details, checkbox answers) attached to the order.
- Decision Time: Based on your review, you either click "Capture payment" to finalize the reservation and charge the customer, or "Cancel order" to void the authorization if they don't meet your criteria.
It's a fantastic example of how, with a bit of customization and leveraging Shopify's built-in features, you can create a tailored experience for even the most unique business models. In the end, cmc.collective came back to the thread, saying, "Thank god I actually did figure out a way and finally did it. Thank you!!" – which is exactly what we love to hear in the community. It shows that with a little help and some clever implementation, you can make Shopify work exactly the way you need it to!