QuickPay.ge for WooCommerce

Description

QuickPay.ge for WooCommerce connects your store to all major Georgian payment systems through a single integration. Instead of writing separate code for each bank, you integrate once with Quickpay.ge and get access to every gateway your business has a merchant account with.

Supported payment methods:

  • BOG Card (Bank of Georgia)
  • BOG Installment
  • BOG Buy Now Pay Later (Part by Part)
  • TBC Card
  • TBC Installment
  • Credo Installment
  • Keepz (card + open banking + QR)
  • Flitt (card, installment, BNPL)
  • UniPay
  • Fastoo
  • CityPay (crypto)
  • Moka (United Payment)
  • PayPal
  • Paysera
  • Bank Transfer (manual IBAN)
  • Cash on Delivery

Key features:

  • Unified checkout button — single button that opens a branded Quickpay hosted payment page, or
  • Per-gateway mode — show each payment method as a separate option at checkout (with logos)
  • Express “Buy Now” buttons on product pages — bypass the cart entirely (Mode B)
  • WC Blocks compatible — works with the modern Cart and Checkout blocks
  • HPOS compatible — fully supports WooCommerce High-Performance Order Storage
  • Automatic refunds — trigger partial or full refunds directly from the WC order screen
  • Webhook verification — all incoming webhooks are HMAC-SHA256 signed and verified
  • Installment display — show live installment plan labels on product pages
  • Test mode — test keys never hit real gateway APIs
  • Debug logging — detailed logs written to WooCommerce Status Logs
  • WPML / Polylang ready — all translatable strings registered for multilingual sites
  • Georgian + English — full UI translation in both languages

How it works:

  1. Merchant signs up at quickpay.ge and connects their bank merchant accounts
  2. Install this plugin and enter your API key
  3. Customers pay on the Quickpay hosted payment page (qpy.ge) — no card data touches your server
  4. A signed webhook confirms payment and WooCommerce order is updated automatically

Requirements

  • WordPress 6.3+
  • WooCommerce 8.0+
  • PHP 7.4+
  • A Quickpay.ge merchant account with at least one active gateway subscription

Privacy Policy

This plugin communicates with the Quickpay.ge API (api.quickpay.ge) to:

  • Verify API key credentials and fetch available payment gateways
  • Create payment requests and retrieve payment status
  • Process refunds

Payment data (customer name, email, order amount) is transmitted to Quickpay.ge as part of the payment creation request. Please refer to the Quickpay.ge Privacy Policy for details on how payment data is handled.

Optional usage data: if you enable “Share anonymous usage data” in Quickpay Settings Advanced, the plugin sends your site URL, plugin version, WordPress/WooCommerce/PHP versions on activation, deactivation, and a weekly heartbeat. This is off by default and not required for the plugin to function.

No data is sent to any third-party service other than Quickpay.ge.

Screenshots

Blocks

This plugin provides 1 block.

  • Quickpay Button

Installation

Automatic installation

  1. Go to Plugins Add New in your WordPress admin
  2. Search for “QuickPay.ge for WooCommerce”
  3. Click Install Now, then Activate

Manual installation

  1. Download the plugin zip from quickpay.ge
  2. Go to Plugins Add New Upload Plugin
  3. Upload the zip, then activate

Configuration

  1. Go to Quickpay Settings in the WordPress admin sidebar
  2. Enter your API key from your Quickpay.ge dashboard
  3. Click Test Connection — the plugin will fetch your available gateways
  4. Copy the Webhook URL shown and paste it into your Quickpay.ge dashboard Webhooks
  5. Go to WooCommerce Settings Payments and enable Quickpay

FAQ

Do I need a Quickpay.ge account?

Yes. The plugin is a client for the Quickpay.ge payment gateway API. You need a merchant account at quickpay.ge to use it.

Does card data pass through my server?

No. Customers complete payment on the Quickpay hosted payment page (qpy.ge), which is hosted entirely by Quickpay. No card numbers, CVVs, or sensitive payment data ever touch your WordPress server.

Which Georgian banks are supported?

Bank of Georgia (BOG), TBC Bank, Credo Bank, and others — see the full list in the plugin description. Available gateways depend on which subscriptions are active on your Quickpay.ge account.

Does it work with WooCommerce Blocks?

Yes. The plugin registers a native WooCommerce Blocks payment integration and declares full cart/checkout blocks compatibility.

Does it support HPOS (High-Performance Order Storage)?

