Wallet SystemWallet System
Buy Now
View Demo
  • Getting Started

    • Introduction
    • Quick Start
    • Features
    • Installation
    • First-Time Setup
    • Admin Tour
  • Wallet Core

    • Core Wallet
    • Wallet Payment Gateway
    • Recharge / Top-up
    • Wallet Transfer
    • My Wallet Page
    • Shortcodes
  • Earn & Reward

    • Cashback Engine
    • Referral Program
    • Multilevel Referral
    • Daily Login Reward
    • Invite Friends
    • Deposit / Top-up Bonus
  • Spend & Payout

    • Checkout Discount
    • Checkout Restriction
    • Withdrawal
    • PayPal Payout
    • Stripe Payout
    • Refund to Wallet
    • Buy Now Pay Later
  • Identity & Mobile

    • KYC
    • QR Code Payments
  • Wallet Central

    • Overview
    • Endpoint & Routing
    • CTA Discovery
    • Home Dashboard
    • Add Funds
    • Withdraw
    • Withdrawals List
    • Send Money
    • QR Pay
    • Payment Requests
    • Refer & Earn
    • Transactions
    • Settings
    • KYC Flow
    • Architecture
    • Tweaks & Responsive
    • Security
    • Admin Controls
  • Admin Tools

    • Admin Settings (index)
    • Bulk Credit / Debit
    • Analytics Dashboard
  • Settings Tabs

    • General
    • Recharge
    • Checkout
    • Withdrawal
    • Payout (PayPal/Stripe)
    • KYC
    • Cashback
    • Referral
    • Multilevel
    • BNPL
    • QR Pay
    • Notifications
    • Wallet Central
    • Integrations
    • API Keys
  • Notifications

    • Email Notifications
    • SMS Notifications
  • Developer

    • REST API
    • Filters & Hooks
  • Help

    • Troubleshooting
    • FAQ
    • Glossary
Support
Buy Now
View Demo
  • Getting Started

    • Introduction
    • Quick Start
    • Features
    • Installation
    • First-Time Setup
    • Admin Tour
  • Wallet Core

    • Core Wallet
    • Wallet Payment Gateway
    • Recharge / Top-up
    • Wallet Transfer
    • My Wallet Page
    • Shortcodes
  • Earn & Reward

    • Cashback Engine
    • Referral Program
    • Multilevel Referral
    • Daily Login Reward
    • Invite Friends
    • Deposit / Top-up Bonus
  • Spend & Payout

    • Checkout Discount
    • Checkout Restriction
    • Withdrawal
    • PayPal Payout
    • Stripe Payout
    • Refund to Wallet
    • Buy Now Pay Later
  • Identity & Mobile

    • KYC
    • QR Code Payments
  • Wallet Central

    • Overview
    • Endpoint & Routing
    • CTA Discovery
    • Home Dashboard
    • Add Funds
    • Withdraw
    • Withdrawals List
    • Send Money
    • QR Pay
    • Payment Requests
    • Refer & Earn
    • Transactions
    • Settings
    • KYC Flow
    • Architecture
    • Tweaks & Responsive
    • Security
    • Admin Controls
  • Admin Tools

    • Admin Settings (index)
    • Bulk Credit / Debit
    • Analytics Dashboard
  • Settings Tabs

    • General
    • Recharge
    • Checkout
    • Withdrawal
    • Payout (PayPal/Stripe)
    • KYC
    • Cashback
    • Referral
    • Multilevel
    • BNPL
    • QR Pay
    • Notifications
    • Wallet Central
    • Integrations
    • API Keys
  • Notifications

    • Email Notifications
    • SMS Notifications
  • Developer

    • REST API
    • Filters & Hooks
  • Help

    • Troubleshooting
    • FAQ
    • Glossary
Support
  • Getting Started

    • Introduction
    • Quick Start — Wallet Live in 5 Minutes
    • Features
    • Installation
    • First-Time Setup
    • Admin Tour
  • Wallet Core

    • Core Wallet
    • Wallet Payment Gateway
    • Recharge / Top-up
    • Wallet Transfer
    • My Wallet Page
    • Shortcodes
  • Earn & Reward

    • Cashback Engine
    • Referral Program
    • Multilevel Referral
    • Daily Login Reward
    • Invite Friends
    • Deposit / Top-up Bonus
  • Spend & Payout

    • Checkout Discount
    • Checkout Restriction
    • Withdrawal
    • PayPal Payout
    • Stripe Payout
    • Refund to Wallet
    • Buy Now Pay Later (BNPL)
  • Identity & Mobile

    • KYC (Know Your Customer)
    • QR Code Payments
  • Wallet Central

    • Wallet Central Overview
    • Endpoint & Routing
    • CTA Discovery
    • Home Dashboard
    • Add Funds
    • Withdraw
    • Withdrawals List + Detail
    • Send Money
    • QR Pay
    • Payment Requests
    • Refer & Earn
    • Transactions
    • Settings (customer)
    • KYC Flow
    • Architecture
    • Tweaks & Responsive
    • Security
    • Admin Controls
  • Admin Tools

    • Admin Settings
    • Bulk Credit / Debit
    • Analytics Dashboard
  • Settings Tabs

    • General Settings
    • Recharge Settings
    • Checkout Settings
    • Withdrawal Settings
    • Payout Settings (PayPal + Stripe)
    • KYC Settings
    • Cashback Settings
    • Referral Settings
    • Multilevel Settings
    • BNPL Settings
    • QR Pay Settings
    • Notifications Settings
    • Wallet Central Settings
    • Third-Party Integrations
    • API Keys
  • Notifications

    • Email Notifications
    • SMS Notifications
  • Developer

    • REST API
    • Filters & Hooks
  • Help

    • Troubleshooting
    • FAQ
    • Glossary

