=== Square Hosted Checkout for WooCommerce ===
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.38
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 ==

**Square Hosted Checkout for WooCommerce** adds a Square payment gateway that sends customers to Square's secure hosted payment page — no card fields in your theme, no JavaScript conflicts, no nonce or EMPTY_VALUE errors.

Connect Square once and accept payments across WooCommerce, Paid Memberships Pro, WPForms, Fluent Forms, Contact Form 7, Ninja Forms, Formidable, MetForm, SureForms, Forminator, and payment link buttons (shortcode, Gutenberg, Elementor, Beaver Builder).

[Live demo](https://payments-connect-square.pages.dev/try/) · [Documentation](https://payments-connect-square.pages.dev/getting-started/) · [Support](https://payments-connect-square.pages.dev/support/)

= Features =

* **Hosted checkout** — customers pay on Square's page and return to your store; card data never touches WordPress
* **Digital wallets** — Apple Pay, Google Pay, Cash App Pay, Afterpay (when enabled in Square)
* **Refunds from wp-admin** — full or partial, right on the WooCommerce order (also WPForms and Fluent Forms payments)
* **Pay for Order links** — email or copy an invoice payment link; optional automatic payment reminders
* **Payment sync** — pending orders are checked automatically and marked paid once payment is completed on Square, no webhooks needed
* **Subscriptions** — WooCommerce subscription products and PMPro recurring memberships billed by Square
* **SKU stock sync** — paid orders update Square inventory; Square inventory webhooks update WooCommerce stock
* **Customer sync** — Square ↔ WordPress customers, automatic every 15 minutes or manual
* **Automatic token renewal** — Square OAuth stays connected in the background
* **Zero platform fees** — you pay Square's normal processing rates only

= Why hosted checkout? =

On-site Square card fields can break after a theme update, plugin conflict, or caching issue. Hosted checkout removes those failure points: connect Square, enable the gateway, and buyers pay on Square's secure page. Orders stay Pending until Square confirms payment.

= Get started =

1. Install and activate, then open **Payments Square Connect → Get started**.
2. Connect Square (Sandbox or Live) and pick a location.
3. Enable the gateway under **WooCommerce → Settings → Payments**.
4. Test checkout — customers pay on Square and return to your Order received page.

= Requirements =

* WordPress 6.0+, PHP 7.4+, a Square seller account
* WooCommerce, PMPro, or a supported form plugin — 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.38 =
* **Payment sync log** — keeps only the last 10 runs; older entries auto-delete.

= 1.3.37 =
* **Payment sync** — every 15 minutes, checks last 3 days of pending Square Connect orders and marks paid when Square shows payment (no webhooks).
* **Connect settings** — toggle, Sync now, Clear log, unpaid order links in activity log.
* **Payments lookup** — Square List Payments fallback window: 7 days → 4 days.

= 1.3.30 =
* **Payment sync** — every 15 minutes, checks last 3 days of pending/on-hold/failed Square Connect orders and marks paid when Square shows payment (no webhooks needed).
* **Connect settings** — toggle, Sync now, Clear log, and run activity log.

= 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.