Yes. The plugin declares custom_order_tables compatibility and uses WC_Order objects throughout.

Can I test payments without real money?

Yes. Use a test API key (starts with qpk_test_) — test keys route through sandbox environments and never hit real gateway APIs.

How are refunds handled?

You can issue full or partial refunds directly from the WooCommerce order screen. The plugin calls the Quickpay API which forwards the refund request to the original gateway. Refund confirmation arrives via webhook and is recorded in WooCommerce automatically.

What is “Mode B” / express checkout?

Mode B (Express) lets you add “Buy Now” buttons directly on product pages. When a customer clicks, a Quickpay payment is created immediately and the customer is redirected to pay — no cart step required. The WooCommerce order is created automatically when payment is confirmed.

Where do I find the webhook URL?

Go to Quickpay Settings in your WP admin. The webhook URL is shown in the Connection section. Copy it and add it in your Quickpay.ge dashboard under Settings Webhooks.

Does it support installment payment display?

Yes. In Mode B (product page express buttons), you can display static installment labels (e.g. “from 50 GEL/month”) configured in the plugin settings.

Reviews

There are no reviews for this plugin.

Contributors & Developers

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

Contributors

Changelog

2.9.14

  • Fixed: Installment gateways (BOG / TBC / Credo Installment) still showed “Incompatible with block-based checkout” on stores whose currency is not GEL. The blocks script skipped registering them entirely in that case, but WooCommerce decides block compatibility by diffing enabled gateways against the client-side registry — it does not consult is_available() — so a gateway that is enabled but never registered is reported incompatible forever. They are now always registered, with the GEL-only rule enforced in canMakePayment() instead, which WooCommerce skips in the editor but applies at real checkout. Checkout behaviour is unchanged, since the server already withholds these gateways from non-GEL carts
  • Fixed: The distributed plugin ZIP no longer bundles the .wordpress-org directory — roughly 8 MB of WordPress.org listing screenshots that merchants were downloading with every update. Excluded via export-ignore, with a matching guard in the packer’s filesystem fallback. The WordPress.org asset upload is unaffected, as that workflow reads the directory from the checkout rather than the ZIP

2.9.13

  • Fixed: The real cause behind Quickpay payment methods showing “Incompatible with block-based checkout” — no block integrations were being registered at all. WooCommerce fires woocommerce_blocks_loaded from Packages::on_init() on plugins_loaded priority 10, the same hook and priority this plugin bootstraps on. Because the plugin header declares Requires Plugins: woocommerce, WordPress 6.5+ loads WooCommerce first, so that action had already fired by the time the plugin called add_action() on it — the callback silently never ran, so neither the unified nor the per-gateway Cart/Checkout blocks integrations were ever registered, and the checkout script was never enqueued. Now guarded with did_action() and registered immediately when the action has already fired, matching the pattern WooCommerce core uses internally
  • Fixed: Removed a PHP 8 “undefined array key” warning when reading display_mode before the setting has been saved

2.9.12

  • Fixed: Cart/Checkout blocks payment methods still showed “Incompatible with block-based checkout” after 2.9.11. Root cause: wc-checkout-block.js was reading a quickpay_data settings key that WooCommerce never actually exposes — WooCommerce Blocks publishes each registered payment method’s data under the shared paymentMethodData setting, keyed by integration name, not as a standalone {name}_data key. Because of this, the script never received the enabled gateway list at real block checkout either, so in “each gateway separately” mode it silently fell back to registering a single generic option instead of one per gateway. Now reads paymentMethodData.quickpay (the same lookup wc.wcSettings.getPaymentMethodData() performs internally), fixing both the compatibility flag and the actual checkout behavior

2.9.11

  • Fixed: In “each gateway separately” display mode, every individual gateway (BOG Card, BOG Installment, TBC Installment, PayPal, etc.) was flagged “Incompatible with block-based checkout” on the WooCommerce Payments settings screen. The Cart/Checkout blocks payment method registration for each gateway reads its data (name, icon, min/max amount) from the main Quickpay integration’s shared settings payload, but that payload was never enqueued in per-gateway mode because the main integration reported itself as inactive — so the per-gateway checkout script had nothing to register from. The main integration now stays active in per-gateway mode purely to deliver that shared script/data; it no longer registers its own unified payment option there, so checkout behavior is unchanged

