Saga Payments for WooCommerce

Description

Saga Payments for WooCommerce is a full-featured payment gateway built for Nordic merchants. Accept secure payments through multiple payment methods with enterprise-grade features:

Payment Methods

  • Card Payments – Visa, Mastercard, American Express, Discover
  • Vipps – Norway’s most popular mobile payment app
  • Klarna – Buy now, pay later
  • Apple Pay – Fast checkout for Apple users
  • Google Pay – Fast checkout for Android users
  • Swish – Sweden’s most popular mobile payment app
  • MobilePay – Denmark and Finland’s popular mobile payment app

Features

  • Easy Setup – Just enter your Merchant ID, Terminal ID, and Public Key
  • Saved Payment Methods – Customers can save cards for faster checkout
  • WooCommerce Subscriptions – Full support for recurring payments with automatic renewals
  • WooCommerce Pre-Orders – Charge customers when pre-ordered products become available
  • Authorize & Capture – Authorize payments and capture later, or capture immediately
  • Auto-Capture – Automatically capture when order status changes to Processing/Completed
  • Auto-Void – Automatically void authorizations when orders are cancelled
  • Express Checkout – Apple Pay/Google Pay buttons on product pages and cart
  • WooCommerce Blocks – Full support for Blocks Checkout including saved cards
  • HPOS Compatible – Full support for High-Performance Order Storage
  • Refunds – Full and partial refunds directly from WooCommerce admin
  • Professional Design – Clean, responsive payment widget

Plugin Integrations

  • ✅ WooCommerce Subscriptions – Automatic recurring payments
  • ✅ WooCommerce Pre-Orders – Charge on release
  • ✅ WooCommerce Blocks – Full Blocks checkout support
  • ✅ WooCommerce HPOS – High-Performance Order Storage
  • ✅ Saga Product Sync – Bidirectional product catalogue synchronisation
  • Compatible with all major WordPress themes

Product Sync (Saga)

Automatic bidirectional synchronisation between your WooCommerce store and Saga:

  • Saga is master — pull products, prices, images, VAT rates and stock from Saga into WooCommerce
  • Push changes back — WooCommerce product edits are automatically pushed to Saga in real-time
  • Inventory sync — relative stock deltas (STOCK_DOWN / STOCK_UP) on order completion, refund and cancellation
  • Auto-retry — failed inventory adjustments are queued and retried every 5 minutes (up to 20 attempts)
  • Full field mapping — prices (øre ↔ kroner), VAT rates (25 / 15 / 12 / 0 %), units, barcodes, cost price, images
  • Admin panel — WooCommerce → Saga Product Sync with connection test, manual sync, and status dashboard
  • Configure via WooCommerce → Saga Product Sync

Requirements

  • WordPress 5.8 or later
  • WooCommerce 7.0 or later
  • PHP 7.4 or later
  • SSL certificate (HTTPS)
  • Saga Payments merchant account

External services

This plugin relies on the following external services to process payments. A Saga Payments merchant account is required.

Saga Payments API

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.

  • Service URL: https://sagapay-api.kristoffer-afc.workers.dev/api
  • Provider: Saga Payments (Cloudflare Worker proxy to Surfboard Payments)
  • Website: https://sagapay.no
  • Terms of Service: https://www.sagapay.no/terms-of-service
  • Privacy Policy: https://www.sagapay.no/personvernserklaering

Saga Payments Merchant Dashboard and Documentation

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.

  • Dashboard URL: https://dashboard.sagapay.no
  • API key documentation URL: https://docs.sagapay.no/guides/getting-started/opprett-api-nokler
  • Webhook documentation URL: https://docs.sagapay.no/guides/getting-started/webhooks
  • Product catalogue documentation URL: https://docs.sagapay.no/api-reference/api-reference/product-catalogue/
  • Provider: Saga Payments
  • Terms of Service: https://www.sagapay.no/terms-of-service
  • Privacy Policy: https://www.sagapay.no/personvernserklaering

