Genius Checkout for WooCommerce

Description

Genius Checkout for WooCommerce lets you accept credit and debit card payments directly on your WooCommerce store, using a secure hosted payment page powered by Genius Checkout.

Why Genius Checkout?

  • Designed for Caribbean and Latin America merchants
  • Supports local currencies: TTD, BBD, JMD, XCD, USD, and more
  • PCI-DSS compliant hosted checkout — no card data touches your server
  • 3DS 2 card authentication included
  • Simple flat-rate pricing with no setup fees
  • Works with the region’s leading gateways and payment methods — Powertranz, Mastercard Payment Gateway Services (MPGS), Wompi, PayPal, and Lynk

How it works

  1. Customer places an order and selects Genius Checkout at checkout
  2. They are redirected to a secure Genius Checkout payment page
  3. After payment, they return to your WooCommerce store
  4. Your order is automatically marked as paid via webhook

Features

  • Hosted payment page — card data does not touch your server, reducing your PCI scope
  • Test and live mode
  • Authorize & Capture and Authorize Only payment actions
  • Full and partial refunds from WooCommerce admin
  • Webhook-based order fulfillment
  • HPOS (High-Performance Order Storage) compatible
  • WooCommerce Subscriptions support — automatic renewals via stored token
  • Configurable payment-method title, accepted-payment-method icons, and provider logo
  • Customer name, email, phone, and billing address prefilled on hosted checkout

Requirements

  • A Genius Checkout merchant account — sign up free
  • WooCommerce 8.0 or higher
  • WordPress 6.0 or higher
  • PHP 8.0 or higher

External services

This plugin connects to the Genius Checkout payment service to process card payments for your WooCommerce store. Genius Checkout is a hosted checkout and payment-orchestration service operated by Genius Checkout; using this plugin requires a Genius Checkout merchant account.

The plugin communicates with the Genius Checkout API at https://app.geniuscheckout.com in the following cases:

  • When a customer places an order and selects Genius Checkout, the plugin creates a checkout session by sending the order amount, currency, order number, return URLs, and the customer’s checkout name, email, phone number, and billing address. Those customer fields prefill the hosted payment form and remain editable. The customer is then redirected to the Genius Checkout hosted payment page to enter their card details. No card data is ever sent to or stored on your WordPress site.
  • When the order returns from the hosted page, the plugin verifies the payment status by requesting the checkout session from the API using your API key.
  • When you issue a refund from the WooCommerce order screen, the plugin sends the transaction reference and refund amount to the API.
  • For subscription renewals, the plugin charges the stored payment token by sending the token reference and amount to the API.
  • Once a day, the plugin performs a health check that sends your stored API key to the API to confirm the key is still valid, so a revoked key is caught before it fails a live order.

Data is only sent when one of the above actions occurs. The plugin does not send analytics, usage, or tracking data.

Your use of the Genius Checkout service is governed by:

  • Terms of Service: https://geniuscheckout.com/terms
  • Privacy Policy: https://geniuscheckout.com/privacy

Privacy Policy

This plugin does not collect or store any personal data on your WordPress site beyond the WooCommerce order data you already hold. Card details are entered on the Genius Checkout hosted payment page and are never transmitted to or stored on your server.

Order, customer contact and billing data required to process a transaction (amount, currency, order reference, name, email, phone number, billing address, and payment result) is shared with the Genius Checkout service as described in the External services section above. See the Genius Checkout Privacy Policy for how that data is handled.

Screenshots

Installation

  1. Upload the plugin folder to /wp-content/plugins/genius-checkout-for-woocommerce/
  2. Activate the plugin through the Plugins menu
  3. Go to WooCommerce > Settings > Payments
  4. Click Genius Checkout and enter your API key from app.geniuscheckout.com
  5. Add your store URL ({your-site}/gc-webhook) as a webhook endpoint in your Genius Checkout dashboard
  6. Paste the webhook signing secret into the plugin settings

FAQ

Do I need a Genius Checkout account?

Yes. You can register for free. There are no setup fees.

Which currencies are supported?

All currencies supported by your configured gateway, including TTD, BBD, JMD, XCD, USD, BRL, COP, MXN, and many more.

Which payment gateways are supported?

