Hulo Global home
For WordPress WordPress edition: for any WordPress site, WooCommerce optional. Also available for Vendure: Payments for Vendure
For WordPress

Payments for WordPress

Take card payments on any WordPress site with Stripe: payment forms, pay links, a hosted payment page, refunds and a ledger. Works with WooCommerce.

Install on WordPress: download the zip and upload it under Plugins → Add New → Upload Plugin. Once the free plugin is listed on WordPress.org you will also be able to install it from there.

Requires WordPress 6.5+ and PHP 8.1+. Works on any WordPress site; WooCommerce is optional and switches on the shop features.

Free plugin

What the free plugin does

HULO Payments takes payments through your own Stripe account on any WordPress site. Works on any WordPress site; with WooCommerce it is also a checkout gateway, and every payment lands in the same payments list and ledger.

  • Payment forms: the "HULO payment form" block or the [hulo_payment_form amount="12.50" currency="GBP" description="Workshop ticket"] shortcode. Fixed or customer-chosen amount (allow_custom_amount="1"). The visitor enters their name and e-mail and pays on the hosted payment page. Works without JavaScript.
  • Pay links: create a payment for any amount under HULO → Payments → Pay links and send the link. Pay links stay open for 30 days.
  • Hosted payment page with the Stripe Payment Element: cards, Apple Pay, Google Pay, Link, Klarna and whatever you enable in Stripe; 3-D Secure handled by Stripe. Content-Security-Policy with a per-request nonce, no framing.
  • Server-side verification: the browser never decides a payment is paid. The plugin re-reads the PaymentIntent from Stripe and checks the payment, amount and currency.
  • Signed, idempotent webhooks: Stripe signatures are checked on the raw body with a 5-minute tolerance; each event is applied once; a failure is released so Stripe retries. "Register webhook" sets it up and saves the secret.
  • Refunds, full or partial, from the payment screen (or WooCommerce's refund button). Refunds made in the Stripe dashboard are recorded once.
  • Authorise only: reserve the money and capture or release it later from the payment screen.
  • Disputes land in the ledger and are e-mailed to your ops address.
  • Rules: offer a method only for an amount band, currencies, countries, user roles or signed-in users.
  • Payments list, ledger and dashboard: takings, refunds, disputes and success rate for 7 and 30 days, a transaction list and a webhook log.
  • Developer API for other plugins: create, find, capture, release and refund payments; card risk checks; a filter before every charge and actions on every status change (see README.md).

With WooCommerce it is also a payment gateway for the classic checkout, the Checkout block and the pay-for-order page (HPOS compatible), adds pay later by invoice for orders, applies the rules to every WooCommerce gateway, and keeps each order in step with its payment (status, notes, refunds, capture and release from the order actions).

Pro

HULO Payments Pro is a separate add-on from huloglobal.com. It adds Adyen, PayPal, Mollie, Square, Braintree, GoCardless, Checkout.com and Coinbase Commerce (for forms, pay links and WooCommerce), provider-hosted payment links for any unpaid payment, fallback to another method after a decline, payment surcharges, a weekly report and, with WooCommerce, saved cards. Try Pro free for 14 days, no card: https://huloglobal.com/wordpress-plugins/payments/

Pro add-on

Payments Pro

Needs the free HULO Payments plugin. Works on any WordPress site; with WooCommerce the providers are also checkout gateways and saved cards switch on. Every new install gets a 14-day evaluation with everything on and no card; then subscribe from the banner on HULO → Payments. Prices and plans: https://huloglobal.com/wordpress-plugins/payments/

  • Adyen (Drop-in: cards, wallets, iDEAL, Klarna and 100+ local methods; HMAC notifications), PayPal (buttons, Pay Later, Venmo; verified webhooks), Mollie (hosted checkout; fetch-back webhooks), Square (Web Payments SDK; signed webhooks), Braintree (Drop-in), GoCardless (Bacs, SEPA, ACH direct debit, Instant Bank Pay), Checkout.com (Hosted Payments Page; HMAC workflow webhooks) and Coinbase Commerce (crypto). All of them work for payment forms, pay links and API payments on the hosted payment page, with refunds and manual capture where the provider supports it (Coinbase refunds are made in Coinbase). With WooCommerce each is also a gateway for the classic checkout, the Checkout block and the pay-for-order page.
  • Provider payment links: for any unpaid payment (pay link, quote, invoice) or WooCommerce order, create a Stripe Checkout, Adyen, PayPal, Mollie, Square, Checkout.com or Coinbase payment link; the signed webhook marks it paid.
  • Fallback after a decline: the hosted payment page offers your other methods instead of a dead end.
  • Surcharges: a percentage or fixed fee per method, added to payment-form and pay-link payments, and with WooCommerce as a cart fee.
  • Saved cards (Stripe, WooCommerce only) through WooCommerce payment tokens, in the classic checkout, the Checkout block and My account.
  • Weekly report e-mail (Monday 08:00) from the payments ledger.

When the evaluation or licence ends, Pro pauses: the Pro providers take no new payments and provider links, saved cards, fallback and surcharges switch off. Keys, settings and the ledger are kept, and refunds and webhooks for payments already taken through a Pro provider keep working.

Pricing

Free, then Pro when you want it

Free plugin

£0

Free forever, GPL-licensed.

Pro, monthly or annual

£6.95/month

The first 14 days are free with no card. Subscribe from the plugin page when you're ready; the first charge is taken when the 14 days end. Annual billing gets two months free. Cancel any time.

Subscribe to Payments Pro for WordPress

Pro, lifetime

£139

One payment for one store, including updates.

Buy lifetime licence for Payments Pro for WordPress

Prices follow the currency picker at the top of the page; the checkout bills in GBP, USD, EUR, AUD and CAD. One licence covers one WordPress site.

Install

Installation

  1. Install and activate the plugin.
  2. Open HULO → Payments → Payment methods → Stripe → Set up. Paste your publishable and secret keys (test keys first: pk_test_ / sk_test_), tick Enable and save.
  3. Click "Test keys", then "Register webhook".
  4. Add the "HULO payment form" block to a page, or create a pay link, and pay with Stripe's test card 4242 4242 4242 4242.

For Pro, upload hulo-payments-pro-0.1.0.zip the same way (Plugins → Add New → Upload Plugin) with the free plugin active. The 14 days start automatically, and Pro updates itself from WordPress's Plugins screen.

FAQ

Frequently asked questions

Do I need WooCommerce?

No. Payment forms, pay links, the hosted payment page, refunds, webhooks and the ledger all work on a plain WordPress site. With WooCommerce the same payments also run your checkout.

Do card details touch my server?

No. The Stripe Payment Element runs in Stripe's own frames on the hosted payment page; your server only sees the PaymentIntent id.

Which currency does a payment form use?

The one in the shortcode or block, otherwise the default under Settings (WooCommerce's store currency when WooCommerce is active).

What happens if a webhook arrives twice?

The event id is claimed in the webhook log before anything is applied, so the second delivery is acknowledged and skipped.

What does "Delete data on uninstall" remove?

Payments, the ledger, the webhook log, hosted payment sessions and the plugin's settings. WooCommerce orders, their transaction ids and refunds are never removed.

External services

Free plugin

This plugin connects to Stripe (Stripe, Inc. / Stripe Payments Europe, Ltd.) to take card payments. Nothing is sent until you enter Stripe API keys and enable Stripe.

  • When someone pays, the plugin calls the Stripe API (api.stripe.com) from your server to create and read a PaymentIntent: the amount, currency, the payment's id and reference or order number, the payer's e-mail address (for the receipt) and the site's host name. Refunds, captures and releases send the PaymentIntent id and amount. "Test keys" reads your Stripe account name; "Register webhook" lists and creates webhook endpoints for this site's webhook URL.
  • The hosted payment page loads Stripe.js from js.stripe.com in the payer's browser, which collects the card or wallet details directly for Stripe.
  • Stripe sends signed webhook events (payments, refunds, disputes) to this site's /wp-json/hulo-payments/v1/webhook/stripe endpoint.

Stripe terms: https://stripe.com/legal/ssa — Stripe privacy policy: https://stripe.com/privacy

Payment forms, pay later and the rules use no external service. The plugin makes no other external requests: no tracking, no licence checks, no remote updates.

Pro add-on

Each provider is contacted only after you enter its keys and enable it, and only to take, check, capture, cancel or refund payments, register its webhook or create a payment link. The amount, currency, the payment's id and reference or order number, the payer's e-mail and name and their country are sent; card details are entered in the provider's own page or frames.

  • Adyen (checkout-test.adyen.com / *-checkout-live.adyenpayments.com, management-*.adyen.com; Drop-in from checkoutshopper-*.cdn.adyen.com): https://www.adyen.com/legal/terms-and-conditions — https://www.adyen.com/policies-and-disclaimer/privacy-policy
  • PayPal (api-m.paypal.com / api-m.sandbox.paypal.com; buttons from www.paypal.com): https://www.paypal.com/legalhub/home — https://www.paypal.com/myaccount/privacy/privacyhub
  • Mollie (api.mollie.com): https://www.mollie.com/user-agreement — https://www.mollie.com/privacy
  • Square (connect.squareup.com / connect.squareupsandbox.com; web.squarecdn.com): https://squareup.com/legal/general/ua — https://squareup.com/legal/general/privacy
  • Braintree (payments.braintree-api.com; js.braintreegateway.com): https://www.braintreepayments.com/legal — https://www.paypal.com/myaccount/privacy/privacyhub
  • GoCardless (api.gocardless.com / api-sandbox.gocardless.com): https://gocardless.com/legal/ — https://gocardless.com/privacy/
  • Checkout.com (api.checkout.com / api.sandbox.checkout.com): https://www.checkout.com/legal — https://www.checkout.com/legal/privacy-policy
  • Coinbase Commerce (api.commerce.coinbase.com): https://www.coinbase.com/legal/commerce/terms-of-service — https://www.coinbase.com/legal/privacy

HULO licence server (elite.charity/licence): the evaluation, licence checks, a daily anonymous usage count (payments settled, amounts taken and refunded, disputes, pay-by-link takings — never customer data) and update checks for this add-on. https://huloglobal.com/legal/terms/ — https://huloglobal.com/legal/privacy/

Changelog

0.1.0

  • First release: payment forms (block and shortcode), pay links and a hosted payment page; Stripe with wallets, 3-D Secure, automatic or manual capture, refunds, disputes and signed idempotent webhooks; payments list, ledger and dashboard; rules; standalone payments API for other plugins. With WooCommerce: checkout gateway (classic, block, pay-for-order), pay later by invoice, order sync and the WooCommerce integration API.