> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.coinflow.cash/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.