=== Payments Square Connect ===
Contributors: wppayments
Tags: payment gateway, woocommerce square, square, woocommerce, paid memberships pro
Requires at least: 6.0
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.3.33
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Square hosted checkout for WooCommerce, PMPro memberships, WPForms, Fluent Forms & CF7. Apple Pay, Google Pay, zero fees.

== Description ==

= Languages =

This plugin is translation-ready (text domain: `payments-connect-square`) and ships starter locale files for Dutch, English (Australia), Japanese, Persian, Spanish (Spain), and Spanish (Chile). Community / language-pack updates also appear on [translate.wordpress.org](https://translate.wordpress.org/projects/wp-plugins/payments-connect-square/).

= Live Preview =

See **Square Hosted Checkout** for WooCommerce in action — [open the live demo](https://payments-connect-square.pages.dev/try/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=live_demo).

See **Square Payment Links** with **Elementor** in action — [open the Elementor demo](https://payments-connect-square.pages.dev/try-elementor/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=live_demo_elementor).

= Pay on Square's page. Stay connected. Keep stock in sync. =

**Payments Square Connect** is a **WooCommerce plugin** that adds a **Square payment gateway** with **Square Hosted Checkout** — **Square for payments** on WordPress and a reliable **WooCommerce Square** integration without checkout breaking, surprise disconnects, or inventory falling out of step.

**Alternative to on-site WooCommerce Square card fields:** send buyers to **Square Hosted Checkout** instead of embedding Square's Web Payments SDK in your theme.

Customers pay on **Square Hosted Checkout** (Square's secure page). You get **WooCommerce Square** orders with **refunds from wp-admin**, **Pay for Order / invoice links**, **Paid Memberships Pro** recurring memberships, Contact Form 7, WPForms, Fluent Forms, Ninja Forms, Formidable, MetForm, SureForms, Forminator, payment link buttons (shortcode, Gutenberg, Elementor, Beaver Builder), and subscriptions — all through **one Square connection**. Works with **WooCommerce Blocks checkout** and classic checkout.

**Why merchants choose this plugin:**

* **No extra plugin fee** on top of Square's processing rates
* **24/7 support** — email, WhatsApp, and the WordPress.org forum ([support docs](https://payments-connect-square.pages.dev/support/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=support))
* **Hosted checkout** — no card form in your theme; fewer theme and JavaScript conflicts ([getting started](https://payments-connect-square.pages.dev/getting-started/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=getting_started))
* **Automatic token renewal** — Square OAuth stays connected in the background ([getting started](https://payments-connect-square.pages.dev/getting-started/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=getting_started))
* **WooCommerce refunds** — full or partial refunds from the order screen ([refunds guide](https://payments-connect-square.pages.dev/refunds/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=refunds))
* **WPForms & Fluent Forms refunds** — refund form payments from wp-admin (WPForms → Payments, or Fluent Forms transaction screen)
* **SKU inventory sync** — matching SKUs update Square stock when WooCommerce orders are paid, and Square inventory webhooks can update WooCommerce stock when SKUs match ([stock sync](https://payments-connect-square.pages.dev/stock-sync/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=stock_sync))
* **Digital wallets** — Apple Pay, Google Pay, Cash App Pay, Afterpay (when enabled in Square) ([checkout settings](https://payments-connect-square.pages.dev/checkout-settings/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=checkout_settings))
* **Card data never touches WordPress**

= Help shape the next free features =

We are building upcoming plugin updates based on what merchants ask for — **no extra plugin fee** on top of Square's processing rates.

[→ Request a feature or vote on our roadmap](https://payments-connect-square.pages.dev/feature-requests/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=feature_requests)

Tell us what you need for WooCommerce, forms, payment links, or refunds. Popular, practical requests guide our public roadmap.

**On the roadmap / coming next:** wp-admin refunds for more form plugins (Ninja Forms, Formidable, MetForm, SureForms, Forminator), deeper builder settings for new form integrations, subscription payments inside additional form builders, and more payment-link placement options. [Vote for what you need most](https://payments-connect-square.pages.dev/feature-requests/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=feature_requests).

= Why Choose Hosted Checkout Over On-Site Fields? =

If you searched for **Square payment** for WordPress, you have probably seen on-site card fields break after a theme update, a plugin conflict, or a WooCommerce upgrade. **Payments Square Connect** is a **no-code Square integration**: connect Square once, enable the gateway, and send buyers to **Square Hosted Checkout** — no card form embedded in your theme.

**Fix WooCommerce Square nonce error and EMPTY_VALUE issues:** On-site Square fields often fail with nonce errors, session timeouts, and **EMPTY_VALUE** on Pay for Order pages. Hosted checkout removes those failure points — customers pay on Square's secure page, then return to your site when payment is confirmed.

**Prevent checkout breaking:** No JavaScript card SDK fighting your theme, page builder, or caching plugin. Fewer abandoned carts caused by broken payment fields at the worst moment.

**Square payment gateway without the headaches:** One connection powers **WooCommerce Square**, WPForms, Fluent Forms, Ninja Forms, Formidable, MetForm, SureForms, Forminator, Contact Form 7, payment links, and subscriptions. Orders stay **Pending** until Square confirms payment. **Pay for Order** invoice links work without on-site card fields. Simple SKU-based inventory sync when product SKUs match — no heavy catalog import required.

**Zero platform fees:** You pay Square's normal processing rates only. No paid tier for core checkout.

**Choose on-site sync plugins** if you need full catalog mirroring or gift cards in checkout. **Choose hosted checkout** if you want the most reliable **Square payment** path for WooCommerce and forms.

= Who is this plugin for? =

**Best for:**

* Merchants who want **Square hosted checkout** instead of on-site card fields
* Stores hitting **payment nonce is missing**, JavaScript conflicts, or **EMPTY_VALUE** on Pay for Order
* **WooCommerce + forms + PMPro** (WPForms, Fluent Forms, Ninja Forms, Formidable, MetForm, SureForms, Forminator, Contact Form 7) with **one Square connection**
* Simple **SKU-based inventory sync** when product SKUs match — without full catalog import
* **Pay for Order** invoice links and automatic payment reminders for unpaid orders

**Not the right fit if you need:**

* Full two-way **Square POS ↔ WooCommerce catalog sync** (images, categories, bulk import)
* **Saved cards on file** at WooCommerce checkout (hosted checkout redirects to Square)
* **Square Gift Cards** redeemed inside WooCommerce checkout fields
* Replacing the official **WooCommerce Square** plugin feature-for-feature — this is a **hosted checkout alternative**, not a sync clone

= Get started =

[→ Setup documentation](https://payments-connect-square.pages.dev/getting-started/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=getting_started)

After activation, open **Payments Square Connect → Get started** for the onboarding wizard: Sandbox or Live, connect Square, pick a location, enable WooCommerce gateway in one click, and test checkout. Or use **Payments Square Connect** for full connection settings.

= WooCommerce checkout payment gateway =

[→ WooCommerce guide](https://payments-connect-square.pages.dev/woocommerce/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=woocommerce)

This **WooCommerce payment gateway** sends customers to **Square Hosted Checkout** at cart checkout — classic checkout and **WooCommerce Blocks checkout** supported.

1. Connect Square and save a **location**.
2. **WooCommerce → Settings → Payments → Payments Square Connect** — turn the gateway on.
3. At checkout, customers pay on Square Hosted Checkout and return to your **Order received** page.

**Pay for Order:** [→ Pay for Order guide](https://payments-connect-square.pages.dev/pay-for-order/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=pay_for_order) — On unpaid orders, use **Email payment link to customer** or **Copy payment link** on the order screen. Customers pay on Square — no card form on the order-pay page. Optional **automatic payment reminders** (WooCommerce → Settings → Payments → Payments Square Connect).

**Refunds:** [→ Refunds guide](https://payments-connect-square.pages.dev/refunds/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=refunds) — Open a paid order, click **Refund**, enter an amount. Requires a stored Square payment ID (from buyer return or webhook). See [webhooks guide](https://payments-connect-square.pages.dev/webhooks/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=webhooks) and FAQ for troubleshooting.

**Subscriptions (optional):** [→ Subscriptions guide](https://payments-connect-square.pages.dev/subscriptions/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=subscriptions) — Create plans in Square, copy IDs from **Subscription Plans**, assign to WooCommerce subscription products.

= Paid Memberships Pro — Square subscriptions without WooCommerce Subscriptions =

[→ Paid Memberships Pro guide](https://payments-connect-square.pages.dev/paid-memberships-pro/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=pmpro)

Accept **Paid Memberships Pro (PMPro)** membership payments with **Square Hosted Checkout** — **no WooCommerce Subscriptions add-on required**. Members check out on your PMPro membership page, pay on Square's secure hosted page, and return to your site when payment is confirmed.

**Why membership site owners choose this:**

* **PMPro + Square in one plugin** — use the free PMPro plugin from WordPress.org plus **Payments Square Connect**; no separate PMPro Square add-on purchase required for hosted checkout
* **Recurring memberships** — monthly, weekly, or annual billing cycles map to Square subscription plan variations automatically
* **One-time + subscription levels** — initial payment and recurring billing handled by Square Subscriptions API via hosted checkout
* **No on-site card fields** — avoids PMPro checkout JavaScript conflicts; buyers redirect to Square like WooCommerce hosted checkout
* **Same Square connection** — one OAuth connect powers WooCommerce, PMPro, forms, and payment links
* **Renewals via webhooks** — Square `invoice.payment_succeeded` events can update membership status (configure webhook URL on Connect screen)

**Setup in four steps:**

1. Install and activate **Paid Memberships Pro** (free from WordPress.org).
2. Connect Square under **Payments Square Connect** (Sandbox for testing, Live for production).
3. **PMPro → Settings → Payments** — choose **Square Hosted Checkout (Payments Square Connect)** as gateway; set Sandbox or Live environment.
4. Create a **paid recurring membership level** in PMPro. On checkout, members redirect to Square; recurring charges bill automatically on Square.

**Optional:** Edit a membership level to pick a specific **Square plan variation** from **Payments Square Connect → Subscription Plans**, or leave auto-match so the plugin creates a matching STATIC plan in Square Catalog.

**Not included:** On-site card fields inside PMPro checkout (use hosted redirect instead). PMPro payment method update / billing update pages show a message to manage billing in Square — same pattern as other hosted gateways.

= Payment link buttons =

[→ Payment links guide](https://payments-connect-square.pages.dev/payment-links/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=payment_links)

Add a **Pay Now** button without WooCommerce or a form plugin:

* **Shortcode:** `[square_payment_link amount="25.00" label="Pay Now"]` (alias: `[square_pay_link]`)
* **Gutenberg:** search **Square Payment Link** in the block inserter
* **Elementor:** **Square Payment Link** widget
* **Beaver Builder:** **Square Payment Link** module under **Payments Square Connect**

= Form plugins (optional) =

All use the same Square connection and **Square Hosted Checkout** with your enabled wallets (Apple Pay, Google Pay, Cash App Pay, Afterpay when enabled in Square).

= Contact Form 7 Square payment =

[→ CF7 guide](https://payments-connect-square.pages.dev/contact-form-7/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=contact_form_7)

Add `[square_pay amount:25.00]` or `[square_pay amount-field:your-field]` to any form. Subscriptions: `[square_subscribe variation:PLAN_ID name:"Plan" amount:15.00]`. No WooCommerce required.

= WPForms Square payment =

[→ WPForms guide](https://payments-connect-square.pages.dev/wpforms/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=wpforms)

Add the **Square Hosted Checkout** field and enable **Payments Square Connect** under form Payments. Refund from **WPForms → Payments** in wp-admin.

= Fluent Forms Square gateway =

[→ Fluent Forms guide](https://payments-connect-square.pages.dev/fluent-forms/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=fluent_forms)

Works with **Fluent Forms free and Pro** — no Pro license required for Square payments. Enable **Payments Square Connect** under **Global Settings → Payment → Payment Methods**, add a **Payment Method** field, and use payment fields (Custom Payment Amount, Payment Item, Quantity). Square Hosted Checkout totals match the Fluent Forms payment summary (price × quantity, multiple items, select/radio/checkbox options). Refund from the submission payment screen in wp-admin.

= Ninja Forms Square payment =

Add a **Collect Payment** action to your form and choose **Payments Square Connect** as the payment gateway. Set the payment total (fixed or calculated). Buyers submit the form, pay on **Square Hosted Checkout**, and return to your site with a success message. Uses the same Square connection as WooCommerce and other supported form plugins.

= Formidable Forms Square payment =

Add a **Payment** action and select **Payments Square Connect** as the gateway (one-time payments). Buyers are redirected to **Square Hosted Checkout** after submit; payment is recorded on the Formidable entry when they return. Subscriptions via Formidable are not supported on hosted checkout yet.

= MetForm Square payment =

In the MetForm form editor settings tab, enable **Payments Square Connect (Hosted Checkout)** and set the **Square amount field name** (the number field that holds the charge amount). After submit, buyers pay on Square and return to your page. Works with the free MetForm plugin.

= SureForms Square payment =

Add a **Payment** block to your form and include **Square Hosted Checkout** in the block's payment methods. Fixed or variable amounts are supported. Submit redirects to Square; the entry is completed after payment. Uses the same hosted checkout flow as other integrations.

= Forminator Square payment =

Add the **Square Hosted Checkout** field to a Forminator custom form (fixed or variable amount). On submit, buyers are sent to **Square Hosted Checkout**; the form entry and notifications complete after they pay. No Forminator Pro required for this field.

Contact Form 7 and payment link buttons are refunded in the **Square Dashboard**. WooCommerce, WPForms, and Fluent Forms support wp-admin refunds when a Square payment ID is stored. Refunds for Ninja Forms, Formidable, MetForm, SureForms, and Forminator are planned for a future release — use the Square Dashboard in the meantime.

= Admin screens =

Under **Payments Square Connect** in the sidebar:

* **Get started** — onboarding wizard
* **Payments Square Connect** — OAuth, Sandbox/Live, location, customer sync, webhook URL
* **Checkout Settings (Beta)** — wallets, tipping, branding (Live mode)
* **Subscription Plans** — view and copy Square plan IDs
* **Documentation** — full guides on our docs site
* **Support** — email, WhatsApp, forum

= Customer sync (Square ↔ WordPress) =

[→ Customer sync guide](https://payments-connect-square.pages.dev/customer-sync/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=customer_sync)

Optionally sync customers between Square and WordPress under **Payments Square Connect → Connect**:

* **Direction** — Square → WordPress, WordPress → Square, or both ways
* **Automatic** — every 15 minutes for **recent** customers (1-hour lookback)
* **Manual Sync customers** — same recent window; optionally queue a full **existing** directory sync in slow background batches
* Match by Square customer ID, then email; creates/updates WordPress users with the WooCommerce **customer** role when available

= Stock sync & connection =

[→ Stock sync guide](https://payments-connect-square.pages.dev/stock-sync/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=stock_sync) · [→ Webhooks guide](https://payments-connect-square.pages.dev/webhooks/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=webhooks)

When **SKUs match** between WooCommerce and Square catalog, paid orders can update Square inventory, and Square `inventory.count.updated` webhooks can update WooCommerce stock for the selected location. No matching SKU? Checkout still works by product name and price.

Access tokens **renew automatically** (daily checks and before API calls). The Connect screen shows last renewal time and warns if required OAuth scopes are missing so you can reconnect.

= Requirements =

* WordPress 6.0+, PHP 7.4+, Square seller account
* WooCommerce (classic or Blocks checkout), Paid Memberships Pro, Contact Form 7, WPForms, Fluent Forms, Ninja Forms, Formidable, MetForm, SureForms, Forminator, or WooCommerce Subscriptions — each optional

== Installation ==

[→ Getting started guide](https://payments-connect-square.pages.dev/getting-started/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=getting_started)

1. Activate **Payments Square Connect**.
2. Open **Payments Square Connect** in the admin sidebar.
3. Choose **Sandbox** or **Live**, sign in with Square, and save a location.
4. Enable **WooCommerce Square** checkout, WPForms, Contact Form 7, Fluent Forms, Ninja Forms, Formidable, MetForm, SureForms, Forminator, and/or add payment link buttons if you need them.

== Frequently Asked Questions ==

= Is this a WooCommerce payment gateway plugin? =

Yes. Enable **Payments Square Connect** under **WooCommerce → Settings → Payments**. It appears as a **WooCommerce payment gateway** at checkout and on **Pay for Order** pages. Customers complete payment on **Square Hosted Checkout** and return to your store — no on-site card fields, which helps fix common **WooCommerce checkout** errors (nonce missing, JavaScript conflicts, caching). Works with classic checkout and **WooCommerce Blocks checkout**.

= Payment nonce is missing — can hosted checkout fix it? =

Yes — for most stores. The **payment nonce is missing** error usually means Square's on-site Web Payments SDK could not tokenize the card (JavaScript conflicts, caching, page builders, or minification blocking `square-credit-card.js`). **Payments Square Connect** avoids on-site nonce generation entirely: customers pay on **Square Hosted Checkout**, then return to your site. This also helps **EMPTY_VALUE** and broken Pay for Order pages that rely on embedded card fields.

= How is this different from WooCommerce Square? =

The official **WooCommerce Square** plugin embeds card fields in checkout and offers heavy **catalog / inventory sync** with Square POS. **Payments Square Connect** uses **Square Hosted Checkout** only — no card form in your theme — plus forms, payment links, and light **SKU-based stock sync**. Choose WooCommerce Square for full POS sync; choose this plugin for the most reliable hosted **Square payment gateway** path and multi-plugin support (WPForms, Fluent Forms, CF7).

= Can I accept Square payments without WooCommerce? =

Yes. Use **Contact Form 7**, **WPForms**, **Fluent Forms**, **Ninja Forms**, **Formidable**, **MetForm**, **SureForms**, **Forminator**, or **payment link** buttons (shortcode, Gutenberg, Elementor, Beaver Builder) with the same Square connection — no WooCommerce cart required.

= Does this work with Apple Pay, Google Pay, and Cash App Pay? =

Yes. Enable wallets under **Payments Square Connect → Checkout Settings** (Live mode). Buyers see Apple Pay, Google Pay, Cash App Pay, and Afterpay on **Square Hosted Checkout** when enabled in Square — for WooCommerce, forms, and payment links.

= Does Square payment work in the UK, Canada, and Australia? =

Yes — wherever **Square** supports sellers. **Square payment** and **Square Hosted Checkout** work for merchants in the **United States, Canada, United Kingdom, Australia**, Ireland, France, Spain, and Japan (subject to Square account and location rules). Connect your Square account in **Sandbox** or **Live**, pick a location, and accept **Square payments** on WooCommerce, forms, or payment links. Currency and wallet availability follow your Square account country.

= Square vs Stripe for WordPress — when should I use Square? =

Choose **Square** when you already run **Square POS**, want **Square Hosted Checkout**, or need **WooCommerce + WPForms + Fluent Forms + Ninja Forms + Formidable + MetForm + SureForms + Forminator + CF7** on **one Square connection**. Choose **Stripe** when your stack is Stripe-first or you need Stripe-only features. This plugin is for **Square payment** on WordPress — hosted checkout avoids on-site card field conflicts that affect both Square and Stripe on-site gateways. You pay normal processor rates only; no extra plugin fee.

= WooCommerce Square sync broke my products — is this safer? =

This plugin does **not** run full bidirectional catalog import. It uses **Square Hosted Checkout** for payments and optional **SKU-matched inventory updates** when orders are paid — no mass product overwrite from Square to WooCommerce. If sync-heavy plugins duplicated or wiped products, hosted checkout plus simple SKU sync is a lower-risk approach.

= Does the plugin work with automation or AI tools? =

Yes. Admins with the right capabilities can use the REST API namespace `shc4wc/v1` (for example `GET /wp-json/shc4wc/v1/status` and `POST /wp-json/shc4wc/v1/orders/{id}/send-payment-link`). Developers can hook into `shc4wc_square_connected`, `shc4wc_pay_for_order_email_sent`, and related `shc4wc_*` actions. The optional **AI setup assistant** on **Get started** uses your own OpenAI API key (saved under connection settings) — card data and Square tokens are never sent.

= Do I need WooCommerce? =

No. You can take payments through Contact Form 7 or WPForms without WooCommerce.

= Do I need Contact Form 7? =

No. If you only sell through WooCommerce or use WPForms, you do not need Contact Form 7.

= Do I need WPForms? =

No. WooCommerce and Contact Form 7 work independently. Use WPForms only if you want the WPForms builder.

= Where are the settings? =

**Payments Square Connect** in the WordPress admin sidebar.

= What is Sandbox vs Live? =

**Sandbox** is for testing — no real money. **Live** is for real payments. Start in Sandbox, then switch to Live when you are ready. [→ Getting started](https://payments-connect-square.pages.dev/getting-started/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=getting_started)

= How does the customer get back to my site? =

Square sends them back automatically after payment. WooCommerce shoppers see the order confirmation page. Form visitors return to the same form with a success message.

= Can I sell subscriptions? =

Yes. Create plans in Square, then use **Subscription Plans** in this plugin to connect them to WooCommerce products, Contact Form 7 forms, or WPForms. [→ Subscriptions guide](https://payments-connect-square.pages.dev/subscriptions/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=subscriptions)

= Can I accept Paid Memberships Pro payments with Square? =

Yes — **without WooCommerce Subscriptions**. Install the free **Paid Memberships Pro** plugin, connect Square in **Payments Square Connect**, and select **Square Hosted Checkout (Payments Square Connect)** under **PMPro → Settings → Payments**. Recurring membership levels redirect to Square Hosted Checkout; Square bills renewals automatically. [→ Paid Memberships Pro guide](https://payments-connect-square.pages.dev/paid-memberships-pro/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=pmpro)

= Do I need WooCommerce Subscriptions for PMPro + Square? =

No. **Payments Square Connect** integrates directly with **Paid Memberships Pro** via a native PMPro payment gateway. WooCommerce and WooCommerce Subscriptions are optional and not required for membership sites.

= Does this plugin charge an extra fee on payments? =

No. **Payments Square Connect** does not add a platform or application fee on top of your payments. You pay Square's normal card processing rates only.

= Is support available? =

Yes. **24/7 support available anytime** — open **Payments Square Connect → Support** for email, WhatsApp, or the [WordPress.org support forum](https://wordpress.org/support/plugin/payments-connect-square/). [→ Support & docs](https://payments-connect-square.pages.dev/support/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=support)

= How can I request a new feature? =

[→ Feature requests & community roadmap](https://payments-connect-square.pages.dev/feature-requests/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=feature_requests)

Submit your idea and vote for what we build next on our docs site. We prioritize popular, practical requests for upcoming **free** updates. For bugs, use [Support](https://payments-connect-square.pages.dev/support/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=support) or the WordPress.org forum.

= Is card data stored on my site? =

No. Customers enter payment details on **Square Hosted Checkout**. Your WordPress site does not store card numbers.

= Can I refund a WooCommerce Square order? =

Yes. Open a **paid** order that used **Payments Square Connect**, click **Refund**, and enter a full or partial amount. The plugin sends the refund to Square using the stored payment ID.

**When refunds work:** order is Processing or Completed, payment method is Payments Square Connect, and a Square payment ID is saved (from buyer return or webhook).

**Webhooks (recommended):** Copy the webhook URL from **Payments Square Connect → Connect** into the Square Developer Dashboard so payment IDs are saved even if the buyer closes the browser early.

**Troubleshooting:** "Square payment ID was not found" — wait for webhook or customer return. Refund failed — enable Debug Log and check **WooCommerce → Status → Logs** (source `shc4wc`). Partial refund rejected — try a lower amount. [→ Refunds guide](https://payments-connect-square.pages.dev/refunds/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=refunds) · [→ Webhooks guide](https://payments-connect-square.pages.dev/webhooks/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=webhooks)

= Can I issue a partial WooCommerce Square refund? =

Yes. Enter any amount up to the remaining refundable total on the WooCommerce order. Each refund is sent to Square separately.

= Why is the WooCommerce Square refund button missing or failing? =

The order must be **paid** with Payments Square Connect and have a **Square payment ID** saved (from buyer return or webhook). Pending or unpaid orders cannot be refunded through the gateway. Enable webhooks and Debug Log on the Connect screen if payment IDs are missing.

= How does Pay for Order work? =

[→ Pay for Order guide](https://payments-connect-square.pages.dev/pay-for-order/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=pay_for_order)

Open an unpaid WooCommerce order. Under billing details, click **Email payment link to customer** or **Copy payment link**. The customer opens the link, clicks **Pay**, and completes payment on Square Hosted Checkout. The order moves to **Processing** after Square confirms payment. No card form appears on your order-pay page.

= Can I sync Square customers with WordPress? =

Yes. On **Payments Square Connect → Connect**, enable **Customer sync**, choose direction (Square → WordPress, WordPress → Square, or both), and optionally **Include existing** for a background full sync. [→ Customer sync guide](https://payments-connect-square.pages.dev/customer-sync/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=customer_sync)

= Can I use Square payment links with Elementor or Beaver Builder? =

[→ Payment links guide](https://payments-connect-square.pages.dev/payment-links/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=payment_links)

Yes. Search for **Square Payment Link** in the **Elementor** widget panel or in **Beaver Builder** modules (group **Payments Square Connect**). Set the amount and button label — same hosted checkout flow as the shortcode and Gutenberg block.

= Can I send a payment link for an unpaid WooCommerce order? =

Yes. Open the order in **WooCommerce → Orders** and click **Email payment link to customer** on the order screen (or copy the link). The customer pays on Square Hosted Checkout and returns to your site when done.

= Can I refund Contact Form 7, WPForms, or payment link payments from WooCommerce? =

**WooCommerce** only refunds WooCommerce orders. **WPForms** — open **WPForms → Payments**, click the payment, and use **Refund** (sent to Square). **Fluent Forms** — open the submission payment screen and set status to **Refunded** (sent to Square before the record updates). **Contact Form 7** and **payment link** buttons are not WooCommerce orders — refund those in the **Square Dashboard**. See [refunds guide](https://payments-connect-square.pages.dev/refunds/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=refunds).

= Can I refund WooCommerce Square subscription renewals from wp-admin? =

Recurring charges billed by Square subscriptions should be refunded from the **Square Dashboard**. The initial WooCommerce subscription signup order can be refunded from wp-admin if it was a one-time hosted checkout payment with a stored Square payment ID.

= Does WooCommerce Square stock sync with Square catalog? =

[→ Stock sync guide](https://payments-connect-square.pages.dev/stock-sync/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=stock_sync)

When product **SKUs match** between WooCommerce and your Square catalog, paid **WooCommerce Square** orders can update **Square inventory** automatically. WooCommerce also reduces its own stock when payment is confirmed. Use the same SKU on both sides for the best results.

= Do Contact Form 7 and WPForms support Apple Pay, Google Pay, Cash App, and Afterpay? =

[→ Checkout settings](https://payments-connect-square.pages.dev/checkout-settings/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=checkout_settings) · [→ CF7 guide](https://payments-connect-square.pages.dev/contact-form-7/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=contact_form_7) · [→ WPForms guide](https://payments-connect-square.pages.dev/wpforms/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=wpforms)

Yes. **One-time** payments from Contact Form 7 and WPForms use the same **Square Hosted Checkout** as **WooCommerce Square**. Enable **Apple Pay**, **Google Pay**, and **Cash App Pay** under **Payments Square Connect → Checkout Settings → Merchant settings** (Live mode). Enable **Afterpay/Clearpay** in your Square Dashboard. Buyers see whichever wallets you have turned on, plus card entry on Square's page.

Cash App Pay and Afterpay are **not** available for subscription signup on CF7 or WPForms forms.

= Do Fluent Forms work with Square wallets? =

[→ Fluent Forms guide](https://payments-connect-square.pages.dev/fluent-forms/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=fluent_forms)

Yes, with **Fluent Forms free or Pro** (no extra Fluent Forms license needed). Enable **Payments Square Connect** under **Fluent Forms → Global Settings → Payment → Payment Methods**, then add a **Payment Method** field to your form and select Square Hosted Checkout. Wallets follow the same **Checkout Settings** as **WooCommerce Square**.

= Do Fluent Forms payment totals match Square Hosted Checkout? =

Yes. Square charges the same total as the Fluent Forms payment summary: **Custom Payment Amount**, **Payment Item** (single, select, radio, or checkbox), and **Quantity** fields are supported on **free and Pro**. Each selected item appears on Square's order summary with the correct name and amount (including quantity). Link **Quantity → Target Product** in the field settings when you have multiple payment fields on one form.

== Screenshots ==

1. Connect your Square account, choose Sandbox or Live, and pick a location.
2. Checkout Settings: wallets, tipping, branding, and policies (Live mode only).
3. Subscription Plans: view Square plans and copy plan IDs.
4. WooCommerce Square: enable the gateway and set checkout title and description.
5. WooCommerce Square: refund a paid order from the order screen (full or partial refund sent to Square).
6. Contact Form 7: add Square payment tags to a form.
7. WPForms: Square Hosted Checkout field and Payments Square Connect panel.
8. Square Hosted Checkout: product names and totals shown on Square's payment page.
9. Get started onboarding wizard: connect Square, location, and WooCommerce gateway.

== Changelog ==

= 1.3.33 =
* **Languages** — ship starter translations: Dutch, English (Australia), Japanese, Persian, Spanish (Spain), Spanish (Chile)

= 1.3.32 =
* **Languages** — translation-ready setup: `Domain Path: /languages`, textdomain load, and `payments-connect-square.pot` for WordPress.org language packs / translate.wordpress.org

= 1.3.31 =
* **Checkout** — send WooCommerce shipping as Square Hosted Checkout `shipping_fee` (service charge) instead of a product line item

= 1.3.30 =
* **Checkout** — send WooCommerce shipping details to Square Hosted Checkout so ship orders show as shipment, not pickup

= 1.3.29 =
* **Checkout** — optional developer filters for Hosted Checkout payment link

= 1.3.28 =
* **Checkout reliability** — auto-correct common billing email typos (e.g. `gmail.comk` → `gmail.com`) before sending buyer data to Square Hosted Checkout.
* **Square API compatibility** — prevents `INVALID_EMAIL_ADDRESS` errors on payment links and customer search when shoppers mistype their email domain.
* **Payment continuity** — if an email cannot be corrected, checkout continues without a pre-filled email instead of blocking the order.
* **Documentation** — Elementor payment links live demo link in README Live Preview section.

= 1.3.27 =
* **Paid Memberships Pro** — native PMPro payment gateway **Square Hosted Checkout (Payments Square Connect)** for one-time and recurring membership checkout without WooCommerce Subscriptions.
* **PMPro hosted checkout** — members redirect to Square after checkout; membership activates on return when payment succeeds.
* **Square subscription plans** — auto-match or create STATIC plan variations from PMPro level billing amount and cycle; optional manual plan variation per level.
* **PMPro webhooks** — renewal and cancellation handlers for Square subscription events (`invoice.payment_succeeded`, subscription cancel).
* **PMPro setup checklist** — gateway readiness filter so **Configure Payment Settings** completes when Square is connected.
* **Checkout reliability** — external Square redirect uses `wp_redirect` (fixes wp-admin fallback); invalid phone numbers skipped instead of failing payment links; localhost OAuth/return URLs use HTTP on XAMPP.
* **Documentation** — [Paid Memberships Pro guide](https://payments-connect-square.pages.dev/paid-memberships-pro/) on the docs site; README and Subscription Plans screen updated.

= 1.3.26 =
* **Square → WooCommerce inventory sync** — new webhook handler for `inventory.count.updated` updates WooCommerce stock when Square inventory changes (POS, manual stock edits, sales).
* **SKU matching** — finds WooCommerce products by SKU from the Square catalog object at your selected Square location.
* **Connect setting** — **Inventory sync (Square → WooCommerce)** toggle on the Connect screen (enabled by default).
* **OAuth** — requests `INVENTORY_READ` for inventory webhooks; reconnect Square after updating.
* **Webhooks** — Connect screen links to the [Square Developer Dashboard](https://developer.squareup.com/apps); subscribe to `payment.updated` and `inventory.count.updated`.
* **Documentation** — stock sync and webhooks guides updated for bidirectional SKU-based inventory.

= 1.3.25 =
* **Urgent fix — Square phone number compatibility** — Hosted Checkout payment links now format buyer phone numbers in E.164 (e.g. `+1` for US/Canada) before sending them to Square.
* **Checkout failures resolved** — fixes `INVALID_PHONE_NUMBER` errors that blocked payment for some customers (including US numbers with area codes such as 917).
* **WooCommerce orders** — billing country is used when normalizing phone numbers for `pre_populated_data` and Square customer creation.

= 1.3.24 =
* **Ninja Forms** — **Payments Square Connect** payment gateway for the **Collect Payment** action; buyers pay on Square Hosted Checkout and return to your form page.
* **Formidable Forms** — **Payments Square Connect** gateway for one-time **Payment** actions; redirects to hosted checkout and marks the entry paid on return.
* **MetForm** — form settings toggle for **Payments Square Connect (Hosted Checkout)** with configurable amount field name.
* **SureForms** — **Square Hosted Checkout** payment method for Payment blocks; submit redirects to Square and completes the entry after payment.
* **Forminator** — new **Square Hosted Checkout** form field (fixed or variable amount); entry and emails complete after Square payment.
* **Shared hosted checkout flow** — one helper powers deferred payment sessions and return handling across all new form integrations.
* **Documentation** — README updated with setup steps for every supported form plugin and roadmap notes for upcoming form refunds and builder improvements.
* **WordPress.org** — short description kept **Experience rock-solid** opening and trimmed to the 150-character limit.

= 1.3.23 =
* **Deactivation feedback** — optional popup on the Plugins screen when deactivating; merchants can submit a short reason or skip and deactivate immediately.

= 1.3.22 =
* **WordPress.org title** — listing name shortened to **Payments Square Connect** (3 words).

= 1.3.21 =
* **Link Square customers on checkout** — one-time Hosted Checkout payment links now set Square `order.customer_id` when a buyer email is available (find or create in the Square Customer Directory).
* **All channels** — WooCommerce (including subscription signup links with buyer prefill), WPForms, Fluent Forms, Contact Form 7, and shortcode/Gutenberg/Elementor/Beaver pay buttons (logged-in user).
* **Checkout prefills** — buyer email and phone passed via `pre_populated_data` for a faster Square checkout experience.
* **WP user meta** — when a WordPress user is known, `_square_customer_id` is saved after match/create for continuity with customer sync.

= 1.3.20 =
* **Customer sync** — sync Square customers into WordPress (and optionally WordPress customers into Square) from **Payments Square Connect → Connect**.
* **Sync direction** — Square → WordPress, WordPress → Square, or both ways; automatic every-15-minute sync for recent customers (1-hour lookback).
* **Include existing** — optional setting; **Sync customers** queues a slow background full sync in small batches so large directories do not spike site load.
* **OAuth scopes** — request `CUSTOMERS_READ` / `CUSTOMERS_WRITE`; Connect screen checks token scopes via Square token status and prompts reconnect when permissions are missing.
* **Documentation** — customer sync guide on the docs site.

= 1.3.19 =
* **Payment reminders** — optional automatic emails for unpaid WooCommerce orders (Pending / On hold) with the Square Hosted Checkout payment link; up to three schedules (default 24h, 72h, 168h).
* **WooCommerce gateway settings** — enable reminders and edit intervals under **Payments Square Connect**.
* **Order notes** — each automatic reminder is logged on the order; developer hook `shc4wc_payment_reminder_sent`.
* **Documentation** — Pay for Order guide updated on the docs site.
* **Community roadmap** — [request features](https://payments-connect-square.pages.dev/feature-requests/?utm_source=wordpress_org&utm_medium=readme&utm_campaign=feature_requests_changelog) and vote for the next free updates on the docs site.
* **Readme** — WooCommerce payment gateway positioning, checkout SEO keywords, regional Square payment (UK/CA/AU), and Square vs Stripe comparison.

= 1.3.18 =
* **WPForms refunds** — refund Payments Square Connect payments from **WPForms → Payments**; Square payment ID resolved and saved after Hosted Checkout return.
* **Fluent Forms refunds** — refund from the submission payment screen in wp-admin; Square Refunds API runs before Fluent Forms updates the transaction.
* **Square payment ID** — shared resolver for hosted checkout returns (payment link, order tenders, list payments).
* **Documentation** — refunds guide, WPForms guide, and Fluent Forms guide updated on the docs site.

= 1.3.17 =
* **WordPress.org** — valid stable tag **1.3.17**; readme listing title **Connect Square Payments – WordPress Square Hosted Checkout for WooCommerce, Fluent Forms, CF7, WPForms, Pay Links & More**.

= 1.3.16 =
* **Readme** — WordPress.org listing title: **Payments Square Connect – WordPress Square Hosted Checkout for WooCommerce, Fluent Forms, CF7, WPForms, Pay Links & More**.
* **Plugin header** — shorter wp-admin name: **Payments Square Connect – Square Hosted Checkout for WooCommerce, Forms & Pay Links**.

= 1.3.13 =
* **Fluent Forms (free & Pro)** — Square Hosted Checkout totals match the Fluent Forms payment summary; no Fluent Forms Pro license required for Square payments.
* **Payment items** — supports Custom Payment Amount, Payment Item (single/select/radio/checkbox), and Quantity; correct line item names on Square's order summary.
* **Totals** — uses Fluent Forms order items and payment total (price × quantity) so multiple payment fields and quantities stay in sync with the form.

= 1.3.12 =
* **Live & Sandbox credentials** — OAuth tokens and locations save separately per environment; switch Sandbox/Live without disconnecting the other mode (one-time connect each).
* **Upgrade safety** — automatic migration for existing installs; legacy OAuth and location data preserved on update.
* **Connect screen** — clearer **Connect Square for Live/Sandbox** and **Disconnect Square for Live/Sandbox** labels; Sandbox setup link to the Square test-accounts dashboard; **Square Location** hidden until the active environment is connected.
* **Fluent Forms** — Square gateway works on **free and Pro**; global settings show environment status and a connect-first message when Square is not connected; hosted-checkout notice on forms.
* **Reliability** — plugin no longer fatals if the bundled Freemius SDK folder (`vendor/freemius`) is missing from an incomplete install; admin warning shown instead.

= 1.3.11 =
* **AI setup assistant** — optional OpenAI-powered troubleshooting on **Get started** (merchant API key on connection settings; no card or Square token data sent).
* **REST API** — `shc4wc/v1/status`, order payment URL, and send payment link email endpoints for admins and automation.
* **Developer hooks** — `shc4wc_square_connected`, `shc4wc_square_disconnected`, `shc4wc_pay_for_order_email_sent`, `shc4wc_checkout_redirect_to_square`, `shc4wc_payment_link_button_atts`, `shc4wc_rest_status`, `shc4wc_ai_troubleshoot_context`.

= 1.3.10 =
* **Readme** — shortened Description section to meet WordPress.org 2,500-word limit; refund and Pay for Order details expanded in FAQ.

= 1.3.9 =
* **Onboarding screen** — **Get started** setup wizard after activation: choose Sandbox/Live, connect Square, pick a location, enable WooCommerce gateway in one click, and open shop/checkout for a test order.
* **Setup progress** — progress bar and step checklist; **Finish setup** or **Skip setup for now**; OAuth returns to the wizard until setup is complete.
* **Admin notice** — prompts merchants to open **Get started** when Square is not connected yet.
* **Onboarding URL fix** — correct admin URL (`admin.php?page=…`) and redirect if an old pretty URL is used.

= 1.3.8 =
* **Elementor** — **Square Payment Link** widget (amount, button label, description, currency) for drag-and-drop Pay Now buttons on Elementor pages.
* **Beaver Builder** — **Square Payment Link** module under **Payments Square Connect** with the same settings as the shortcode and Gutenberg block.
* **Page builders** — both use the existing hosted checkout flow (Square page, return to your site with thank-you message).
* **Documentation** — README steps for Elementor and Beaver Builder.

= 1.3.7 =
* **Pay for Order / invoice link** — unpaid WooCommerce orders get a **Square payment link (Pay for Order)** panel on the order edit screen.
* **Copy payment link** — one-click copy of the customer **order-pay** URL (secured with order key).
* **Email payment link to customer** — sends the payment link from WordPress (`wp_mail`) in one click; shows billing email and adds an order note.
* **Order actions** — **Email Square payment link to customer** also available in the Order actions dropdown.
* **Hosted checkout on order-pay** — no on-site card form; customer pays on Square Hosted Checkout (avoids typical on-site Square **EMPTY_VALUE** errors).
* **Documentation** — README Pay for Order flow, FAQ, and comparison section updates.

= 1.3.6 =
* **Documentation** — README SEO and guides: **WooCommerce Square** headings, expanded refund documentation (step-by-step, webhooks, sandbox, troubleshooting), updated short description, and **How this plugin compares** (hosted checkout vs typical on-site and sync-heavy Square plugins).

= 1.3.5 =
* **WooCommerce refunds** — refund paid orders from the WooCommerce order screen (full or partial); refunds are sent to Square using the stored payment ID.

= 1.3.4 =
* **Gutenberg block** — **Square Payment Link** block now appears in the block inserter (title, category, icon, and keywords were missing).

= 1.3.3 =
* **WooCommerce checkout** — orders stay **Pending** when customers are redirected to Square Hosted Checkout; they move to **Processing** only after Square confirms payment (fixes abandoned checkouts showing as Processing too early).
* **Webhooks** — Square payment-completed webhooks now update orders that are still **Pending** after redirect.

= 1.3.2 =
* **Fluent Forms Pro** — Square Hosted Checkout payment method using your existing Square connection.
* **Payment link button** — `[square_payment_link]` shortcode and **Square Payment Link** Gutenberg block for pages and posts without WooCommerce or a form plugin.
* **Documentation** — README updates for wallets, Fluent Forms, payment links, and Gutenberg usage.

= 1.3.1 =
* **Cash App Pay & Afterpay** — payment links now pass `accepted_payment_methods` (Cash App Pay and Afterpay/Clearpay) per Square Checkout API requirements so enabled wallets appear on hosted checkout.

= 1.3.0 =
* **WPForms** — Square Hosted Checkout field, Payments Square Connect panel, one-time payments and subscription signup.
* **24/7 support** — help available anytime via Support page (email, WhatsApp, forum).

= 1.2.x (1.2.0 – 1.2.2) =
* Automatic Square OAuth token renewal; connect screen shows last renewal time.
* WooCommerce SKU catalog matching and Square inventory sync on paid orders.
* Documentation and plugin listing improvements.

= 1.1.x (1.1.0 – 1.1.9) =
* Admin menu: Connect, Checkout Settings (Beta), Subscription Plans, Support.
* Subscriptions for WooCommerce and Contact Form 7; checkout customization on Square hosted pages.
* WooCommerce itemized checkout lines; connection, Cash App Pay, and checkout settings fixes.

= 1.0.x (1.0.0 – 1.0.9) =
* Initial release: Square Hosted Checkout for WooCommerce and Contact Form 7, one shared Square connection.
* OAuth reliability, site URL change handling, and connection setup improvements.