Genius Checkout routes your WooCommerce payments through the gateway you connect in your Genius Checkout dashboard. Live today:

  • Powertranz (formerly First Atlantic Commerce)
  • Mastercard Payment Gateway Services (MPGS)
  • Wompi — Colombia: cards, PSE, Nequi, Bancolombia
  • PayPal
  • Lynk — Jamaica digital wallet

You can connect more than one gateway and route by currency or by merchant.

Is my customers’ card data stored on my server?

No. Customers are redirected to a hosted payment page on Genius Checkout’s servers. Your WooCommerce store never handles card numbers.

How do refunds work?

You can issue full or partial refunds directly from the WooCommerce order detail page. Click Refund and Genius Checkout processes the refund via the API.

Can I use the plugin in test mode?

Yes. Enter a test API key (gc_test_...) in the plugin settings — payments will run against the staging gateway and no real money will move.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Genius Checkout for WooCommerce” is open source software. The following people have contributed to this plugin.

Contributors

“Genius Checkout for WooCommerce” has been translated into 1 locale. Thank you to the translators for their contributions.

Translate “Genius Checkout for WooCommerce” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.5.12

  • Fixed: every scheduled renewal after a terminal decline now creates a new Genius Checkout payment attempt and transaction while network retries remain safely idempotent.
  • Fixed: an already-paid renewal order cannot be charged a second time if WooCommerce dispatches its scheduled-payment hook again.
  • Improved: pending renewal approvals are retained as the current attempt instead of being incorrectly marked as a terminal failure.

1.5.11

  • Fixed: structured API errors now show their actionable message in renewal and refund order notes instead of the literal word “Array”.

1.5.10

  • Fixed: a successful retry of a previously declined order is verified before WooCommerce renders its thank-you page, preventing WooCommerce’s stale bank-decline warning from appearing above a paid order and active subscription.

1.5.9

  • Fixed: saved cards can complete a $0 free-trial setup without attempting an invalid zero-value gateway charge.
  • Fixed: successful trial setup now activates the WooCommerce order instead of leaving it failed or treating it as an uncaptured authorization.
  • Fixed: Genius Checkout remains available when customers recover on-hold subscriptions or change a subscription payment method, and replacement tokens are retained for future renewals.
  • Improved: orders and subscriptions now show a masked payment-method hint such as Visa ending in 8021, Lynk wallet ending in 8387, or Nequi account ending in 0593 when the provider supplies one.
  • Fixed: late failure webhooks from an earlier checkout attempt can no longer overwrite a newer successful retry.
  • Improved: buyer-safe checkout-session errors returned by Genius Checkout are shown instead of an unrelated generic retry message.

1.5.8

  • Updated the WordPress.org tags to better surface Genius Checkout, Wompi, Powertranz, FAC, MPGS, First Atlantic Commerce, Lynk, and NCB.

1.5.7

  • Fixed: the accepted-payment-methods settings control now hides the native select once SelectWoo is active, preventing the duplicate side-by-side input field on the WooCommerce settings page.

1.5.6

  • Compatibility: preserves the actionable unauthorized-domain checkout notice with the updated Genius Checkout allowed-domain policy.

1.5.5

  • Improved: checkout now identifies when the store domain is not authorized for Genius Checkout payments instead of showing an unrelated generic retry message.
  • Fixed: Accepted Payment Methods now recovers from an interrupted SelectWoo initialization instead of leaving a blank, hidden selector.

1.5.4

  • New: authorize-only payments remain On hold and expose a native Capture Genius Checkout payment action on the WooCommerce order.
  • Fixed: capture confirmation now moves the order to its paid state while preserving the Genius Checkout transaction and card details.

1.5.3

  • Fixed: the connected-account panel now opens the live Genius Checkout merchant dashboard instead of a nonexistent route.
  • Fixed: cancelling a hosted checkout now returns through WooCommerce’s signed cancel-order URL so pending orders are handled consistently.

1.5.2

  • New: Nequi, PSE, and Bre-B join Lynk and the card networks in the accepted payment-method selector, using official brand artwork.
  • Improved: Powertranz naming now follows the brand’s official capitalization across buyer-facing gateway choices.
  • Improved: refreshed WordPress.org screenshots cover the upgraded settings page, all supported Genius Checkout gateway options, and the WooCommerce checkout presentation.
  • Improved: refreshed the WordPress.org banner with the complete Genius Checkout lockup and all supported gateway brands.

