{"id":336318,"date":"2026-08-02T01:32:18","date_gmt":"2026-08-02T01:32:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/quickpay-ge-for-woocommerce\/"},"modified":"2026-08-02T02:12:26","modified_gmt":"2026-08-02T02:12:26","slug":"quickpay-ge-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/quickpay-ge-for-woocommerce\/","author":23123361,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.9.14","stable_tag":"2.9.14","tested":"7.0.2","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"QuickPay.ge for WooCommerce","header_author":"Quickpay.ge","header_description":"Accept Georgian payments (BOG, TBC, Credo, Keepz, and more) via Quickpay.ge","assets_banners_color":"","last_updated":"2026-08-02 02:12:26","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/quickpay.ge\/wordpress-plugin","header_author_uri":"https:\/\/quickpay.ge","rating":0,"author_block_rating":0,"active_installs":0,"downloads":61,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.9.11":{"tag":"2.9.11","author":"rehostge","date":"2026-08-02 01:32:00"},"2.9.12":{"tag":"2.9.12","author":"rehostge","date":"2026-08-02 01:46:06"},"2.9.13":{"tag":"2.9.13","author":"rehostge","date":"2026-08-02 02:01:09"},"2.9.14":{"tag":"2.9.14","author":"rehostge","date":"2026-08-02 02:12:26"}},"upgrade_notice":{"2.9.2":"<p>WordPress.org submission release. Clean ZIP guaranteed by git archive build process.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3631419,"resolution":"256x256","location":"assets","locale":"","width":1254,"height":1254}},"assets_banners":[],"assets_blueprints":{},"all_blocks":{"quickpay\/button":{"name":"quickpay\/button","title":"Quickpay Button"}},"tagged_versions":["2.9.11","2.9.12","2.9.13","2.9.14"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3631419,"resolution":"1","location":"assets","locale":"","width":1600,"height":1000},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3631419,"resolution":"2","location":"assets","locale":"","width":1600,"height":1000},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3631419,"resolution":"3","location":"assets","locale":"","width":1600,"height":1000},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3631419,"resolution":"4","location":"assets","locale":"","width":1600,"height":1000},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3631419,"resolution":"5","location":"assets","locale":"","width":1600,"height":1000},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3631419,"resolution":"6","location":"assets","locale":"","width":1600,"height":1000}},"screenshots":{"1":"Quickpay Settings page \u2014 API connection, display mode, gateway selection","2":"Checkout with per-gateway mode \u2014 each payment method shown separately with logo","3":"Checkout with unified mode \u2014 single Quickpay button","4":"Product page with express \"Buy Now\" buttons","5":"WooCommerce order detail with Quickpay payment info and refund controls"}},"plugin_section":[],"plugin_tags":[176973,32104,274201,507,286],"plugin_category":[45],"plugin_contributors":[240607],"plugin_business_model":[],"class_list":["post-336318","plugin","type-plugin","status-publish","hentry","plugin_tags-bog","plugin_tags-georgia","plugin_tags-georgian-payment","plugin_tags-payment","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-rehostge","plugin_committers-rehostge"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/quickpay-ge-for-woocommerce\/assets\/icon-256x256.png?rev=3631419","icon_2x":"https:\/\/ps.w.org\/quickpay-ge-for-woocommerce\/assets\/icon-256x256.png?rev=3631419","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/quickpay-ge-for-woocommerce\/assets\/screenshot-1.png?rev=3631419","caption":"Quickpay Settings page \u2014 API connection, display mode, gateway selection"},{"src":"https:\/\/ps.w.org\/quickpay-ge-for-woocommerce\/assets\/screenshot-2.png?rev=3631419","caption":"Checkout with per-gateway mode \u2014 each payment method shown separately with logo"},{"src":"https:\/\/ps.w.org\/quickpay-ge-for-woocommerce\/assets\/screenshot-3.png?rev=3631419","caption":"Checkout with unified mode \u2014 single Quickpay button"},{"src":"https:\/\/ps.w.org\/quickpay-ge-for-woocommerce\/assets\/screenshot-4.png?rev=3631419","caption":"Product page with express \"Buy Now\" buttons"},{"src":"https:\/\/ps.w.org\/quickpay-ge-for-woocommerce\/assets\/screenshot-5.png?rev=3631419","caption":"WooCommerce order detail with Quickpay payment info and refund controls"},{"src":"https:\/\/ps.w.org\/quickpay-ge-for-woocommerce\/assets\/screenshot-6.png?rev=3631419","caption":""}],"raw_content":"<!--section=description-->\n<p><strong>QuickPay.ge for WooCommerce<\/strong> 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.<\/p>\n\n<p><strong>Supported payment methods:<\/strong><\/p>\n\n<ul>\n<li>BOG Card (Bank of Georgia)<\/li>\n<li>BOG Installment<\/li>\n<li>BOG Buy Now Pay Later (Part by Part)<\/li>\n<li>TBC Card<\/li>\n<li>TBC Installment<\/li>\n<li>Credo Installment<\/li>\n<li>Keepz (card + open banking + QR)<\/li>\n<li>Flitt (card, installment, BNPL)<\/li>\n<li>UniPay<\/li>\n<li>Fastoo<\/li>\n<li>CityPay (crypto)<\/li>\n<li>Moka (United Payment)<\/li>\n<li>PayPal<\/li>\n<li>Paysera<\/li>\n<li>Bank Transfer (manual IBAN)<\/li>\n<li>Cash on Delivery<\/li>\n<\/ul>\n\n<p><strong>Key features:<\/strong><\/p>\n\n<ul>\n<li><strong>Unified checkout button<\/strong> \u2014 single button that opens a branded Quickpay hosted payment page, or<\/li>\n<li><strong>Per-gateway mode<\/strong> \u2014 show each payment method as a separate option at checkout (with logos)<\/li>\n<li><strong>Express \"Buy Now\" buttons<\/strong> on product pages \u2014 bypass the cart entirely (Mode B)<\/li>\n<li><strong>WC Blocks compatible<\/strong> \u2014 works with the modern Cart and Checkout blocks<\/li>\n<li><strong>HPOS compatible<\/strong> \u2014 fully supports WooCommerce High-Performance Order Storage<\/li>\n<li><strong>Automatic refunds<\/strong> \u2014 trigger partial or full refunds directly from the WC order screen<\/li>\n<li><strong>Webhook verification<\/strong> \u2014 all incoming webhooks are HMAC-SHA256 signed and verified<\/li>\n<li><strong>Installment display<\/strong> \u2014 show live installment plan labels on product pages<\/li>\n<li><strong>Test mode<\/strong> \u2014 test keys never hit real gateway APIs<\/li>\n<li><strong>Debug logging<\/strong> \u2014 detailed logs written to WooCommerce \u2192 Status \u2192 Logs<\/li>\n<li><strong>WPML \/ Polylang ready<\/strong> \u2014 all translatable strings registered for multilingual sites<\/li>\n<li><strong>Georgian + English<\/strong> \u2014 full UI translation in both languages<\/li>\n<\/ul>\n\n<p><strong>How it works:<\/strong><\/p>\n\n<ol>\n<li>Merchant signs up at <a href=\"https:\/\/quickpay.ge\">quickpay.ge<\/a> and connects their bank merchant accounts<\/li>\n<li>Install this plugin and enter your API key<\/li>\n<li>Customers pay on the Quickpay hosted payment page (qpy.ge) \u2014 no card data touches your server<\/li>\n<li>A signed webhook confirms payment and WooCommerce order is updated automatically<\/li>\n<\/ol>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.3+<\/li>\n<li>WooCommerce 8.0+<\/li>\n<li>PHP 7.4+<\/li>\n<li>A Quickpay.ge merchant account with at least one active gateway subscription<\/li>\n<\/ul>\n\n<h3>Privacy Policy<\/h3>\n\n<p>This plugin communicates with the Quickpay.ge API (<code>api.quickpay.ge<\/code>) to:<\/p>\n\n<ul>\n<li>Verify API key credentials and fetch available payment gateways<\/li>\n<li>Create payment requests and retrieve payment status<\/li>\n<li>Process refunds<\/li>\n<\/ul>\n\n<p>Payment data (customer name, email, order amount) is transmitted to Quickpay.ge as part of the payment creation request. Please refer to the <a href=\"https:\/\/quickpay.ge\/privacy\">Quickpay.ge Privacy Policy<\/a> for details on how payment data is handled.<\/p>\n\n<p><strong>Optional usage data:<\/strong> if you enable \"Share anonymous usage data\" in Quickpay \u2192 Settings \u2192 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.<\/p>\n\n<p>No data is sent to any third-party service other than Quickpay.ge.<\/p>\n\n<!--section=installation-->\n<h4>Automatic installation<\/h4>\n\n<ol>\n<li>Go to <strong>Plugins \u2192 Add New<\/strong> in your WordPress admin<\/li>\n<li>Search for \"QuickPay.ge for WooCommerce\"<\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong><\/li>\n<\/ol>\n\n<h4>Manual installation<\/h4>\n\n<ol>\n<li>Download the plugin zip from <a href=\"https:\/\/quickpay.ge\">quickpay.ge<\/a><\/li>\n<li>Go to <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong><\/li>\n<li>Upload the zip, then activate<\/li>\n<\/ol>\n\n<h4>Configuration<\/h4>\n\n<ol>\n<li>Go to <strong>Quickpay \u2192 Settings<\/strong> in the WordPress admin sidebar<\/li>\n<li>Enter your API key from your Quickpay.ge dashboard<\/li>\n<li>Click <strong>Test Connection<\/strong> \u2014 the plugin will fetch your available gateways<\/li>\n<li>Copy the Webhook URL shown and paste it into your Quickpay.ge dashboard \u2192 Webhooks<\/li>\n<li>Go to <strong>WooCommerce \u2192 Settings \u2192 Payments<\/strong> and enable Quickpay<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20quickpay.ge%20account%3F\"><h3>Do I need a Quickpay.ge account?<\/h3><\/dt>\n<dd><p>Yes. The plugin is a client for the Quickpay.ge payment gateway API. You need a merchant account at <a href=\"https:\/\/quickpay.ge\">quickpay.ge<\/a> to use it.<\/p><\/dd>\n<dt id=\"does%20card%20data%20pass%20through%20my%20server%3F\"><h3>Does card data pass through my server?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"which%20georgian%20banks%20are%20supported%3F\"><h3>Which Georgian banks are supported?<\/h3><\/dt>\n<dd><p>Bank of Georgia (BOG), TBC Bank, Credo Bank, and others \u2014 see the full list in the plugin description. Available gateways depend on which subscriptions are active on your Quickpay.ge account.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20woocommerce%20blocks%3F\"><h3>Does it work with WooCommerce Blocks?<\/h3><\/dt>\n<dd><p>Yes. The plugin registers a native WooCommerce Blocks payment integration and declares full cart\/checkout blocks compatibility.<\/p><\/dd>\n<dt id=\"does%20it%20support%20hpos%20%28high-performance%20order%20storage%29%3F\"><h3>Does it support HPOS (High-Performance Order Storage)?<\/h3><\/dt>\n<dd><p>Yes. The plugin declares <code>custom_order_tables<\/code> compatibility and uses <code>WC_Order<\/code> objects throughout.<\/p><\/dd>\n<dt id=\"can%20i%20test%20payments%20without%20real%20money%3F\"><h3>Can I test payments without real money?<\/h3><\/dt>\n<dd><p>Yes. Use a test API key (starts with <code>qpk_test_<\/code>) \u2014 test keys route through sandbox environments and never hit real gateway APIs.<\/p><\/dd>\n<dt id=\"how%20are%20refunds%20handled%3F\"><h3>How are refunds handled?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"what%20is%20%22mode%20b%22%20%2F%20express%20checkout%3F\"><h3>What is \"Mode B\" \/ express checkout?<\/h3><\/dt>\n<dd><p>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 \u2014 no cart step required. The WooCommerce order is created automatically when payment is confirmed.<\/p><\/dd>\n<dt id=\"where%20do%20i%20find%20the%20webhook%20url%3F\"><h3>Where do I find the webhook URL?<\/h3><\/dt>\n<dd><p>Go to <strong>Quickpay \u2192 Settings<\/strong> 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 \u2192 Webhooks.<\/p><\/dd>\n<dt id=\"does%20it%20support%20installment%20payment%20display%3F\"><h3>Does it support installment payment display?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.9.14<\/h4>\n\n<ul>\n<li>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 <em>enabled<\/em> gateways against the client-side registry \u2014 it does not consult <code>is_available()<\/code> \u2014 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 <code>canMakePayment()<\/code> 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<\/li>\n<li>Fixed: The distributed plugin ZIP no longer bundles the <code>.wordpress-org<\/code> directory \u2014 roughly 8 MB of WordPress.org listing screenshots that merchants were downloading with every update. Excluded via <code>export-ignore<\/code>, 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<\/li>\n<\/ul>\n\n<h4>2.9.13<\/h4>\n\n<ul>\n<li>Fixed: The real cause behind Quickpay payment methods showing \"Incompatible with block-based checkout\" \u2014 no block integrations were being registered at all. WooCommerce fires <code>woocommerce_blocks_loaded<\/code> from <code>Packages::on_init()<\/code> on <code>plugins_loaded<\/code> priority 10, the same hook and priority this plugin bootstraps on. Because the plugin header declares <code>Requires Plugins: woocommerce<\/code>, WordPress 6.5+ loads WooCommerce first, so that action had already fired by the time the plugin called <code>add_action()<\/code> on it \u2014 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 <code>did_action()<\/code> and registered immediately when the action has already fired, matching the pattern WooCommerce core uses internally<\/li>\n<li>Fixed: Removed a PHP 8 \"undefined array key\" warning when reading <code>display_mode<\/code> before the setting has been saved<\/li>\n<\/ul>\n\n<h4>2.9.12<\/h4>\n\n<ul>\n<li>Fixed: Cart\/Checkout blocks payment methods still showed \"Incompatible with block-based checkout\" after 2.9.11. Root cause: <code>wc-checkout-block.js<\/code> was reading a <code>quickpay_data<\/code> settings key that WooCommerce never actually exposes \u2014 WooCommerce Blocks publishes each registered payment method's data under the shared <code>paymentMethodData<\/code> setting, keyed by integration name, not as a standalone <code>{name}_data<\/code> 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 <code>paymentMethodData.quickpay<\/code> (the same lookup <code>wc.wcSettings.getPaymentMethodData()<\/code> performs internally), fixing both the compatibility flag and the actual checkout behavior<\/li>\n<\/ul>\n\n<h4>2.9.11<\/h4>\n\n<ul>\n<li>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 \u2014 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<\/li>\n<\/ul>\n\n<h4>2.9.10<\/h4>\n\n<ul>\n<li>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 \u2014 icons are now normalized to a consistent max size<\/li>\n<li>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<\/li>\n<\/ul>\n\n<h4>2.9.9<\/h4>\n\n<ul>\n<li>Security\/Privacy: Removed telemetry pings on connect\/disconnect that fired without opt-in consent \u2014 only activation, deactivation, and the weekly heartbeat send data, and only when opted in<\/li>\n<li>Security\/Privacy: Heartbeat telemetry no longer includes the merchant's API key \u2014 only anonymous site\/version data<\/li>\n<li>Changed: Renamed internal option\/transient names to a unique <code>quickpay_<\/code>-prefixed namespace (was <code>woocommerce_quickpay_settings<\/code> \/ <code>qp_*<\/code>) to avoid collisions with other plugins<\/li>\n<\/ul>\n\n<h4>2.9.8<\/h4>\n\n<ul>\n<li>Security: Webhook handler no longer processes requests when no webhook secret is configured \u2014 previously ran in a \"degraded\" unauthenticated mode<\/li>\n<li>Fixed: Custom checkout CSS is now added via <code>wp_add_inline_style()<\/code> instead of an inline <code>&lt;style&gt;<\/code> tag<\/li>\n<li>Added: <code>Requires Plugins: woocommerce<\/code> header<\/li>\n<li>Changed: Usage telemetry (activation\/deactivation\/weekly heartbeat) is now opt-in and off by default \u2014 see Quickpay \u2192 Settings \u2192 Advanced<\/li>\n<li>Added: rehostge as a contributor<\/li>\n<\/ul>\n\n<h4>2.9.7<\/h4>\n\n<ul>\n<li>Fixed: Plugin URI and Author URI no longer point to the same page (required for WordPress.org Plugin Directory submission) \u2014 Plugin URI now points to the plugin's dedicated page at quickpay.ge\/wordpress-plugin<\/li>\n<\/ul>\n\n<h4>2.9.6<\/h4>\n\n<ul>\n<li>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<\/li>\n<\/ul>\n\n<h4>2.9.5<\/h4>\n\n<ul>\n<li>Added: option to use the WooCommerce order number as the bank transfer reference (Quickpay \u2192 Settings \u2192 Advanced)<\/li>\n<\/ul>\n\n<h4>2.9.4<\/h4>\n\n<ul>\n<li>Copy fix: corrected inaccurate \"no bank contract needed\" description text<\/li>\n<\/ul>\n\n<h4>2.9.2<\/h4>\n\n<ul>\n<li>Build fix: pack-release now uses git archive so stale deleted files on the server are never bundled into the ZIP<\/li>\n<\/ul>\n\n<h4>2.9.1<\/h4>\n\n<ul>\n<li>WordPress.org compliance: removed self-hosted update mechanism \u2014 updates are now served through WordPress.org<\/li>\n<li>Code quality: escaping and nonce hardening across admin pages<\/li>\n<li>Fixed: translator comment placement for correct POT\/po file extraction<\/li>\n<li>Fixed: remaining Plugin Check warnings (output escaping, generic hook names)<\/li>\n<\/ul>\n\n<h4>2.9.0<\/h4>\n\n<ul>\n<li>Improved: admin dashboard stats now use WC HPOS-compatible <code>wc_get_orders()<\/code><\/li>\n<li>Fixed: per-gateway mode correctly removes master gateway from available methods list<\/li>\n<li>Internal: version bump to force clean ZIP build for WordPress.org submission<\/li>\n<\/ul>\n\n<h4>2.8.3<\/h4>\n\n<ul>\n<li>Security: Added UUID format validation in webhook handler<\/li>\n<li>Code quality: Replaced inline PHP-in-JS with wp_localize_script for admin settings page<\/li>\n<li>Added: readme.txt and LICENSE.txt for WordPress.org submission<\/li>\n<\/ul>\n\n<h4>2.8.2<\/h4>\n\n<ul>\n<li>Added: Webhook rate limiting (30 req\/min per IP)<\/li>\n<li>Added: Structured logging via Quickpay_Logger<\/li>\n<li>Improved: Cron fallback reconciliation for Mode B orders<\/li>\n<li>Fixed: Per-gateway mode now correctly hides master gateway from checkout<\/li>\n<\/ul>\n\n<h4>2.8.1<\/h4>\n\n<ul>\n<li>Added: WooCommerce Blocks (cart\/checkout blocks) native integration<\/li>\n<li>Added: HPOS (High-Performance Order Storage) compatibility declaration<\/li>\n<li>Improved: Admin settings moved to dedicated Quickpay sidebar menu<\/li>\n<\/ul>\n\n<h4>2.8.0<\/h4>\n\n<ul>\n<li>Added: Express product-page \"Buy Now\" buttons (Mode B)<\/li>\n<li>Added: Per-gateway display mode with individual logos per payment method<\/li>\n<li>Added: Installment plan labels on product pages<\/li>\n<li>Added: WPML \/ Polylang string registration<\/li>\n<\/ul>\n\n<h4>2.7.0<\/h4>\n\n<ul>\n<li>Added: Partial refund webhook handling (payment.partially_refunded)<\/li>\n<li>Added: Debug logging option<\/li>\n<li>Improved: Webhook signature verification with 5-minute replay window<\/li>\n<li>Fixed: Order status idempotency (no double status updates on duplicate webhooks)<\/li>\n<\/ul>\n\n<h4>2.6.0<\/h4>\n\n<ul>\n<li>Added: Cron fallback \u2014 polls pending orders every 15 minutes to catch missed webhooks<\/li>\n<li>Added: Admin \"Refresh Status\" button on order detail page<\/li>\n<li>Fixed: Bank transfer payments now correctly use transfer_pending status<\/li>\n<\/ul>\n\n<h4>2.5.0<\/h4>\n\n<ul>\n<li>Added: Checkout templates support<\/li>\n<li>Added: Test mode indicator in WC payment gateway settings<\/li>\n<li>Improved: API error messages with detailed context<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Complete rewrite for Quickpay.ge API v1<\/li>\n<li>Added: WooCommerce order meta panel with UUID, status, and dashboard link<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Accept Georgian bank payments at WooCommerce checkout \u2014 BOG, TBC, Credo, Keepz, Flitt, UniPay, bank transfer, and more via Quickpay.ge.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/336318","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=336318"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/rehostge"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=336318"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=336318"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=336318"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=336318"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=336318"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=336318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}