Saga OTP Verification Service

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.

  • Service URL: https://saga-otp-worker.kristoffer-afc.workers.dev
  • Provider: Saga Payments (Cloudflare Worker)
  • Website: https://sagapay.no
  • Terms of Service: https://www.sagapay.no/terms-of-service
  • Privacy Policy: https://www.sagapay.no/personvernserklaering

Surfboard Online SDK

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.

  • SDK URL: https://thorium.surfgw.com/OnlineSDK.js
  • Provider: Surfboard Payments
  • Website: https://www.surfboardpayments.com
  • Terms of Service: https://www.surfboardpayments.com/terms-and-conditions
  • Privacy Policy: https://www.surfboardpayments.com/privacy-policy

Surfboard Hosted Payment Page

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.

  • Service URL: https://pay.withsurfboard.com
  • Base URL used by redirects: https://pay.withsurfboard.com/
  • Provider: Surfboard Payments
  • Terms of Service: https://www.surfboardpayments.com/terms-and-conditions
  • Privacy Policy: https://www.surfboardpayments.com/privacy-policy

Surfboard Vipps/MobilePay Intermediary

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.

  • Service URL: https://vipps.withsurfboard.com
  • Provider: Surfboard Payments
  • Terms of Service: https://www.surfboardpayments.com/terms-and-conditions
  • Privacy Policy: https://www.surfboardpayments.com/privacy-policy

Google Pay API

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.

  • SDK URL: https://pay.google.com/gp/p/js/pay.js
  • Provider: Google
  • Website: https://pay.google.com
  • Terms of Service: https://payments.google.com/payments/apis-secure/get_legal_document?ldo=0&ldt=googlepaytos
  • Privacy Policy: https://policies.google.com/privacy

QR Code Generation

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.

Saga Checkout SDK (Diagnostics Only)

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.

  • Provider: Saga Payments
  • Website: https://sagapay.no
  • Terms of Service: https://www.sagapay.no/terms-of-service
  • Privacy Policy: https://www.sagapay.no/personvernserklaering

Saga Product Sync API

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.

  • Service URL: https://api.sagapay.no
  • Provider: Saga Payments
  • Terms of Service: https://www.sagapay.no/terms-of-service
  • Privacy Policy: https://www.sagapay.no/personvernserklaering

Payment Method Logos

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.
SVG 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.

Installation

  1. Upload the saga-payments folder to the /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Go to WooCommerce > Settings > Payments > Saga Payments
  4. Enter your Merchant ID and Store ID (from your Saga Payments dashboard at https://dashboard.sagapay.no) and click Save changes
  5. The plugin will automatically provision your Terminal ID and Public Key on save — no manual key handling required
  6. Enable the payment method and save

FAQ

How do I get a Saga Payments account?

Contact Saga Payments at support@sagapayments.com to set up your merchant account.

Does this support test mode?

Yes! Enable test mode in the plugin settings to test without processing real payments.

Which currencies are supported?

The plugin supports NOK (Norwegian Krone), SEK (Swedish Krona), DKK (Danish Krone), EUR and other currencies supported by Saga Payments.

Can customers save their cards?

Yes! When “Enable Saved Cards” is turned on in settings, logged-in customers can save their cards for faster future checkout.

Does this work with WooCommerce Subscriptions?

Yes! Full integration with WooCommerce Subscriptions for automatic recurring payments, payment method changes, and subscription lifecycle management.

Can I authorize and capture later?

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.

Reviews

There are no reviews for this plugin.

Contributors & Developers

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

Contributors

Changelog

4.0.372

  • WP.ORG LISTING FIXES – Synchronised the legacy saga-payments-gateway.php 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).

4.0.371

  • 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 saga_complete_wallet_payment before surfacing a payment error. SDK-reported FAILED can be overruled by a Saga API PAYMENT_COMPLETED 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.
  • 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.
  • 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.

Older releases

  • 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.