1.5.1

  • New: Lynk joins the accepted payment methods and uses its official checkout wordmark.
  • Improved: accepted payment methods now use official network artwork and a searchable, tag-style settings control.
  • Improved: the connection panel now shows a verified merchant-account identity, environment, and operational details in a clearer connected-state card.

1.5.0

  • New: configure the checkout payment-method title, accepted-card icons, and whether to show the Genius Checkout logo, a custom Media Library logo, or no provider logo.
  • Improved: provider and card artwork is consistently bounded and aligned in both classic and Blocks checkout.
  • Fixed: WooCommerce customer name, email, phone number, and billing-address hints now use the hosted checkout’s canonical prefill contract.

1.4.2

  • Fixed: WooCommerce settings now save without a fatal error on current WooCommerce releases; API-key and webhook-secret validation preserve the last valid value.
  • Fixed: current versioned webhook signatures and X-GC-Event-ID delivery deduplication now match the Genius Checkout platform contract, while legacy signatures remain compatible.
  • Fixed: subscription signups request reusable payment tokens, renewal events resolve consistently, and captured renewals require a transaction ID.
  • Fixed: multicurrency checkouts use the order currency, completed payments require exact signed amount/currency data, and malformed checkout/refund responses fail safely.
  • Improved: checkout, refund, and renewal idempotency; buyer-safe error notices; admin connection diagnostics; Blocks availability checks; and webhook replay protection.

1.4.1

  • New: daily API-key health-check. The plugin pings Genius Checkout once a day with your stored key; if the key has been rotated or revoked it raises a dismissable admin notice and emails the site admin once per failure streak, so a dead key is caught before it fails a live order.
  • Fixed: the payment gateway class is now loaded only after WooCommerce has finished loading, preventing a fatal error on sites where the plugin initialised before WooCommerce.
  • Fixed: corrected the internal text domain so all admin, checkout, and order-note strings load their es / fr / pt translations.
  • Internal: aligned the plugin folder, text domain, and language file names for WordPress.org distribution.

1.3.2

  • Subscriptions: rebound scheduled_subscription_payment to the gateway-specific hook so renewals fire even for orders that took an alternate payment method on the initial signup
  • Block checkout: ship the Genius Checkout brand badge inline with the payment method label in the WC Blocks checkout step
  • Translations: regenerated the POT and filled in 20 missing strings across es / fr / pt — order notes for refund/renewal HTTP failures, correlation_id error lines, and the “card setup for free trial” note now translate correctly
  • Internal: brought GC_PLUGIN_VERSION back in sync with the plugin header (was stuck at 1.2.0 so cache-bust query strings for the Blocks JS asset served stale after upgrade)

1.3.1

  • Defensive: re-set the WC payment transaction id after payment_complete in case a third-party plugin short-circuits the core flow before our handler runs

1.3.0

  • X-Correlation-ID on every outbound API call; failed-order notes now include the correlation_id + platform request_id alongside the gateway error code/message so support can grep platform logs without timestamp triangulation
  • Order notes on failed payments now lead with the buyer-facing decline reason (the same text the customer saw on the hosted checkout), then append the raw gateway reason — so the merchant has the customer’s exact context when they get a support call
  • Removed the legacy 1¢-refund block for $0 trial orders; the platform’s setup-mode session already does a 1-cent auth + immediate void, the post-completion refund was a no-op at best and a confusing audit note at worst
  • Webhook handler reads the new buyer_message field from payment.failed payloads (locale-aware text mapped from ISO 8583 codes on the platform side)

1.2.0

  • Replaced placeholder gateway icon with the official Genius Checkout brand lockup
  • Fixed webhook signature verification to match the platform’s HMAC-SHA256(“{timestamp}.{payload}”, secret) shape with 5-minute replay protection
  • Added X-GC-Event-Type header support for reliable event routing
  • Hardened input sanitization, switched idempotency keys to UUIDv4, added structured logging via WooCommerce Status Logs

1.1.0

  • Subscription renewals via stored Genius Checkout token
  • Improved order-meta tracking for refunds and audit trails

1.0.0

  • Initial release