KYC (Know Your Customer)

Identity verification with document upload, admin review, and per-feature gating. Required when operating in regulated regions or whenever the wallet handles non-trivial money movement.

Setting up?

Skip to KYC Settings for the step-by-step admin tab walkthrough (document caps, MIME types, required-feature toggles).

What It Does

ForMeans
CustomerUpload ID documents via a modal. Status shown as a clear pill (Verified / Under Review / Rejected)
AdminReview queue with inline document preview. Approve / reject with a note. Per-feature gating decides what's locked behind approval

How Customers See It

Status pill (always visible on My Wallet)

StatusPillMeaning
Approvedgreen ✓ KYC VERIFIEDall features unlocked
Pendingamber KYC UNDER REVIEWadmin hasn't decided yet
Rejectedred RE-SUBMIT KYCadmin rejected; customer can fix and try again
Not submittedgrey ◯ VERIFY KYChasn't started yet

The non-approved pills shimmer / pulse to draw attention.

Submission flow

  1. Click the pill → opens a modal with the form
  2. Fill: full name + document type + number + file uploads (up to N)
  3. Submit → modal flips to "Under review — we'll email you within 1 business day"
  4. Status pill flips to amber

If a customer tries to access a gated feature (e.g. withdrawal) without approved KYC, that feature shows a locked card with "Verify now" → opens the same modal.

KYC submission view at /wallet-central/kyc/ — status banner, instructions, form

Admin review

Wallet → KYC Reviews lists all submissions.

KYC Reviews queue in admin — submissions with status pills and document counts

Click a row → side drawer:

  • Personal details
  • Each uploaded file (image inline, PDF in iframe viewer)
  • Approve button
  • Reject button (admin note required — shown to customer)

Setup

Wallet → Settings → KYC

KYC admin section — enable, max docs, allowed types, required-features list

SettingDefaultWhat it does
EnableOFFglobal toggle
Max documents per user21-5; sets the upload limit
Allowed file typesjpeg, png, webp, pdfMIME whitelist
Max file size (MB)5per-file cap
Document type listPassport, National ID, Driving Licence, Voter ID, Aadhaardropdown options
Requirement descriptionemptyshort customer-facing instructions shown above the form
Required featuresemptywhich features need approved KYC (see below)
Reviewer emailsite adminwho gets new-submission notifications

Per-Feature Gating

Tick which features need approved KYC:

FeatureWhat it gates
Withdrawalrequest submit + admin approve UI
TransferOTP request + verify
Wallet usage (checkout)gateway visibility at checkout
Refund requestcustomer-side refund-to-wallet request
QR payQR scan-to-pay flow

Common defaults:

  • Light store — gate Withdrawal only
  • Strict store — gate Withdrawal + Transfer + QR pay
  • Regulated store — gate everything including Wallet usage

Common Scenarios

Customer uploaded blurry photo

Reject with note "Photo is blurry, please re-upload a clearer photo." Customer's status goes red with the note shown above the form. They re-submit; status flips back to amber.

Customer says "I'm verified but withdrawal still locked"

Stale cache. WC → Status → Tools → Wallet → Clear cache. Status will refresh next visit.

Block one specific customer despite approval

Admin → user profile → Wallet card → Lock transfers / Lock withdrawals. Per-user override beats KYC approval.

Migrate KYC status from another plugin

Bulk-set the user meta with WP-CLI:

wp user meta update <USER_ID> _wkwp_kyc_status approved

(Or use WP All Import for a CSV migration.)

Privacy & GDPR

  • Documents stored outside the public uploads directory
  • Direct URL access blocked via .htaccess
  • Image proxies served via authenticated AJAX with capability check
  • Personal data export plugin auto-includes wallet-kyc rows
  • Personal data eraser plugin auto-deletes rows + files

When Something Goes Wrong

ProblemFix
Modal doesn't openJS error in console; check theme conflicts on <dialog> polyfill
Upload rejects fileMIME / size cap; check Allowed file types and Max file size
Customer feature still locked after admin approveStale cache — clear Wallet cache via Status Tools
Re-submission overwrites old docsExpected — single row per user, replaces on submit. Audit history is in admin notes
For developers — hooks, gates, storage

Server-side enforcement

UI gates are belt-and-braces. Authoritative gates run server-side regardless of UI:

EnforcerHook
WKWP_Wallet_Withdrawal_KYC_Guardrejects withdrawal POSTs at wp_loaded priority 5
check_user_kyc_access()called from submodule AJAX handlers
wkwc_wallet_show_method_on_checkout filterhides wallet from checkout

Even a manually-crafted curl request bypassing the UI hits the server-side check.

User meta

KeyValue
_wkwp_kyc_statusapproved / pending / rejected
_kyc_verifiedlegacy fallback (yes / no)

Hooks

HookTypeWhen
wkwp_kyc_submit_validatefilterreject submission with custom error
wkwp_kyc_status_changedactionevery status transition
wkwp_kyc_required_featuresfiltermutate gated feature list per-user
wkwp_kyc_document_check_mimefilteraccept extra MIME types
wkwp_kyc_admin_email_recipientsfilterCC additional reviewers

Status transitions

not_submitted → pending → approved
                       → rejected → re-submit → pending
admin re-open → pending

Each transition fires wkwp_kyc_status_changed, sends an email, and busts user-specific gate caches.

Related

  • My Wallet Page
  • Withdrawal
  • Wallet Transfer
  • Refund to Wallet
  • Filters & Hooks
Next
QR Code Payments