﻿=== Payments Square Connect ===
Contributors: wppayments
Tags: woocommerce square, payments, contact form 7, wpforms, fluent forms
Requires at least: 6.0
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.3.9
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

WooCommerce Square hosted checkout: onboarding wizard, Pay for Order links, Elementor & Beaver Builder widgets, refunds, wallets.

== Description ==

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

**Payments Square Connect** is your **WooCommerce Square** integration — built for store owners who want Square payments that *just work* — without checkout breaking, without surprise disconnects, and without inventory falling out of step.

Customers pay on **Square Hosted Checkout** (Square's secure page, not yours). You get **WooCommerce Square** orders with **refunds from wp-admin**, **Pay for Order / invoice links**, plus Contact Form 7, WPForms, Fluent Forms payments, payment link buttons, and subscriptions — all through **one Square connection**.

**Why merchants choose this plugin:**

* **No extra plugin fee** — this plugin does not add a per-payment charge on top of Square's processing rates
* **24/7 support available anytime** — email, WhatsApp, and the WordPress.org forum whenever you need help
* **Checkout that doesn't break** — no card form buried inside your theme; buyers pay on Square and return automatically
* **Always-on Square connection** — access tokens renew in the background so API calls and checkouts keep working
* **WooCommerce Square refunds** — issue full or partial refunds from the order screen; the plugin sends the refund to Square using the stored payment ID
* **WooCommerce Square inventory sync** — match products by **SKU** and Square catalog stock updates when a WooCommerce order is paid
* **One connect, every channel** — **WooCommerce Square** checkout, **Pay for Order links**, plus **Contact Form 7**, **WPForms**, **Fluent Forms**, **payment link buttons** (shortcode, Gutenberg, **Elementor**, **Beaver Builder**), and **subscriptions** from the same account
* **Digital wallets everywhere** — **Apple Pay**, **Google Pay**, **Cash App Pay**, and **Afterpay/Clearpay** on WooCommerce Square checkout, Contact Form 7, WPForms, Fluent Forms, and payment link buttons (when enabled in Square)
* **Security built in** — card data never touches your WordPress server

= How this plugin compares =

Many Square payment plugins for WordPress embed a **card form inside your WooCommerce checkout page** and/or run **heavy bidirectional sync** between WooCommerce and Square. **Payments Square Connect** uses **Square Hosted Checkout** — customers pay on Square's secure page, then return to your site.

**Typical on-site Square checkout plugins**

* Card number, expiry, and CVV fields load inside your theme checkout
* Credit card fields that **do not load**, **do not accept input**, or show **no payment methods** on checkout
* Relies on JavaScript, payment nonces, ZIP/postcode fields, and theme compatibility
* **EMPTY_VALUE** or token errors on pay-for-order and checkout pages (on-site card forms)
* Apple Pay / Google Pay often need domain verification on your store
* Checkout can block other payment gateways when Square is enabled
* SSL or “checkout not secure” warnings tied to on-page card forms
* Currency mismatch errors between Square and WooCommerce during setup

**Typical sync-heavy Square gateway plugins**

* Full product, category, variation, image, and attribute sync (WooCommerce ↔ Square)
* **Critical errors during sync**, products marked **out of stock** after sync, or **duplicate products** in Square
* Categories sync but products do not; variations split or break on import
* Inventory changes in Square not reflected in WooCommerce (or the reverse)
* Plugin overwrites product descriptions or interferes with taxonomies
* Coupon, modifier, and gift-card sync complexity
* Separate free, pro, or add-on modules to enable features
* **ACCESS_TOKEN_EXPIRED** and connection drops until manual reconnect
* **Refund errors** from WooCommerce admin
* WooCommerce order marked complete **before Square payment actually processed**

**Payments Square Connect (this plugin)**

* No card form on your checkout page — pay on Square Hosted Checkout
* **Pay for Order / invoice links** — send customers a payment URL; they pay on Square Hosted Checkout (no on-site card fields or nonce errors)
* No payment nonce errors on WooCommerce checkout (card data never hits WordPress)
* Fewer theme, caching, and JavaScript checkout conflicts
* Apple Pay, Google Pay, Cash App Pay, and Afterpay on Square's page (when enabled in Square)
* Simple SKU-based inventory — same SKU on WooCommerce and Square; stock updates when orders are paid
* No multi-hour catalog import, bidirectional product sync, or duplicate-item sync jobs
* WooCommerce orders stay **Pending** until Square confirms payment, then **Processing**
* **Automatic OAuth token renewal** — less likely to hit expired-token disconnects
* **Refunds from the WooCommerce order screen** when the Square payment ID is stored
* One Square connection for WooCommerce, Contact Form 7, WPForms, Fluent Forms, and payment links
* No paid tier required for core hosted checkout

**Choose on-site card checkout if** you need full Square catalog sync, POS-style product import, category/attribute mirroring, or gift cards embedded in your WooCommerce checkout.

**Choose hosted checkout if** you want the simplest, most reliable checkout — especially when on-site card forms break, sync jobs overwrite stock, or orders complete before payment is confirmed.

= WooCommerce Square stock sync =

Sell on WooCommerce, run your business on Square — keep both sides honest with **WooCommerce Square** inventory sync.

When a product **SKU in WooCommerce matches your Square catalog**, checkout sends that line item to Square with the right catalog link. After payment, **Square inventory updates automatically** so your Square Dashboard reflects what actually sold.

No manual mapping screens — use the **same SKU on both sides** and you're done. No matching SKU? The product still goes to checkout **by name and price** so nothing blocks the sale.

**Tip:** Use matching SKUs on WooCommerce products and Square catalog variations for the smoothest inventory sync.

= A connection that keeps working =

Square Connect should not die quietly after a few weeks.

This plugin **renews your Square access token automatically** (daily checks and before API calls) so payment links, checkout settings, and catalog lookups are less likely to fail with a stale connection. The Connect screen shows when your token was last renewed — reconnect once after updating to pick up the latest permissions.

= Quick start =

**New:** After activation, open **Payments Square Connect → Get started** for the step-by-step onboarding screen (connect Square, pick a location, enable WooCommerce checkout, test order).

1. Install and activate **Payments Square Connect**.
2. Open **Payments Square Connect** in the WordPress admin sidebar.
3. Choose **Sandbox** for testing or **Live** for real payments.
4. Click **Payments Square Connect**, sign in with Square, and pick your **Square Location**.
5. Click **Save connection settings**.
6. Turn on **WooCommerce Square** checkout, Contact Form 7, WPForms, Fluent Forms, and/or payment link buttons (see below).

= Onboarding setup screen =

The **Get started** wizard walks you through setup in a few minutes:

1. **Choose environment** — Sandbox (test) or Live.
2. **Connect Square** — sign in with your Square account (OAuth).
3. **Select Square location** — where payments are deposited.
4. **Enable WooCommerce checkout** — one-click **Enable gateway now** (when WooCommerce is active).
5. **Place a test order** — open your shop or checkout and pay on Square Hosted Checkout.

When finished, click **Finish setup**. You can reopen **Setup guide** anytime from **Payments Square Connect** in the admin sidebar. Use **Skip setup for now** if you prefer the full connection settings screen.

= Payment link button (no form plugin required) =

Add a **Pay Now** button on any page or post — no WooCommerce or form builder required.

**Shortcode**

`[square_payment_link amount="25.00" label="Pay Now" description="Consultation fee"]`

Alias: `[square_pay_link]`

**Gutenberg block**

1. Edit any page or post in the block editor.
2. Click **+** and search for **Square Payment Link**.
3. In the block sidebar, set **Amount**, **Button label**, and optional **Description** / **Currency**.
4. Publish the page. Visitors click the button, complete payment on Square, and return to the same page with a thank-you message.

**Shortcode block:** add a Shortcode block and paste the shortcode above if you prefer.

**Elementor**

1. Edit a page with **Elementor**.
2. Search the widget panel for **Square Payment Link**.
3. Drag it onto the page and set **Amount**, **Button label**, optional **Description**, and **Currency**.
4. Publish. Visitors click the button and pay on Square Hosted Checkout.

**Beaver Builder**

1. Edit a page with **Beaver Builder**.
2. Open the module panel and find **Square Payment Link** under **Payments Square Connect** (or search **Square**).
3. Drag the module onto the layout and set **Amount**, **Button label**, optional **Description**, and **Currency**.
4. Publish. Visitors click the button and pay on Square Hosted Checkout.

= Where to find settings =

Everything is under **Payments Square Connect** in the admin sidebar:

* **Get started** — onboarding wizard for new installs
* **Payments Square Connect** — connect Square, choose Sandbox or Live, pick a location
* **Checkout Settings (Beta)** — wallets, tipping, branding, and policies on Square checkout (**Live mode only**)
* **Subscription Plans** — view your Square plans and copy plan IDs
* **Support** — **24/7 support available anytime** via email, WhatsApp, or the WordPress.org forum

= Connect Square =

Every payment uses this screen first.

1. Go to **Payments Square Connect → Payments Square Connect**.
2. Pick **Sandbox** while testing, or **Live** when you are ready to take real payments.
3. Click **Payments Square Connect** and sign in with your Square account.
4. Choose your **Square Location** from the list.
5. Click **Save connection settings**.

**Tips**

* Start in **Sandbox** so you can test without charging real cards.
* If you move your site to a new address, connect Square again from this page.
* Use **Disconnect Square** if you need to switch accounts.

= WooCommerce Square =

**WooCommerce Square** hosted checkout connects your store to Square without embedding card fields in your theme. WooCommerce itself is **optional** — install it only if you sell through a WooCommerce store.

1. Complete **Connect Square** above.
2. Go to **WooCommerce → Settings → Payments → Payments Square Connect**.
3. Turn the gateway **on**.
4. Set **Title** and **Description** (what shoppers see at checkout). Example: "Pay with Square".
5. Save and place a test order.

**At checkout:** the customer chooses your Square gateway, is sent to Square to pay, then returns to your **Order received** page.

= Pay for Order / invoice payment link =

Collect payment for **manual orders**, **quotes**, **phone sales**, or **unpaid orders** without embedding a card form on your site.

**How it works**

1. Create or open a WooCommerce order that still **needs payment** (for example **Pending**).
2. Set the payment method to **Payments Square Connect** (recommended). When you **email** the link from Order actions, the plugin sets this for you.
3. On the order edit screen, find **Square payment link (Pay for Order)** under the billing details.
4. Click **Email payment link to customer** — WordPress sends the link to the billing email immediately (no Order actions dropdown). Or **Copy payment link** to send it yourself.
5. The customer opens the link, clicks **Pay**, and is redirected to **Square Hosted Checkout** (card, Apple Pay, Google Pay, and other wallets you enabled).
6. After Square confirms payment, the customer returns to your site. The order moves from **Pending** to **Processing** (via return URL and/or Square webhook). Inventory sync runs when the order is paid, same as normal checkout.

**Why merchants use this**

* No card fields on the **order-pay** page — avoids **EMPTY_VALUE** and token errors common with on-site Square plugins.
* Same hosted checkout and wallets as your store checkout.
* **Refunds** still work from the WooCommerce order screen once the Square payment ID is stored.

**Tips**

* The customer payment page is the standard WooCommerce **Pay for order** URL (`checkout/order-pay/...`) secured with the order key.
* Each time the customer clicks **Pay**, a fresh Square Hosted Checkout session is created for the current order total.
* Make sure the order has a **billing email** before clicking **Email payment link to customer**.

**Subscriptions (optional):** create plans in Square, refresh **Subscription Plans** in this plugin, then pick a plan on each WooCommerce subscription product.

= WooCommerce Square refunds =

Refund **one-time WooCommerce Square** orders from wp-admin. The plugin sends the refund to Square using the original payment ID; funds return on Square's normal refund timeline.

**How to refund an order**

1. Go to **WooCommerce → Orders** and open a **paid** order that used Payments Square Connect.
2. In the order items panel, click **Refund**.
3. Enter a **full** or **partial** amount and an optional reason.
4. Confirm the refund. WooCommerce records the refund and the plugin calls Square.
5. Check the **order notes** — they show the Square refund ID and status (for example `COMPLETED` or `PENDING`).

**Full vs partial refunds**

* **Full refund** — refund the entire captured payment (WooCommerce usually pre-fills the remaining refundable total).
* **Partial refund** — enter a smaller amount. You can issue several partial refunds until the payment is fully refunded.

**When refunds work**

* Payment method is **Payments Square Connect**.
* The order is **paid** (Processing or Completed).
* A **Square payment ID** is stored on the order. It is saved when:
  * the customer **returns** from Square Hosted Checkout, or
  * Square sends a **payment completed webhook** to your site (recommended for reliability).

**Configure webhooks (recommended)**

Add your plugin webhook URL in the **Square Developer Dashboard** so payment IDs are saved even if the buyer closes the browser before returning. Find the URL under **Payments Square Connect → Connect** (Webhook URL field).

**Sandbox testing**

1. Connect in **Sandbox** mode and place a test order.
2. Complete payment on Square Sandbox checkout.
3. Refund the order from wp-admin and confirm the note shows a Square refund ID.
4. Verify the refund in your **Square Sandbox** transactions.

**Not available through WooCommerce Square refunds**

* **Contact Form 7**, **WPForms**, **Fluent Forms**, and **payment link** payments — refund in the **Square Dashboard**.
* **Subscription renewal** charges billed by Square — refund in the **Square Dashboard**.
* Orders still **Pending** or without a Square payment ID — wait for payment confirmation, then retry.

**Troubleshooting**

* **"Square payment ID was not found"** — payment not fully confirmed yet; wait for webhook or ask the customer to return from Square, then try again.
* **Refund failed** — enable **Debug Log** on the Connect screen and check **WooCommerce → Status → Logs** (source `shc4wc`).
* **Partial refund rejected** — amount may exceed what Square still allows on that payment; try a lower amount.

= Contact Form 7 =

Contact Form 7 is **optional**. Use it for donations, fees, registrations, and similar forms.

**Payment methods:** One-time CF7 payments use **Square Hosted Checkout** — the same page as **WooCommerce Square** checkout. Buyers can pay with **Apple Pay**, **Google Pay**, **Cash App Pay**, **Afterpay/Clearpay**, or card when those methods are enabled under **Checkout Settings** (and Afterpay in the Square Dashboard). No extra setup per form.

**One-time payment**

1. Connect Square first.
2. Enable wallets under **Checkout Settings → Merchant settings** (Live mode).
3. Add a tag to your form:
   * Fixed amount: `[square_pay amount:25.00]`
   * Amount from a form field: `[square_pay amount-field:your-amount]`
4. Publish the form. After submit, the visitor pays on Square (with your enabled wallets) and returns with a success message.

**Subscription signup**

1. Create plans in Square and copy a plan ID from **Subscription Plans**.
2. Add a tag like: `[square_subscribe variation:YOUR_PLAN_ID name:"Silver Membership" amount:15.00]`

**Note:** Cash App Pay and Afterpay are for one-time CF7 payments only — not subscription signup.

= WPForms =

WPForms is **optional**. Use it for donations, fees, registrations, and similar forms with the familiar WPForms builder.

**Payment methods:** One-time WPForms payments also use **Square Hosted Checkout**. Visitors can pay with **Apple Pay**, **Google Pay**, **Cash App Pay**, **Afterpay/Clearpay**, or card — the same wallets as WooCommerce and Contact Form 7 when enabled in **Checkout Settings**.

**One-time payment**

1. Connect Square first.
2. Enable wallets under **Checkout Settings → Merchant settings** (Live mode).
3. Edit your form in **WPForms → All Forms**.
4. Add a **Single Item** payment field for the amount.
5. Add the **Square Hosted Checkout** field (under Payment fields).
6. Open **Payments** in the form builder and enable **Payments Square Connect → One-time payments**.
7. Publish the form. After submit, the visitor pays on Square (with your enabled wallets) and returns with a success message.

**Subscription signup**

1. Create plans in Square and copy a variation ID from **Subscription Plans**.
2. In the form **Payments** panel, enable **Subscription signup** and paste the **Square plan variation ID**.

**Note:** Cash App Pay and Afterpay are for one-time WPForms payments only — not subscription signup.

= Fluent Forms =

**Fluent Forms Pro** is required (payment module). Use the same Square connection as **WooCommerce Square** — you do not enter separate Square API keys in Fluent Forms.

**Payment methods:** One-time Fluent Forms payments use **Square Hosted Checkout** with **Apple Pay**, **Google Pay**, **Cash App Pay**, **Afterpay/Clearpay**, or card when enabled under **Checkout Settings**.

**One-time payment**

1. Connect Square first.
2. In **Fluent Forms → Global Settings → Payment**, enable the payment module.
3. Open **Payment Methods** and enable **Payments Square Connect**.
4. Create a form with payment item fields, a **Payment Summary**, and a **Payment Method** field.
5. In the Payment Method field, select **Payments Square Connect** / **Square Hosted Checkout**.
6. Publish the form. After submit, the visitor pays on Square and returns with a success message.

**Note:** Subscription items are not supported through this Square hosted checkout integration yet.

= Subscription Plans =

Open **Payments Square Connect → Subscription Plans** to:

* See plans from your Square account
* Click **Refresh from Square** after you add or change plans
* Copy plan IDs for Contact Form 7 tags, WPForms forms, or WooCommerce products

**Good to know:** some payment methods (such as Cash App Pay and Afterpay) are not available for subscription sign-up.

= Checkout Settings (Beta) =

Customize Square checkout for **all** payments created by this plugin — **WooCommerce Square**, Contact Form 7, WPForms, and Fluent Forms.

**Live mode only** — switch to Live on the Connect screen first.

* **Merchant settings** — turn on **Apple Pay**, **Google Pay**, and **Cash App Pay** for every hosted checkout from this plugin. **Afterpay/Clearpay** is enabled or disabled in the Square Dashboard (shown as read-only in the plugin).
* **Location settings** — customer notes, tipping, button style, store policy text

= Requirements =

* WordPress 6.0+
* PHP 7.4+
* A Square seller account
* WooCommerce — optional (for **WooCommerce Square** store checkout)
* Contact Form 7 — optional (for form payments)
* WPForms — optional (for form payments)
* Fluent Forms Pro — optional (for form payments)
* WooCommerce Subscriptions — optional (for recurring products)

== Installation ==

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, and/or add payment link buttons if you need them.

== Frequently Asked Questions ==

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

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

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

= 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. For **one-time WooCommerce Square** orders paid with **Payments Square Connect**, open the order in wp-admin, click **Refund**, and enter an amount. The plugin refunds the original Square payment (full or partial). See **WooCommerce Square refunds** in the Description above for step-by-step instructions.

= 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 if payment IDs are missing — see **WooCommerce Square refunds** above.

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

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

No. Those payments are not WooCommerce orders. Refund them in the **Square Dashboard** (Transactions / Payments).

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

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

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

Yes, with **Fluent Forms Pro**. 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**.

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

== Upgrade Notice ==

= 1.3.9 =
New setup wizard (**Get started**), Pay for Order email links, Elementor and Beaver Builder payment widgets, and onboarding improvements. Update recommended for all merchants.

== Changelog ==

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