Zid Docs
AppsThemes
Payments
AppsThemes
Payments
Help Center
Slack
  1. Features
  • Getting Started
    • Introduction
    • Theme Development
    • Vitrin Changelog
    • Creating and Managing Theme Presets
    • Legacy Theme Migration
      • Store Settings Mapping
      • Moving to Vitrin Using LLMs
      • Twig to Jinja
      • Breaking Changes
  • Key Concepts
    • Architecture
    • Templates
      • Overview
      • Overridable Templates
      • Legacy Templates
      • Template Replacements
      • Templates Library
        • home.jinja
        • product.jinja
        • cart.jinja
        • category.jinja
        • products.jinja
        • categories.jinja
        • page.jinja
        • blogs.jinja
        • blog.jinja
        • faqs.jinja
        • reviews.jinja
        • questions.jinja
        • shipping_payment.jinja
        • 404_not_found.jinja
    • Settings
      • Schema files
      • Input Settings
      • Media Settings
      • Form Controls Settings
      • Products Settings
      • Additional Settings
      • Conditional Visibility
      • Migrating twig settings schema
    • Localization
      • localization (jinja v. twig)
    • Theme Editor
      • Overview
  • Building with Vitrin
    • Jinja Basics
    • Vitrin's Jinja Extensions
  • Vitrin CLI
    • Introduction
    • CLI Commands
  • Tips & Tricks
    • Performance
  • JS Integration
    • Supporting both Vitrin and Legacy themes
    • Responses & Errors
    • Cart
    • Products
    • Categories
    • Store
    • Account
    • Blogs
    • Options
    • Events
  • Features
    • SDK Popups – Integration Guidelines
    • Custom Styles Guide
    • Gift Card as a Popup
    • Addresses as a Popup
    • Login as a Popup
    • Checkout as a Popup
    • Apple Pay Quick Checkout
    • Region & Language Popup
    • Dynamic Bundle Products
    • Progressive Discounts
    • Customer Wallet & Cashback
    • Add Preorder Support to Your Theme
  • Mobile Apps
    • Scripts
  • API's
    • Authentication
      • Logout
      • Login Status
      • SMS Login
      • Verify SMS Login
      • WhatsApp Login
      • Verify WhatsApp Login
      • Email Login
      • Verify Email Login
      • Register
      • Register Guest
    • Products
      • List Products
      • Search Products
      • Calculate Product Options Price
      • Notify Product Stock Availability
      • Fetch Bundle Offers
      • Fetch Bundle Offers for a Product
      • List My Product Reviews
      • List Product Reviews
      • Create Product Review
      • Update Product Review
      • Delete Product Review
      • List Product Questions
      • Create Product Question
      • Get Product by Slug
      • Get Selection Groups
    • Categories
      • List Categories
    • Checkout
      • Get Cart
      • Remove Cart
      • Duplicate Cart
      • Add Cart Item
      • Empty Cart
      • Update Cart Item
      • Remove Cart Item
      • Upload Cart Input Field
      • Add Gift Card
      • Remove Gift Card
      • Apply Coupon
      • Remove Coupon From Cart
      • Check Coupon Validity
      • Apply Loyalty Points
      • Remove Loyalty Points
      • Preview Rewarded Points
      • List Redemption Methods for Cart
      • Customer’s Loyalty Wallet
      • Customer’s Current Points Balance
    • Account
      • Get Profile
      • Delete Account
      • Update Customer Profile
      • Get Addresses
      • Create an Address
      • Get an Address by ID
      • Update an Existing Address
      • Delete Address
      • Get Orders
      • Get Shareable Wishlist Link
      • Get Wishlist
      • Add Products to Wishlist
      • Remove Product from Wishlist
      • Get Address Form Schema
      • Check Product Purchase Status
    • Storefront
      • Store Scripts
      • Pages
      • Blogs
    • Countries
      • Get Countries
      • Get Cities By Country
  1. Features

Customer Wallet & Cashback

The Customer Wallet (Cashback) feature displays a cashback progress meter and wallet available balance in the cart and checkout flows. It motivates customers to complete their purchase or add more items by showing how close they are to earning cashback rewards.

Merchant Setup#

Go to Loyalty → Customer Wallet → Activate
From there, the merchant manages customer wallets and configures order cashback offers:
CleanShot 2026-06-16 at 16.39.55@2x.png
CleanShot 2026-06-16 at 16.39.34@2x.png
SettingDetails
Detailsoffer name (internal, not shown to customers), start date, and optional end date
Cashback valuePercentage of order total (with optional max cap) or Fixed amount
Calculation BasisOrder value, excluding shipping fees
Min Order AmountOptional threshold to qualify
Cashback ValidityOptional expiry in days from order creation

Plan Availability#

PlanAccess
Elite / ProfessionalIncluded for free
All other plansRequires a paid monthly subscription, available as an add-on

