Build, launch, and operate DigiKash {{V}} with confidence.
A Laravel 11 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.
What's New in DigiKash {{V}}
Version {{V}} brings a unified marketplace, multi-provider virtual cards, a feature-flagging system, mobile recharge, subscriptions, wallet staking, agent operations, an OTA project updater, and a redesigned admin Control Panel — all on Laravel 11 with PHP 8.3+.
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.
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
| Extension | Purpose |
|---|---|
bcmath | High-precision money arithmetic across wallet, fees, and exchange. |
ctype, tokenizer, mbstring | Core Laravel string handling. |
dom, libxml, xml | QR codes, PDF receipts, and XML payloads. |
fileinfo | File upload validation (KYC docs, logos, page assets). |
json | Settings, feature catalog, API payloads. |
openssl | Sessions, tokens, signed updater verification. |
pdo, pdo_mysql | Database connection. |
zip | Project Updater package extraction and recovery backups. |
curl + allow_url_fopen | Recommended 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.
A queue worker is required for email, notifications, payment-jobs, virtual-card syncing, and updater steps.
Useful Commands
php artisan queue:work --tries=3 --timeout=90php artisan storage:linkphp artisan optimize:clearInstallation Wizard
DigiKash ships with a web installer at /install. Use the wizard for every fresh deployment — it removes any need to edit .env by hand or import SQL through phpMyAdmin.
After extracting the main digikash.zip from your Envato downloads, you will see two items:
documentation/— this docs package (openindex.htmllocally for reference).core-v{{V}}.zip— the actual Laravel application package. This is the file you upload to your server.
Upload core-v{{V}}.zip to your hosting, extract it, point your domain to public/, then open https://yourdomain.com/install. Until the app is installed, every public URL redirects back to the installer.
Download & Extract Locally
Download digikash.zip from your Envato Downloads page and extract it on your computer. You'll see documentation/ and core-v{{V}}.zip side by side.
Upload core-v{{V}}.zip to Server
Upload only core-v{{V}}.zip to your hosting account — into public_html/ (or the directory matching your domain). Use cPanel File Manager, FTP, or SSH.
Extract on Server
Right-click core-v{{V}}.zip → Extract in cPanel, or run unzip core-v{{V}}.zip via SSH. The project root will contain app/, bootstrap/, config/, DB/, public/, resources/, routes/, storage/, and vendor/.
Point Domain to public/
Set the domain document root to the Laravel public/ folder. This keeps .env, source files, logs, and backups outside web reach.
Set File Permissions
Make .env, storage/, and bootstrap/cache/ writable by the PHP user. On Linux, 775 is usually enough when ownership is correct.
Create Database
Create a MySQL/MariaDB database and a user with CREATE, ALTER, INDEX, INSERT, UPDATE, DELETE, and SELECT privileges. Keep the database empty — the installer imports the schema.
Get Your Envato Purchase Code
From Envato Downloads → License certificate & purchase code (text), copy the purchase code — you'll paste it into the installer in the next step.
Open the Installer
Visit https://yourdomain.com/install in a browser. The wizard runs server & license checks, asks for your DB credentials, tests the connection, then collects the app name, app URL, and first super-admin account.
Press Install & Sign In
Click Install. The wizard writes .env, imports the schema, seeds defaults, creates the admin account, and redirects to /admin/login. Sign in with the credentials you just created.
Finish Production Setup
From the admin panel: configure SMTP mail, payment gateway credentials, start the queue worker, add the scheduler cron entry, and review Feature Controls to enable only the modules you need.
Envato License Verification
- The license is verified before the database step and re-checked during final installation.
- The installer posts the purchase code, domain, product slug, and Envato item ID to the official Coevs update server.
- No author Envato personal token is ever stored on the client website.
- Default update server:
https://updates.coevs.com· product slug:digikash· Envato item ID:58275561. - After installation, the returned license token is stored in
project_licensesfor future updater checks. - If verification fails, confirm the purchase code, product match, domain, and outbound HTTPS access from the host.
What Happens When You Press Install
- Validates server requirements (PHP version, extensions, writable paths) before continuing.
- Verifies the Envato purchase code through
/install/license-testagainst the Coevs update server. - Tests the database connection through
/install/database-test. - Writes
APP_NAME,APP_URL,APP_KEY, DB credentials, updater values, debug settings, andSESSION_DRIVER=fileinto.env. - For MySQL / MariaDB — imports
DB/digikash.sqlinto your empty database. - For SQLite — runs Laravel migrations followed by the configured seeders.
- Stores the verified license token in
project_licensesso the Project Updater is already linked to this installation. - Creates the first super-admin account from the wizard form. There is no shared default email or password.
- Writes the install lock file
storage/app/installed, clears Laravel caches, and redirects you to/admin/login.
cPanel-specific Notes
- Upload
core-v{{V}}.zipwith File Manager → Upload, then right-click it and choose Extract. - Use MySQL Databases to create the DB, add a user, and assign all privileges to the user on that DB.
- Use the Domains screen to set the document root to the
public/folder inside the extracted project. - If your host blocks document-root changes, contact hosting support before relocating Laravel files.
- Use cPanel Terminal (or SSH) for cache, queue, storage-link, and recovery commands.
- After install, you can safely delete the original
core-v{{V}}.zipfrom your server to free up space.
Post-install Checklist
After pressing Install, you'll land on the admin login. Work through this list before sending real traffic to the site.
- Sign in at
/admin/loginwith the super-admin account you created in the wizard. - Configure SMTP from Settings → Site Settings → Mail and send a test email.
- Add payment gateway credentials under Finance & Wallet → Payment Gateways and run a live test transaction on HTTPS.
- Start a queue worker (
php artisan queue:work) so notifications, payment jobs, and updater steps actually fire. - Add a system cron entry:
* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1 - Keep
APP_DEBUG=falsein production. Never expose.envorstorage/publicly. - Enable Two-Factor Authentication for every admin and high-privilege staff account.
- Review Feature Controls and disable modules you don't plan to expose to users.
- Set the platform branding: logo, favicon, brand colors, and SEO defaults.
- Delete the uploaded
core-v{{V}}.zipfrom your server once everything works.
Updating DigiKash Safely
DigiKash includes an admin Project Updater at Settings → Project Updater. New installations are linked automatically when the installer verifies and stores the Envato license token.
Confirm License
Fresh installs are already verified during setup. Existing sites can still enter the Envato purchase code here to link the domain.
Check for Updates
The updater pings the private release server and records the latest version, changelog, package URL, checksum, and install status.
Download Recovery Backup
Generate a recovery ZIP before installing. It packages database.sql, storage.zip, and a restore note.
Install Release
Confirm the backup notices and install. The updater verifies the SHA-256 checksum (optionally the signature), backs up touched files, runs migrations, clears caches, and exits maintenance mode.
.env, storage/, vendor/, node_modules/, and .git/. Keep a local backup even though the updater also creates server-side ones.
Manual Update Fallback
- Put the app in maintenance mode:
php artisan down. - Back up the database,
.env, andstorage/locally before swapping files. - Replace application files only — never overwrite
.env,storage/, or uploaded user content. - Run
php artisan migrate --forcefollowed byphp artisan optimize:clear. - Bring the app back:
php artisan up. Verify login, payments, notifications, and API checkout.
Tech Stack
DigiKash is built on a modern Laravel stack with clearly separated concerns for backend, frontend, payments, and integrations.
| Layer | Technology | Notes |
|---|---|---|
| Runtime | PHP 8.3+ | PHP 8.4 supported. CLI and web-server versions must match. |
| Framework | Laravel 11 | Streamlined bootstrap, attribute middleware. |
| Authentication | Laravel Sanctum 4 | Personal-access tokens for the Merchant API. |
| Roles & Permissions | Spatie Laravel Permission 6 | Powers staff roles and granular admin permissions. |
| 2FA | pragmarx/google2fa 8 | TOTP-based two-factor authentication. |
| UI Framework | Bootstrap 5 + jQuery 3.7 | Pre-built assets served from public/frontend and public/backend. |
| Typography | Inter + JetBrains Mono | Self-hosted Google Fonts for UI & code. |
| Icons | Font Awesome + IcoMoon | Mixed icon set across admin and dashboard. |
| Charts | Chart.js + ApexCharts | Used in admin dashboard and analytics widgets. |
| Rich text | Summernote Lite | Inline WYSIWYG for blog posts and page content. |
| Code editor | CodeMirror | Used in Style Manager and custom landing-page editor. |
| Date picker | Daterangepicker + Moment.js | Date-range filters across reports and transaction tables. |
| Image processing | Intervention Image 3 | Uploads, resizing, format conversion. |
| QR codes | bacon/bacon-qr-code | Wallet QR, merchant pay QR, 2FA setup. |
| PDF receipts | barryvdh/laravel-dompdf | Transaction receipts and payment-link confirmations. |
| HTML purifier | mews/purifier | Sanitises rich-text content before save. |
| Payments | Stripe, Mollie, Cryptomus, Bitnob, StroWallet | Multi-provider abstraction for cards, deposits, and webhooks. |
| Notifications | Mail (SMTP), Twilio SMS, Push, In-app inbox | Three configurable channels (Email/SMS/Push) per template, plus a built-in database inbox. |
| Translation | joedixon/laravel-translation | Multi-language UI managed from the admin panel. |
| Device detection | jenssegers/agent | Browser / device parsing for login activity logs. |
| Syntax highlighting | Prism.js | Used inside the Merchant API documentation. |
| Database | MySQL, MariaDB, or SQLite | Bundled DB/digikash.sql for MySQL installs. |
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/— bundleddigikash.sqlused 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 underpublic/general,public/backend, andpublic/frontend.storage/— logs, cache, sessions, uploads, update packages, recovery backups.documentation/— this docs package.vendor/— Composer dependencies shipped with the release.
Important Files
| Path | Purpose |
|---|---|
.env | Environment values. Written by the installer. Never publish this file. |
composer.json | PHP dependencies and Laravel package scripts. |
package.json | Node dependency manifest (optional — the shipped UI uses pre-built assets under public/). |
artisan | Laravel command-line entry point. |
bootstrap/app.php | Middleware, routing, and exception registration (Laravel 11 style). |
storage/app/installed | Installer lock file. Removing it re-opens the installer. |
Configuration Files
Most product behavior is configured from the admin UI, but these files drive what the UI can do.
| File | What it controls |
|---|---|
config/installer.php | Required extensions, writable paths, license requirement, core / demo seeders. |
config/project_updater.php | Update server URL, product slug, Envato item ID, signed-package public key, protected paths. |
config/feature_catalog.php | Master list of every toggleable feature (deposit, withdraw, P2P, cards, ranks, vouchers, subscriptions...). |
config/admin_menus.php | Sidebar layout for the admin panel. |
config/control_panel.php | Categorized shortcuts used by the Control Panel screen. |
config/virtual_card.php | Card provider registry (Stripe, StroWallet, Bitnob) and per-provider capabilities. |
config/mobile_services.php | Phone-verification and mobile-recharge provider registry. |
config/permission.php | Spatie Permission setup for staff roles. |
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.
| Variable | Description |
|---|---|
APP_NAME | Public-facing platform name. |
APP_ENV | Use production in live deployments. |
APP_DEBUG | Must stay false in production. |
APP_URL | Canonical HTTPS URL of the site. |
DB_* | Database connection details written by the installer. |
SESSION_DRIVER | Default is file. Use database or redis at scale. |
QUEUE_CONNECTION | Use database by default. Switch to redis for high throughput. |
MAIL_* | SMTP credentials for transactional email. |
PROJECT_UPDATER_SERVER_URL | Override the default release server when self-hosting. |
PROJECT_UPDATER_PRODUCT_SLUG | Product slug — defaults to digikash. |
PROJECT_UPDATER_ENVATO_ITEM_ID | Envato item ID — defaults to 58275561. |
MOBILE_RECHARGE_PROVIDER | sandbox, reloadly, or http. |
PHONE_VERIFICATION_PROVIDER | log (dev) or twilio (production). |
Admin Login
The admin panel is the control center for accounts, transactions, content, settings, and maintenance. Access is gated by a separate auth guard.
Login URL
https://yourdomain.com/admin/login
Credentials
The first super-admin is created during installation. There is no shared default password.
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.
User, Merchant, & Agent Login
Each audience has a dedicated entry point. Login accepts the registered email or username with the account password.
Login URLs
| Audience | URL | Notes |
|---|---|---|
| User | /user/login | Default end-user panel. |
| Merchant | /merchant/login | Business dashboard for receiving payments. |
| Agent | /agent/login | Cash-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.
Two-Factor Authentication
TOTP-based 2FA is available for every panel and strongly recommended for admins.
- Enable from Profile → Security on any panel.
- Scan the QR code with any authenticator app (Google Authenticator, Authy, 1Password).
- Disable from the same Security screen — requires re-entering the account password.
- Every subsequent login is interrupted by a 2FA verification prompt when the feature is active.
Wallet PIN
Sensitive money operations can be gated by a secondary numeric PIN.
- Users set the PIN from Profile → Security → Wallet PIN.
- Prompted before transfers, withdrawals, and other high-risk actions when enabled.
- Resetting the PIN requires verifying the account password (and 2FA if active).
User Dashboard
After login, every user lands on a dashboard that summarizes wallet balances, recent activity, and quick actions for the most-used features.
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.
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.
Pick a Method
Choose between automatic gateways (instant credit) or manual methods (admin review). Each method shows its min, max, fees, and supported currencies.
Enter Amount
The form previews the fee, the net you receive, and the final wallet credit before submitting.
Complete Payment
For automatic methods you are redirected to the gateway checkout. For manual methods you upload proof and wait for admin approval.
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.
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.
Add a Withdraw Account
Save bank, crypto, or mobile-money payout details under Withdraw Accounts for fast reuse.
Pick a Method
Automatic methods send the payout straight from the gateway. Manual methods require admin approval and finance processing.
Enter Amount & Confirm
The form previews the fee, payable amount, and wallet deduction. Wallet PIN and 2FA prompt if enabled.
Track Status
Withdraw history shows the request status — Pending, Processing, Completed, or Rejected — with admin notes when applicable.
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.
Send & Request Money
Instant wallet-to-wallet transfers between platform accounts, plus payment requests another user can approve and pay from their wallet.
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.
Exchange Currencies
Convert wallet balance from one supported currency to another using the live exchange-rate engine — instantly and without leaving the wallet.
- 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.
Wallet Earn — Staking New in 2.0
Stake wallet balance in admin-defined plans and earn scheduled rewards. Choose lock period, payout cycle, and minimum stake from the plan list.
Browse Plans
See APY, lock period, payout schedule, min/max stake, and the currency for every active plan.
Stake Balance
Lock the chosen amount from your wallet. A new stake record is created with the next payout date.
Earn Rewards
Rewards credit on the configured cycle (daily / weekly / monthly) via the background scheduler.
Unstake
Withdraw when the lock period ends. Early unstaking applies the configured fee — clearly shown before you confirm.
Track every active stake, accrued rewards, total earned to date, and the next payout countdown from one screen.
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.
Enter Number & Operator
Pick the country and operator from the admin-configured list, then enter the destination phone number.
Choose Amount
Pick from suggested packages or enter a custom amount within the configured min/max.
Confirm & Pay
Fee preview, final cost, and wallet PIN prompt before submission.
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.
Pay Merchants
Three ways to pay registered merchants — scan a QR code, open a payment link, or apply a voucher at checkout.
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.
Create Payment Links
Generate shareable links to collect money from anyone — even people without a platform account.
- Choose Fixed Amount (locked) or Buyer-defined (payer chooses).
- Pick currency, optional expiry date, and a maximum number of uses.
- Share the generated link by chat, email, social, or QR.
- Payers can pay from their wallet or any active gateway — no signup required for guest gateway payments.
- Track collected payments, refunds, and link status from My Payment Links.
P2P Trading New in 2.0
Buy or sell currency directly with other platform users through escrow-protected peer-to-peer trades.
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.
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.
Apply
Submit a card-issuance request. Some providers require additional KYC fields (name on card, address, DOB).
Wait for Approval
Admin reviews and approves the request. The issuance fee is auto-deducted on approval.
Top Up
Transfer wallet balance onto the card to set its spending limit. Reverse anytime via Withdraw.
Use the Card
View masked card number, expiry, and CVV inside the secure card panel. Freeze / unfreeze instantly if supported by the provider.
- Supports Stripe Issuing, StroWallet, and Bitnob in a single user experience.
- Per-card transaction history shows every authorization and settlement.
- Freeze a lost card in one tap (provider-dependent).
- Card top-up and withdraw fees configured per provider by admin.
Subscriptions New in 2.0
Browse available plans, subscribe to unlock platform features and quota upgrades, and manage billing from a single screen.
- 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.
Referral Program & Vouchers
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.
KYC Verification
Submit identity documents to unlock KYC-gated features like withdrawals, virtual cards, P2P trading, and send-money limits.
Open KYC Form
The admin-configured KYC template lists the exact fields required for your account type.
Upload Documents
Upload required ID images / PDFs (e.g. national ID, passport, address proof, selfie).
Submit for Review
Submission queues for admin review. Status visible on the dashboard banner.
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.
If a submission is rejected, you can fix the flagged fields and resubmit without losing previous data.
Profile & Security
Control your personal information, account security, and notification preferences from one place.
Profile
Name, username, email, phone, avatar, language, and country preferences.
Password
Change password anytime — strong password rules enforced (length, mixed case, numbers).
Two-Factor Auth
TOTP-based 2FA via any authenticator app. Disable requires password re-entry.
Wallet PIN
Numeric PIN required for transfers, withdrawals, and other money actions.
Phone Verification
Verify your phone via SMS code (Twilio) to unlock SMS notifications and mobile recharge.
Login Activity
View recent sign-ins with IP, country, browser, device, and platform. Sign out all other sessions in one click (password re-entry required).
Notifications & Support
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.
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.
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.
Accounts & KYC
Manage users, merchants, agents, KYC submissions, account status, and support conversations with a consistent review workflow.
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.
Finance & Wallet
Configure supported currencies, manage exchange rates, and use the transactions ledger as the source of truth for money movement.
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.
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
| Category | Providers |
|---|---|
| Cards / global | Stripe, PayPal, 2Checkout, Mollie |
| African gateways | Flutterwave, Paystack, Moneroo, Paymob, Voguepay, MTN, Airtel, Cashmaal |
| Indian gateways | Razorpay, Instamojo |
| Crypto | Cryptomus, Coinbase Commerce, CoinGate, CoinPayments, NowPayments, Binance Pay, Blockchain, Block.io, BitPay Server |
| Manual | Bank transfer / cash / any custom method via the Manual Payment System |
- 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.
Most providers refuse to deliver webhooks to non-HTTPS endpoints. Use ngrok or a staging subdomain with a valid certificate when testing locally.
Deposits & Withdrawals
Each side of money movement supports both Automatic (gateway) and Manual (bank/cash) methods with separate review queues.
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.
Payment Links, Merchant Payments & Mobile Recharge
Money-out products users and merchants can issue, share, and collect on.
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.
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.
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.
Virtual Cards
Issue and manage virtual cards on top of multiple providers — Stripe Issuing, StroWallet, and Bitnob — with a single, provider-agnostic admin experience.
Provider Capabilities
| Provider | Issue | Top-up | Withdraw | Freeze | Limits | Controls |
|---|---|---|---|---|---|---|
| Stripe Issuing | ✓ | ✓ (via spending limit) | ✓ | ✓ | ✓ | ✓ |
| StroWallet | ✓ | ✓ | ✓ | — | — | — |
| Bitnob | ✓ | ✓ | ✓ | ✓ | ✓ | — |
Admin Workflows
- Awaiting Requests — review new card-issuance applications.
- Cardholders — manage issued cardholder records.
- All Requests — historical request log with status filters.
- All Cards — every issued card with provider, status, balance, and last sync.
- Fee Settings — set issuance fees per-currency and per-card-type (multi-fee: percentage + fixed).
- Provider Settings — credentials, capabilities, and provider-specific overrides.
Wallet Earn (Staking) New in 2.0
Let users stake wallet balances in configurable plans and earn scheduled rewards.
- Earn Dashboard — total staked balance per currency, payout pipeline, and rewards paid.
- Plans — name, currency, lock period, payout schedule, APY, minimum / maximum stake, early-unstake fee.
- Rewards are computed and credited by a background job — keep the queue worker running.
- Requires KYC by default (configurable in Feature Controls).
Subscriptions New in 2.0
Tier-based subscription plans with features, pricing cycles, and per-user lifecycle tracking.
- 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.
Referral Program & User Rankings
Growth tooling for retention and acquisition.
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.
Notifications & Support
Reach users quickly and run a structured support backlog.
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.
Site Builder & CMS
Control public-facing content without touching code.
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.
System Configuration
Platform-wide settings, integrations, languages, and background jobs.
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.
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.
| Category | Features |
|---|---|
| Money Movement | Deposit, Withdraw, Send, Request, Exchange, Wallet Earn, Mobile Recharge, Bank Transfer Payouts |
| Business & Merchant | Payment Links, Merchant Payment, Agent Program, Subscription System |
| P2P Marketplace | P2P Marketplace |
| Virtual Cards | Virtual Cards |
| Engagement & Growth | Referral Program, User Ranks, Vouchers |
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.
Staff & Roles
Use least-privilege access for everything except the super-admin.
- 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.
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
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
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_URLto 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.
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.
- 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.
Security & Maintenance
Keep production stable with least-privilege access, 2FA, backups, cache tools, activity logs, and the Project Updater.
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
php artisan optimize:clearphp artisan storage:linkphp artisan migrate --forceProject Updater
Install signed releases over the air with checksum verification, recovery backups, and migration automation.
- 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 withPROJECT_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.
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.
Changelog
v2.0 — Major Release
- Added: Full P2P Marketplace (offers, escrow orders, disputes, promotions, payment-method directory).
- Added: Multi-provider Virtual Cards (Stripe Issuing, StroWallet, Bitnob) with provider-agnostic admin UI.
- Added: Feature Controls — toggle every revenue module per panel with KYC/phone gates.
- Added: Subscription System with plans, features, pricing cycles, and transactions.
- Added: Wallet Earn — staking plans with scheduled rewards.
- Added: Mobile Recharge with pluggable providers (Sandbox, Reloadly, HTTP).
- Added: Agent Program — dedicated panel, commission rules, agent operations.
- Added: Project Updater — signed OTA releases, SHA-256 verification, recovery backups.
- Added: Redesigned Control Panel with categorized, permission-aware shortcuts.
- Upgraded: Laravel 11, PHP 8.3+, Sanctum 4 for API auth.
- Improved: Notification template system with per-channel toggles (email, SMS, push, in-app).
- Improved: Account management with KYC templates, status flows, and bulk mail.
- Improved: Background job UI with re-run support for failed jobs.
- Improved: Security hardening — account-status checks, IP block list, login activity logs.
Previous Releases (v1.x)
- v1.0.6 — Merchant disable, StroWallet multi-currency & multi-fee, payment gateway improvements.
- v1.0.5 — Control Panel, advanced search, WooCommerce plugin, enterprise-grade merchant API.
- v1.0.4 — Account delete, user-to-merchant conversion, separate user/merchant fees.
- v1.0.3 — Custom landing page uploader, exchange API config, preloader management.
- v1.0.2 — Multi-provider virtual cards, card top-up/withdraw, dynamic config options.
- v1.1.0 — QR-code merchant payments, payment link checkout, voucher checkout.
Support
Need help? Reach out — we read every message.
Share your PHP version, Laravel version, database engine, and the latest entries from storage/logs/laravel.log. It speeds up triage massively.