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.