wiki/knowledge/woocommerce/square-card-on-file-limitation.md · 674 words · 2026-04-05

Square Card-on-File Limitation with Bookly

Overview

When integrating Bookly with Square for appointment booking, a fundamental payment flow incompatibility surfaces: Square requires a "card on file" checkpoint to finalize any booking, but Bookly's Square integration only supports two payment modes — full prepayment or no payment at all. There is no mechanism within Bookly to capture card details without charging the customer in full.

This is a hard architectural constraint, not a configuration issue. It cannot be resolved through Zapier middleware or plugin settings alone.

The Constraint in Detail

Square's Requirement

Square's booking system enforces a card-on-file step before confirming an appointment. This is a platform-level requirement and cannot be disabled from the merchant side when the integration is active.

Bookly's Payment Options

Bookly's native Square integration exposes only two paths at checkout:

Mode Behavior Acceptable?
Full prepayment Customer pays the full service price at booking Often undesirable for service businesses
No payment No card details captured at all Fails Square's card-on-file requirement

There is no "card on file only" or "deposit" mode available through Bookly's standard Square integration.

Consequence

Any booking submitted through Bookly that reaches Square's card-on-file checkpoint will fail unless the customer pays in full. This makes the integration unviable for businesses that want to hold a card without charging it upfront — a standard practice in the salon and spa industry.

"With Bookly, the only checkpoint that you have is either you pay for the service or you don't, basically. You're not given the option, even with the Square integration, to just input your card details."
— Chris Ostergaard, Asymmetric

Compounding Issues

This payment limitation is not the only friction point in the Bookly/Square stack. Additional problems observed in practice:

Potential Workarounds

1. Custom Code for Card Capture

Asymmetric identified a possible path: use Square's developer APIs to embed a card-capture widget directly, then pass the token through Zapier to Square. This bypasses Bookly's payment flow entirely but requires custom JavaScript and backend handling. Feasibility depends on the developer's ability to inject this into the Bookly widget flow.

2. Route Payments Through WooCommerce

If Bookly's WooCommerce integration is enabled, bookings can be routed through the WooCommerce cart instead of Square's native checkout. WooCommerce already communicates with Square (for product inventory and orders), so this path could:

This is the primary avenue under active investigation. See [1] for details.

3. Replace Bookly

If neither workaround proves viable, the integration may represent a sunk-cost scenario. Bookly also lacks native support for product variations, which creates a separate workaround requirement. A purpose-built booking solution with deeper Square API support may be the appropriate long-term path.

Non-Negotiable Requirements (Client)

Any solution must satisfy both of the following:

  1. Single checkout cart — products and services must be purchasable in one transaction
  2. On-site booking — the entire booking flow must remain within the client's website; no redirects to Square's hosted pages or new tabs

The current Bookly/Square integration fails both requirements.

Observed In

Sources

  1. Bookly Woocommerce Routing
  2. Index
  3. Service Id Matching Square
  4. Lmb Website