Getting Started with Khokha
To try the Khokha demo, follow these steps to set it up on your local machine.
Step 1: Clone the Repository
Khokha lives in its own repository — you do not need a copy of the Raast QR repository to run it:
git clone https://github.com/realrashid/khokha.git
cd khokhaStep 2: Install Dependencies
composer installThis installs Laravel and realrashid/raast-qr.
If you also keep a local checkout of the Raast QR package beside Khokha, the Composer path repository in composer.json symlinks your working copy into vendor/ instead, so you can test package changes immediately.
Step 3: Set Up Environment Variables
cp .env.example .envKhokha ships pointing at the author's own account, so every code works the moment you start it — including the Support the development page:
RAAST_QR_IBAN=PK50RQMI0000021676137573
RAAST_QR_ACCOUNT_TITLE="Rashid Ali"These are live codes
Every QR the demo renders points at a real bank account. Scanning one with a banking app moves real money — the invoice figures are made up, the transfer is not. Swap the IBAN for your own, or for the checksum-valid test value PK33ABCD0000000000000000, before you start experimenting:
RAAST_QR_IBAN=PK33ABCD0000000000000000
RAAST_QR_ACCOUNT_TITLE="Your Business Name"Step 4: Generate Application Key
php artisan key:generateStep 5: Start the Application
php artisan serveOpen http://localhost:8000.
Step 6: Explore the Pages
Invoice — a dynamic code. The amount is in the payload, so a payer scans and confirms without typing anything. Built with one Blade tag:
<x-raast-qr :amount="$invoice['total']" size="440" />Counter card — a static code. No amount, so it never expires and the customer types the figure themselves. Rendered as SVG because it gets printed:
RaastQr::iban(config('raast-qr.iban'))->size(300)->toSvg();Builder — generate a code for any IBAN and amount. The IBAN goes through the PakistaniIban rule, so try a wrong check digit and watch it get rejected:
$request->validate([
'iban' => ['required', new PakistaniIban],
]);The raw payload is printed under the code, which is the fastest way to see what a Raast QR actually contains.
Scan Them
Every code on these pages is real. Open any Raast-enabled banking app, choose Scan to Pay, and point it at the screen. The account and amount will fill in.
Do not confirm the payment unless the IBAN is yours.
Explore and Test
Worth reading in the demo source:
routes/web.php— all three pages in one fileresources/views/invoice.blade.php— the Blade componentresources/views/counter.blade.php— SVG output for printresources/views/builder.blade.php— validation and the raw payload
Made with ❤️ from Pakistan