Product Documentation · v{{V}}

Build, launch, and operate DigiKash {{V}} with confidence.

A Laravel wallet, merchant gateway, P2P marketplace, virtual-card platform, and payment-operations suite. This guide walks you from a blank server to a live, production-grade installation — and covers every module you will use day to day.

Version {{V}}
Framework Laravel
Runtime PHP 8.3+
Release Highlights

What's New in DigiKash {{V}}

Version {{V}} headlines a Vendor Marketplace with automatic commission splits, automated KYC through Smile ID / ShuftiPro / Sumsub, and a Crypto Hub for multi-chain USDT deposits and withdrawals — on top of the International Remittance engine, P2P order chat, Golden theme, RTL multi-language, multi-provider virtual cards, feature flags, mobile recharge, subscriptions, wallet staking, agent operations, and OTA updater from the 2.0 line. All on Laravel with PHP 8.3+.

Vendor Marketplace New in {{V}}

Multi-vendor storefront with vendor applications, categories, an admin vendor manager, suspension workflow, orders, and wallet-settled checkout.

Commission Split New in {{V}}

Every marketplace order settles atomically between the vendor wallet and your platform commission account — percentage + fixed fee, order limits, auto-release, and payout hold.

Automated KYC New in {{V}}

Smile ID, ShuftiPro, and Sumsub drivers with per-country routing, credential vault, connection testing, a decision engine, and verification webhooks.

Crypto Hub New in {{V}}

USDT / USDC deposits and withdrawals via Bitnob with deposit addresses on Ethereum, Polygon, Base, Solana, Tron, and BSC — plus signature-verified webhooks.

International Remittance Improved

Cross-border transfers hardened with pluggable compliance screening, payout routing, a status-event timeline, reconciliation jobs, and an admin operations screen.

P2P Order Chat New

In-escrow buyer/seller messaging with live polling, unread tracking, and a dedicated rate-limit bucket — plus a demo-trading seeder to preview the marketplace.

Golden Theme & Brand Colors New

A second site-wide theme — luxury obsidian + gold — selectable alongside Classic, with admin-controlled accent colors from Site Settings.

RTL Multi-language Improved

Full right-to-left support and a redesigned Language Manager — add locales, edit strings inline, and reposition the switcher.

P2P Marketplace New

Peer-to-peer trading rooms with offer ads, escrow orders, payment-method directory, disputes, promotions, and trader profiles.

Multi-provider Virtual Cards Improved

Stripe Issuing, StroWallet, and Bitnob in a single abstraction. Per-provider capabilities for issuance, top-up, withdraw, freeze, and limits.

Feature Controls New

Toggle every revenue module per panel (user / merchant / agent), set KYC and phone-verification gates, and control country allow-lists.

Agent Operations New

Dedicated agent panel, commission rule engine, and operations workflow for cash-in / cash-out agents.

Wallet Earn New

Stake wallet balances in configurable plans and pay scheduled rewards through background jobs.

Subscriptions New

Tier-based plans with pricing cycles, feature limits, renewals, cancellations, and subscription transactions.

Mobile Recharge New

Recharge mobile numbers from wallet balance through pluggable providers — Sandbox, Reloadly, or any HTTP API.

Project Updater Improved

Signed OTA releases, SHA-256 verification, recovery backups, and automatic migrations — all from the admin panel.

Redesigned Control Panel Improved

Searchable, categorized shortcuts to every admin tool — built on top of the live feature catalog.

PHP 8.3+ & Laravel 11 Upgraded

Streamlined bootstrap, attribute-based middleware, and modern PHP performance across the stack.

Security Hardening Improved

Account-status checks, IP block lists, login activity logs, throttled phone verification, and 2FA across panels.


Hosting

Server Requirements

Prepare the server before opening the installer. The wizard checks your PHP version, required extensions, and writable paths — and refuses to continue until everything turns green.

Minimum Software
PHP 8.3 or higher

PHP 8.4 is recommended where available. Keep the CLI and web-server PHP versions identical.

MySQL, MariaDB, or SQLite

MySQL / MariaDB installs import DB/digikash.sql. SQLite installs run migrations + seeders instead.

Apache or Nginx

Document root must point to public/. Apache must allow .htaccess rewrite rules.

HTTPS

A valid SSL certificate is mandatory before going live — payment callbacks, PWA features, and push will not work otherwise.

Required PHP Extensions
ExtensionPurpose
bcmathHigh-precision money arithmetic across wallet, fees, and exchange.
ctype, tokenizer, mbstringCore Laravel string handling.
dom, libxml, xmlQR codes, PDF receipts, and XML payloads.
fileinfoFile upload validation (KYC docs, logos, page assets).
jsonSettings, feature catalog, API payloads.
opensslSessions, tokens, signed updater verification.
pdo, pdo_mysqlDatabase connection.
zipProject Updater package extraction and recovery backups.
curl + allow_url_fopenRecommended for outbound gateway, license, and updater requests.
Writable Directories
  • .env — the installer writes app and DB settings here.
  • storage/ — logs, uploads, sessions, cache, backups, generated PDFs.
  • bootstrap/cache/ — optimized framework cache files.
Production needs background workers.

A queue worker is required for email, notifications, payment-jobs, virtual-card syncing, and updater steps.

Useful Commands
Queue WorkerBackground jobsphp artisan queue:work --tries=3 --timeout=90
Storage LinkPublic uploadsphp artisan storage:link
Clear CacheAfter env changesphp artisan optimize:clear

Setup

Installation Wizard

DigiKash installs through a friendly 6-step web wizard at /install — no manual .env editing and no importing SQL by hand. If you can fill in a web form, you can install DigiKash. Most people finish in under 10 minutes.

Where to start
Browser yourdomain.com/install
What's inside your CodeCanyon download

After extracting digikash.zip from your Envato downloads you'll find two items (plus the licence certificate Envato attaches automatically):

  • core-v{{V}}.zip — the Laravel application. This is the file you upload to your server.
  • documentation/index.html — an offline copy of this guide, for reference without an internet connection.

The full, always-current documentation lives online at digidoc.coevs.com — bookmark it for the latest screenshots and release notes. The offline copy in the download mirrors it at release time.

Part 1 — Prepare your server

Do these one-time steps before opening the wizard — they get your files, domain, and database ready. If you're on shared hosting, everything here can be done from cPanel.

1
Download & unzip on your computer

Download digikash.zip from your Envato Downloads page and extract it. You only need core-v{{V}}.zip for the install — the documentation/ folder is just the offline copy of these docs (latest version always at digidoc.coevs.com).

2
Upload the app to your hosting

Upload only core-v{{V}}.zip into your public_html/ (or the folder for your domain). Use cPanel File Manager, FTP, or SSH — whichever you're comfortable with.

3
Extract it on the server

Right-click the uploaded zip → Extract (cPanel), or run unzip core-v{{V}}.zip over SSH. You'll get folders like app/, public/, storage/, and vendor/.

4
Point your domain at public/

Set your domain's document root to the public/ folder. This is the single most important step for security — it keeps .env, source code, and backups out of public reach.

5
Make a few folders writable

Ensure .env, storage/, and bootstrap/cache/ are writable by PHP. On Linux, permission 775 with correct ownership is usually enough.

6
Create an empty database

Create a MySQL/MariaDB database and a user, then grant that user all privileges on it. Leave the database empty — the wizard fills it in for you. Note the name, user, and password for Step 4 of the wizard.

7
Copy your Envato purchase code

From Envato Downloads → License certificate & purchase code (text), copy the purchase code. You'll paste it in Step 3 of the wizard.

Part 2 — Walk through the installer

Open https://yourdomain.com/install in your browser — until DigiKash is installed, every page on your domain redirects here. A progress bar tracks where you are, and each step must pass its checks before the next one unlocks, so you can't skip anything by accident. Here's what each screen looks like:

Step 1 — Server Check. The wizard inspects your server and shows a green OK for every required PHP extension and writable path. Fix any red item, then press Continue to Application.

Step 1 of 6 · Server Check
Installer Step 1 — server requirements and writable paths

Step 2 — Application. Set your site name, confirm the auto-detected URL, choose an admin URL prefix, and pick the default currency. All four are editable later from admin settings.

Step 2 of 6 · Application
Installer Step 2 — application name, URL, admin prefix and currency

Step 3 — Envato License. Paste your purchase code and click Verify Envato License. This confirms your copy is genuine and links it for future updates. The check runs against the official Coevs update server — no token is stored on your site.

Step 3 of 6 · Envato License
Installer Step 3 — Envato purchase code verification

Step 4 — Database. Enter the database name, user, and password you created in Part 1, then click Check Database Connection and wait for the green success message before continuing. Leave the database empty — the installer imports DB/digikash.sql for you.

Step 4 of 6 · Database Connection
Installer Step 4 — database connection test

Step 5 — Super Admin. Enter your name, email, and password. This becomes your admin login — there is no default password, so keep it safe.

Step 5 of 6 · Super Admin
Installer Step 5 — first super-admin account

Step 6 — Review. A final summary of everything above, with each setup task listed in order. Confirm it, then press Start Installation — DigiKash writes .env, imports the database, creates your admin, clears caches, and sends you to /admin/login.

Step 6 of 6 · Final Review
Installer Step 6 — final review before installation
That's it — you're installed

The wizard drops you at /admin/login. Sign in with the Super Admin you just created, then work through the Post-install Checklist to switch on automation, mail, payments, and security before going live.

If the license check fails on Step 3

Confirm the purchase code is correct and is for DigiKash (not another item), and that your server can make outbound HTTPS requests. The code is checked against the Coevs update server — only your own license record is saved on your site.

On cPanel hosting

Use File Manager to upload & extract the zip, MySQL Databases to create the database and user, and Domains to point the document root at public/. If your host blocks document-root changes, ask their support before moving files.


Go Live

Post-install Checklist

DigiKash is installed. Sign in at yourdomain.com/admin/login with the super-admin account you created in the wizard — then work through the steps below. Each one tells you exactly where to go in the admin panel and what to do there.

Step 1 — Turn on background automation Do this first

This is the one step people skip. Until you add a single cron line to your server, nothing runs on a schedule — P2P orders won't expire, Wallet Earn won't pay out, subscription renewals won't charge, and queued emails & payment jobs never send. DigiKash gives you the exact line to copy; you don't have to write it.

Where to go
Admin Background Tasks Scheduler