2.9.10

  • Fixed: Payment method icons in the “each gateway separately” checkout list rendered at wildly inconsistent sizes on classic checkout, since gateway icon images differ in native dimensions — icons are now normalized to a consistent max size
  • Fixed: In “each gateway separately” display mode, the master Quickpay.ge gateway (superseded by its per-gateway entries) was incorrectly flagged as “not compatible with the Cart and Checkout blocks” on the WooCommerce Payments settings screen

2.9.9

  • Security/Privacy: Removed telemetry pings on connect/disconnect that fired without opt-in consent — only activation, deactivation, and the weekly heartbeat send data, and only when opted in
  • Security/Privacy: Heartbeat telemetry no longer includes the merchant’s API key — only anonymous site/version data
  • Changed: Renamed internal option/transient names to a unique quickpay_-prefixed namespace (was woocommerce_quickpay_settings / qp_*) to avoid collisions with other plugins

2.9.8

  • Security: Webhook handler no longer processes requests when no webhook secret is configured — previously ran in a “degraded” unauthenticated mode
  • Fixed: Custom checkout CSS is now added via wp_add_inline_style() instead of an inline <style> tag
  • Added: Requires Plugins: woocommerce header
  • Changed: Usage telemetry (activation/deactivation/weekly heartbeat) is now opt-in and off by default — see Quickpay Settings Advanced
  • Added: rehostge as a contributor

2.9.7

  • Fixed: Plugin URI and Author URI no longer point to the same page (required for WordPress.org Plugin Directory submission) — Plugin URI now points to the plugin’s dedicated page at quickpay.ge/wordpress-plugin

2.9.6

  • Renamed plugin from “Quickpay for WooCommerce” to “QuickPay.ge for WooCommerce” (and slug from quickpay-for-woocommerce to quickpay-ge-for-woocommerce) to resolve a WordPress.org name collision with an unrelated plugin

2.9.5

  • Added: option to use the WooCommerce order number as the bank transfer reference (Quickpay Settings Advanced)

2.9.4

  • Copy fix: corrected inaccurate “no bank contract needed” description text

2.9.2

  • Build fix: pack-release now uses git archive so stale deleted files on the server are never bundled into the ZIP

2.9.1

  • WordPress.org compliance: removed self-hosted update mechanism — updates are now served through WordPress.org
  • Code quality: escaping and nonce hardening across admin pages
  • Fixed: translator comment placement for correct POT/po file extraction
  • Fixed: remaining Plugin Check warnings (output escaping, generic hook names)

2.9.0

  • Improved: admin dashboard stats now use WC HPOS-compatible wc_get_orders()
  • Fixed: per-gateway mode correctly removes master gateway from available methods list
  • Internal: version bump to force clean ZIP build for WordPress.org submission

2.8.3

  • Security: Added UUID format validation in webhook handler
  • Code quality: Replaced inline PHP-in-JS with wp_localize_script for admin settings page
  • Added: readme.txt and LICENSE.txt for WordPress.org submission

2.8.2

  • Added: Webhook rate limiting (30 req/min per IP)
  • Added: Structured logging via Quickpay_Logger
  • Improved: Cron fallback reconciliation for Mode B orders
  • Fixed: Per-gateway mode now correctly hides master gateway from checkout

2.8.1

  • Added: WooCommerce Blocks (cart/checkout blocks) native integration
  • Added: HPOS (High-Performance Order Storage) compatibility declaration
  • Improved: Admin settings moved to dedicated Quickpay sidebar menu

2.8.0

  • Added: Express product-page “Buy Now” buttons (Mode B)
  • Added: Per-gateway display mode with individual logos per payment method
  • Added: Installment plan labels on product pages
  • Added: WPML / Polylang string registration

2.7.0

  • Added: Partial refund webhook handling (payment.partially_refunded)
  • Added: Debug logging option
  • Improved: Webhook signature verification with 5-minute replay window
  • Fixed: Order status idempotency (no double status updates on duplicate webhooks)

2.6.0

  • Added: Cron fallback — polls pending orders every 15 minutes to catch missed webhooks
  • Added: Admin “Refresh Status” button on order detail page
  • Fixed: Bank transfer payments now correctly use transfer_pending status

2.5.0

  • Added: Checkout templates support
  • Added: Test mode indicator in WC payment gateway settings
  • Improved: API error messages with detailed context

2.0.0

  • Complete rewrite for Quickpay.ge API v1
  • Added: WooCommerce order meta panel with UUID, status, and dashboard link

1.0.0

  • Initial release