Skip to content

WooCommerce · self-hosted store

Your store, your server, your payment plugin to look after

WooCommerce gives you control over everything, including the parts that break. Adding payments is a plugin install; keeping them working is updates, callbacks and the occasional conflict with another plugin. Plan for both.

Who keeps each layer workingTypical
  1. Your theme and checkout pageWhat the customer seesYou
  2. WooCommerceOrders, stock, the checkout logicYou update
  3. Payment gateway pluginTalks to the provider; receives its noticesYou update
  4. WordPress and other pluginsSecurity, caching, anything that can interfereYou update
  5. HostingServer, SSL certificate, uptimeYou or your host
  6. Payment providerPayment page, methods, settlementProvider
On a self-hosted store, the payment plugin is one piece of software among many that you run. Most payment problems on WooCommerce come from the layers around it.

Two ways a plugin can take payment

Every gateway plugin does one of two things at checkout: sends the customer to the provider to pay, or shows payment fields on your own checkout page. Which one affects what your site has to secure, and how the checkout feels.

Redirect compared with on-page payment in a WooCommerce plugin
Redirect to providerPayment on your page
Customer experienceLeaves your site briefly, then returnsStays on your checkout
Card detailsEntered on the provider's pageEntered in fields the provider hosts inside your page, or, riskier, sent through your server
Your security burdenLowerLower with provider-hosted fields; much higher if card data touches your server
Theme and plugin conflictsFewerMore, since your page renders the fields

When paid orders stay “pending payment”

This is the classic WooCommerce payment problem. The customer paid, the provider knows, but your store never heard. The provider tells your site by calling a URL on it (a callback or webhook), and on a self-hosted site several things can get in the way.

Check the provider's dashboard for failed notices first: it usually shows the URL it tried and the response your site gave. That points straight at the cause.

Common causes of missed payment notices
CauseFix
Security plugin or firewall blocks the providerAllow the plugin's notice URL; check the firewall's log
Caching serves a stale page to the noticeExclude the notice URL and checkout from caching
Site moved or URL changedUpdate the notice URL in the provider's settings
SSL certificate expiredRenew it; many providers won't call an insecure URL
Maintenance mode was onAllow notices through, or check orders placed during it

Updates, conflicts and staging

A WooCommerce store is a set of moving parts that update on their own schedules. A payment plugin that worked last month can break after a WooCommerce update, a theme change or a new plugin that touches the checkout.

Keep a staging copy of the store, apply updates there first, and run a test payment before updating the live site. On a busy store, avoid updating on sale days.

  • Keep everything updated

    WordPress, WooCommerce, theme, payment plugin: security fixes matter.

  • Test on staging

    A test payment after every update to anything near checkout.

  • Few checkout plugins

    Every plugin that changes checkout is a possible conflict.

  • Watch the logs

    The payment plugin's log and your server's error log show problems early.

Test keys, live keys and the mistakes between them

Most providers give you two sets of credentials: test keys that simulate payments, and live keys that move real money. The plugin's settings decide which it uses. Many launch-day problems are simply the wrong keys in the wrong place.

Keep test keys on staging and live keys on production, never the reverse. When you copy the live site to staging, the live keys come with it, so switch them straight away, or staging test orders will charge real customers' cards.

  • Staging uses test keys. Always; check after every copy from live.

  • Live uses live keys. And test mode switched off in the plugin.

  • Notice URLs match the site. A staging URL in the live provider account loses real notices.

  • Keys rotated when people leave. Anyone who saw them shouldn't keep working credentials.

Designing the payment step of your checkout

Because WooCommerce lets you change the checkout, you can also make it worse. A few choices make the biggest difference to how many customers finish paying, especially on phones.

Order the methods

Put the method most of your customers use first, usually UPI.

Fewer fields

Remove checkout fields you don't need; each one costs completions.

Mobile first

Test on a mid-range phone on mobile data, not just a desktop on office Wi-Fi.

Clear failure messages

Tell the customer what happened and let them retry without re-entering everything.

Reconciling orders with settlements

WooCommerce records what each order was worth; your provider settles batches net of charges, refunds and chargebacks. Make sure the plugin sends your WooCommerce order number with each payment, so every settlement line can be traced to an order.

If you use accounting software, decide where the match happens: in WooCommerce, in the accounting system, or in a spreadsheet someone owns. What matters is that it happens on a schedule, not only when numbers look wrong.

A weekly WooCommerce payment check
CheckLooks for
Paid orders vs provider paymentsOrders marked paid without a payment, and the reverse
Pending orders older than a dayMissed notices
Refunds in WooCommerce vs providerRefunds recorded but never sent
Settlement totals vs bank creditsShort or missing payouts