What to do: open that page, press Copy on the cron entry (it's pre-filled with your real PHP binary and project path), then paste it into your server's crontab — run crontab -e over SSH, or use cPanel → Cron Jobs. That single line is all the scheduling DigiKash needs. The same page also has a one-click cron-expression builder and the exact queue-worker commands for your host.

/admin/background-tasks/scheduler · copy the cron line from here
Admin Scheduler & Queue Guide — copy the ready-made cron entry, use the cron builder, and read the queue-worker commands
Once that cron line is live, these run by themselves

Expiring P2P orders & promotions, Wallet Earn payouts, subscription renewals, license re-checks, and temp-file cleanup — all automatic. Full cron, queue-worker, and Supervisor details are in Production Setup.

Step 2 — Finish your go-live checklist

Work through these in the admin panel. Each card shows where the setting lives and what to set.

Set up email (SMTP)
Settings → Site Settings → Mail

Enter your SMTP host, port, and login, then send a test email so password resets and notifications actually deliver.

Connect payment gateways
Finance & Wallet → Payment Gateways

Add the live API keys for the providers you'll use, then run one real deposit on HTTPS to confirm the full flow works.

Turn on Two-Factor Auth
Admin profile → Two-Factor Authentication

Enable 2FA for every admin and high-privilege staff account before the site is public.

Lock down secrets
.env on your server

Keep APP_DEBUG=false in production, and make sure .env and storage/ are never reachable from the web.

Pick your modules
Settings → Feature Controls

Switch off any modules (P2P, cards, recharge, staking…) you don't plan to offer, so users only see what you actually run.

Set your branding
Settings → Site Settings

Upload your logo and favicon, set brand colors, and fill in the SEO defaults (title, description, social image).

Clean up the server
Your hosting file manager

Once everything works, delete the uploaded core-v{{V}}.zip to free up space — the app is already extracted and running.


Upgrades

Updating DigiKash Safely

Update with a single click from Settings → Project Updater in your admin panel. The updater downloads the official release, verifies it, backs up what it replaces, and installs — no command line needed. Follow the order below and an update takes just a few minutes.

How to access
Sidebar Settings Project Updater
Example: what the updater screen looks like
 Admin → Settings → Project Updater
Current version v2.3
Latest release v2.3.1
License Active · bound to this domain
Pre-flight checks — all must pass before installing
PHP zip extension   Writable storage   Update server reachable   Recovery backup ready
Check for updates Generate recovery backup Install Update
How to update — step by step
1
Confirm your license is active

New installs are already linked. Existing sites enter their Envato purchase code once — the updater shows License: Active when it's bound to your domain.

2
Check for updates

Click Check for updates. The updater fetches the latest release and shows the new version number and changelog before anything is installed.

3
Back up — always, every time

Click Generate recovery backup (database + storage), and also download a copy of your full site files and database to your computer. Never start an update without a backup you control.

4
Install the update

Click Install Update. The updater runs its pre-flight checks, enables maintenance mode, applies the release phase by phase with a live progress log, runs migrations, and brings your site back online automatically.

Have you customized the code? Read this before updating

The one-click updater is built for an unmodified codebase. It replaces core application files with the new release — so if you (or your developer) have edited core files directly, two things can happen: your custom changes will be overwritten, and if the codebase has drifted far from the original, the update itself can fail or leave the site broken. This is exactly why a backup before every update is non-negotiable.

Updating a customized site — the safe workflow

If you have made code customizations, follow this order instead of updating blindly. It keeps both the update and your custom work safe:

1
List your changes

Write down every file you modified and what it does (better: keep them in Git so a diff shows them instantly).

2
Back up everything

Recovery backup in the updater plus a full local copy of files and database on your own computer.

3
Revert to stock code

Temporarily remove / revert your custom edits so the codebase matches the original release.

4
Run the update

Install the new version through the Project Updater on the clean codebase — it will apply smoothly.

5
Re-apply your changes

Carefully add your customizations back on top of the new version, adjusting for anything the release changed.

6
Test before going live

Check your key flows (login, deposit, payments) — ideally on a staging copy first — then lift maintenance mode.

Pro tip: keep customizations update-proof

Where possible, customize through the built-in tools instead of editing core files — Style Manager (custom CSS), Feature Controls, theme colors, languages, and notification templates all survive every update untouched. The less core code you edit, the easier every future update becomes.

Your data is always safe

Your settings, uploaded files, and database content are never wiped by an update, and a recovery backup is saved on the server before anything changes. The warnings above are about custom code edits — your data itself is protected either way.


Release Notes

Changelog

v2.3 – 28 July 2026
[Added] - Vendor Marketplace — multi-vendor storefront with vendor applications, categories, an admin vendor manager, suspension workflow, order management, and wallet-settled checkout
[Added] - Marketplace commission split — every order settles atomically between the vendor wallet and a configurable platform commission account (percentage + fixed fee, min/max order amount, auto-release, payout hold window)
[Added] - Automated KYC providers — Smile ID, ShuftiPro, and Sumsub drivers with per-country provider routing, an admin credential vault, connection testing, a decision engine, and a verification webhook
[Added] - Crypto Hub — USDT / USDC stablecoin deposits and withdrawals through Bitnob with multi-chain deposit-address generation (Ethereum, Polygon, Base, Solana, Tron, BSC) and signature-verified webhooks
[Added] - Circle testnet faucet shortcut on demo builds so stablecoin deposits can be tested without real funds
[Added] - bitnob:test-address console command — self-service sandbox probe for the Bitnob stablecoin address API
[Added] - Tawk.to live chat widget with plugin-managed property / widget IDs and strict credential validation
[Added] - Remittance operations commands — remittance:readiness, remittance:check-payout-provider, remittance:dispatch-pending, remittance:reconcile, remittance:alert-stuck, and remittance:uat
[Improved] - Remittance hardening — pluggable compliance screening (local + remote providers), payout router, status-event timeline, encrypted financial storage with retention rules, operational indexes, and a full admin transfer-operations screen
[Improved] - Vendor Marketplace enabled by default and surfaced across the control panel, settings hub, quick actions, and mobile navigation
[Improved] - Virtual card admin module redesigned — provider management, fee settings, cardholder views, and a cleaner credential modal
[Improved] - Unified admin table styling and a shared page-header component across KYC, gift cards, users, subscription plans, P2P promotions, and wallet earn
[Improved] - Payment gateway credential labels and edit modal for clearer provider setup
[Improved] - Crypto deposit UI — chain selector pills, address card, and copy / QR flow
[Improved] - reCAPTCHA plugin management with a recaptcha:disable console escape hatch for lockouts
[Fixed] - Installer and license re-check no longer reject a "Lifetime" support window
[Fixed] - Admin seeder no longer wipes the super admin created by the installer
[Fixed] - Bitnob stablecoin deposits now credit from the payload Bitnob actually sends, including reference-less deposit.success webhooks routed by deposit address
[Fixed] - Bitnob card / customer endpoints repointed at the routes the API still serves
[Fixed] - Exchange Money validation and conversion-rate script issues
[Fixed] - Blog admin foreign key, wallet decimal formatting, SMTP test email, and subscription notification templates
[Fixed] - Numerous UI and validation fixes across admin, marketplace, deposit / withdraw, and virtual cards
v2.0.2 – 30 June 2026
[Added] - Merchant API refund endpoint (POST /api/v1/refund-payment) — full or partial refunds with idempotency, over-refund protection, and a signed payment.refunded webhook
[Improved] - verify-payment now reports refunded_amount, refundable_amount, and fully_refunded for each payment
v2.0.1 – 11 June 2026
[Added] - International Remittance module — cross-border money transfer with beneficiaries, country/currency corridors, live quotes, payout routing, compliance screening, and a versioned REST API
[Added] - P2P Order Chat — in-escrow buyer/seller messaging with live polling, unread tracking, and a dedicated rate-limit bucket
[Added] - P2P Demo Trading seeder — sample offers, orders, and trader profiles to preview the marketplace immediately after install
[Added] - Golden theme — a second site-wide visual theme (luxury obsidian + gold) selectable alongside Classic, each with its own layouts and asset bundle
[Added] - Theme Color customizer — override accent / brand colors with validated hex values from Site Settings
[Added] - MercadoPago payment gateway added to the gateway factory
[Added] - Payment-method seeder and automatic method-code generator for consistent deposit / withdraw provisioning
[Added] - Multiple manual deposit methods per currency
[Added] - Storage Link tool — create or repair the public/storage symlink from the admin Settings page, no SSH required
[Improved] - Multi-language UI with full RTL support and a redesigned Language Manager (add locales, inline translate, reposition the switcher)
[Improved] - Saved Withdraw Accounts with stricter validation and reusable payout details
[Improved] - Subscription plan feature types — richer per-feature limits / flags and cascade-safe plan deletion
[Improved] - StroWallet provider response handling hardened (dispatch and response-shape normalization)
[Improved] - Installer — smarter database-host parsing, extra feature checks, and a refreshed installer UI
[Improved] - Wallet service refactor for staking / earn balance operations
[Improved] - Admin payment-gateway and virtual-card management UIs
[Fixed] - Updater license card now follows the current host instead of the newest row
[Fixed] - Manual deposit transaction currency handling
[Fixed] - Notification feed now tolerant of malformed data
[Fixed] - Deposit-method compatibility and conversion-rate layout issues
[Fixed] - Numerous bug fixes and UI polish across admin, P2P, subscriptions, and withdrawals
v2.0 – 17 May 2026
[Added] - P2P Marketplace with offer ads, escrow orders, disputes, promotions, payment-method directory, and trader profiles
[Added] - Subscription System with tier plans, pricing cycles, proration math, renewals, cancellations, and transactions
[Added] - Wallet Earn (Staking) with configurable plans, lock periods, APY, and scheduled rewards
[Added] - Mobile Recharge module with Sandbox, Reloadly, and generic HTTP API drivers
[Added] - Agent Program with dedicated panel, commission rule engine, QR cash-out, and operations workflow
[Added] - Feature Controls to toggle every revenue module per panel with KYC and phone-verification gates
[Added] - Project Updater with signed OTA releases, SHA-256 verification, recovery backups, and automatic migrations
[Added] - Redesigned Control Panel with searchable, categorized, permission-aware shortcuts
[Added] - PWA support with installable manifest, service worker, and configurable theme color and icons
[Added] - Wallet PIN as a secondary numeric PIN for transfers, withdrawals, and other high-risk actions
[Added] - Phone Verification via Twilio with rate-limited send and verify endpoints
[Added] - KYC Templates per audience (user / merchant / agent) with resubmission flow on rejection
[Added] - Login Activity tracking (IP, country, browser, device, platform) with one-click logout of all other sessions
[Added] - IP Block list to ban abusive addresses at the middleware layer
[Added] - Admin Lock Screen for quick session lock without full sign-out
[Added] - Background Jobs dashboard with task registry, scheduler view, retry, and retry-all for failed jobs
[Added] - User-to-merchant and user-to-agent account conversion from the admin user manager
[Added] - Bulk email send to all users directly from the admin panel
[Added] - "Login as user" support sessions with full audit logging
[Added] - Scheduled Withdrawals to cap payout submissions to defined day-of-week windows
[Added] - Saved Withdraw Accounts so users can reuse bank / crypto / mobile-money payout details
[Added] - Notification Templates with three configurable channels (Email, SMS, Push) and per-template on/off toggle
[Added] - In-app notification inbox via Laravel database notifications
[Added] - Style Manager to inject custom CSS without touching source code
[Added] - Currency role-based visibility (user / merchant / agent) for per-audience wallet enablement
[Added] - Expanded to 25+ payment gateways including Stripe, PayPal, Mollie, Cryptomus, Razorpay, Paystack, Flutterwave, Paymob, Coinbase Commerce, NowPayments, Binance Pay, Bitnob, StroWallet, and more
[Added] - Merchant API with Sanctum personal-access tokens and HMAC-signed webhook delivery
[Added] - Live Merchant API documentation page at /api-docs with Prism syntax highlighting
[Improved] - Multi-provider Virtual Cards now span Stripe Issuing, StroWallet, and Bitnob with per-provider capability flags (issue, top-up, withdraw, freeze, limits, controls)
[Improved] - WooCommerce gateway plugin bundled at public/general/woocommerce-gateway-v2.8.0/ for eCommerce checkout
[Improved] - Account management with KYC status flows and suspended / unverified / KYC-pending filtered views
[Improved] - Notification system with per-channel toggles and channel-specific templates
[Improved] - Security hardening across panels — account-status middleware, IP block, throttled phone verification, 2FA on User / Merchant / Agent / Admin
[Improved] - Multi-language UI with admin-managed translation strings via joedixon/laravel-translation
[Improved] - PDF receipts via barryvdh/laravel-dompdf for transactions, payment links, and subscription invoices
[Improved] - Voucher system with single-use / multi-use codes, per-currency limits, and merchant checkout redemption
[Improved] - Payment Links with fixed or buyer-defined amount, expiry, max uses, and guest checkout
[Upgraded] - Laravel framework to v11 with streamlined bootstrap and attribute-based middleware
[Upgraded] - PHP requirement to 8.3+ (PHP 8.4 supported)
[Upgraded] - Laravel Sanctum to v4 for Merchant API token authentication
[Upgraded] - Spatie Laravel Permission to v6 for staff roles and granular admin permissions
[Upgraded] - pragmarx/google2fa to v8 for TOTP-based two-factor authentication
[Upgraded] - Stripe PHP SDK to v17 with the latest Issuing API for virtual cards
[Upgraded] - Intervention Image to v3 for upload, resize, and format conversion
[Fixed] - Carry-over deposit, withdrawal, and gateway integration issues reported during v1.x
[Fixed] - Query optimization, N+1 reductions, and general performance improvements across admin and dashboard
[Removed] - Bundled development-only dependencies (Vite / Tailwind / Alpine) from the shipped runtime; the production UI uses pre-built assets in public/
Previous Releases (v1.x)
v1.0.6 – 30 August 2025
[Added] - Merchant disable feature
[Added] - Additional currencies for the StroWallet payment gateway
[Added] - Multi-fee option (Percentage + Fixed) for the StroWallet virtual card
[Improved] - Payment gateway list now displays all supported currencies
[Fixed] - Deposit issue with StroWallet
v1.0.5 – 30 July 2025
[Added] - Initial Control Panel for improved backend management
[Added] - Advanced search system in the admin panel
[Added] - WooCommerce plugin integration
[Upgraded] - Merchant API to enterprise-grade structure
[Fixed] - Payment gateway integration issues
[Fixed] - Various bugs and overall site performance optimization
v1.0.4 – 20 July 2025
[Added] - User and merchant account delete functionality
[Added] - Option to redirect visitors to login page instead of default landing
[Added] - User-to-merchant account conversion
[Added] - Separate withdrawal and deposit fee settings for users and merchants
[Fixed] - Currency management API
[Fixed] - Activity log display issues
v1.0.3 – 14 July 2025
[Added] - Custom landing page uploader
[Added] - Exchange API config in the admin currency section
[Added] - Site preloader management
[Improved] - Currency exchange error UI redesigned
[Improved] - Auto-disable deposit / withdraw methods when the underlying gateway is disabled
v1.0.2 – 6 July 2025
[Added] - New payment methods
[Added] - Initial multi-provider virtual card support
[Added] - Virtual card placeholder application flow
[Added] - Card top-up and withdrawal endpoints
[Improved] - Replaced static values with dynamic config options
v1.1.0 – 20 June 2025
[Added] - Merchant payment via QR code
[Added] - Payment using merchant payment link
[Added] - Voucher payment at checkout
[Added] - Advanced virtual card system (multi-provider support)
[Fixed] - Google reCAPTCHA integration issues
[Fixed] - General bug fixes and performance improvements

Architecture

Tech Stack

DigiKash is built on a modern Laravel stack with clearly separated concerns for backend, frontend, payments, and integrations.

LayerTechnologyNotes
RuntimePHP 8.3+PHP 8.4 supported. CLI and web-server versions must match.
FrameworkLaravel 11Streamlined bootstrap, attribute middleware.
AuthenticationLaravel Sanctum 4Personal-access tokens for the Merchant API.
Roles & PermissionsSpatie Laravel Permission 6Powers staff roles and granular admin permissions.
2FApragmarx/google2fa 8TOTP-based two-factor authentication.
UI FrameworkBootstrap 5 + jQuery 3.7Pre-built assets served from public/frontend and public/backend.
TypographyInter + JetBrains MonoSelf-hosted Google Fonts for UI & code.
IconsFont Awesome + IcoMoonMixed icon set across admin and dashboard.
ChartsChart.js + ApexChartsUsed in admin dashboard and analytics widgets.
Rich textSummernote LiteInline WYSIWYG for blog posts and page content.
Code editorCodeMirrorUsed in Style Manager and custom landing-page editor.
Date pickerDaterangepicker + Moment.jsDate-range filters across reports and transaction tables.
Image processingIntervention Image 3Uploads, resizing, format conversion.
QR codesbacon/bacon-qr-codeWallet QR, merchant pay QR, 2FA setup.
PDF receiptsbarryvdh/laravel-dompdfTransaction receipts and payment-link confirmations.
HTML purifiermews/purifierSanitises rich-text content before save.
PaymentsStripe, Mollie, Cryptomus, Bitnob, StroWalletMulti-provider abstraction for cards, deposits, and webhooks.
NotificationsMail (SMTP), Twilio SMS, Push, In-app inboxThree configurable channels (Email/SMS/Push) per template, plus a built-in database inbox.
Translationjoedixon/laravel-translationMulti-language UI managed from the admin panel.
Device detectionjenssegers/agentBrowser / device parsing for login activity logs.
Syntax highlightingPrism.jsUsed inside the Merchant API documentation.
DatabaseMySQL, MariaDB, or SQLiteBundled DB/digikash.sql for MySQL installs.

Project Layout

Folder Structure

DigiKash keeps Laravel's default structure and adds product-specific folders for payments, the installer, the project updater, and the bundled database import.

Core Folders
  • app/ — application logic, services, jobs, events, support classes.
    • Http/Controllers/Backend/ — admin-panel controllers (60+ modules).
    • Http/Controllers/Frontend/ — user, merchant, agent surfaces.
    • Http/Controllers/Api/ — merchant checkout API.
    • Http/Controllers/Webhook/ — incoming provider callbacks.
    • Http/Middleware/ — installer guard, feature flags, IP block, 2FA, account status.
    • Http/Requests/ — Form Request validators for every action.
    • Models/ — Eloquent models for accounts, wallets, transactions, P2P, cards, licenses.
    • Services/ — provider abstractions for payments, virtual cards, recharge, phone verification.
    • Payment/ — gateway-specific payment integrations (classmap autoloaded).
    • Support/ — installer manager, helpers, infrastructure utilities.
  • routes/web.php, admin.php, api.php, auth.php, install.php, channels.php, console.php.
  • resources/views/ — Blade templates: backend/, frontend/, installer/, emails/, pwa/, components/.
  • config/ — Laravel + product config: installer.php, project_updater.php, feature_catalog.php, admin_menus.php, control_panel.php, virtual_card.php, mobile_services.php.
  • DB/ — bundled digikash.sql used by MySQL / MariaDB installs.
  • database/ — migrations, factories, seeders (used by tests and SQLite).
  • public/ — web entry point. Your domain points here. Pre-built CSS / JS assets live under public/general, public/backend, and public/frontend.
  • storage/ — logs, cache, sessions, uploads, update packages, recovery backups.
  • documentation/ — this docs package.
  • vendor/ — Composer dependencies shipped with the release.
Important Files
PathPurpose
.envEnvironment values. Written by the installer. Never publish this file.
composer.jsonPHP dependencies and Laravel package scripts.
package.jsonNode dependency manifest (optional — the shipped UI uses pre-built assets under public/).
artisanLaravel command-line entry point.
bootstrap/app.phpMiddleware, routing, and exception registration (Laravel 11 style).
storage/app/installedInstaller lock file. Removing it re-opens the installer.

Config

Configuration Files

Most product behavior is configured from the admin UI, but these files drive what the UI can do.

FileWhat it controls
config/installer.phpRequired extensions, writable paths, license requirement, core / demo seeders.
config/project_updater.phpUpdate server URL, product slug, Envato item ID, signed-package public key, protected paths.
config/feature_catalog.phpMaster list of every toggleable feature (deposit, withdraw, P2P, cards, ranks, vouchers, subscriptions...).
config/admin_menus.phpSidebar layout for the admin panel.
config/control_panel.phpCategorized shortcuts used by the Control Panel screen.
config/virtual_card.phpCard provider registry (Stripe, StroWallet, Bitnob) and per-provider capabilities.
config/wallet.phpBrand prefix for newly generated wallet IDs (the DK in DK-USD-9F2A-E710). See Wallet ID Format.
config/mobile_services.phpPhone-verification and mobile-recharge provider registry.
config/permission.phpSpatie Permission setup for staff roles.

.env

Environment Variables

Most values are written by the installer and edited from the admin UI. These are the ones you may need to touch by hand.

VariableDescription
APP_NAMEPublic-facing platform name.
APP_ENVUse production in live deployments.
APP_DEBUGMust stay false in production.
APP_URLCanonical HTTPS URL of the site.
WALLET_ID_PREFIXBrand prefix for new wallet IDs (2–6 uppercase letters, default DK). See Wallet ID Format.
DB_*Database connection details written by the installer.
SESSION_DRIVERDefault is file. Use database or redis at scale.
QUEUE_CONNECTIONUse database by default. Switch to redis for high throughput.
MAIL_*SMTP credentials for transactional email.
PROJECT_UPDATER_SERVER_URLOverride the default release server when self-hosting.
PROJECT_UPDATER_PRODUCT_SLUGProduct slug — defaults to digikash.
PROJECT_UPDATER_ENVATO_ITEM_IDEnvato item ID — defaults to 58275561.
MOBILE_RECHARGE_PROVIDERsandbox, reloadly, or http.
PHONE_VERIFICATION_PROVIDERlog (dev) or twilio (production).

Config · .env

Wallet ID Format

Every wallet is issued a unique, shareable ID that users hand out to receive money. It opens with a short brand prefix you can change to match your platform name.

Anatomy of a wallet ID

A generated ID looks like DK-USD-9F2A-E710 and is built from three parts:

Brand prefix

DK — the configurable part. 2–6 uppercase letters. Defaults to DK (DigiKash).

Currency code

USD — the wallet's currency, added automatically. Not configurable.

Unique code

9F2A-E710 — random, collision-checked, unique per wallet.

Where to change the prefix

The prefix is driven by a single environment variable, WALLET_ID_PREFIX, read through config/wallet.php. Set it in your .env file:

# .env — brand prefix for newly generated wallet IDs
# 2–6 uppercase letters. Leave as DK to keep the default.
WALLET_ID_PREFIX=PAY
Apply the change — no terminal needed

After saving .env, tell the app to reload its settings by clearing the cache from the admin panel. Click the Clear Cache shortcut at the bottom of the sidebar:

How to apply
Admin sidebar Bottom shortcuts Clear Cache

A “Cache Cleared Successfully” message confirms it worked, and the new prefix is live right away. New wallets are now issued as PAY-USD-XXXX-XXXX.

Have terminal access? Running php artisan config:cache does exactly the same thing — but the Clear Cache button above is all you need.

Changing the prefix is safe — it only affects new wallets

Existing wallet IDs are permanent identifiers that people have already shared and saved. They are never rewritten when you change the prefix. Lookups and masking recognise the ID structure rather than a fixed prefix, so every previously issued ID keeps working exactly as before — no migration, no broken transfers.

Good to know

Pick the prefix once at launch and keep it stable — it is a branding decision, not a routine setting. It is deliberately separate from your Site Title, since renaming the site should not alter wallet IDs. Invalid values (anything other than 2–6 uppercase letters) fall back to DK automatically.


Authentication

Admin Login

The admin panel is the control center for accounts, transactions, content, settings, and maintenance. Access is gated by a separate auth guard.

How to access
Browser /admin/login page
Login URL

https://yourdomain.com/admin/login

Credentials

The first super-admin is created during installation. There is no shared default password.

Security tips

Use a unique strong admin password, enable Two-Factor Authentication, limit staff permissions, and consider changing the admin URL prefix from Settings → Site Settings → Security.


Authentication

User, Merchant, & Agent Login

Each audience has a dedicated entry point. Login accepts the registered email or username with the account password.

How to access
Public site Header Login / Sign in
Forgot password Login page Forgot Password link
Login URLs
AudienceURLNotes
User/user/loginDefault end-user panel.
Merchant/merchant/loginBusiness dashboard for receiving payments.
Agent/agent/loginCash-in / cash-out operations panel. Hidden when the Agent feature is disabled.
Shared Login Features
  • Email or username + password.
  • Password visibility toggle.
  • Remember Me for trusted devices.
  • Forgot Password — sends a reset link to the registered email.
  • Sign Up link to the matching registration form.
  • Protected pages redirect guests to the correct login page based on the requested area.
  • Account-status checks block suspended accounts at the auth layer.
  • Two-Factor Authentication is enforced when enabled on the account.

Account Security

Two-Factor Authentication

Add a second layer to every login with a time-based one-time code (TOTP). Strongly recommended for admins and any account that moves real money.

Where to go
Settings Security 2FA

The Security Center gathers 2FA, password, active sessions, and the Wallet PIN onto one screen, with a readiness meter so each account can see at a glance what's still unprotected.

Settings → Security · the Security Center
User Security Center — 2FA, password, sessions, Wallet PIN, protection readiness, and recent sign-in activity
Turn it on in three steps
1
Open the 2FA tab

Go to Settings → Security → 2FA. The Security Center shows your current protection readiness right away.

2
Scan the QR code

Scan it with any authenticator app — Google Authenticator, Authy, or 1Password all work.

3
Confirm the code

Enter the 6-digit code from the app once to activate. Every later login then asks for a fresh code.

Keep access if you lose your phone

Disabling 2FA requires the account password, so store your authenticator backup (or recovery codes) safely. From the same screen you can also sign out other browser sessions if a device is lost.


Authentication

Wallet PIN

A private 6-digit PIN that authorises wallet payments — so money can't move from an already-signed-in session without a second secret only the account owner knows.

Where to go
Settings Security Wallet PIN

Think of it as a checkout PIN, separate from the login password. The password gets you into the account; the Wallet PIN is asked for at the moment of payment — a transfer, a withdrawal, or a card checkout — so funds stay protected even if someone reaches an open screen.

Settings → Security → Wallet PIN · setting a new PIN
User Wallet PIN setup — confirm login password, choose a 6-digit PIN, and the in-app PIN standards
Setting it up
1
Open the Wallet PIN tab

Go to Settings → Security → Wallet PIN. A Setup Required badge shows until a PIN is set.

2
Confirm it's really you

Enter your current login password — this stops anyone else setting a PIN on your account.

3
Choose & confirm the PIN

Type a 6-digit PIN twice, then press Set PIN. You'll use it from then on to approve payments.

PIN standards
  • Use exactly 6 digits.
  • Avoid repeated or sequential numbers (no 111111 or 123456).
  • Keep it different from your login password.
  • Forgot it? Reset by email — which also re-verifies your password (and 2FA if it's on).
When the PIN is asked for

Once set, the Wallet PIN is required before transfers, withdrawals, and card payments. Never share it — support will never ask for it, and it can always be reset securely by email.


User Panel

User Dashboard

After login, every user lands on a dashboard that summarizes wallet balances, recent activity, and quick actions for the most-used features.

How to access
Login User Dashboard (default landing)
Sidebar Dashboard
Sidebar Wallet My Wallets / My QR Code
Multi-currency Wallets

Each enabled currency gets its own balance card with available, pending, and locked amounts.

Quick Actions

One-tap shortcuts for Deposit, Withdraw, Send, Request, Exchange, and Pay Merchant.

Activity Snapshot

Recent transactions, pending requests, KYC status, and rank progress shown above the fold.

Notifications Inbox

In-app inbox for payments, transfers, KYC decisions, and support replies.

Sidebar Navigation
  • Wallet — balances, deposits, withdrawals, transfers, exchange, transaction history.
  • Pay — merchant checkout, payment links, vouchers, mobile recharge.
  • Earn — wallet staking plans, referral tree, ranking progress.
  • Cards — virtual card requests, active cards, top-ups, withdrawals.
  • P2P — marketplace offers, my orders, advertise, payment accounts.
  • Account — profile, KYC, security (2FA, PIN), subscriptions, notification preferences.

User Panel

Deposit Money

Top up the wallet using any active automatic gateway (card, crypto, mobile money) or a manual deposit method with proof-of-payment upload.

How to access
Sidebar Wallet Deposit
Sidebar Wallet Deposit History
1
Pick a Method

Choose between automatic gateways (instant credit) or manual methods (admin review). Each method shows its min, max, fees, and supported currencies.

2
Enter Amount

The form previews the fee, the net you receive, and the final wallet credit before submitting.

3
Complete Payment

For automatic methods you are redirected to the gateway checkout. For manual methods you upload proof and wait for admin approval.

4
Wallet Credited

Auto deposits credit instantly on successful callback. Manual deposits credit after admin approval — both trigger a notification and an entry in transaction history.

  • Supports any currency the admin has enabled for users.
  • Per-gateway fee preview before confirmation — no surprise charges.
  • Manual proof uploads accept image / PDF receipts.
  • Deposit history shows status, method, gateway reference, fee, and net amount.
  • Failed gateway callbacks reverse pending entries automatically.

User Panel

Withdraw Money

Cash out wallet balance to a linked bank account, crypto address, or mobile-money number. Automatic methods process instantly through the gateway; manual methods queue for admin review.

How to access
Sidebar Wallet Withdraw
Sidebar Wallet Withdraw Accounts
1
Add a Withdraw Account

Save bank, crypto, or mobile-money payout details under Withdraw Accounts for fast reuse.

2
Pick a Method

Automatic methods send the payout straight from the gateway. Manual methods require admin approval and finance processing.

3
Enter Amount & Confirm

The form previews the fee, payable amount, and wallet deduction. Wallet PIN and 2FA prompt if enabled.

4
Track Status

Withdraw history shows the request status — Pending, Processing, Completed, or Rejected — with admin notes when applicable.

KYC required

Withdraw is KYC-gated by default. Users see a clear prompt to complete KYC before the first payout.

Scheduled Withdrawals

Admins can restrict withdrawal submissions to specific windows (e.g. Monday + Thursday). Outside the window, users see the next available time slot.


User Panel

Send & Request Money

Instant wallet-to-wallet transfers between platform accounts, plus payment requests another user can approve and pay from their wallet.

How to access
Sidebar Wallet Send Money
Sidebar Wallet Request Money
Send Money
  • Find the recipient by username, email, or phone number.
  • Same-currency transfers settle instantly with zero conversion.
  • Cross-currency transfers use the live exchange rate with a confirmed preview.
  • Add a private note and an optional memo visible only to the recipient.
  • Wallet PIN + 2FA enforced when configured.
Request Money
  • Send a payment request to any platform user.
  • Recipient sees the request in their inbox with one-tap approve / reject.
  • Approved requests transfer the balance instantly and notify both parties.
  • Track outstanding, approved, and rejected requests under Money Requests.

User Panel

Exchange Currencies

Convert wallet balance from one supported currency to another using the live exchange-rate engine — instantly and without leaving the wallet.

How to access
Sidebar Wallet Exchange Money
  • Pick source and destination currencies from your enabled wallets.
  • Preview the rate, fee, and amount-you-receive before submitting.
  • Conversion is instant — both wallets update immediately on confirmation.
  • Every exchange is recorded as a single transaction with FX details for receipts.
  • Admin can configure per-currency exchange fees and minimum trade amount.

User Panel

Wallet Earn — Staking New in 2.0

Lock part of your wallet balance into an admin-defined earning plan and receive rewards automatically on a fixed schedule. The platform handles every payout and the principal return for you — there is nothing to claim manually.

How to access
Sidebar Wallet Earn Dashboard / Plans / My Stakes
How it works
1
Pick a Plan

Each plan shows its reward (a fixed amount or a percentage of your stake per payout), payout cycle (daily / weekly / monthly / end of term), lock term, currency, min/max stake, and whether your principal is returned at maturity.

2
Stake from Wallet

Choose the wallet and amount (within the plan's min/max). The amount is immediately debited and locked from your wallet, and a stake record is created.

3
Goes Active

If the plan is auto-approved the stake activates instantly; otherwise it stays Pending until an admin approves it. Once active, the maturity date and first payout date are set.

4
Earn Automatically

On every payout cycle the system credits the reward straight to your wallet and logs a transaction — no action needed. My Stakes shows paid vs. expected profit, payouts completed, and the next payout date.

5
Matures & Closes

When the term ends (or all scheduled payouts are made) the stake is marked Completed. If the plan returns principal, your original stake is automatically credited back to your wallet.

Example: what a plan looks like
 Wallet Earn → Plans
Golden 30 FEATURED
1% / day
Reward = 1% of your stake, paid every day
Lock term
30 days
Payout
Daily
Min stake
100 USDT
Max stake
10,000 USDT
Currency
USDT
Principal
Returned at maturity
Stake now
Example: how the money flows

Suppose you stake 1,000 USDT into the "Golden 30" plan above. Here is exactly what happens to your balance:

WhenWhat happensYour wallet
Day 0You stake 1,000 USDT — it is locked out of your spendable balance.− 1,000 USDT
Every day1% of 1,000 = 10 USDT is credited to your wallet automatically.+ 10 USDT × 30
Day 30 (maturity)All 30 payouts are done (300 USDT total), and your 1,000 USDT principal is returned.+ 1,000 USDT
ResultYou keep your 1,000 USDT and earned 300 USDT profit.1,300 USDT total

Numbers are an illustration — your platform's real plans, rates, currencies, and lock terms are set by the admin. A Fixed plan would instead pay the same flat amount each payout regardless of how much you stake.

Example: tracking it on "My Stakes"
 Wallet Earn → My Stakes
Golden 30 · 1,000 USDT ACTIVE
Rewards paid
120 / 300 USDT
Payouts
12 of 30
Next payout
in 8 hours
Matures
in 18 days
40% complete
The My Stakes dashboard

Track every stake's status, principal, rewards paid so far, expected total profit, payouts completed, and the next payout date — all from one screen. Each payout and the principal return also appear in your normal transaction history.

Stake statuses & your principal

A stake moves through Pending → Active → Completed. If a pending stake is Rejected, or an active stake is Canceled by an admin, your full principal is returned to your wallet right away. There is no self-service early unstake — an active stake runs to its maturity date.

KYC may be required

By default Wallet Earn requires a verified account. If staking is hidden for you, complete KYC first — the requirement can be changed by the admin under Feature Controls.


User Panel

Mobile Recharge New in 2.0

Top up any mobile number from wallet balance — for yourself or anyone else — through the platform's configured recharge provider.

How to access
Sidebar Mobile Recharge
1
Enter Number & Operator

Pick the country and operator from the admin-configured list, then enter the destination phone number.

2
Choose Amount

Pick from suggested packages or enter a custom amount within the configured min/max.

3
Confirm & Pay

Fee preview, final cost, and wallet PIN prompt before submission.

4
Receive Status

Status update — Completed, Pending, or Failed — with a notification + transaction record.

  • Supported drivers: Sandbox (testing), Reloadly (global airtime), generic HTTP API.
  • Recharge history shows every top-up with operator, amount, fee, and provider reference.
  • Failed recharges automatically refund the wallet.

User Panel

Pay Merchants

Three ways to pay registered merchants — scan a QR code, open a payment link, or apply a voucher at checkout.

How to access
QR Code Open merchant's QR with camera Checkout page loads
Payment Link Open shared link Pay from wallet or gateway
Voucher Merchant checkout Apply Voucher Code
QR Code

Merchants display their unique payment QR; customers open it from a camera or QR app to load the checkout page directly.

Payment Link

Open a merchant's payment link from chat, email, or social — sign in or pay as guest with a supported gateway.

Voucher Code

Apply a redeemable voucher at checkout to reduce the payable amount or pay in full.

Digital Receipt

Every merchant payment generates a downloadable PDF receipt with order reference and tax breakdown.



User Panel

P2P Trading New in 2.0

Buy or sell currency directly with other platform users through escrow-protected peer-to-peer trades.

How to access
Sidebar P2P Marketplace / Offers
Sidebar P2P My Orders
Sidebar P2P Payment Accounts

The marketplace works like a familiar crypto P2P board: pick Buy or Sell, filter by asset, currency, and payment method, and trade with vetted advertisers who show their completion rate, trade count, and a Trusted badge.

Sidebar → P2P Marketplace → P2P Market
User P2P Marketplace — buy/sell offers with advertiser ratings, price, available limit, and payment methods
As a Buyer / Seller
  • Browse the marketplace — filter offers by currency, payment method, country, and price.
  • Open an order: the seller's funds are locked in escrow immediately.
  • Pay (or receive payment) through the agreed off-platform method.
  • Mark as paid / confirm receipt — escrow releases automatically.
  • Rate the counterparty after the trade closes.
As an Advertiser
  • Post offer ads with your own price, min/max trade limits, payment methods, and terms.
  • Save reusable Payment Accounts (bank, mobile money, cash) for fast offer creation.
  • Promote offers with paid Promotion Packages for featured placement.
  • Built-in trader profile with completion rate, response time, and rating.
Disputes & Safety
  • Open a dispute from inside the trade chat with proof attachments.
  • Platform admins review history and rule on the verdict.
  • Escrow only releases on mutual confirmation or admin verdict — funds are never at risk in transit.

User Panel

Virtual Cards

Apply for a virtual card, top it up from your wallet, and use it for online payments anywhere Visa or Mastercard is accepted.

How to access
Sidebar Virtual Cards My Cards
Sidebar Virtual Cards Request New Card
Sidebar Virtual Cards Cardholders

The My Cards page is your hub. The top row totals your balance, monthly spend, and pending authorizations across all cards, and the selected card shows its live balance, masked number, expiry, and a Reveal button for the full details — with Freeze and Set Limits right below (where the provider supports them). The left tabs switch between My Cards, Cardholders, and My Requests.

Sidebar → My Virtual Cards → My Cards
User My Virtual Cards — an active Stripe Issuing card with balance, masked number, Reveal, Freeze, Set Limits, and spend overview

Your wallet balance funds the card, and the exact actions you'll see — top-up, withdraw, freeze, spend limits — depend on the provider your platform issued it through. Here's the journey from request to first payment:

1
Request a card

Open Request New Card, choose the currency and network, and fill in any KYC fields the provider asks for (name on card, address, date of birth).

2
Get approved

Your request goes to the admin review queue. On approval the card is issued and the one-time issuance fee is taken from your wallet.

3
Add funds

Move wallet balance onto the card from My Cards to set its spendable amount. Pull funds back anytime with Withdraw, where the provider supports it.

4
Pay online

Reveal the card number, expiry, and CVV in the secure panel, then use it anywhere Visa or Mastercard is accepted. Freeze it instantly if it's ever lost.

  • Each card keeps a full transaction history — every authorization and settlement is listed.
  • Card details stay masked by default; reveal the full number and CVV only when you need them.
  • Lost the card? Freeze it in one tap (available when your provider supports freeze).
  • Top-up and withdraw fees are set by your platform and shown before you confirm.
Treat it like a real card

Your virtual card number, expiry, and CVV can spend real money — never share them, only enter them on sites you trust, and freeze the card the moment something looks off.


User & Admin

Gift Cards

Users send a designed gift card funded straight from their wallet, or redeem a code they've received — all backed by a catalog of themed templates you control as the admin.

For users — send & redeem
Where to go
Sidebar Gift Cards

The Gift Cards page leads with Create Gift Card and Redeem Code, and tracks everything you've Sent, Received, and Redeemed.

Sidebar → Gift Cards
User Gift Cards — send a designed gift card or redeem a received code, with Sent/Received/Redeemed tabs
  • Send — pick a template, set the amount and recipient email, add a personal message, and optionally schedule delivery. It's funded straight from your wallet.
  • Redeem — enter a gift-card code you've received and the value lands in your wallet.
  • Track — the Sent / Received / Redeemed tabs keep a full history with each card's status.
For admins — templates & oversight
Where to go
Admin Finance & Wallet Gift Cards · Templates

Templates is the design catalog users choose from — each template has a name, category (Birthday, Holiday, Thank You, Anniversary…), and active/draft status.

Gift Cards → Templates
Admin Gift Card Templates — themed designs by category with active/draft status and usage count

Every issued card shows up under All Gift Cards with its code, sender, recipient, amount, and status — and you can cancel a delivered card that hasn't been redeemed.

Gift Cards → All Gift Cards
Admin All Gift Cards — every issued card with code, sender, recipient, amount, and status

User & Admin

International Remittance New in {{V}}

Cross-border money transfer. Users send to recipients abroad with live FX quotes and clear fees, along corridors you define — each with its own margin, limits, and payout routing.

For users — send money abroad
Where to go
Sidebar Remittance New Transfer
Sidebar → Remittance → New Transfer
User Send Money Abroad — choose a corridor, see live you-send / recipient-gets rates, and pick a payout method
1
Choose a corridor

Pick the destination (e.g. USD → BDT). The live exchange rate and fee appear instantly.

2
Enter the amount

See exactly how much you send and how much the recipient gets. The quoted rate locks for ~15 minutes.

3
Pick payout & recipient

Choose how they get paid, then add or select a saved recipient.

4
Pay & track

Pay from your wallet and follow every step under Transfer History.

For admins — corridors & transfers
Where to go
Admin Remittance Corridors · Transfers

A corridor is a country pair with its own FX spread, fee (fixed + percentage), limits, and payout gateway. Add one per route you support — the sample below runs USD into Bangladesh, India, Nigeria, and the Philippines.

Remittance → Corridors
Admin Remittance Corridors — country pairs with FX spread, fee, limits, and payout gateway

Every transfer is monitored under Transfers, so you can follow status and step in if a payout needs attention.

Remittance → Transfers
Admin Remittance Transfers — monitor cross-border transfer status and payouts
Stay compliant

Cross-border transfers are regulated. Require KYC before remittance, set realistic per-corridor limits, and use the FX spread to cover your provider costs. Keep payout-gateway credentials in sandbox until you've tested a full transfer end-to-end.


User Panel

Subscriptions New in 2.0

Browse available plans, subscribe to unlock platform features and quota upgrades, and manage billing from a single screen.

How to access
Sidebar Subscription Browse Plans
Sidebar Subscription My Subscription / History
  • Plan cards show price, billing cycle, included features, and quota limits.
  • Subscribe in one tap — pays from wallet or any active gateway.
  • Switch tiers anytime — proration applied automatically.
  • Cancel anytime from My Subscription. Plan stays active until the period ends.
  • Full transaction history with downloadable invoices.

User Panel

Referral Program & Vouchers

How to access
Sidebar Referral Program
Sidebar Rank Showcase
Sidebar Vouchers My Vouchers / Create / Redeem
Referral Program
  • Get a unique referral code and shareable link from your profile.
  • Earn configurable rewards when a referred friend signs up, completes KYC, or makes their first deposit.
  • See your referral tree with each referred user, their status, and reward earned.
  • Rewards credit directly to your wallet — no separate withdrawal step.
User Rankings
  • Progress through ranks (Bronze → Silver → Gold → Platinum or admin-defined tiers).
  • Each rank unlocks higher wallet limits, deeper referral tree depth, and reward multipliers.
  • Promotion happens automatically as you cross the activity threshold.
Vouchers
  • Redeem voucher codes from Wallet → Redeem Voucher.
  • Codes credit the wallet instantly or apply as a discount at merchant checkout.
  • Per-voucher expiry, amount, and usage limit enforced automatically.

User Panel

KYC Verification

Submit identity documents to unlock KYC-gated features like withdrawals, virtual cards, P2P trading, and send-money limits.

How to access
Profile Settings KYC Verification
Dashboard banner Verify your account
1
Open KYC Form

The admin-configured KYC template lists the exact fields required for your account type.

2
Upload Documents

Upload required ID images / PDFs (e.g. national ID, passport, address proof, selfie).

3
Submit for Review

Submission queues for admin review. Status visible on the dashboard banner.

4
Decision Notification

The admin approves or rejects (with optional remarks). All KYC-gated features unlock immediately on approval; if rejected you can resubmit after fixing the flagged fields.

Resubmission supported

If a submission is rejected, you can fix the flagged fields and resubmit without losing previous data.


User Panel

Profile & Security

Manage your personal details, account security, sessions, and verification from a single Settings workspace, organised into clear tabs.

Where to go
Settings Profile · Security · Notifications · KYC Verification
Profile tab

Your identity and contact details — name, username, email, phone, avatar, language, and country. These feed your card name, receipts, and notifications.

Settings → Profile
User Profile settings — identity and contact details
Security tab

The Security Center puts everything that protects the account on one screen — with a readiness meter that tracks email verification, 2FA, and the Wallet PIN, plus recent sign-in activity and one-click session sign-out.

Settings → Security · the Security Center
User Security Center — 2FA, password, Wallet PIN, sessions, and recent sign-in activity
What each control does
Profile

Name, username, email, phone, avatar, language, and country.

Password

Change it anytime — length, mixed case, and number rules are enforced.

Two-Factor Auth

TOTP via any authenticator app. Full 2FA guide →

Wallet PIN

A 6-digit PIN that authorises payments. Full Wallet PIN guide →

Phone Verification

Verify by SMS code to unlock SMS alerts and mobile recharge.

Sessions & Activity

See recent sign-ins (IP, device, location) and sign out other sessions in one click.


User Panel

Notifications & Support

How to access
Top bar Bell icon (Notifications)
Sidebar Support My Tickets / Create Ticket
Sidebar Transaction History
Notification Inbox
  • In-app inbox for payments, transfers, KYC, P2P, support, and system alerts.
  • Channel preferences — opt in/out of email, SMS, push, and in-app per event type.
  • Mark all as read or filter by unread / category.
Support Tickets
  • Open a ticket from Support → New Ticket with category, subject, and message.
  • Attach files (screenshots, receipts) to the ticket body.
  • Reply thread shows admin responses with timestamps.
  • Ticket categories drive auto-routing to the right staff role.
  • Close a ticket when resolved — re-open if the issue returns.

Admin Panel

Dashboard & Control Panel

The dashboard summarizes user growth, merchant activity, transaction totals, wallet balances, and recent movement. The Control Panel surface adds searchable shortcuts to every admin module.

How to access
Admin Sidebar Dashboard (top)
Sidebar Footer Activity / Settings / Tickets / Optimize
Overview Widgets

Live counts for users, merchants, agents, KYC queues, transactions, virtual cards, and payment links.

Control Panel

Categorized shortcuts: Overview, Account Operations, Compliance, Wallet & Payments, Communication, Site Content, Platform Configuration.

Quick Search

Permission-aware search across menu items, settings, and reports — driven by control_panel.php.

Sidebar Footer Shortcuts

Activity log, Settings, In-Progress Tickets, and Site Optimize — always one click away.


Admin Panel

Accounts & KYC

Manage users, merchants, agents, KYC submissions, account status, and support conversations with a consistent review workflow.

How to access
Sidebar Account Management User Accounts All / Active / Suspended / Unverified / KYC Pending
Sidebar Account Management Business Profiles Merchants / Pending Merchants / Agents / Commission Rules
Sidebar Account Management KYC Verification Pending Reviews / Records / Templates
User Accounts
  • List, filter, and search every registered user.
  • Dedicated views for Active, Suspended, Unverified, and KYC-Pending users.
  • Manage profile, wallet balance, features, password, and status from a single screen.
  • "Login as user" for safe support sessions (audit logged).
  • Bulk mail to all users from the admin panel.
Merchants & Agents
  • Approve or reject merchant and agent applications after reviewing profile + documents.
  • Manage active/inactive status, business profiles, and commission rules (agents).
  • Convert user accounts to merchants when needed.
KYC Verification
  • Define required fields per audience using KYC Templates.
  • Process submissions from a Pending Reviews queue.
  • Approve or reject with optional admin remarks — the user is notified automatically.
  • Rejected users can resubmit a fresh KYC after correcting the flagged fields.
  • Features gated by KYC (withdraw, send money, virtual cards, P2P) automatically unlock on approval.

Admin Panel

Finance & Wallet

Configure supported currencies, manage exchange rates, and use the transactions ledger as the source of truth for money movement.

How to access
Sidebar Finance & Wallet Currency Management
Sidebar Finance & Wallet Transactions
Currency Management
  • Add, edit, or disable currencies with code, symbol, exchange rate, and per-role availability.
  • Connect to an exchange API for live rates, or manage rates manually.
  • Tag currencies as user-facing, merchant-facing, agent-facing, or all three.
Transactions Ledger
  • Single, searchable list of every deposit, withdrawal, transfer, exchange, reward, voucher, and payment link transaction.
  • Filter by user, type, status, date range, gateway, and currency.
  • Export to CSV for finance reconciliation.

Admin Panel

Payment Gateways

DigiKash ships with first-class integrations for 25+ payment providers covering cards, mobile money, crypto, and African / Asian regional gateways — all behind a single provider-agnostic abstraction.

Bundled providers
CategoryProviders
Cards / globalStripe, PayPal, 2Checkout, Mollie
African gatewaysFlutterwave, Paystack, Moneroo, Paymob, Voguepay, MTN, Airtel, Cashmaal
Indian gatewaysRazorpay, Instamojo
CryptoCryptomus, Coinbase Commerce, CoinGate, CoinPayments, NowPayments, Binance Pay, Blockchain, Block.io, BitPay Server
ManualBank transfer / cash / any custom method via the Manual Payment System
How to access
Sidebar Finance & Wallet Payment Gateways
  • Stripe, Mollie, Cryptomus, and additional gateways available out of the box.
  • Enable per currency and set per-gateway minimums, maximums, fees, and surcharges.
  • Test in sandbox mode before flipping to live credentials.
  • Webhook callback URLs are auto-generated — copy them into the provider dashboard.
  • Disabled gateways automatically hide dependent deposit / withdraw methods.
Always test on HTTPS

Most providers refuse to deliver webhooks to non-HTTPS endpoints. Use ngrok or a staging subdomain with a valid certificate when testing locally.


Admin Panel

Deposits & Withdrawals

Each side of money movement supports both Automatic (gateway) and Manual (bank/cash) methods with separate review queues.

How to access
Sidebar Finance & Wallet Deposits Manual Requests / Auto Methods / Manual Methods / History
Sidebar Finance & Wallet Withdrawals Manual Requests / Auto Methods / Manual Methods / Scheduled / History
Deposit Methods

Configure automatic gateway methods or manual deposit instructions. Per-method fee, limit, and currency rules.

Manual Deposit Requests

Review proof-of-payment uploads, approve to credit the wallet, or reject with a reason.

Withdraw Methods

Set up automatic payouts (crypto, gateway-based) and manual bank/cash methods with per-method limits.

Scheduled Withdrawals

Cap withdrawal processing to defined windows so finance teams can batch payouts.

Separate User & Merchant Fees

Configure deposit and withdrawal fees independently for users and merchants.

Deposit & Withdraw History

Dedicated historical views with status, gateway, fee, and net-amount columns.


Admin Panel

Payment Links, Merchant Payments & Mobile Recharge

Money-out products users and merchants can issue, share, and collect on.

How to access
Sidebar Finance & Wallet Payment Links
Sidebar Finance & Wallet Mobile Recharge
Payment Links
  • Generate shareable links that customers can pay from a wallet or supported gateway.
  • Configurable amount (fixed or buyer-defined), currency, expiry, and reuse policy.
  • Track payments, refunds, and link status from the admin list.
Merchant Payments
  • Customers pay merchants from their wallet or any active payment gateway.
  • Merchants share a unique payment QR code (printed in-store or shown on screen); customers open it to load the checkout.
  • Voucher redemption is supported at the checkout step.
  • WooCommerce plugin ships pre-built at public/general/woocommerce-gateway-v2.8.0/ for eCommerce integration.
  • Sanctum-authenticated Merchant API with HMAC-signed webhooks (see /api-docs).
Mobile Recharge
  • Top up mobile numbers from wallet balance through pluggable providers.
  • Supported drivers: sandbox (testing), reloadly (global airtime), http (generic HTTP API).
  • Configurable minimum, maximum, fixed fee, and percentage fee from config/mobile_services.php.
  • Per-provider operator catalog managed under Mobile Recharge → Providers.

Developers & Compliance

Merchant API & Payment Security (PCI DSS)

How a merchant accepts payments through DigiKash — and exactly where a customer's card data goes. The short version: card details never touch DigiKash or the merchant's server. They go straight to the payment provider's own PCI-certified page.

Live API reference
Browser yourdomain.com/api-docs
The short answer to give a client or security reviewer

DigiKash uses a redirect-to-hosted-gateway model. The buyer types their card on the payment processor's own secure page (Stripe, PayPal, Razorpay, Flutterwave, Paystack, and 25+ more). DigiKash and your server never see, transmit, or store the card number or CVV — so your PCI DSS exposure stays at the minimal SAQ A level.

How the Merchant API works on the buyer's end

Integration is server-to-server. Your backend talks to DigiKash; your customer is simply redirected to a secure checkout. No payment SDK or card field lives in your app.

 Payment flow · merchant → DigiKash → gateway
1
Your server creates a payment. It calls POST /api/v1/initiate-payment with the amount, currency, and redirect URLs — no card data. DigiKash returns a signed payment_url.
2
You redirect the buyer to that payment_url — the DigiKash hosted checkout. It shows the amount and a list of enabled payment methods. It has no card input field.
3
The buyer picks a gateway and is sent to that provider's own page. For a card payment, that's Stripe Checkout, PayPal, Razorpay, etc. — the card number and CVV are entered there, on the processor's PCI-certified domain.
4
The gateway processes & notifies DigiKash via a signed webhook/IPN. DigiKash credits the merchant wallet and calls your ipn_url.
5
You confirm the result with GET /api/v1/verify-payment/{trxId} and show your buyer the success or cancel page.
Where exactly does the card data go?

Card data flows directly from the buyer's browser to the payment processor. It is never posted to DigiKash and never written to the DigiKash database.

Buyer's browserenters card
card + CVV
Payment gatewayPCI DSS Level 1 · tokenizes
result only
DigiKash + merchantsuccess/fail + masked data
  • No raw card storage. DigiKash never receives the PAN (card number) or CVV, so there is nothing sensitive to store or leak.
  • Tokenization happens at the gateway. Stripe, PayPal, Razorpay, etc. tokenize and process the card on their own infrastructure — each is independently certified PCI DSS Level 1.
  • DigiKash only sees the outcome — transaction status plus masked, non-sensitive metadata (e.g. last 4 digits, brand) returned by the gateway.
  • Minimal PCI scope for you. Because card entry is fully delegated to a redirect/hosted page, a typical merchant qualifies for the lightest self-assessment (SAQ A).
An honest note on “PCI compliance”

DigiKash is not a payment processor and does not claim its own PCI certification — it doesn't need one, because it never handles card data. Compliance for the card itself is carried by the connected gateways. Your responsibility is simply to keep DigiKash on HTTPS and your API keys secret.

Authentication & the request your server sends

The Merchant API is authenticated with per-merchant keys plus an HMAC request signature — never with card data. Each call carries these headers:

  • X-API-Key and X-Merchant-Key — your public identifiers (separate keys for sandbox and production).
  • X-Timestamp + X-Signature — an HMAC signature of the request, signed with your secret so requests can't be forged or replayed.
  • X-Environmentsandbox or production.
POST /api/v1/initiate-payment
X-API-Key: pk_live_xxxxxxxx
X-Merchant-Key: mk_live_xxxxxxxx
X-Environment: production
X-Timestamp: 1719750000
X-Signature: <hmac-sha256 of the request body>

{
  "ref_trx": "ORDER-10231",
  "currency_code": "USD",
  "payment_amount": 49.99,
  "description": "Order #10231",
  "customer_name": "Jane Doe",
  "customer_email": "jane@example.com",
  "success_redirect": "https://yourstore.com/payment/success",
  "cancel_redirect": "https://yourstore.com/payment/cancel",
  "ipn_url": "https://yourstore.com/webhooks/digikash"
}

Notice there is no card field anywhere in the request — only the order amount and where to send the buyer. DigiKash replies with a payment_url you redirect to.

Refunding a payment New

A completed payment can be refunded in full or in part from your server with one call. The merchant wallet is debited, a refund transaction is recorded, and your ipn_url receives a signed payment.refunded webhook.

POST /api/v1/refund-payment
X-API-Key: pk_live_xxxxxxxx
X-Merchant-Key: mk_live_xxxxxxxx
X-Environment: production
X-Timestamp: 1719750000
X-Signature: <hmac-sha256 of the request body>

{
  "trx_id": "TRXAB12CD34EF",   // the original payment
  "amount": 10.00,              // optional — omit for a full refund
  "reason": "Customer returned item",
  "ref_refund": "RFD-10231"     // optional — makes the call idempotent
}
  • Full or partial. Omit amount to refund everything, or pass a smaller value. Partial refunds add up and an over-refund is rejected.
  • Idempotent. Pass your own ref_refund and the same reference will never refund twice.
  • Tracked. verify-payment now returns refunded_amount, refundable_amount, and fully_refunded so you always know a payment's refund state.
What the refund moves — and what it doesn't

The API reverses the platform-side ledger: it debits the amount back out of the merchant wallet and records the refund. Because DigiKash never holds the buyer's card, returning the money to the card itself is completed by the platform through the original gateway (Stripe, PayPal, etc.). The processing fee taken on the original payment is not returned — same as most payment processors.

What about Virtual Cards? (a different feature)

DigiKash can also issue virtual cards to users (Stripe Issuing, StroWallet, Bitnob). That's the opposite direction — creating a card, not collecting one — and it is handled with equal care:

  • Full card numbers are created and held by the card provider, not by DigiKash.
  • When a user reveals their card details, DigiKash uses the provider's PCI-compliant client-side flow (for Stripe Issuing, an ephemeral key + Issuing Elements), so the number is shown to the user straight from the provider — it never passes through the DigiKash server.
  • DigiKash stores only safe, masked references (last 4, brand, status).
Full endpoint reference

Every endpoint, header, field, and example response lives on the live, interactive API docs that ship with each install — open yourdomain.com/api-docs (reference build: digi.coevs.com/api-docs).


Admin Panel

P2P Marketplace New in 2.0

Peer-to-peer trading rooms with offer ads, escrow orders, dispute handling, payment-method directory, promotions, and trader profiles.

How to access
Sidebar Finance & Wallet P2P Marketplace P2P Dashboard / Settings / Payment Methods / Traders / Disputes / Promotions

The P2P Dashboard is mission control: marketplace status, your maker / taker fees, the dispute window and order-expiry timers, and live counts of active offers, pending escrow, and open disputes.

Sidebar → P2P Marketplace → P2P Dashboard
Admin P2P Dashboard — marketplace status, maker/taker fees, dispute window, and live order/escrow/dispute counts
P2P Dashboard

Monitor live offers, open orders, dispute counts, and platform fees in one place.

Settings

Default fees, minimum trade size, escrow duration, dispute timer, and KYC gating.

Payment Methods

Curate the directory of payment methods traders can advertise (banks, mobile money, cash).

Traders

Browse, suspend, or verify advertisers. Review completion rate, response time, and dispute ratio.

Disputes

Handle escalated orders with chat history, attached proof, and a verdict workflow.

Promotions

Sell promotion packages that boost offer visibility — featured slots, badge highlights, search-rank uplift.

Traders & disputes

Under Traders you can review each advertiser's completion rate, trade volume, and verification, then verify or suspend them. Escalated orders land in Disputes, where you review the trade chat and proof before releasing or refunding escrow.

P2P Marketplace → Traders
Admin P2P Traders — advertiser list with completion rate, trades, and verification controls
P2P Marketplace → Disputes
Admin P2P open trade disputes queue
Escrow keeps funds safe

The seller's funds are locked in escrow the moment an order opens and only release on mutual confirmation or your dispute verdict — they're never exposed in transit. Set a sensible dispute window and KYC gating in Settings before opening the market.


Admin Panel

Virtual Cards

Issue and manage virtual cards across multiple providers — Stripe Issuing, StroWallet, and Bitnob — from one provider-agnostic control center. Each provider plugs in with its own fees, supported networks, and capability set, so you can offer cards in the markets you serve.

Where to go
Admin Finance & Wallet Virtual Cards

The section opens with six tabs: Awaiting Requests, Cardholders, All Requests, All Cards, Fee Settings, and Provider Settings.

Provider Control Center

Start here. Provider Settings shows every issuing gateway's status, card fee, supported networks, and the exact actions it can perform — all in one place. Activate only the providers you've added valid credentials for; the header counters (active providers, gateways, networks) update as you go.

Finance & Wallet → Virtual Cards → Provider Settings
Admin Virtual Card Provider Control Center — Stripe Issuing, StroWallet, and Bitnob with fees, networks, and capabilities
Provider capabilities — they are not all equal

No provider supports every action. Because a cardholder's available controls depend on which provider issued their card, choose providers that match the features you want to give users. These are the seven capabilities and where each provider stands today:

ProviderIssueRevealTop-upWithdrawFreezeLimitsControls
Stripe Issuing
StroWallet
Bitnob
Pick the provider that fits the use case

Stripe Issuing funds cards through a spending limit rather than top-up/withdraw, but adds freeze, limits, and spend controls — great for USD/EUR/GBP. StroWallet offers straightforward top-up/withdraw and supports NGN. Bitnob sits in between with top-up, withdraw, freeze, and limits.

Fees — fixed + percentage, per provider & currency

Open Fee Settings to price each operation. A rule combines a fixed amount and a percentage, gated by a threshold and clamped between a min and max. In the example below, a top-up on StroWallet (USD) above the $200 threshold costs $2.00 + 1.00%, never less than $10 or more than $1,000.

Virtual Cards → Fee Settings · fixed + percentage with min/max
Admin Virtual Card Fee Settings — threshold, fixed plus percentage fee, and min/max bounds per provider and currency
Daily workflow — review requests, track cards

New applications land in the Awaiting Requests review queue with the user's wallet balance, card network, and KYC status. Open Review, approve, and the card is issued and the issuance fee deducted automatically.

Virtual Cards → Awaiting Requests · the review queue
Admin Awaiting Virtual Card Requests — review queue with wallet balance, card network, and KYC status

Every issued card lives in All Cards — your full inventory with the assigned user, provider, wallet, status, and issue date, filterable by card, user, or email.

Virtual Cards → All Cards · the card inventory
Admin All Virtual Cards inventory — card, user, provider, wallet, status, and issue date
What each tab is for
  • Awaiting Requests — the review queue for new issuance applications (approve or reject).
  • Cardholders — issued cardholder records, including pending KYC profiles.
  • All Requests — the full request history with status filters.
  • All Cards — every issued card with provider, status, balance, and last sync.
  • Fee Settings — per-provider, per-currency pricing (fixed + percentage, threshold, min/max).
  • Provider Settings — credentials, capabilities, and provider-specific overrides.
Before you go live

Test each provider's credentials in sandbox first, require KYC before issuance (requests show a KYC ready flag), set fee rules for every currency you accept, and keep an eye on the Awaiting Requests queue so applications don't sit unreviewed.


Admin Panel

Wallet Earn (Staking) New in 2.0

Create earning plans, let users stake their wallet balance into them, and let the platform pay rewards and return principal automatically. You stay in control of approvals and can intervene on any individual stake.

How to access
Sidebar Finance & Wallet Wallet Earn Earn Dashboard / Plans / Stakes
1. Build an Earning Plan

A plan is the template users stake into. Every field below is configurable per plan:

FieldWhat it controls
CurrencyA specific currency, or All Currencies to let users stake any wallet.
Minimum / Maximum stakeThe amount range a single stake must fall within (maximum is optional).
Profit typeFixed — a flat reward amount per payout; or Percentage — a % of the staked principal per payout.
Profit rateThe value used by the profit type (the flat amount, or the percentage).
DurationThe lock term — a value plus a unit of hours, days, or months.
Payout frequencyDaily, Weekly, Monthly, or End of Term (a single payout at maturity).
Return principalWhether the original stake is credited back to the user at maturity.
Auto-approveOn — stakes activate instantly. Off — stakes stay Pending for your review.
PresentationDescription, icon, badge text, featured flag, and active/inactive status.
How rewards are calculated

Reward per payout = Fixed: the flat rate, or Percentage: principal × rate ÷ 100. The number of payouts is derived from the duration and payout frequency, and the user's expected profit = reward per payout × number of payouts. With End of Term, the whole profit is paid once at maturity.

2. Automatic Payouts
  • The wallet-earn:process command runs every minute via the scheduler — it credits any due payouts and returns matured principal. Keep the scheduler cron entry active.
  • Each due payout credits the user's wallet, writes a reward transaction, and advances the next payout date until the term completes.
  • Payouts are idempotent — each numbered payout is paid exactly once, even if the command overlaps or retries.
  • When the final payout is made (or maturity is reached) the stake is marked Completed, and the principal is returned if the plan allows it.
3. Manage Stakes

The Stakes screen lists every user stake with its principal, paid vs. expected profit, payouts made / total, next payout, and maturity date. Per stake you can:

  • Approve a pending stake — activates it and sets the payout schedule.
  • Reject a pending stake — returns the full principal to the user's wallet.
  • Cancel an active stake — stops future payouts and returns the principal.
  • Complete an active stake — settles any due payouts immediately and closes it (returning principal if configured).
Everything is traceable

Each action writes a wallet transaction — a debit when the stake is created, a credit for every reward payout, and a credit when principal is returned. The Earn Dashboard rolls these up into total staked balance per currency, the upcoming payout pipeline, and rewards paid to date. Users are notified at each step (stake created, approved, rejected, canceled, each reward paid, and completion) via notification templates.

Access & requirements

Wallet Earn requires KYC by default — adjust this, or turn the whole module on/off per panel, under Feature Controls. The principal is locked from the user's wallet the moment they stake, so balances always reconcile.


Admin Panel

Subscriptions New in 2.0

Tier-based subscription plans with features, pricing cycles, and per-user lifecycle tracking.

How to access
Sidebar Finance & Wallet Subscriptions Plans / User Plans / Transactions
  • Plans — define tiers, features, and per-cycle prices (monthly, quarterly, yearly).
  • Plan Features — bind plans to platform features with quantity/limit overrides.
  • User Plans — view active and historical subscriptions, with manual override controls.
  • Transactions — every subscription payment with status, plan, and renewal info.
  • Users can subscribe, cancel, change tier, and view receipts from their dashboard.

Admin Panel

Referral Program & User Rankings

Growth tooling for retention and acquisition.

How to access
Sidebar Finance & Wallet Referral Program
Sidebar System Config Settings User Rankings
Referral Program
  • Unique referral codes and shareable links per user.
  • Configurable reward per signup, KYC completion, first deposit, or specific event.
  • Per-currency reward caps and minimum referrer requirements.
  • Referral tree view in the user dashboard.
User Rankings
  • Define ranks (e.g. Bronze, Silver, Gold, Platinum) with progression criteria.
  • Per-rank wallet limits, referral level depth, and reward multipliers.
  • Automatic rank promotion based on user activity.
Vouchers
  • Single-use or multi-use redeemable vouchers for wallet balance.
  • Per-voucher currency, amount, expiry, and redemption limit.
  • Redeemable from the user wallet or at merchant checkout.

Admin Panel

Notifications & Support

Reach users quickly and run a structured support backlog.

How to access
Sidebar Communication Center Notifications Send Notification / Logs / Templates
Sidebar Communication Center Email Subscribers
Sidebar Communication Center Support Tickets New / In Progress / Closed / History / Categories
Notifications
  • Send Notification — push custom notifications to all users or filtered audiences.
  • Notification Logs — searchable record of every notification with channel and status.
  • Templates — per-event templates with three configurable channels: Email, SMS, and Push.
  • Each channel has an independent on/off toggle per template — enable email but disable SMS for low-impact events.
  • An in-app inbox also receives every notification via Laravel's database notification table — independent of the channel switches above.
Email Subscribers
  • Newsletter signup form on the public site captures subscribers.
  • Export to CSV or send bulk announcements directly.
Support Tickets
  • Status tabs: New, In Progress, Closed, History.
  • Per-ticket reply thread with attachments.
  • Configurable Ticket Categories with auto-routing.
  • Internal notes visible only to staff.

Admin Panel

Site Builder & CMS

Control public-facing content without touching code.

How to access
Sidebar Content Management Site Builder Landing Page / All Pages / Components / Navigation / Style Manager / Footer Sections
Sidebar Content Management SEO & Social SEO Settings / Social Links
Sidebar Content Management Blog Blog Posts / Blog Categories
Pages & Components
  • Landing Page — upload a custom HTML/CSS landing page, or use the built-in builder.
  • All Pages — manage every static page with rich content.
  • Page Components — reusable building blocks (heroes, feature lists, CTAs, FAQs).
  • Site Navigation — header menu structure with multi-level dropdowns.
  • Footer Sections — manage footer columns and links.
  • Style Manager — inject custom CSS for fine-tuning the public theme.
SEO & Social
  • SEO Settings — per-page title, meta description, Open Graph, and Twitter cards.
  • Social Links — manage the social network footer/header icons.
Blog
  • Blog Posts — title, slug, cover image, rich body, SEO fields.
  • Blog Categories — taxonomy for filtering posts.

Admin Panel

System Configuration

Platform-wide settings, integrations, languages, and background jobs.

How to access
Sidebar System Config Settings Site Settings / Integration Center / Languages / Background Jobs
Sidebar Footer Settings / Optimize shortcut
Site Settings
  • Brand, logo, favicon, login banner, currency display, time zone.
  • Mail (SMTP), Security, Maintenance Mode, Cookie Consent, Captcha.
  • Visitor landing behavior — redirect to login page or default landing.
  • Admin URL prefix override for security through obscurity.
Integration Center
  • Enable / disable plugin integrations (WooCommerce, Google Analytics, etc.).
  • Each plugin exposes its own credential form.
Languages
  • Manage installed languages, add new locales, edit translation strings inline.
  • Set the default language and toggle the language switcher visibility.
Background Jobs
  • Live view of running, failed, and recent jobs.
  • Re-run failed jobs from the UI.
  • Pair with a real queue worker process (queue:work) for reliable delivery.

Admin Panel

Feature Controls New in 2.0

Toggle every revenue feature per panel (user / merchant / agent), set KYC and phone gates, and control country allow-lists. Drives the entire UI from a single screen.

How to access
Sidebar System Config Settings Feature Controls
CategoryFeatures
Money MovementDeposit, Withdraw, Send, Request, Exchange, Wallet Earn, Mobile Recharge, Bank Transfer Payouts
Business & MerchantPayment Links, Merchant Payment, Agent Program, Subscription System
P2P MarketplaceP2P Marketplace
Virtual CardsVirtual Cards
Engagement & GrowthReferral Program, User Ranks, Vouchers
Core features warn before disabling

Features marked Core (like Deposit and Withdraw) can be toggled, but the UI warns first — disabling them typically breaks business flows that depend on them.


Admin Panel

Staff & Roles

Use least-privilege access for everything except the super-admin.

How to access
Sidebar Staff Management Team Members
Sidebar Staff Management Roles & Permissions
  • Team Members — create staff accounts with assigned roles.
  • Roles & Permissions — define granular permissions per role (powered by Spatie Permission).
  • Every admin menu item declares the permission it requires; menu links are hidden when missing.
  • Disable a staff account immediately if a member leaves the team.

Operations

Production Setup

A production-grade DigiKash install needs a queue worker, a cron entry, HTTPS, and SMTP for mail.

Cron — Laravel Scheduler

Run the scheduler every minute. It dispatches background tasks for rewards, withdraw schedules, recurring jobs, and cleanup.

* * * * * php /path/to/digikash/artisan schedule:run >> /dev/null 2>&1
Don't write the cron line by hand

Open Admin → Background Tasks → Scheduler for a built-in Scheduler & Queue Guide. It auto-detects your PHP binary and project path, hands you a copy-paste cron entry, includes a one-click cron-expression builder, and lists the exact queue-worker commands for your server.

/admin/background-tasks/scheduler · Scheduler & Queue Guide
Admin Scheduler & Queue Guide — cron entry, cron builder, queue worker setup, and the scheduled command list
What runs on the schedule

Once the cron entry above is live, DigiKash runs these jobs for you automatically — there's nothing else to wire up. Times follow the application timezone set in Site Settings.

CommandRunsWhat it does
p2p:orders:expireEvery minuteExpire pending P2P orders past their deadline and refund the escrow.
p2p:promotions:expireEvery minuteExpire active P2P offer promotions that passed their end time.
wallet-earn:processEvery minutePay out due Wallet Earn rewards and matured principal returns.
subscription:process --renewalsHourlyCharge due subscription renewals and apply plan changes.
license:heartbeatTwice daily (03:00 & 15:00)Re-verify your project license with the update server.
Temp media cleanupDaily at 02:00Delete yesterday's temporary Summernote upload folder.
Queue Worker — Supervisor

Keep a queue worker alive. Supervisor is the recommended way to auto-restart it.

[program:digikash-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /path/to/digikash/artisan queue:work --tries=3 --timeout=90
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/path/to/digikash/storage/logs/worker.log

On shared hosting without Supervisor, run the worker from cron instead — it drains the queue and exits, and the next minute's run picks up where it left off. flock stops two workers overlapping:

* * * * * flock -n /tmp/dk-queue.lock php /path/to/digikash/artisan queue:work --stop-when-empty --max-time=55 --tries=3 >> /dev/null 2>&1
Restart workers after every update

Queue workers hold code in memory, so after deploying or updating DigiKash run php artisan queue:restart so they pick up the new code on their next cycle.

Storage Symlink
php artisan storage:link
HTTPS
  • Install a valid SSL certificate (Let's Encrypt is free and well-supported).
  • Force HTTPS in your web server config.
  • Set APP_URL to the HTTPS variant in .env.
Mail (SMTP)
  • Configure SMTP under Settings → Site Settings → Mail.
  • Send a test mail before enabling notification channels.
  • Use a reputable transactional mail provider (Postmark, SES, Mailgun, Resend) in production.

Operations

Progressive Web App

DigiKash can be installed as a Progressive Web App on mobile and desktop, giving users a native-feeling shortcut to the wallet.

How to access
Mobile/Desktop browser Browser menu Install App / Add to Home Screen
  • Manifest and service worker are served by the PwaController.
  • Users can install the app to the home screen on mobile and desktop browsers that support PWA.
  • Customize the install banner, theme color, and icons from Settings → Site Settings → PWA.

Operations

Security & Maintenance

Keep production stable with least-privilege access, 2FA, backups, cache tools, activity logs, and the Project Updater.

How to access
Sidebar Footer Activity (Activity Log)
Sidebar Footer Optimize (Site Optimize)
Before changing live payment settings

Take a backup, confirm queue workers are running, test one small transaction, then monitor logs and callbacks.

  • Enable 2FA for admins and staff with sensitive permissions.
  • Review Activity Logs when investigating login, device, or suspicious access issues.
  • Use the IP Block list to ban abusive addresses.
  • Run Optimize App and Clear Cache after updates or environment changes.
  • Download a recovery backup before installing updates from the Project Updater.
  • Rotate API keys (Stripe, Twilio, virtual-card providers) on a regular schedule.
Safe Recovery Commands
Clear cachesAfter env or route changesphp artisan optimize:clear
Storage symlinkUploaded filesphp artisan storage:link
Run migrationsManual update fallbackphp artisan migrate --force

Operations

Project Updater

Install signed releases over the air with checksum verification, recovery backups, and migration automation.

How to access
Sidebar System Config Settings Project Updater
  • Lives at Admin → Settings → Project Updater.
  • Packages must be signed; verification uses the public key in config/project_updater.php.
  • Update server URL defaults to https://updates.coevs.com — override with PROJECT_UPDATER_SERVER_URL.
  • Storage paths are configurable: PROJECT_UPDATER_PACKAGES_PATH, PROJECT_UPDATER_EXTRACT_PATH, PROJECT_UPDATER_BACKUPS_PATH.
  • Protected paths the updater never touches: .env, storage/, vendor/, node_modules/, .git/.
  • Disable in-app installs entirely by setting PROJECT_UPDATER_INSTALL_ENABLED=false.

Operations

Troubleshooting

Use these checks when installation, assets, the database import, or updates do not behave as expected.

Installer redirects every page

The app is not installed yet. Complete /install. The wizard then writes storage/app/installed and routes unlock.

Database test fails

Confirm host, port, username, password, and privileges. On cPanel, assign the DB user to the DB with all required privileges.

SQL import stops

The MySQL / MariaDB installer protects existing data. Use a new empty database before importing DB/digikash.sql.

Images do not load

Run php artisan storage:link. If a broken public/storage folder exists, remove it first via file manager or SSH.

Blank page after upload

Run php artisan optimize:clear and confirm the domain points to public/, not the project root.

Updater cannot install

Enable the PHP zip extension, make storage/app writable, set PROJECT_UPDATER_SERVER_URL, and activate the license.

Notifications not sending

Confirm SMTP credentials, then make sure a queue worker is running — mail goes through the queue by default.

Webhooks not firing

Use HTTPS, confirm the callback URL in the provider dashboard, and check storage/logs/laravel.log for inbound errors.


Resources

Support

Need help? Reach out — we read every message.

Email Support

contact.coevs@gmail.com — bug reports, sales questions, custom-work enquiries.

Website

coevs.com — product news and additional resources.

Before contacting support

Share your PHP version, Laravel version, database engine, and the latest entries from storage/logs/laravel.log. It speeds up triage massively.