{"id":2158,"date":"2026-09-02T10:38:54","date_gmt":"2026-09-02T10:38:54","guid":{"rendered":"https:\/\/group-starlight.com\/?page_id=2158"},"modified":"2026-09-03T09:33:19","modified_gmt":"2026-09-03T09:33:19","slug":"kaspi-qr-woocommerce","status":"publish","type":"page","link":"https:\/\/group-starlight.com\/ru\/guides\/kaspi-qr-woocommerce\/","title":{"rendered":"KZ Pay &#8211; Kaspi QR for WooCommerce"},"content":{"rendered":"<div class=\"wpb-content-wrapper\"><div class=\"vc_row wpb_row vc_row-fluid\"><div class=\"wpb_column vc_column_container vc_col-sm-12\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\">\t\t<article class=\"kz-pay-page kz-pay-page--qr kz-pay-page--auto kz-pay-page--guide\" aria-labelledby=\"kz-pay-qr-title\">\r\n\t\t\t<div class=\"kz-pay-page__orb kz-pay-page__orb--one\" aria-hidden=\"true\"><\/div>\r\n\t\t\t<div class=\"kz-pay-page__orb kz-pay-page__orb--two\" aria-hidden=\"true\"><\/div>\r\n\r\n\t\t\t<div class=\"kz-pay-page__container\">\r\n\t\t\t\t\t\t<header class=\"kz-guide__header\">\r\n\t\t\t<a class=\"kz-guide__breadcrumb\" href=\"\/ru\/guides\/\"><svg class=\"kz-pay-page__arrow\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 18 18\"><path d=\"M4 9h9M10 5l4 4-4 4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>All guides<\/a>\r\n\t\t\t<p class=\"kz-pay-page__eyebrow\">Kaspi QR payments<\/p>\r\n\t\t\t<h1 id=\"kz-pay-qr-title\">Kaspi QR for WooCommerce<\/h1>\r\n\t\t\t<p class=\"kz-guide__intro\">Learn how Kaspi QR checkout works in WooCommerce, how mobile payment links help phone users, and why the order should update only after the final payment result.<\/p>\r\n\t\t\t<div class=\"kz-pay-page__actions\">\r\n\t\t\t\t\t\t<a class=\"kz-pay-page__button kz-pay-page__button--primary\" href=\"#kz-pay-qr-title-lifecycle\">\r\n\t\t\t\t\t\t<span>Understand the payment flow<\/span>\r\n\t\t\t\t\t\t\t<svg class=\"kz-pay-page__arrow\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 18 18\"><path d=\"M4 9h9M10 5l4 4-4 4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t\t<a class=\"kz-pay-page__button kz-pay-page__button--purchase\" href=\"\/ru\/products\/kz-pay\/\">\r\n\t\t\t\t\t\t<span>Explore KZ Pay<\/span>\r\n\t\t\t\t\t\t\t<svg class=\"kz-pay-page__arrow\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 18 18\"><path d=\"M4 9h9M10 5l4 4-4 4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t\t<a class=\"kz-pay-page__button kz-pay-page__button--resource\" href=\"\/ru\/guides\/connect-kaspi-pay-to-woocommerce\/\">\r\n\t\t\t\t\t\t\t<span class=\"kz-pay-page__button-icon\"><svg class=\"kz-pay-page__icon\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 24 24\"><path d=\"M7 3.5h7l4 4V20H7a2 2 0 0 1-2-2V5.5a2 2 0 0 1 2-2Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linejoin=\"round\"\/><path d=\"M14 3.5v5h4M9 12h6M9 15.5h6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\"\/><\/svg><\/span>\r\n\t\t\t\t\t\t<span>Integration guide<\/span>\r\n\t\t\t\t\t\t\t<svg class=\"kz-pay-page__arrow\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 18 18\"><path d=\"M4 9h9M10 5l4 4-4 4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\t\t\t\t\t<\/a>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/header>\r\n\t\t<div class=\"kz-guide__layout\">\r\n\t\t\t<aside class=\"kz-guide__contents\">\r\n\t\t\t\t<div class=\"kz-guide__contents-desktop\">\r\n\t\t\t\t\t<p class=\"kz-guide__contents-title\">On this page<\/p>\r\n\t\t\t\t\t\t\t<nav aria-label=\"On this page\">\r\n\t\t\t<ol>\r\n\t\t\t\t\t\t\t\t\t<li><a class=\"kz-guide__contents-link\" href=\"#kz-pay-qr-title-paths\">Two customer paths<\/a><\/li>\r\n\t\t\t\t\t\t\t\t\t<li><a class=\"kz-guide__contents-link\" href=\"#kz-pay-qr-title-lifecycle\">Payment lifecycle<\/a><\/li>\r\n\t\t\t\t\t\t\t\t\t<li><a class=\"kz-guide__contents-link\" href=\"#kz-pay-qr-title-protection\">Order protection<\/a><\/li>\r\n\t\t\t\t\t\t\t\t\t<li><a class=\"kz-guide__contents-link\" href=\"#kz-pay-qr-title-technical\">Technical details<\/a><\/li>\r\n\t\t\t\t\t\t\t\t\t<li><a class=\"kz-guide__contents-link\" href=\"#kz-pay-qr-title-troubleshooting\">Troubleshooting<\/a><\/li>\r\n\t\t\t\t\t\t\t\t\t<li><a class=\"kz-guide__contents-link\" href=\"#kz-pay-qr-title-faq\">FAQ<\/a><\/li>\r\n\t\t\t\t\t\t\t<\/ol>\r\n\t\t<\/nav>\r\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<details class=\"kz-guide__contents-mobile\">\r\n\t\t\t\t\t<summary>On this page<\/summary>\r\n\t\t\t\t\t\t\t<nav aria-label=\"On this page\">\r\n\t\t\t<ol>\r\n\t\t\t\t\t\t\t\t\t<li><a class=\"kz-guide__contents-link\" href=\"#kz-pay-qr-title-paths\">Two customer paths<\/a><\/li>\r\n\t\t\t\t\t\t\t\t\t<li><a class=\"kz-guide__contents-link\" href=\"#kz-pay-qr-title-lifecycle\">Payment lifecycle<\/a><\/li>\r\n\t\t\t\t\t\t\t\t\t<li><a class=\"kz-guide__contents-link\" href=\"#kz-pay-qr-title-protection\">Order protection<\/a><\/li>\r\n\t\t\t\t\t\t\t\t\t<li><a class=\"kz-guide__contents-link\" href=\"#kz-pay-qr-title-technical\">Technical details<\/a><\/li>\r\n\t\t\t\t\t\t\t\t\t<li><a class=\"kz-guide__contents-link\" href=\"#kz-pay-qr-title-troubleshooting\">Troubleshooting<\/a><\/li>\r\n\t\t\t\t\t\t\t\t\t<li><a class=\"kz-guide__contents-link\" href=\"#kz-pay-qr-title-faq\">FAQ<\/a><\/li>\r\n\t\t\t\t\t\t\t<\/ol>\r\n\t\t<\/nav>\r\n\t\t\t\t\t\t<\/details>\r\n\t\t\t\t\t\t<div class=\"kz-guide__product-prompt\">\r\n\t\t\t<h3>Ready to use KZ Pay?<\/h3>\r\n\t\t\t<p>Open the product page for pricing, trial and Buy Now options.<\/p>\r\n\t\t\t\t\t<a class=\"kz-pay-page__button kz-pay-page__button--secondary\" href=\"\/ru\/products\/kz-pay\/\">\r\n\t\t\t\t\t\t<span>View product and pricing<\/span>\r\n\t\t\t\t\t<\/a>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/aside>\r\n\t\t\t<div class=\"kz-guide__article\">\r\n\t\t<section id=\"kz-pay-qr-title-paths\" class=\"kz-pay-page__section kz-qr-guide__paths\">\r\n\t\t\t\t\t<header class=\"kz-pay-page__section-header\">\r\n\t\t\t<span class=\"kz-pay-page__kicker\">Two customer paths<\/span>\r\n\t\t\t<h2>Desktop QR checkout and mobile payment links<\/h2>\r\n\t\t\t<p>The customer path changes by device, but both paths should wait for a final payment result before WooCommerce marks the order as paid.<\/p>\r\n\t\t<\/header>\r\n\t\t\t\t\t<div class=\"kz-qr-guide__paths-grid\">\r\n\t\t\t\t\t\t\t\t\t<article class=\"kz-qr-guide__path\">\r\n\t\t\t\t\t\t<h3><svg class=\"kz-pay-page__icon\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 24 24\"><path d=\"M4 4h6v6H4V4Zm10 0h6v6h-6V4ZM4 14h6v6H4v-6Zm11 1h2v2h-2v-2Zm3 3h2v2h-2v-2Zm-4 0h2v2h-2v-2Zm4-4h2v2h-2v-2Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linejoin=\"round\"\/><\/svg>Desktop Kaspi QR<\/h3>\r\n\t\t\t\t\t\t<p>The customer places an order on desktop, sees a Kaspi QR code and scans it with the Kaspi app.<\/p>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"kz-qr-guide__screen\">\r\n\t\t\t\t\t\t\t\t<a class=\"kz-qr-guide__screen-link foobox\" href=\"https:\/\/group-starlight.com\/wp-content\/plugins\/starlight-wpbakery-blocks\/assets\/images\/kz-pay\/kz-pay-qr-en.jpg\" rel=\"kz-pay-guide-screenshots\" data-caption-title=\"Desktop Kaspi QR\" data-caption-desc=\"The customer places an order on desktop, sees a Kaspi QR code and scans it with the Kaspi app.\" aria-label=\"Open Desktop Kaspi QR screenshot\"><img src=\"https:\/\/group-starlight.com\/wp-content\/plugins\/starlight-wpbakery-blocks\/assets\/images\/kz-pay\/kz-pay-qr-en.jpg\" alt=\"Desktop Kaspi QR\" class=\"kz-qr-guide__image\" decoding=\"async\" loading=\"lazy\" width=\"1219\" height=\"887\" \/><\/a>\t\t\t\t\t\t\t<\/figure>\r\n\t\t\t\t\t\t\t\t\t\t\t<\/article>\r\n\t\t\t\t\t\t\t\t\t<article class=\"kz-qr-guide__path\">\r\n\t\t\t\t\t\t<h3><svg class=\"kz-pay-page__icon\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 24 24\"><rect x=\"7\" y=\"3\" width=\"10\" height=\"18\" rx=\"2.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"\/><path d=\"M10 18h4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"\/><\/svg>Mobile payment link<\/h3>\r\n\t\t\t\t\t\t<p>The customer places an order on mobile and continues through a Kaspi payment link on the same device.<\/p>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"kz-qr-guide__screen\">\r\n\t\t\t\t\t\t\t\t<a class=\"kz-qr-guide__screen-link foobox\" href=\"https:\/\/group-starlight.com\/wp-content\/plugins\/starlight-wpbakery-blocks\/assets\/images\/kz-pay\/kz-pay-choice-en.jpg\" rel=\"kz-pay-guide-screenshots\" data-caption-title=\"Mobile payment link\" data-caption-desc=\"The customer places an order on mobile and continues through a Kaspi payment link on the same device.\" aria-label=\"Open Mobile payment link screenshot\"><img src=\"https:\/\/group-starlight.com\/wp-content\/plugins\/starlight-wpbakery-blocks\/assets\/images\/kz-pay\/kz-pay-choice-en.jpg\" alt=\"Mobile payment link\" class=\"kz-qr-guide__image\" decoding=\"async\" loading=\"lazy\" width=\"1222\" height=\"786\" \/><\/a>\t\t\t\t\t\t\t<\/figure>\r\n\t\t\t\t\t\t\t\t\t\t\t<\/article>\r\n\t\t\t\t\t\t\t\t\t<article class=\"kz-qr-guide__path\">\r\n\t\t\t\t\t\t<h3><svg class=\"kz-pay-page__icon\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 24 24\"><path d=\"M19 8a7 7 0 0 0-12-2l-2 2m0 0h5M5 16a7 7 0 0 0 12 2l2-2m0 0h-5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>Payment status tracking<\/h3>\r\n\t\t\t\t\t\t<p>KZ Pay checks the payment status and updates the WooCommerce order only after the final result is received.<\/p>\r\n\t\t\t\t\t\t\t\t\t\t\t<\/article>\r\n\t\t\t\t\t\t\t<\/div>\r\n\t\t<\/section>\r\n\r\n\t\t<section id=\"kz-pay-qr-title-lifecycle\" class=\"kz-pay-page__section\">\r\n\t\t\t\t\t\t<header class=\"kz-pay-page__section-header\">\r\n\t\t\t<span class=\"kz-pay-page__kicker\">Payment lifecycle<\/span>\r\n\t\t\t<h2>From WooCommerce order to payment result<\/h2>\r\n\t\t\t<p>Creating a Kaspi QR code or opening a payment link starts the payment attempt. It does not mean the order is paid.<\/p>\r\n\t\t<\/header>\r\n\t\t\t\t\t\t<aside class=\"kz-guide__notice\">\r\n\t\t\t\t\t<h3>Creating the QR code is not payment confirmation<\/h3>\r\n\t\t\t\t\t<p>A QR code on the screen means the customer has a way to pay. The store should wait until KZ Pay receives the final payment result before fulfillment.<\/p>\r\n\t\t\t\t<\/aside>\r\n\t\t\t\t\t\t<ol class=\"kz-pay-page__timeline\">\r\n\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t<span class=\"kz-pay-page__timeline-number\">1<\/span>\r\n\t\t\t\t\t<div>\r\n\t\t\t\t\t\t<h3>WooCommerce order is created<\/h3>\r\n\t\t\t\t\t\t<p>The customer chooses KZ Pay at checkout and WooCommerce creates the order.<\/p>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t<span class=\"kz-pay-page__timeline-number\">2<\/span>\r\n\t\t\t\t\t<div>\r\n\t\t\t\t\t\t<h3>Kaspi QR or payment link is shown<\/h3>\r\n\t\t\t\t\t\t<p>Desktop customers see a Kaspi QR code. Mobile customers can continue through a Kaspi payment link.<\/p>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t<span class=\"kz-pay-page__timeline-number\">3<\/span>\r\n\t\t\t\t\t<div>\r\n\t\t\t\t\t\t<h3>Customer completes payment in Kaspi<\/h3>\r\n\t\t\t\t\t\t<p>The customer confirms the payment inside Kaspi, not on the WooCommerce page itself.<\/p>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t<span class=\"kz-pay-page__timeline-number\">4<\/span>\r\n\t\t\t\t\t<div>\r\n\t\t\t\t\t\t<h3>KZ Pay tracks the result<\/h3>\r\n\t\t\t\t\t\t<p>KZ Pay checks the payment status from WordPress until Kaspi returns a final payment result.<\/p>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t<span class=\"kz-pay-page__timeline-number\">5<\/span>\r\n\t\t\t\t\t<div>\r\n\t\t\t\t\t\t<h3>WooCommerce order updates<\/h3>\r\n\t\t\t\t\t\t<p>WooCommerce should update the order only after the final result is received and matched to the order.<\/p>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t<span class=\"kz-pay-page__timeline-number\">6<\/span>\r\n\t\t\t\t\t<div>\r\n\t\t\t\t\t\t<h3>Expired or failed attempts stay separate<\/h3>\r\n\t\t\t\t\t\t<p>If the payment expires, fails or is cancelled, the order should not be treated as paid.<\/p>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/li>\r\n\t\t\t\t\t<\/ol>\r\n\t\t\t\t<\/section>\r\n\r\n\t\t<section id=\"kz-pay-qr-title-protection\" class=\"kz-pay-page__section\">\r\n\t\t\t\t\t<header class=\"kz-pay-page__section-header\">\r\n\t\t\t<span class=\"kz-pay-page__kicker\">Order protection<\/span>\r\n\t\t\t<h2>When WooCommerce should update the order<\/h2>\r\n\t\t\t<p>A reliable Kaspi QR checkout keeps QR creation, customer confirmation, payment status and WooCommerce order updates as separate steps.<\/p>\r\n\t\t<\/header>\r\n\t\t\t\t\t<div class=\"kz-pay-page__matrix\">\r\n\t\t\t\t\t\t<article class=\"kz-pay-page__check-panel kz-pay-page__check-panel--default\">\r\n\t\t\t<h3>Order completion rules<\/h3>\r\n\t\t\t<ul>\r\n\t\t\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t\t<svg class=\"kz-pay-page__icon\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 20 20\"><path d=\"M4 10.4l3.6 3.6L16 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\t\t\t\t\t\t<span>A displayed Kaspi QR is not a paid result.<\/span>\r\n\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t\t<svg class=\"kz-pay-page__icon\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 20 20\"><path d=\"M4 10.4l3.6 3.6L16 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\t\t\t\t\t\t<span>An opened payment link is not a paid result.<\/span>\r\n\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t\t<svg class=\"kz-pay-page__icon\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 20 20\"><path d=\"M4 10.4l3.6 3.6L16 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\t\t\t\t\t\t<span>WooCommerce should wait for the final payment result.<\/span>\r\n\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t\t<svg class=\"kz-pay-page__icon\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 20 20\"><path d=\"M4 10.4l3.6 3.6L16 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\t\t\t\t\t\t<span>The paid amount should match the WooCommerce order total.<\/span>\r\n\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t<\/ul>\r\n\t\t<\/article>\r\n\t\t\t\t\t\t\t\t<article class=\"kz-pay-page__check-panel kz-pay-page__check-panel--default\">\r\n\t\t\t<h3>Store safeguards<\/h3>\r\n\t\t\t<ul>\r\n\t\t\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t\t<svg class=\"kz-pay-page__icon\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 20 20\"><path d=\"M4 10.4l3.6 3.6L16 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\t\t\t\t\t\t<span>The Kaspi Pay API key should stay server-side.<\/span>\r\n\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t\t<svg class=\"kz-pay-page__icon\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 20 20\"><path d=\"M4 10.4l3.6 3.6L16 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\t\t\t\t\t\t<span>Customer-facing pages should not expose credentials.<\/span>\r\n\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t\t<svg class=\"kz-pay-page__icon\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 20 20\"><path d=\"M4 10.4l3.6 3.6L16 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\t\t\t\t\t\t<span>Order access should remain tied to WooCommerce order access.<\/span>\r\n\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t\t<svg class=\"kz-pay-page__icon\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 20 20\"><path d=\"M4 10.4l3.6 3.6L16 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\t\t\t\t\t\t<span>Support requests should not include API keys or full sensitive logs.<\/span>\r\n\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t<\/ul>\r\n\t\t<\/article>\r\n\t\t\t\t\t\t\t\t<article class=\"kz-pay-page__check-panel kz-pay-page__check-panel--warning\">\r\n\t\t\t<h3>Operational limits<\/h3>\r\n\t\t\t<ul>\r\n\t\t\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t\t<svg class=\"kz-pay-page__icon\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 20 20\"><path d=\"M5 10h10\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\/><\/svg>\t\t\t\t\t\t<span>KZ Pay does not provide a Kaspi Pay account or merchant approval.<\/span>\r\n\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t\t<svg class=\"kz-pay-page__icon\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 20 20\"><path d=\"M5 10h10\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\/><\/svg>\t\t\t\t\t\t<span>WooCommerce checkout currency should be KZT.<\/span>\r\n\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t\t<svg class=\"kz-pay-page__icon\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 20 20\"><path d=\"M5 10h10\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\/><\/svg>\t\t\t\t\t\t<span>Automatic API refunds are not available with the current Kaspi QR integration.<\/span>\r\n\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t\t<svg class=\"kz-pay-page__icon\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 20 20\"><path d=\"M5 10h10\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\/><\/svg>\t\t\t\t\t\t<span>Kaspi Shop marketplace checkout is separate.<\/span>\r\n\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t<\/ul>\r\n\t\t<\/article>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/section>\r\n\r\n\t\t<section id=\"kz-pay-qr-title-technical\" class=\"kz-pay-page__section\">\r\n\t\t\t\t\t<header class=\"kz-pay-page__section-header\">\r\n\t\t\t<span class=\"kz-pay-page__kicker\">Technical details<\/span>\r\n\t\t\t<h2>What happens behind the payment screen<\/h2>\r\n\t\t\t<p>These details are lower on the page because most merchants only need the customer flow, payment status and order update behavior.<\/p>\r\n\t\t<\/header>\r\n\t\t\t\t\t\t\t<div class=\"kz-pay-page__cards kz-pay-page__cards--three\">\r\n\t\t\t\t\t\t\t<article class=\"kz-pay-page__card\">\r\n\t\t\t\t\t<div class=\"kz-pay-page__card-icon\">\r\n\t\t\t\t\t\t<svg class=\"kz-pay-page__icon\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 24 24\"><path d=\"M19 8a7 7 0 0 0-12-2l-2 2m0 0h5M5 16a7 7 0 0 0 12 2l2-2m0 0h-5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<h3>Server-side status checks<\/h3>\r\n\t\t\t\t\t<p>KZ Pay checks payment status from WordPress so the browser page cannot mark an order paid by itself.<\/p>\r\n\t\t\t\t<\/article>\r\n\t\t\t\t\t\t\t<article class=\"kz-pay-page__card\">\r\n\t\t\t\t\t<div class=\"kz-pay-page__card-icon\">\r\n\t\t\t\t\t\t<svg class=\"kz-pay-page__icon\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 24 24\"><path d=\"M7 10V8a5 5 0 0 1 10 0v2M6 10h12v10H6V10Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linejoin=\"round\"\/><path d=\"M12 14v2\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"\/><\/svg>\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<h3>Protected order access<\/h3>\r\n\t\t\t\t\t<p>The payment screen stays tied to the WooCommerce order and its access rules.<\/p>\r\n\t\t\t\t<\/article>\r\n\t\t\t\t\t\t\t<article class=\"kz-pay-page__card\">\r\n\t\t\t\t\t<div class=\"kz-pay-page__card-icon\">\r\n\t\t\t\t\t\t<svg class=\"kz-pay-page__icon\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 24 24\"><circle cx=\"12\" cy=\"13\" r=\"7\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"\/><path d=\"M9 2h6M12 6V3m0 7v4l2.5 1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<h3>Delayed outcomes<\/h3>\r\n\t\t\t\t\t<p>Expired, failed and delayed payment results should be tested before enabling the method for real customers.<\/p>\r\n\t\t\t\t<\/article>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/section>\r\n\r\n\t\t<section id=\"kz-pay-qr-title-troubleshooting\" class=\"kz-pay-page__section\">\r\n\t\t\t\t\t<header class=\"kz-pay-page__section-header\">\r\n\t\t\t<span class=\"kz-pay-page__kicker\">Troubleshooting<\/span>\r\n\t\t\t<h2>Common Kaspi QR payment issues<\/h2>\r\n\t\t\t<p>Use these checks before changing checkout settings or fulfilling an order. Keep API keys, credentials and full sensitive logs out of support messages.<\/p>\r\n\t\t<\/header>\r\n\t\t\t\t\t\t\t<div class=\"kz-guide__disclosures\">\r\n\t\t\t\t\t\t\t\t\t\t\t<details>\r\n\t\t\t\t\t<summary><h3>QR code is not created<\/h3><\/summary>\r\n\t\t\t\t\t\t\t\t\t<dl class=\"kz-pay-page__issue-list\">\r\n\t\t\t\t\t\t<dt>Possible cause<\/dt>\r\n\t\t\t\t\t\t<dd>Checkout setup is incomplete, the order total is invalid or the selected trade point cannot accept the payment.<\/dd>\r\n\t\t\t\t\t\t<dt>What to check<\/dt>\r\n\t\t\t\t\t\t<dd>Check KZT currency, order total, KZ Pay checkout readiness and recent WooCommerce order notes.<\/dd>\r\n\t\t\t\t\t\t<dt>What to do next<\/dt>\r\n\t\t\t\t\t\t<dd>Correct the setup issue and let the customer start a new payment attempt.<\/dd>\r\n\t\t\t\t\t<\/dl>\r\n\t\t\t\t<\/details>\t\t\t\t\t\t\t\t\t\t\t<details>\r\n\t\t\t\t\t<summary><h3>QR code expired<\/h3><\/summary>\r\n\t\t\t\t\t\t\t\t\t<dl class=\"kz-pay-page__issue-list\">\r\n\t\t\t\t\t\t<dt>Possible cause<\/dt>\r\n\t\t\t\t\t\t<dd>The customer did not complete the payment before the provider timeout.<\/dd>\r\n\t\t\t\t\t\t<dt>What to check<\/dt>\r\n\t\t\t\t\t\t<dd>Check the WooCommerce order notes and confirm the attempt is marked expired or failed.<\/dd>\r\n\t\t\t\t\t\t<dt>What to do next<\/dt>\r\n\t\t\t\t\t\t<dd>Ask the customer to create a new payment attempt. Do not reuse the expired QR code.<\/dd>\r\n\t\t\t\t\t<\/dl>\r\n\t\t\t\t<\/details>\t\t\t\t\t\t\t\t\t\t\t<details>\r\n\t\t\t\t\t<summary><h3>Payment remains pending<\/h3><\/summary>\r\n\t\t\t\t\t\t\t\t\t<dl class=\"kz-pay-page__issue-list\">\r\n\t\t\t\t\t\t<dt>Possible cause<\/dt>\r\n\t\t\t\t\t\t<dd>Kaspi has not returned a final result yet or scheduled status checks are delayed.<\/dd>\r\n\t\t\t\t\t\t<dt>What to check<\/dt>\r\n\t\t\t\t\t\t<dd>Check order notes and WordPress scheduled actions.<\/dd>\r\n\t\t\t\t\t\t<dt>What to do next<\/dt>\r\n\t\t\t\t\t\t<dd>Wait for the next check or review the payment in Kaspi Pay before any manual decision.<\/dd>\r\n\t\t\t\t\t<\/dl>\r\n\t\t\t\t<\/details>\t\t\t\t\t\t\t\t\t\t\t<details>\r\n\t\t\t\t\t<summary><h3>Customer paid but order did not update<\/h3><\/summary>\r\n\t\t\t\t\t\t\t\t\t<dl class=\"kz-pay-page__issue-list\">\r\n\t\t\t\t\t\t<dt>Possible cause<\/dt>\r\n\t\t\t\t\t\t<dd>KZ Pay could not safely match the final result to the WooCommerce order.<\/dd>\r\n\t\t\t\t\t\t<dt>What to check<\/dt>\r\n\t\t\t\t\t\t<dd>Verify the payment in the Kaspi Pay app and confirm the amount matches the order total.<\/dd>\r\n\t\t\t\t\t\t<dt>What to do next<\/dt>\r\n\t\t\t\t\t\t<dd>Do not duplicate the payment. Record the decision in WooCommerce and contact support with the order ID and safe error text.<\/dd>\r\n\t\t\t\t\t<\/dl>\r\n\t\t\t\t<\/details>\t\t\t\t\t\t\t\t\t\t\t<details>\r\n\t\t\t\t\t<summary><h3>Mobile payment link does not open<\/h3><\/summary>\r\n\t\t\t\t\t\t\t\t\t<dl class=\"kz-pay-page__issue-list\">\r\n\t\t\t\t\t\t<dt>Possible cause<\/dt>\r\n\t\t\t\t\t\t<dd>The device browser cannot open Kaspi, the link expired or the customer is using an unsupported in-app browser.<\/dd>\r\n\t\t\t\t\t\t<dt>What to check<\/dt>\r\n\t\t\t\t\t\t<dd>Test from a normal mobile browser and confirm the payment attempt is still active.<\/dd>\r\n\t\t\t\t\t\t<dt>What to do next<\/dt>\r\n\t\t\t\t\t\t<dd>Ask the customer to retry checkout or use desktop QR when available.<\/dd>\r\n\t\t\t\t\t<\/dl>\r\n\t\t\t\t<\/details>\t\t\t\t\t\t\t\t\t\t\t<details>\r\n\t\t\t\t\t<summary><h3>Payment failed<\/h3><\/summary>\r\n\t\t\t\t\t\t\t\t\t<dl class=\"kz-pay-page__issue-list\">\r\n\t\t\t\t\t\t<dt>Possible cause<\/dt>\r\n\t\t\t\t\t\t<dd>The customer cancelled, Kaspi declined the payment or the payment attempt ended in a failed state.<\/dd>\r\n\t\t\t\t\t\t<dt>What to check<\/dt>\r\n\t\t\t\t\t\t<dd>Check WooCommerce order notes and the merchant Kaspi Pay record.<\/dd>\r\n\t\t\t\t\t\t<dt>What to do next<\/dt>\r\n\t\t\t\t\t\t<dd>Let the customer retry only with a new valid payment attempt or use another payment method.<\/dd>\r\n\t\t\t\t\t<\/dl>\r\n\t\t\t\t<\/details>\t\t\t\t\t\t\t\t\t\t\t<details>\r\n\t\t\t\t\t<summary><h3>KZ Pay is not available at checkout<\/h3><\/summary>\r\n\t\t\t\t\t\t\t\t\t<dl class=\"kz-pay-page__issue-list\">\r\n\t\t\t\t\t\t<dt>Possible cause<\/dt>\r\n\t\t\t\t\t\t<dd>The gateway is disabled, setup is incomplete, store currency is not KZT or license status needs review.<\/dd>\r\n\t\t\t\t\t\t<dt>What to check<\/dt>\r\n\t\t\t\t\t\t<dd>Check WooCommerce payment settings, KZ Pay readiness, currency and Freemius license or trial status.<\/dd>\r\n\t\t\t\t\t\t<dt>What to do next<\/dt>\r\n\t\t\t\t\t\t<dd>Complete setup and enable KZ Pay only after readiness is clear.<\/dd>\r\n\t\t\t\t\t<\/dl>\r\n\t\t\t\t<\/details>\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/section>\r\n\r\n\t\t<section id=\"kz-pay-qr-title-faq\" class=\"kz-pay-page__section\">\r\n\t\t\t\t\t<header class=\"kz-pay-page__section-header\">\r\n\t\t\t<span class=\"kz-pay-page__kicker\">FAQ<\/span>\r\n\t\t\t<h2>Kaspi QR for WooCommerce FAQ<\/h2>\r\n\t\t\t<p>Short answers about QR checkout, mobile payment links, payment status and order updates.<\/p>\r\n\t\t<\/header>\r\n\t\t\t\t\t<div class=\"kz-guide__disclosures\">\r\n\t\t\t\t\t\t\t\t\t<details>\r\n\t\t\t\t\t\t<summary><h3>What is Kaspi QR in WooCommerce?<\/h3><\/summary>\r\n\t\t\t\t\t\t<p>It is a checkout flow where a WooCommerce customer receives a Kaspi QR code and completes the payment in Kaspi.<\/p>\r\n\t\t\t\t\t<\/details>\r\n\t\t\t\t\t\t\t\t\t<details>\r\n\t\t\t\t\t\t<summary><h3>How do customers pay on desktop?<\/h3><\/summary>\r\n\t\t\t\t\t\t<p>Desktop customers place an order, see the Kaspi QR code on the payment page and scan it with the Kaspi app on another device.<\/p>\r\n\t\t\t\t\t<\/details>\r\n\t\t\t\t\t\t\t\t\t<details>\r\n\t\t\t\t\t\t<summary><h3>How do customers pay on mobile?<\/h3><\/summary>\r\n\t\t\t\t\t\t<p>Mobile customers can continue through a Kaspi payment link on the same device instead of scanning their own screen.<\/p>\r\n\t\t\t\t\t<\/details>\r\n\t\t\t\t\t\t\t\t\t<details>\r\n\t\t\t\t\t\t<summary><h3>Does opening a payment link mean the payment succeeded?<\/h3><\/summary>\r\n\t\t\t\t\t\t<p>No. Opening a payment link only starts or continues the payment attempt. WooCommerce should wait for the final payment result.<\/p>\r\n\t\t\t\t\t<\/details>\r\n\t\t\t\t\t\t\t\t\t<details>\r\n\t\t\t\t\t\t<summary><h3>How does WooCommerce know the payment was completed?<\/h3><\/summary>\r\n\t\t\t\t\t\t<p>KZ Pay tracks payment status and updates the matching WooCommerce order after the final result is received and validated.<\/p>\r\n\t\t\t\t\t<\/details>\r\n\t\t\t\t\t\t\t\t\t<details>\r\n\t\t\t\t\t\t<summary><h3>What happens when a QR code expires?<\/h3><\/summary>\r\n\t\t\t\t\t\t<p>The expired QR code should not be reused. The customer should start a new payment attempt if checkout still allows payment.<\/p>\r\n\t\t\t\t\t<\/details>\r\n\t\t\t\t\t\t\t\t\t<details>\r\n\t\t\t\t\t\t<summary><h3>What happens if a payment fails?<\/h3><\/summary>\r\n\t\t\t\t\t\t<p>A failed payment should not complete the order. The customer can retry with a new valid payment attempt or use another payment method.<\/p>\r\n\t\t\t\t\t<\/details>\r\n\t\t\t\t\t\t\t\t\t<details>\r\n\t\t\t\t\t\t<summary><h3>How are refunds handled?<\/h3><\/summary>\r\n\t\t\t\t\t\t<p>Automatic API refunds are not available with the current Kaspi QR integration. Process the monetary refund in the Kaspi Pay app first, then record it in WooCommerce.<\/p>\r\n\t\t\t\t\t<\/details>\r\n\t\t\t\t\t\t\t\t\t<details>\r\n\t\t\t\t\t\t<summary><h3>Do I need a Kaspi Pay account first?<\/h3><\/summary>\r\n\t\t\t\t\t\t<p>Yes. The merchant must already have the required Kaspi Pay access, API key and trade point setup.<\/p>\r\n\t\t\t\t\t<\/details>\r\n\t\t\t\t\t\t\t\t\t<details>\r\n\t\t\t\t\t\t<summary><h3>Is KZ Pay an official Kaspi product?<\/h3><\/summary>\r\n\t\t\t\t\t\t<p>No. KZ Pay is independently developed by Group Starlight and is not affiliated with, endorsed by or sponsored by Kaspi.kz.<\/p>\r\n\t\t\t\t\t<\/details>\r\n\t\t\t\t\t\t\t<\/div>\r\n\t\t<\/section>\r\n\r\n\t\t\t\t<section class=\"kz-pay-page__disclaimer\" aria-label=\"KZ Pay disclaimer\">\r\n\t\t\t<svg class=\"kz-pay-page__icon\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 22 22\"><circle cx=\"11\" cy=\"11\" r=\"8.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"\/><path d=\"M11 10v5m0-8h.01\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\"\/><\/svg>\t\t\t<p>KZ Pay is independently developed by Group Starlight and is not affiliated with, endorsed by, sponsored by, or an official product of Kaspi.kz. Kaspi and related trademarks belong to their respective owners.<\/p>\r\n\t\t<\/section>\r\n\t\t\t\t\t\t<section class=\"kz-pay-page__final-cta\">\r\n\t\t\t<div>\r\n\t\t\t\t<span class=\"kz-pay-page__kicker\">KZ Pay integration<\/span>\r\n\t\t\t\t<h2>Add Kaspi QR Payments to WooCommerce<\/h2>\r\n\t\t\t\t<p>KZ Pay provides a maintained WooCommerce integration for Kaspi QR payments and mobile payment links, including payment-status tracking and WooCommerce order updates.<\/p>\r\n\t\t\t\t\t\t\t\t\t<p class=\"kz-pay-page__price-summary\">7-day free trial \u00b7 No credit card required<\/p>\r\n\t\t\t\t\t\t\t<\/div>\r\n\t\t\t<div class=\"kz-pay-page__final-actions\">\r\n\t\t\t\t\t\t<a class=\"kz-pay-page__button kz-pay-page__button--primary\" href=\"\/ru\/products\/kz-pay\/\">\r\n\t\t\t\t\t\t<span>Explore KZ Pay<\/span>\r\n\t\t\t\t\t\t\t<svg class=\"kz-pay-page__arrow\" aria-hidden=\"true\" focusable=\"false\" viewbox=\"0 0 18 18\"><path d=\"M4 9h9M10 5l4 4-4 4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t\t<a class=\"kz-pay-page__button kz-pay-page__button--secondary\" href=\"\/ru\/products\/kz-pay\/docs\/\">\r\n\t\t\t\t\t\t<span>Read Documentation<\/span>\r\n\t\t\t\t\t<\/a>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/section>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/article>\r\n\t\t<\/div><\/div><\/div><\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"All guides Kaspi QR payments Kaspi QR for WooCommerce Learn how Kaspi QR checkout works in WooCommerce, how&hellip;","protected":false},"author":2,"featured_media":0,"parent":2167,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"csco_singular_sidebar":"","csco_page_header_type":"","csco_page_load_nextpost":"","footnotes":"","_members_access_role":[],"_members_access_error":""},"class_list":["post-2158","page","type-page","status-publish","cs-entry"],"_links":{"self":[{"href":"https:\/\/group-starlight.com\/ru\/wp-json\/wp\/v2\/pages\/2158","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/group-starlight.com\/ru\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/group-starlight.com\/ru\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/group-starlight.com\/ru\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/group-starlight.com\/ru\/wp-json\/wp\/v2\/comments?post=2158"}],"version-history":[{"count":3,"href":"https:\/\/group-starlight.com\/ru\/wp-json\/wp\/v2\/pages\/2158\/revisions"}],"predecessor-version":[{"id":2201,"href":"https:\/\/group-starlight.com\/ru\/wp-json\/wp\/v2\/pages\/2158\/revisions\/2201"}],"up":[{"embeddable":true,"href":"https:\/\/group-starlight.com\/ru\/wp-json\/wp\/v2\/pages\/2167"}],"wp:attachment":[{"href":"https:\/\/group-starlight.com\/ru\/wp-json\/wp\/v2\/media?parent=2158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}