White Label Bank

Install, configure and brand your own digital bank: customer app, admin console, ledger, transfers, cards, time deposits and a partner API.

Laravel 13 · PHP 8.3About 20 minutes to install8 min read
01

What you get#

A multi-tenant banking back end and web app. Customers and administrators use one interface; every rule is enforced on the server.

Double-entry ledger

Balances are never stored. A balance is the sum of postings, every entry balances, and entries cannot be edited or deleted.

Customer products

Transfers, bank transfers, bills, time deposits, crypto, stocks, cards, trade finance, payroll and invoices.

Admin console

KYC queue, transfer approvals, pricing and compliance, email centre, audit log and tenant settings.

Partner API

A bank-side API for partners: client accounts, book transfers, statements and signed webhooks.

02

Requirements#

ItemNeeded
PHP8.3 or newer
PHP extensionsbcmath, ctype, curl, dom, fileinfo, gd, mbstring, openssl, pdo_mysql, tokenizer, xml
DatabaseMySQL or MariaDB (SQLite is offered in the installer for small installs)
Web serverApache with .htaccess (the root file sends every request to /public)
OtherHTTPS on the domain and one cron job
03

Install on cPanel#

The installer starts by itself the first time you open your domain.

  1. Upload and extract

    In cPanel File Manager, upload the signed zip to the folder of your domain (public_html) and press Extract. Nothing needs to be moved afterwards.

  2. Set the PHP version

    cPanel, MultiPHP Manager: choose PHP 8.3 or newer for the domain. Then Select PHP Version and enable the extensions listed above.

  3. Create the database

    cPanel, MySQL Databases: create an empty database and a user, then add the user to the database with All Privileges.

  4. Open your domain

    For example https://yourbank.com. The installer checks the server, then asks for the bank name, brand colour, contact email, demo or production mode, the database details and the administrator login. Press Install the bank.

  5. Add the cron job

    cPanel, Cron Jobs, every minute. The installer shows the exact line; use the ea-php83 path if your host requires it.

    BASH
    /usr/local/bin/php /home/CPANEL-USER/public_html/artisan schedule:run >> /dev/null 2>&1
  6. Sign in

    Open /app and sign in with the administrator you just created.

04

First-time setup#

Do these in order before you invite anyone.

05

Make it yours#

Most of the look and wording is a setting, not a code change.

Brand and identity

Set the bank name and brand colour during installation, and change them any time under Tenant and go-live. Check the identity details that appear on documents: UID, LEI, BIC, clearing number, registered office, regulator and licence categories (Website content, Contact details). IBANs issued through the partner API use the clearing number and BIC you set there.

Public website text

Under Website content you can edit any text on the public website. Leave a field empty to restore the original text. Changes appear straight away.

Pricing and rules

  • Under Pricing and compliance: transfer and crypto pricing, quotes, tax rules, maker-checker approvals, fund-origin records, settlements and fee requests.
  • Bank transfers are free to Switzerland and 1% international by default; the percentage is tenant-configurable.
  • Transfers at or above the review threshold are held for an administrator to approve or reject. A rejection refunds everything, fee included.
  • Time deposits run 30 to 365 days with tiered rates.

Email centre

Send messages, newsletters and promotions using the bank template or your own pasted HTML.

06

Scheduled tasks#

One cron job drives everything. If it stops, deposits stop maturing and webhooks stop retrying.

The scheduler matures time deposits, retries partner webhooks, credits crypto deposits, runs the nightly integrity check and renews the licence pass. In production also run a queue worker.

Useful commands
php artisan schedule:run          # what the cron job calls every minute
php artisan bank:integrity         # prove every entry balances and nobody is overdrawn
php artisan bank:process-deposits  # mature due time deposits (also hourly)
php artisan license:report         # refresh the licence pass
07

Activate your licence#

  1. Copy your key

    Sign in to Biply Market, open My licences and copy the key for this domain.

  2. Enter it

    In the bank admin open Vendor and licence, Licence and paste the key.

  3. Check the domain

    The key works only on the domain in APP_URL, including the address people use to open your site.

On activation and once a day the script sends the key, your domain and the script version. If a licence is revoked the script locks within the hour and unlocks within the hour of reinstatement. If the marketplace cannot be reached the script keeps running on its current pass and only locks when the pass expires.

08

Backups and updates#

Two habits keep a live site safe: backups before every change, and updates from your own dashboard only.

What to back up

Back up the database and the .env file regularly. The .env file holds your application key and settings. Also keep a copy of the storage folder if you accept uploads.

Installing a new version

  1. Back up first

    Copy the files and database as described above. Keep the copy somewhere other than the server.

  2. Download the new release

    Sign in to Biply Market, open My licences and download the latest signed zip. Releases are only available to licence holders.

  3. Upload and overwrite

    Extract the zip over your existing files. Do not delete your data folder or .env file: they hold your settings and customers.

  4. Check the release notes

    Each release says whether the database changes. If you have no terminal access, email [email protected] and we will apply it for you.

  5. Open the site and test

    Sign in as an administrator and check one normal action before you tell customers.

09

Production checklist#

10

Troubleshooting#

SymptomLikely cause and fix
A blank page or error 500 right after uploadThe domain is on an older PHP. Set PHP 8.3 in MultiPHP Manager and enable the required extensions.
The installer does not appearThe files must be in the folder your domain points at, and .htaccess must be uploaded (it can be hidden in File Manager: enable Show hidden files).
The installer reports a missing extensioncPanel, Select PHP Version, tick the extension, save, then reload the installer.
Deposits do not mature or webhooks do not retryThe cron job is missing or uses the wrong PHP path. Re-add the line the installer showed.
Customers get no emailsConnect and test Integrations, Email. Check spam folders and your SMTP password.
The script is lockedThe licence pass expired or the key was revoked. Check Licence, confirm the domain, and that outgoing connections are open.
11

Getting help and customisation#

You are never on your own with a Biply script.

Free installation

After you buy, tell us and we install White Label Bank on your hosting at no extra cost.

Professional support

Email [email protected] with your domain and a description or screenshot of the problem.

Customisation

Need your own features, integrations or branding? Hire Biply Agency for a written quote.

Chat on WhatsApp