Theme Developer Integration#

To render the Customer Wallet Progress component in your theme, add the following Jinja include to your cart page template:
{% include 'vitrin:cart/customer_wallet_progress.jinja' %}
The component renders automatically when the feature is enabled.

Component States#

The component displays different states based on the customer's cart value and authentication status:
StateDescription
Guest (Not Eligible)Progress toward cashback with a login prompt
Guest (Eligible)Full progress with login prompt to claim cashback
Logged-in (Not Eligible)Progress toward the cashback threshold
Logged-in (Eligible)Completed progress with cashback amount earned

⌛️ Loading State#

Displays a skeleton loader while fetching cart and wallet data.

🔁 Not Eligible State#

Shows:
Wallet icon with primary color
Progress bar indicating how much more is needed
Gift icon on the progress bar
Remaining amount to reach the cashback threshold
Login button (guests) or current wallet balance (logged-in users)
Primary color scheme

✅ Eligible State#

Shows:
Wallet icon with success (green) color
Completed (100%) progress bar
Check icon on the progress bar
Success badge with the cashback amount
Login button (guests) or current wallet balance (logged-in users)
Green/success color scheme

Cashback Types#

The wallet supports two types of cashback rules:
Percentage-based - Customer earns a percentage of their order value (e.g., 5%)
Fixed Amount - Customer earns a fixed amount (e.g., 10 SAR)

Login Integration#

The component integrates with the Login Popup so users authenticate without leaving the cart page.
User flow:
1.
Guest adds items to cart
2.
Wallet progress shows: "Add X more to earn Y cashback"
3.
User clicks the Login button
4.
Login popup opens (if enabled)
5.
On success, the vitrin:auth:success event fires
6.
The component automatically updates to the logged-in state, fetches the wallet balance, and refreshes progress/eligibility
Why it matters:
No Page Reload - Users stay on the cart/checkout page
Seamless Experience - Login happens in a popup without navigation
Automatic Updates - Wallet data refreshes automatically after login
Encourages Conversion - Easy login flow reduces cart abandonment

Customization#

You can override the default styles using the Zid SDK Custom Styles system via the window.zidCustomStyles object. The component key is customer_wallet_progress.

Example#

In the example above, the component key for the wallet progress is customer_wallet_progress
You can use this key in your window.zidCustomStyles object to apply any style overrides specific to the wallet progress component.

Full CSS Class Reference#

Class Reference Table#

Class NameElementDescription
zid-kit-customer-walletRootMain wrapper container
zid-kit-customer-wallet-cardAppCardCard with dynamic background color
zid-kit-customer-wallet-contentStackColumnMain content layout
zid-kit-customer-wallet-header-rowStackRowIcon and header container
zid-kit-customer-wallet-icon-containerStackRowWallet icon wrapper
zid-kit-customer-wallet-headerStackColumnTitle and description wrapper
zid-kit-customer-wallet-title-rowStackRowTitle and badge row
zid-kit-customer-wallet-titleAppTypographyTitle text
zid-kit-customer-wallet-badgeStatusEligible status badge
zid-kit-customer-wallet-descriptionAppTypographyDescription text
zid-kit-customer-wallet-progress-containerBoxProgress section wrapper
zid-kit-customer-wallet-progress-barStackColumnProgress bar outer wrapper
zid-kit-customer-wallet-progress-bar-wrapperBoxProgress bar inner wrapper
zid-kit-customer-wallet-linear-progressLinearProgressProgress bar element
zid-kit-customer-wallet-check-iconStackRowCheck icon (active state)
zid-kit-customer-wallet-gift-iconStackRowGift icon (inactive state)
zid-kit-customer-wallet-guest-actionsBoxGuest actions container
zid-kit-customer-wallet-login-buttonAppButtonLogin button
zid-kit-customer-wallet-balanceAppTypographyBalance text
zid-kit-customer-wallet-balance-amountAppTypographyBalance amount
zid-kit-customer-wallet-skeletonAppCardSkeleton card
zid-kit-customer-wallet-skeleton-*SkeletonVarious skeleton elements
For complete Custom Styles documentation, see the Custom Styles Guide for Theme Developers.

Best Practices#

1.
Login popup integration — Ensure the Login Popup feature is enabled for the best experience. The component uses it automatically when available, and falls back to the /auth/login redirect if window.auth_dialog is not available.
2.
No manual event handling — The component handles the vitrin:auth:success event internally; no extra listeners are needed for wallet updates.
3.
Automatic cart updates — The component listens to cart:refetch events and re-renders when the cart changes.
4.
Loading states — A skeleton loader displays while data is being fetched, preventing layout shift.
5.
RTL support — The progress bar handles RTL layouts automatically via CSS transforms.
Modified at 2026-06-17 09:04:40
Previous
Progressive Discounts
Next
Add Preorder Support to Your Theme
Built with