A fast checkout is a paid checkout

On a self-hosted store, checkout speed is your responsibility, and it shows directly in how many customers finish paying. Heavy themes, page builders, chat widgets and tracking scripts all load on the checkout page unless you stop them.

Keep the checkout lean: load only what the payment step needs, exclude checkout from caching that breaks it, and test speed on a phone. Every script on the checkout is also one more thing that could be compromised to skim payment details.

  • Remove what checkout doesn't need. Chat widgets, sliders, extra tracking.

  • Cache carefully. Never cache checkout, cart or payment notice URLs.

  • Choose a light theme. Or at least a light checkout template.

  • Measure on a phone. On mobile data, where most customers are.

Subscriptions and saved cards on WooCommerce

Repeat billing on WooCommerce usually needs a subscriptions extension plus a gateway plugin that supports recurring payments with it. In India, card and UPI recurring payments run under RBI's e-mandate rules, and saved cards work only through tokens; your store never holds card numbers.

Check both halves before selling subscriptions: that the extension and the gateway plugin work together, and that the provider supports mandates for the methods your customers use. See subscription payments and card tokenisation.

Security basics for a store that takes payments

Because you run the server, securing it is your job. Attackers target online stores to inject code that skims card details at checkout, which is one more reason to keep card entry on provider-hosted pages or fields.

  • Plugins only from trusted sources. Never a 'free' copy of a paid plugin.

  • Strong admin access. Two-factor login for every administrator; remove old accounts.

  • API keys kept secret. Only in the plugin settings, never in a theme file or shared chat.

  • Backups. Tested restores, not just backups that exist.

Choosing a plugin you can live with

Who publishes it

The provider itself, not a third party you've never heard of.

How recently it was updated

And whether it's tested with current WooCommerce versions.

How it handles card data

Redirect or provider-hosted fields.

How notices work

And where you can see failed ones.

Refunds from the order screen

Whether a refund in WooCommerce reaches the provider.

Support

Who you call when checkout breaks on a Saturday.

Where Peneu fits

This page doesn't say a Peneu plugin for WooCommerce exists or is published, and no payment method or fee is claimed. Whether Peneu can be used with a WooCommerce store, and how, is confirmed during onboarding. Notices and callbacks in general: collection API handbook.

WooCommerce payment questions

How do I add a payment method to WooCommerce?

By installing the payment provider's gateway plugin, entering the keys from your provider account in its settings, and enabling it under WooCommerce's payment settings. Install plugins only from the official WordPress plugin directory or the provider's own site.

Why do paid orders stay 'pending payment'?

Usually because the provider's notice (callback or webhook) isn't reaching your site: blocked by a security plugin or firewall, broken by a caching rule, or pointed at the wrong URL. The customer paid; your store just wasn't told.

Is it safer to redirect customers to the provider's page?

Redirect or provider-hosted payment fields keep card details off your server, which reduces what your own site has to protect. Taking card details directly on your pages brings much heavier security obligations. Ask each provider how its plugin handles card data.

Do I need to update the payment plugin?

Yes, promptly, along with WordPress and WooCommerce. Updates fix security issues and keep the plugin compatible. Test updates on a staging copy first if your store is busy.

Can a WooCommerce store save cards?

Not as full card numbers: in India, merchants and their payment aggregators can't store them. Saved cards work through network or issuer tokens handled by the provider. See the card tokenisation guide.

Can I run two payment plugins at once?

Yes, many stores offer two providers, for example one for UPI and one for international cards, or a second as a fallback. Each needs its own testing, and both should send order numbers so settlements can be reconciled.

What should I do if checkout breaks after an update?

Restore the previous version of whatever you updated (a staging copy and backups make this quick), check the payment plugin's log, and contact the plugin's publisher with the error. Don't leave a broken checkout live while you investigate.

Does WooCommerce itself charge for payments?

WooCommerce is open-source software you run yourself, so the payment charges come from your provider. Hosting, paid extensions and any paid version of a gateway plugin are separate costs to count.

What should I log to troubleshoot payments?

Turn on the payment plugin's own logging if it has it, keep your server's error logs, and note the provider's payment reference against each order. With those three, most payment problems can be traced in minutes instead of days.

Does Peneu have a WooCommerce plugin?

This page doesn't say a Peneu plugin exists or is published. Whether Peneu can be used with a WooCommerce store, and how, is confirmed during onboarding.

Last reviewed . Examples, amounts and screens marked illustrative are not Peneu figures.