Skip to content
English
  • There are no suggestions because the search field is empty.

How can I set up and schedule Bulk top-ups on my server using Github

Developers · Bulk Top-up

Deploy your own bulk top-up server in one command

A practical walkthrough of Reloadly's open-source bulk airtime processing app on GitHub — what it is, what you need, and how to get it running.

Setup time

~10–15 minutes

Level

Technical

You'll need

Docker + Make

Reloadly maintains an open-source bulk airtime processing application on GitHub, designed to be deployed on your own infrastructure with minimal setup. It wraps Reloadly's Airtime API in a ready-made web app, so you can upload a CSV file and send a batch of top-ups without writing any integration code yourself.

1

What this app actually does

The project lives at github.com/Reloadly/sample-bulk. It's a self-hosted web application — built on PHP Laravel with a Vue.js front end — that wraps Reloadly's Airtime API so you can process bulk top-ups by uploading a CSV file, instead of calling the API endpoint for every single transaction.

It's maintained directly by Reloadly and designed to be deployed with little to no programming knowledge — the whole setup is wrapped in a single install command.

ℹ️ Watch it set up live: Reloadly also published a video walkthrough showing the full setup process on a real server, if you'd rather follow along visually.
2

Prerequisites

Everything runs inside Docker, so the entire environment is reproducible and isolated from whatever else is on your machine. Before you start, make sure your server or machine has:

🐳 Docker

Creates the clean, containerized environment the app runs in.

🛠️ Make

Runs the install script that wires everything together automatically.

💡 Tip: both Docker and Make are available on virtually every OS, including Linux, macOS, and Windows (via WSL) — there's no platform-specific blocker here.
3

Clone and install

Once Docker and Make are installed, this single command clones the repository and kicks off the full installation process:

git clone https://github.com/Reloadly/sample-bulk.git && cd sample-bulk && make install

That one line clones the whole project into a sample-bulk folder and runs the installer automatically. Once it finishes, the app runs on your localhost (port 80 by default) or on whatever IP your server holds.

Important: if you're deploying this on a server that's reachable from the public internet, change the default credentials below before going live — see "Under the hood" for how.

4

Log in with the default credentials

Open the project's URL (localhost or your server's IP/domain) in a browser and log in with the system admin account that ships with the project:

System Admin User

Email: admin@system.com

Password: admin

Important: this password is public, since it ships in the open-source repo. Change it immediately after your first login if the app is exposed to the internet.

5

Day-to-day commands

All of these run from inside the sample-bulk folder:

Command What it does
make install Installs the project from scratch
make start Starts the project
make stop Stops the project
make restart Restarts the project

⚙️ Under the hood, for advanced users

The installer creates and runs two Docker containers:

  • Database container — runs MariaDB. No port is exposed by default for security, though it does provide an internal port (3306) you can open by editing docker-compose.yml if you need outside access.
  • Web server container — Apache on PHP 7.3, with the full build configuration in DockerFiles/Dockerfile. By default it opens port 80 on the host machine; change this in docker-compose.yml if you need a different port.

If you change the default database or admin credentials in docker-compose.yml and .env, you'll need to delete the volumes directory (if it was already created) and run make install again so the system reinstalls using the new credentials.

❓ Frequently asked questions

Do I need to know PHP or Vue.js to run this?

No. The app is designed so anyone can deploy it with the install command, even with little to no programming knowledge. Knowing the stack only helps if you want to customize the source code itself.

Can I run this on a cloud VM instead of my local machine?

Yes. As long as the server has Docker and Make installed, the same install command works — the app will be reachable on that server's IP or domain instead of localhost.

Is it safe to leave the default credentials in place?

Not if the app is accessible from the public internet — the admin login and database passwords are published in the open-source repo, so anyone could find them. Change them before exposing the app externally.

What does the app actually use to send top-ups?

Reloadly's standard Airtime API under the hood — the app is just a self-hosted interface that lets you trigger many top-ups at once from a CSV upload, instead of calling the API per transaction yourself.

Stuck somewhere in the deployment?

Our support team can help you troubleshoot the setup.

Contact support →