Zero-Price Service Pattern for Credit Card Capture
Overview
When a booking system needs to capture a credit card to hold an appointment — without charging the client upfront for the service — setting the service price to $0 in WooCommerce is a clean, low-risk solution. This pattern allows the checkout flow to collect payment credentials while deferring actual service charges to point-of-sale.
This approach is particularly well-suited to businesses where:
- Service pricing is variable or determined at time of service (e.g., injectables like Botox dosed per unit)
- A no-show or late-cancellation fee policy requires a card on file
- The existing POS system (e.g., Square) handles in-person payment collection
The Problem
Standard WooCommerce checkout requires a non-zero total to process a payment. If a service has a real price attached, the client gets charged at booking — which is often not the desired behavior for appointment-based businesses that bill at the time of service.
Alternatives like coupon codes to zero out the cart introduce fragility: coupons can be misapplied, forgotten, or abused.
The Solution
Set service prices to $0 in WooCommerce. The checkout flow still requires the customer to enter payment details (card number, billing address), which are stored against their WooCommerce account. No charge is processed at booking. The card on file can then be used to collect no-show or cancellation fees as needed.
Why This Works
- WooCommerce processes a $0 order, capturing payment method details without an actual charge
- The pattern mirrors how many businesses already operate in Square: appointments are held without upfront payment, and the card is charged only if a policy fee applies
- Avoids the complexity and risk of a coupon-based workaround
- Keeps the checkout UX clean — customers see a $0 service line item, which is honest and transparent for variable-cost services
Implementation Notes
- Service line items in WooCommerce should be configured with a price of
$0.00 - Product line items (e.g., skincare products added to the same cart) retain their real prices and are charged normally at checkout
- The cart will show a mixed total: $0 for services + real price for any products
- A WooCommerce customer account is required for the card-on-file to be retrievable later; guest checkout may not preserve payment credentials in a usable way — confirm with your payment gateway
- Verify that your payment gateway supports $0 authorization or tokenization without a charge; most major gateways (Stripe, Square for WooCommerce) support this
Tradeoffs and Risks
| Consideration | Notes |
|---|---|
| Card storage compliance | Ensure PCI compliance is handled by the gateway, not stored raw |
| $0 order confusion | Some customers may be confused by a $0 total; clear UI copy helps |
| No-show fee enforcement | Requires a manual or semi-manual process to charge the stored card; no automatic trigger |
| New vs. returning customers | New customers with no Square profile won't have a card on file in Square; WooCommerce becomes the fallback capture point |
| Guest checkout | May not preserve payment method; requiring account creation at booking is advisable |
Relationship to Square
For businesses running Square as their POS, this pattern creates a parallel card-capture path:
- Returning customers who already have a Square profile may have a card on file there; the WooCommerce capture serves as a backup
- New customers booking online for the first time have no Square profile yet; WooCommerce checkout is the only opportunity to capture their card before the appointment
- Bookings made via the Square Go app bypass WooCommerce entirely — those customers' cards are managed within Square only
This dual-path reality means staff need a clear protocol for which system to check when enforcing no-show fees.
Observed In Practice
This pattern was identified and validated during a [1] booking flow review in November 2025. The client was already operating this way informally in Square (variable-cost services like Botox were never charged upfront), and the $0 WooCommerce approach was recognized as a direct analog that would preserve that workflow while adding online booking capability.
The alternative — a coupon system to zero out service prices — was explicitly rejected due to reliability concerns.
"The proposed solution is to set service prices to $0, mirroring the current Square process for variable-cost services and avoiding the risk of a faulty coupon system."
Related
- [1]
- [2]