What you get#
A banking platform for any country. Customers and businesses use one app; the owner runs everything from an administrator console. Every rule is enforced on the server.
Wallets in several currencies, bank transfers with name check, international transfers, beneficiaries, virtual and physical cards, bills and airtime, fixed deposits, loans, statements and premium receipts.
Everything a customer gets, plus a payment gateway (hosted checkout, payment links, API, signed webhooks, refunds), bulk payments, invoices, team roles and approvals, and business loans.
Customers, identity review, transfer review, ledger, fees and pricing, provider integrations, broadcast notifications, audit log, and a switch between test and live mode.
Nigeria, Ghana, Kenya, South Africa, United Kingdom, United States and the euro area. One setting picks the currency, account number format, bills catalogue, identity levels and provider shortlist.
Requirements#
| Item | Needed |
|---|---|
| PHP | 8.3 or newer |
| PHP extensions | bcmath, ctype, curl, dom, fileinfo, gd, json, mbstring, openssl, pdo_mysql (or pdo_sqlite), tokenizer, xml, zip |
| Database | MySQL 8 / MariaDB 10.6 or SQLite |
| Other | HTTPS on the domain and one cron job |
Install#
The same files work on a domain, a subdomain or a folder. The installer starts by itself the first time you open the address.
Choose where it lives
- Domain or subdomain (best). Point the domain or a subdomain such as
bank.yourdomain.comat thepublicfolder, then open the address. - Subfolder (
yourdomain.com/bank). Upload the whole folder next to your site and makehttps://yourdomain.com/bankserve thepublicfolder (a symlink or an alias). Open/bank/install; the app detects the folder by itself. - cPanel without access to the document root. Upload the project above
public_html(for example/home/user/bank), put the contents ofpublicintopublic_html/bank, and edit the two paths inpublic_html/bank/index.phpso they point to../../bank/vendor/autoload.phpand../../bank/bootstrap/app.php.
Run the installer
- Upload and extract
In cPanel File Manager, upload the zip and press Extract.
- Set the PHP version
cPanel, MultiPHP Manager: choose PHP 8.3 or newer. Then Select PHP Version and enable the extensions listed above.
- Make folders writable
Give
storageandbootstrap/cachewrite permission. - Open the address
The installer checks the server, then asks for the database, bank name, country, brand colour and the administrator login. It writes
.envfor you, includingAPP_KEYand a separateSECRETS_KEYthat encrypts provider keys. - Add the cron job
Every minute. The installer shows the exact line; use the
ea-php83path if your host requires it.* * * * * /usr/local/bin/php /home/CPANEL-USER/bank/artisan schedule:run >> /dev/null 2>&1 - Sign in
Sign in with the administrator you just created.
Country and currency#
BANK_COUNTRY in .env selects a country pack: NG, GH, KE, ZA, GB, US or DE (euro area). It sets the base currency, account number format, bills catalogue, identity levels and provider shortlist. Add your own pack by copying one in config/countries.php. Customers can also hold wallets in other currencies.
Connect providers#
Every part works by itself in test mode. For real money, connect providers under Administrator, Integrations.
| Part | Choices |
|---|---|
| Card and bank-transfer checkout, account numbers | Payment processors such as Paystack or Flutterwave |
| Payouts to other banks | Flutterwave, Paystack, Wise |
| Bills (airtime, data, electricity, TV) | Flutterwave, VTpass |
| Cards | Stripe Issuing, Lithic |
| International account details (USD, GBP, EUR) | Wise |
| Identity checks | Manual review by your team (default), Smile ID, Sumsub |
| Brevo or any SMTP server |
Keys are stored encrypted and never shown again. Customers never see which provider you use.
Test mode and live mode#
Switch in Settings, Go live when your provider keys are live and your company details are filled in. You can switch back at any time and existing data is never touched. Test API keys work only in test mode, live keys only in live mode; they can never mix.
Payment gateway and API#
A business creates a checkout, sends the customer to the hosted page, and is told by a signed webhook when it is paid. Money lands in the business account at once, minus the gateway fee you set. Keys are created in Developers, API keys; writes need an Idempotency-Key; webhooks are HMAC-SHA256 signed and retried with back-off. The full reference ships with the script in docs/gateway-api.md, and the partner API for fintechs in docs/partner-api.md.
Make it yours#
- Bank name, country and brand colour are set during installation. The app runs in light or dark mode.
- Fees and pricing rules are in the administrator console; the gateway fee is under Settings, Payments and fees.
- Identity review is manual by default; connect Smile ID or Sumsub to automate it.
- Need a matching public website, extra providers or new products? Request a quote.
Scheduled tasks#
One cron job drives everything. If it stops, webhooks stop retrying and deposits stop maturing.
The scheduler retries webhooks, collects loan instalments, matures deposits and runs the nightly integrity check.
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, the .env file and your APP_KEY and SECRETS_KEY regularly. Keep a copy of the storage folder as well. To update, upload the new files over the old ones, then run php artisan migrate --force.
Installing a new version
- Back up first
Copy the files and database as described above. Keep the copy somewhere other than the server.
- 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.
- Upload and overwrite
Extract the zip over your existing files. Do not delete your data folder or
.envfile: they hold your settings and customers. - 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.
- Open the site and test
Sign in as an administrator and check one normal action before you tell customers.
Security#
No software is 100% secure. What is built in, and what you must still do, is written out in docs/security.md.
- Every movement is one balanced, immutable double-entry journal entry. Amounts are whole numbers in minor units.
- Payments, refunds, loan repayments and transfers are idempotent: a webhook delivered twice never moves money twice.
- Provider keys are encrypted at rest and removed from logs. Webhooks are signature-checked and re-checked with the provider before money is credited.
- Two-step sign-in (TOTP), per-account lockout, login history, and a strict Content-Security-Policy.
Troubleshooting#
| Symptom | Likely cause and fix |
|---|---|
| A blank page or error 500 | Check storage/logs (sensitive values are removed from them). Confirm PHP 8.3 and the required extensions. |
| The installer does not appear | storage/app/installed.json means it already ran. Delete it only on a fresh server. |
| "Session expired" loops | APP_URL must match the address you open, and the storage folder must be writable. |
| Webhooks do not retry or deposits do not mature | The cron job is missing or uses the wrong PHP path. Re-add the line the installer showed. |
| Customers get no emails | Connect and test Integrations, Email. Check spam folders and your SMTP password. |
Getting help and customisation#
You are never on your own with a Biply script.
After you buy, tell us and we install Yourbank on your hosting at no extra cost.
Email [email protected] with your domain and a description or screenshot of the problem.
Need your own features, integrations or branding? Hire Biply Agency for a written quote.