Skip to content

WooCommerce Plugin ​

The official Genius Checkout for WooCommerce plugin lets WordPress stores accept cards through Genius Checkout with no code.

Installation ​

  1. Download genius-checkout-for-woocommerce.zip from your merchant dashboard.
  2. In WordPress admin, go to Plugins → Add New → Upload Plugin.
  3. Upload the zip and activate.

Configuration ​

In WooCommerce → Settings → Payments → Genius Checkout, fill in:

SettingDescription
API KeyYour gc_test_ or gc_live_ key
Webhook SecretFrom the GC dashboard's Webhooks page
Send Order DetailsWhen enabled, line items, tax, and description flow through to the gateway and receipt

What's supported ​

  • Simple products and subscriptions
  • WooCommerce Subscriptions — automatic renewals via stored token
  • Block checkout and classic checkout
  • Refunds issued from the WooCommerce admin (full or partial)
  • Detailed private order notes with gateway IDs and decline reasons

Order meta stored on each order ​

The plugin records the following meta fields on every paid WooCommerce order — handy for support, refunds, and reconciliation:

KeyValue
_gc_session_idCheckout session ID
_gc_transaction_idTransaction ID (used for refunds)
_gc_receipt_numberHuman-readable receipt number
_gc_gateway_transaction_idUnderlying gateway reference
_gc_card_brandCard brand (Visa, Mastercard, etc.)
_gc_card_last4Last 4 digits
_gc_token_idReusable token for renewals

Subscriptions ​

If WooCommerce Subscriptions is active, the plugin uses the stored _gc_token_id to charge renewals automatically on the WooCommerce schedule. Failed renewals follow your WooCommerce dunning settings.

Refunds ​

In the order detail page, click Refund as you would for any WooCommerce gateway. The plugin calls POST /api/v1/payments/{transaction_id}/refund and posts a private note with the refund ID.

Saved cards (picker on checkout) ​

Signed-in WooCommerce customers see a list of previously-stored cards at checkout, courtesy of the platform's GET /api/v1/customers/{external_customer_id}/payment-tokens endpoint.

How it wires up inside the plugin:

  1. The plugin records each cardholder's WooCommerce user id as external_customer_id when they first check out (we map wp_users.ID → GC customers.external_customer_id).
  2. At checkout, the plugin hits the platform endpoint with the merchant's API key to retrieve the saved-card list. Only {id, brand, last4, expiry_month, expiry_year} is surfaced to the browser — the encrypted token stays on the platform.
  3. The shopper's selection (a pt_… external id) is threaded into the _gc_payment_token_id order meta. Block checkout reads it via the registered Store API extension; classic checkout reads it from a hidden form field.
  4. On place-order, the plugin charges that token via POST /api/v1/payments with payment_token_id. If empty, it falls back to the hosted-redirect flow.

API key never reaches the browser. The list fetch happens in PHP from the WP plugin, mirroring the Magento 2 module's Controller/Index/Savedcards proxy pattern.

To force only the hosted-redirect flow (no saved-card UI), uncheck Show saved cards under WooCommerce → Settings → Payments → Genius Checkout. The Magento 2 module reads the same setting from its own admin panel.

Troubleshooting ​

  • Decline notes appear in the order activity log with the gateway ISO code.
  • Webhook delivery can be inspected and replayed from the GC dashboard's Webhooks page.
  • The plugin's debug log is at WooCommerce → Status → Logs → genius-checkout.

Released under the proprietary Genius Checkout license.