{"id":292686,"date":"2026-05-23T12:53:18","date_gmt":"2026-05-23T12:53:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/saga-payments-for-woocommerce\/"},"modified":"2026-05-23T13:01:07","modified_gmt":"2026-05-23T13:01:07","slug":"saga-payments","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/saga-payments\/","author":23469867,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"4.0.372","stable_tag":"4.0.372","tested":"7.0","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Saga Payments for WooCommerce","header_author":"Saga Payments","header_description":"Accept payments via Saga Payments - Card, Vipps, Klarna, Apple Pay, Google Pay, Swish, MobilePay and more.","assets_banners_color":"","last_updated":"2026-05-23 13:01:07","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/sagapay.no","rating":0,"author_block_rating":0,"active_installs":0,"downloads":19,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"4.0.371":{"tag":"4.0.371","author":"sagapay","date":"2026-05-23 12:52:44"},"4.0.372":{"tag":"4.0.372","author":"sagapay","date":"2026-05-23 13:01:07"}},"upgrade_notice":{"1.0.0":"<p>Initial release of Saga Payments for WooCommerce.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3545137,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3545137,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["4.0.371","4.0.372"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Checkout page with inline payment form showing card, Vipps, Klarna, Apple Pay, Google Pay, Swish, and MobilePay","2":"WooCommerce payment gateway settings with easy configuration","3":"Order management with capture, void, and refund controls"}},"plugin_section":[],"plugin_tags":[150561,223971,6593,158460,286],"plugin_category":[45],"plugin_contributors":[264123],"plugin_business_model":[],"class_list":["post-292686","plugin","type-plugin","status-publish","hentry","plugin_tags-klarna","plugin_tags-mobilepay","plugin_tags-payment-gateway","plugin_tags-vipps","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-sagapay","plugin_committers-sagapay"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/saga-payments\/assets\/icon-128x128.png?rev=3545137","icon_2x":"https:\/\/ps.w.org\/saga-payments\/assets\/icon-256x256.png?rev=3545137","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Saga Payments for WooCommerce is a <strong>full-featured payment gateway<\/strong> built for Nordic merchants. Accept secure payments through multiple payment methods with enterprise-grade features:<\/p>\n\n<h4>Payment Methods<\/h4>\n\n<ul>\n<li><strong>Card Payments<\/strong> - Visa, Mastercard, American Express, Discover<\/li>\n<li><strong>Vipps<\/strong> - Norway's most popular mobile payment app<\/li>\n<li><strong>Klarna<\/strong> - Buy now, pay later<\/li>\n<li><strong>Apple Pay<\/strong> - Fast checkout for Apple users<\/li>\n<li><strong>Google Pay<\/strong> - Fast checkout for Android users<\/li>\n<li><strong>Swish<\/strong> - Sweden's most popular mobile payment app<\/li>\n<li><strong>MobilePay<\/strong> - Denmark and Finland's popular mobile payment app<\/li>\n<\/ul>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Easy Setup<\/strong> - Just enter your Merchant ID, Terminal ID, and Public Key<\/li>\n<li><strong>Saved Payment Methods<\/strong> - Customers can save cards for faster checkout<\/li>\n<li><strong>WooCommerce Subscriptions<\/strong> - Full support for recurring payments with automatic renewals<\/li>\n<li><strong>WooCommerce Pre-Orders<\/strong> - Charge customers when pre-ordered products become available<\/li>\n<li><strong>Authorize &amp; Capture<\/strong> - Authorize payments and capture later, or capture immediately<\/li>\n<li><strong>Auto-Capture<\/strong> - Automatically capture when order status changes to Processing\/Completed<\/li>\n<li><strong>Auto-Void<\/strong> - Automatically void authorizations when orders are cancelled<\/li>\n<li><strong>Express Checkout<\/strong> - Apple Pay\/Google Pay buttons on product pages and cart<\/li>\n<li><strong>WooCommerce Blocks<\/strong> - Full support for Blocks Checkout including saved cards<\/li>\n<li><strong>HPOS Compatible<\/strong> - Full support for High-Performance Order Storage<\/li>\n<li><strong>Refunds<\/strong> - Full and partial refunds directly from WooCommerce admin<\/li>\n<li><strong>Professional Design<\/strong> - Clean, responsive payment widget<\/li>\n<\/ul>\n\n<h4>Plugin Integrations<\/h4>\n\n<ul>\n<li>\u00e2\u0153\u2026 WooCommerce Subscriptions - Automatic recurring payments<\/li>\n<li>\u00e2\u0153\u2026 WooCommerce Pre-Orders - Charge on release<\/li>\n<li>\u00e2\u0153\u2026 WooCommerce Blocks - Full Blocks checkout support<\/li>\n<li>\u00e2\u0153\u2026 WooCommerce HPOS - High-Performance Order Storage<\/li>\n<li>\u00e2\u0153\u2026 <strong>Saga Product Sync<\/strong> - Bidirectional product catalogue synchronisation<\/li>\n<li>Compatible with all major WordPress themes<\/li>\n<\/ul>\n\n<h4>Product Sync (Saga)<\/h4>\n\n<p>Automatic bidirectional synchronisation between your WooCommerce store and Saga:<\/p>\n\n<ul>\n<li><strong>Saga is master<\/strong> \u00e2\u20ac\u201d pull products, prices, images, VAT rates and stock from Saga into WooCommerce<\/li>\n<li><strong>Push changes back<\/strong> \u00e2\u20ac\u201d WooCommerce product edits are automatically pushed to Saga in real-time<\/li>\n<li><strong>Inventory sync<\/strong> \u00e2\u20ac\u201d relative stock deltas (STOCK_DOWN \/ STOCK_UP) on order completion, refund and cancellation<\/li>\n<li><strong>Auto-retry<\/strong> \u00e2\u20ac\u201d failed inventory adjustments are queued and retried every 5 minutes (up to 20 attempts)<\/li>\n<li><strong>Full field mapping<\/strong> \u00e2\u20ac\u201d prices (\u00c3\u00b8re \u00e2\u2020\u201d kroner), VAT rates (25 \/ 15 \/ 12 \/ 0 %), units, barcodes, cost price, images<\/li>\n<li><strong>Admin panel<\/strong> \u00e2\u20ac\u201d WooCommerce \u00e2\u2020\u2019 Saga Product Sync with connection test, manual sync, and status dashboard<\/li>\n<li>Configure via WooCommerce \u00e2\u2020\u2019 Saga Product Sync<\/li>\n<\/ul>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 5.8 or later<\/li>\n<li>WooCommerce 7.0 or later<\/li>\n<li>PHP 7.4 or later<\/li>\n<li>SSL certificate (HTTPS)<\/li>\n<li>Saga Payments merchant account<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin relies on the following external services to process payments. A Saga Payments merchant account is required.<\/p>\n\n<h4>Saga Payments API<\/h4>\n\n<p>All payment operations (order creation, payment verification, refunds, captures, voids, and subscription management) are handled through the Saga Payments API proxy server. When a customer initiates a checkout, order data including amount, currency, line items, and customer billing\/shipping information is sent to this service via server-side HTTP requests.<\/p>\n\n<ul>\n<li>Service URL: https:\/\/sagapay-api.kristoffer-afc.workers.dev\/api<\/li>\n<li>Provider: Saga Payments (Cloudflare Worker proxy to Surfboard Payments)<\/li>\n<li>Website: https:\/\/sagapay.no<\/li>\n<li>Terms of Service: https:\/\/www.sagapay.no\/terms-of-service<\/li>\n<li>Privacy Policy: https:\/\/www.sagapay.no\/personvernserklaering<\/li>\n<\/ul>\n\n<h4>Saga Payments Merchant Dashboard and Documentation<\/h4>\n\n<p>The plugin settings screen links store administrators to Saga Payments dashboard and documentation pages for API key, webhook, and product catalogue setup. These links open only when an administrator clicks them. No customer or payment data is sent automatically by these documentation links.<\/p>\n\n<ul>\n<li>Dashboard URL: https:\/\/dashboard.sagapay.no<\/li>\n<li>API key documentation URL: https:\/\/docs.sagapay.no\/guides\/getting-started\/opprett-api-nokler<\/li>\n<li>Webhook documentation URL: https:\/\/docs.sagapay.no\/guides\/getting-started\/webhooks<\/li>\n<li>Product catalogue documentation URL: https:\/\/docs.sagapay.no\/api-reference\/api-reference\/product-catalogue\/<\/li>\n<li>Provider: Saga Payments<\/li>\n<li>Terms of Service: https:\/\/www.sagapay.no\/terms-of-service<\/li>\n<li>Privacy Policy: https:\/\/www.sagapay.no\/personvernserklaering<\/li>\n<\/ul>\n\n<h4>Saga OTP Verification Service<\/h4>\n\n<p>When a guest customer pays with a previously saved card, the plugin sends a one-time password (OTP) verification email via a Cloudflare Worker. Only the customer's email address, a generated OTP code, the store name, and the cart total are sent in the request. No card data is transmitted. The OTP email is delivered via the worker using the Resend email service.<\/p>\n\n<ul>\n<li>Service URL: https:\/\/saga-otp-worker.kristoffer-afc.workers.dev<\/li>\n<li>Provider: Saga Payments (Cloudflare Worker)<\/li>\n<li>Website: https:\/\/sagapay.no<\/li>\n<li>Terms of Service: https:\/\/www.sagapay.no\/terms-of-service<\/li>\n<li>Privacy Policy: https:\/\/www.sagapay.no\/personvernserklaering<\/li>\n<\/ul>\n\n<h4>Surfboard Online SDK<\/h4>\n\n<p>The payment form displayed on your checkout page is rendered by the Surfboard Online SDK. This JavaScript library is loaded from an external server into the customer's browser and handles the secure payment UI including card input fields, Vipps\/MobilePay popups, Klarna widget, and Apple Pay \/ Google Pay buttons. Card data is entered directly into Surfboard-hosted iframes and never touches your server.<\/p>\n\n<ul>\n<li>SDK URL: https:\/\/thorium.surfgw.com\/OnlineSDK.js<\/li>\n<li>Provider: Surfboard Payments<\/li>\n<li>Website: https:\/\/www.surfboardpayments.com<\/li>\n<li>Terms of Service: https:\/\/www.surfboardpayments.com\/terms-and-conditions<\/li>\n<li>Privacy Policy: https:\/\/www.surfboardpayments.com\/privacy-policy<\/li>\n<\/ul>\n\n<h4>Surfboard Hosted Payment Page<\/h4>\n\n<p>When the plugin is configured in redirect mode, or for certain subscription flows, the customer's browser is redirected to a hosted payment page operated by Surfboard Payments. The order amount, currency, and return URLs are passed via the redirect. All payment data is entered on the hosted page.<\/p>\n\n<ul>\n<li>Service URL: https:\/\/pay.withsurfboard.com<\/li>\n<li>Base URL used by redirects: https:\/\/pay.withsurfboard.com\/<\/li>\n<li>Provider: Surfboard Payments<\/li>\n<li>Terms of Service: https:\/\/www.surfboardpayments.com\/terms-and-conditions<\/li>\n<li>Privacy Policy: https:\/\/www.surfboardpayments.com\/privacy-policy<\/li>\n<\/ul>\n\n<h4>Surfboard Vipps\/MobilePay Intermediary<\/h4>\n\n<p>For Vipps and MobilePay payment flows, the Surfboard SDK loads an intermediary page in an iframe to handle the mobile payment authorization. This is managed automatically by the Surfboard Online SDK and serves as the bridge between your store and the Vipps\/MobilePay apps.<\/p>\n\n<ul>\n<li>Service URL: https:\/\/vipps.withsurfboard.com<\/li>\n<li>Provider: Surfboard Payments<\/li>\n<li>Terms of Service: https:\/\/www.surfboardpayments.com\/terms-and-conditions<\/li>\n<li>Privacy Policy: https:\/\/www.surfboardpayments.com\/privacy-policy<\/li>\n<\/ul>\n\n<h4>Google Pay API<\/h4>\n\n<p>When Google Pay is enabled as a payment method, the Google Pay JavaScript SDK is loaded in the customer's browser to render the Google Pay button and handle the payment sheet. Payment token data is returned to your store and forwarded to the Saga Payments API for processing.<\/p>\n\n<ul>\n<li>SDK URL: https:\/\/pay.google.com\/gp\/p\/js\/pay.js<\/li>\n<li>Provider: Google<\/li>\n<li>Website: https:\/\/pay.google.com<\/li>\n<li>Terms of Service: https:\/\/payments.google.com\/payments\/apis-secure\/get_legal_document?ldo=0&amp;ldt=googlepaytos<\/li>\n<li>Privacy Policy: https:\/\/policies.google.com\/privacy<\/li>\n<\/ul>\n\n<h4>QR Code Generation<\/h4>\n\n<p>For Swish payments, if the payment gateway does not return a pre-rendered QR code image, the plugin generates a QR code locally using the bundled qrcode-generator library (MIT license, by Kazuhiko Arase). No external service is called for QR code generation.<\/p>\n\n<h4>Saga Checkout SDK (Diagnostics Only)<\/h4>\n\n<p>The plugin diagnostics page displays the configured SDK endpoint for admin troubleshooting purposes. The actual payment SDK loaded during checkout is the Surfboard Online SDK documented above.<\/p>\n\n<ul>\n<li>Provider: Saga Payments<\/li>\n<li>Website: https:\/\/sagapay.no<\/li>\n<li>Terms of Service: https:\/\/www.sagapay.no\/terms-of-service<\/li>\n<li>Privacy Policy: https:\/\/www.sagapay.no\/personvernserklaering<\/li>\n<\/ul>\n\n<h4>Saga Product Sync API<\/h4>\n\n<p>If the optional product synchronization feature is enabled, the plugin sends product data (name, description, price, SKU, images, categories) from your WooCommerce catalog to the Saga Payments product API for catalogue management. This is an opt-in feature configured in the plugin settings.<\/p>\n\n<ul>\n<li>Service URL: https:\/\/api.sagapay.no<\/li>\n<li>Provider: Saga Payments<\/li>\n<li>Terms of Service: https:\/\/www.sagapay.no\/terms-of-service<\/li>\n<li>Privacy Policy: https:\/\/www.sagapay.no\/personvernserklaering<\/li>\n<\/ul>\n\n<h4>Payment Method Logos<\/h4>\n\n<p>Payment method logos (Visa, Mastercard, Amex, Vipps, Klarna, Apple Pay, Google Pay, Swish, MobilePay) are bundled locally within the plugin in SVG format. No external CDN is used for logo display.\nSVG files and inline SVG markup use the standard SVG namespace URI http:\/\/www.w3.org\/2000\/svg and xlink namespace URI http:\/\/www.w3.org\/1999\/xlink as static XML identifiers; these are not external network requests.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>saga-payments<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<li>Go to WooCommerce &gt; Settings &gt; Payments &gt; Saga Payments<\/li>\n<li>Enter your <strong>Merchant ID<\/strong> and <strong>Store ID<\/strong> (from your Saga Payments dashboard at https:\/\/dashboard.sagapay.no) and click <strong>Save changes<\/strong><\/li>\n<li>The plugin will automatically provision your <strong>Terminal ID<\/strong> and <strong>Public Key<\/strong> on save \u00e2\u20ac\u201d no manual key handling required<\/li>\n<li>Enable the payment method and save<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20get%20a%20saga%20payments%20account%3F\"><h3>How do I get a Saga Payments account?<\/h3><\/dt>\n<dd><p>Contact Saga Payments at support@sagapayments.com to set up your merchant account.<\/p><\/dd>\n<dt id=\"does%20this%20support%20test%20mode%3F\"><h3>Does this support test mode?<\/h3><\/dt>\n<dd><p>Yes! Enable test mode in the plugin settings to test without processing real payments.<\/p><\/dd>\n<dt id=\"which%20currencies%20are%20supported%3F\"><h3>Which currencies are supported?<\/h3><\/dt>\n<dd><p>The plugin supports NOK (Norwegian Krone), SEK (Swedish Krona), DKK (Danish Krone), EUR and other currencies supported by Saga Payments.<\/p><\/dd>\n<dt id=\"can%20customers%20save%20their%20cards%3F\"><h3>Can customers save their cards?<\/h3><\/dt>\n<dd><p>Yes! When \"Enable Saved Cards\" is turned on in settings, logged-in customers can save their cards for faster future checkout.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20woocommerce%20subscriptions%3F\"><h3>Does this work with WooCommerce Subscriptions?<\/h3><\/dt>\n<dd><p>Yes! Full integration with WooCommerce Subscriptions for automatic recurring payments, payment method changes, and subscription lifecycle management.<\/p><\/dd>\n<dt id=\"can%20i%20authorize%20and%20capture%20later%3F\"><h3>Can I authorize and capture later?<\/h3><\/dt>\n<dd><p>Yes! Set \"Capture Mode\" to \"Manual\" in settings. Payments will be authorized at checkout and you can capture from the order page when ready to ship.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>4.0.372<\/h4>\n\n<ul>\n<li>WP.ORG LISTING FIXES - Synchronised the legacy <code>saga-payments-gateway.php<\/code> Version header to 4.0.372 (was 4.0.356, which caused wp.org to flag a version mismatch between the plugin header and the SVN tag), bumped tested-up-to to WP 7.0 \/ WC 10.7 in both entry files, removed third-party gateway brand references from the public description, added a setup note clarifying that Terminal ID and Public Key are auto-provisioned on save once Merchant ID and Store ID are entered, and trimmed the long changelog to satisfy the 5,000-word limit (full per-wave history retained in the plugin source).<\/li>\n<\/ul>\n\n<h4>4.0.371<\/h4>\n\n<ul>\n<li>WALLET FAILED BACKEND-VERIFY RESCUE (wave10dv) - For wallet payment methods (Apple Pay, Google Pay, Vipps, Swish, MobilePay) the failed-status branch now performs an authoritative backend verification via <code>saga_complete_wallet_payment<\/code> before surfacing a payment error. SDK-reported FAILED can be overruled by a Saga API <code>PAYMENT_COMPLETED<\/code> status, eliminating a race where a transient wallet SDK failure would mark a successful payment as failed. Also includes wave10du wallet visibility\/polling immediate backend checks at multiple submit gates, fail-open semantics so verified-paid orders are never blocked by client-side state. Hardens against charged-but-declared-failed scenarios across all wallet flows.<\/li>\n<li>WP 7.0 \"Armstrong\" compatibility verified - no breaking changes for the plugin. jQuery retained, PHP 7.4 minimum unchanged, HPOS unchanged, classic checkout unchanged, WC Blocks API unchanged. Plugin tested up to WP 7.0 and WC 10.7.<\/li>\n<li>Many internal stability and reconciliation improvements (waves 10df through 10du) covering Klarna fresh-order rebind, webhook HMAC volume mapping, surfboard poll throttling, real-iframe cancel detection, Klarna repeat-cancel latch reset, and post-success suppression. See plugin source for full wave-by-wave technical notes.<\/li>\n<\/ul>\n\n<h4>Older releases<\/h4>\n\n<ul>\n<li>Full per-version changelog (4.0.0 through 4.0.355) is preserved in the plugin's source repository. WordPress.org limits the readme changelog to 5,000 words, so detailed older entries have been archived there to keep this listing concise.<\/li>\n<\/ul>","raw_excerpt":"Accept payments via Saga Payments - Card, Vipps, Klarna, Apple Pay, Google Pay, Swish, MobilePay and more. A full-featured Nordic payment gateway for  &hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/292686","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=292686"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sagapay"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=292686"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=292686"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=292686"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=292686"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=292686"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=292686"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}