> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.coinflow.cash/guides/plugins/woo-commerce/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.coinflow.cash/_mcp/server. # WooCommerce Plugin ## Overview The **Coinflow Payments** plugin adds Coinflow as a payment method in your WooCommerce store. When a customer checks out, they are sent to a secure Coinflow checkout page to pay by card, then returned to your store. Coinflow notifies WooCommerce once the payment succeeds and the order is marked paid automatically. This is a no-code integration — you install the plugin, enter your Coinflow credentials, and you're ready to accept payments. It works with both the classic WooCommerce checkout and the newer block-based checkout. > **Info** > > The plugin currently supports payments in **USD**. Coinflow will not appear as an option at checkout if your store's currency is set to anything else. ## Prerequisites Before you begin, make sure you have: * A WordPress site with **WooCommerce** installed and active. * Your store currency set to **USD**. * A **Coinflow merchant account**. If you don't have one yet, [set up your account](/guides/getting-started/account-setup) first. * Your Coinflow **API key** and **webhook validation key**. Contact your Coinflow integrations team to obtain these for your account. ## Set up the plugin #### Install and activate the plugin In your WordPress admin, install the **Coinflow Payments** plugin and activate it. Once active, Coinflow appears in **WooCommerce → Settings → Payments**. #### Open the Coinflow settings From **WooCommerce → Settings → Payments**, select **Coinflow** to open its configuration screen. #### Enter your credentials Fill in the settings below, then enable the gateway: * **Environment** — Choose **Sandbox** while testing, or **Production** to accept live payments. * **API Key** — Your Coinflow API key. * **Webhook Validation Key** — Your Coinflow webhook validation key. This is used to confirm that payment notifications genuinely come from Coinflow. > **Warning** > > The API key and webhook validation key are specific to your account and environment. Contact your Coinflow integrations team to obtain the correct values — do not reuse keys from another store or environment. #### Connect the webhook The settings screen shows a read-only **Webhook URL** for your store (it looks like `https://your-store.com/wp-json/coinflow/v1/webhook`). Copy this URL and add it as a webhook endpoint in your [Coinflow dashboard](/guides/developer-resources/webhooks/configuring-webhooks). This is what lets Coinflow tell your store when a payment has settled, so orders are marked paid automatically. > **Tip** > > The `your-store.com` value above is an **example**. Always copy the exact URL shown on your own settings screen. #### Customize how it appears (optional) You can change how the payment method is presented to shoppers at checkout: * **Title** — The name customers see for the payment method (for example, "Credit Card"). * **Description** — Short text shown when the method is selected. #### Test a payment With the environment set to **Sandbox**, place a test order and complete the payment on the Coinflow checkout page. Confirm the order moves to **Processing** in WooCommerce. When you're satisfied, switch the environment to **Production**. ## How a payment flows 1. The customer selects Coinflow at checkout and places the order. The order starts in **Pending payment**. 2. They are redirected to a secure Coinflow checkout page to enter their card details and pay. 3. After paying, they are returned to your store's order-received page. 4. Coinflow sends a notification to your store and the order is automatically marked paid. ## Order statuses Coinflow keeps your WooCommerce order status in sync with the payment. You'll see the following: | Status | What it means | | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Pending payment** | The order was placed but payment hasn't completed yet. | | **Processing** | Payment succeeded. This is the "paid" state for orders containing physical goods — the order is now ready to fulfill and ship. | | **Completed** | The order has been fulfilled. WooCommerce sets this for digital-only orders automatically; for physical goods, you (or your fulfillment process) mark it complete after shipping. | | **Failed** | The card payment was declined. | | **Refunded** | Coinflow reported a refund on the order. | | **On hold** | Needs review — for example, the paid amount didn't match the order total, or a chargeback was opened. | > **Info** > > An order paid for physical goods stops at **Processing**, not **Completed** — that's standard WooCommerce behavior. **Processing** already means the payment was successful; **Completed** is a fulfillment step you control after the item ships. ## Refunds Refunds are initiated from Coinflow, not from WooCommerce. When a refund is processed on the Coinflow side, the plugin receives the notification and updates the order status to **Refunded**. See [About Refunds](/guides/checkout/payment-scenarios/refunds) for how refunds work with Coinflow. ## Troubleshooting #### Coinflow doesn't appear as a payment option at checkout Confirm that the gateway is **enabled** in **WooCommerce → Settings → Payments → Coinflow**, that an **API key** is entered, and that your store currency is set to **USD**. Coinflow is hidden automatically if any of these are missing. #### Orders stay in “Pending payment” after the customer pays This usually means the webhook isn't reaching your store. Re-check that the **Webhook URL** from the settings screen is added in your Coinflow dashboard, that your **webhook validation key** matches, and that your store is reachable from the internet (a local-only site can't receive notifications). #### An order was placed “On hold” The plugin places an order on hold when something needs review — most commonly when the amount charged doesn't match the order total (for example, the order was edited after checkout began), or when a chargeback is opened. Review the order notes for the specific reason before fulfilling.