May 10, 2026 4 min read

Accounting System PHP Tutorial 2026 — Jinsi ya Kutengeneza Mfumo wa Uhasibu kwa PHP PDO na MySQL

Jifunze kutengeneza Accounting System PHP kwa kutumia PHP PDO na MySQL. Mfumo wa kusimamia mapato, matumizi, malipo, madeni, ripoti, cash balance na profit/loss.

Accounting System PHP ni Nini?

Accounting System PHP ni mfumo unaotumika kusimamia fedha za biashara au taasisi.

Mfumo huu unaweza kusimamia:

mapato
matumizi
mauzo
ununuzi
madeni
malipo
wateja
suppliers
ripoti za fedha
profit and loss
cash balance

Kwa tutorials zaidi:
https://faulink.com

STEP 1 — Tengeneza Database
CREATE DATABASE accounting_system_php;

USE accounting_system_php;
STEP 2 — Users Table
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
full_name VARCHAR(150) NOT NULL,
username VARCHAR(100) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
role VARCHAR(50) DEFAULT 'Accountant',
status ENUM('active','inactive') DEFAULT 'active',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
STEP 3 — Customers Table
CREATE TABLE customers (
id INT AUTO_INCREMENT PRIMARY KEY,
full_name VARCHAR(150) NOT NULL,
phone VARCHAR(30),
email VARCHAR(150),
address VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
STEP 4 — Suppliers Table
CREATE TABLE suppliers (
id INT AUTO_INCREMENT PRIMARY KEY,
supplier_name VARCHAR(150) NOT NULL,
phone VARCHAR(30),
email VARCHAR(150),
address VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
STEP 5 — Sales Table
CREATE TABLE sales (
id INT AUTO_INCREMENT PRIMARY KEY,
customer_id INT,
invoice_no VARCHAR(100),
total_amount DECIMAL(15,2) NOT NULL DEFAULT 0,
paid_amount DECIMAL(15,2) NOT NULL DEFAULT 0,
balance DECIMAL(15,2) NOT NULL DEFAULT 0,
sale_date DATE NOT NULL,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

FOREIGN KEY (customer_id)
REFERENCES customers(id)
ON DELETE SET NULL
);
STEP 6 — Purchases Table
CREATE TABLE purchases (
id INT AUTO_INCREMENT PRIMARY KEY,
supplier_id INT,
purchase_no VARCHAR(100),
total_amount DECIMAL(15,2) NOT NULL DEFAULT 0,
paid_amount DECIMAL(15,2) NOT NULL DEFAULT 0,
balance DECIMAL(15,2) NOT NULL DEFAULT 0,
purchase_date DATE NOT NULL,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

FOREIGN KEY (supplier_id)
REFERENCES suppliers(id)
ON DELETE SET NULL
);
STEP 7 — Expenses Table
CREATE TABLE expenses (
id INT AUTO_INCREMENT PRIMARY KEY,
expense_category VARCHAR(150) NOT NULL,
amount DECIMAL(15,2) NOT NULL,
payment_method ENUM('Cash','M-Pesa','Tigo Pesa','Airtel Money','Bank') DEFAULT 'Cash',
expense_date DATE NOT NULL,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
STEP 8 — Payments Table
CREATE TABLE payments (
id INT AUTO_INCREMENT PRIMARY KEY,
payment_type ENUM('sale_payment','purchase_payment','expense_payment','loan_payment') NOT NULL,
reference_id INT NOT NULL,
amount DECIMAL(15,2) NOT NULL,
payment_method ENUM('Cash','M-Pesa','Tigo Pesa','Airtel Money','Bank') DEFAULT 'Cash',
payment_date DATE NOT NULL,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
STEP 9 — Capital Table
CREATE TABLE capital (
id INT AUTO_INCREMENT PRIMARY KEY,
amount DECIMAL(15,2) NOT NULL,
capital_type ENUM('initial','additional') DEFAULT 'additional',
capital_date DATE NOT NULL,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
STEP 10 — Database Connection

config.php

<?php
if (session_status() === PHP_SESSION_NONE) {
session_start();
}

$host = "localhost";
$dbname = "accounting_system_php";
$user = "root";
$pass = "";

try {
$pdo = new PDO(
"mysql:host=$host;dbname=$dbname;charset=utf8mb4",
$user,
$pass,
[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
]
);
} catch (PDOException $e) {
die("Database Connection Failed");
}

function clean($data) {
return htmlspecialchars(trim($data), ENT_QUOTES, 'UTF-8');
}

function money($amount) {
return number_format((float)$amount, 2);
}
?>
STEP 11 — Save Expense
<?php
require_once 'config.php';

if (isset($_POST['save_expense'])) {
$expense_category = clean($_POST['expense_category']);
$amount = (float)$_POST['amount'];
$payment_method = clean($_POST['payment_method']);
$expense_date = clean($_POST['expense_date']);
$description = clean($_POST['description']);

$stmt = $pdo->prepare("
INSERT INTO expenses
(expense_category, amount, payment_method, expense_date, description)
VALUES (?, ?, ?, ?, ?)
");

$stmt->execute([
$expense_category,
$amount,
$payment_method,
$expense_date,
$description
]);

echo "Expense saved successfully.";
}
?>
STEP 12 — Save Sale
<?php
require_once 'config.php';

if (isset($_POST['save_sale'])) {
$customer_id = (int)$_POST['customer_id'];
$invoice_no = clean($_POST['invoice_no']);
$total_amount = (float)$_POST['total_amount'];
$paid_amount = (float)$_POST['paid_amount'];
$balance = $total_amount - $paid_amount;
$sale_date = clean($_POST['sale_date']);
$description = clean($_POST['description']);

$stmt = $pdo->prepare("
INSERT INTO sales
(customer_id, invoice_no, total_amount, paid_amount, balance, sale_date, description)
VALUES (?, ?, ?, ?, ?, ?, ?)
");

$stmt->execute([
$customer_id,
$invoice_no,
$total_amount,
$paid_amount,
$balance,
$sale_date,
$description
]);

echo "Sale saved successfully.";
}
?>
STEP 13 — Save Purchase
<?php
require_once 'config.php';

if (isset($_POST['save_purchase'])) {
$supplier_id = (int)$_POST['supplier_id'];
$purchase_no = clean($_POST['purchase_no']);
$total_amount = (float)$_POST['total_amount'];
$paid_amount = (float)$_POST['paid_amount'];
$balance = $total_amount - $paid_amount;
$purchase_date = clean($_POST['purchase_date']);
$description = clean($_POST['description']);

$stmt = $pdo->prepare("
INSERT INTO purchases
(supplier_id, purchase_no, total_amount, paid_amount, balance, purchase_date, description)
VALUES (?, ?, ?, ?, ?, ?, ?)
");

$stmt->execute([
$supplier_id,
$purchase_no,
$total_amount,
$paid_amount,
$balance,
$purchase_date,
$description
]);

echo "Purchase saved successfully.";
}
?>
STEP 14 — Dashboard Calculations
$totalCapital = $pdo->query("
SELECT COALESCE(SUM(amount),0)
FROM capital
")->fetchColumn();

$totalSales = $pdo->query("
SELECT COALESCE(SUM(total_amount),0)
FROM sales
")->fetchColumn();

$totalPurchases = $pdo->query("
SELECT COALESCE(SUM(total_amount),0)
FROM purchases
")->fetchColumn();

$totalExpenses = $pdo->query("
SELECT COALESCE(SUM(amount),0)
FROM expenses
")->fetchColumn();

$profitLoss = $totalSales - ($totalPurchases + $totalExpenses);

$cashBalance = ($totalCapital + $totalSales) - ($totalPurchases + $totalExpenses);
STEP 15 — Profit and Loss Report
<h3>Profit and Loss Report</h3>

<p>Total Sales: TZS <?= money($totalSales); ?></p>

<p>Total Purchases: TZS <?= money($totalPurchases); ?></p>

<p>Total Expenses: TZS <?= money($totalExpenses); ?></p>

<h4>
Profit / Loss:
TZS <?= money($profitLoss); ?>
</h4>
STEP 16 — Cash Balance Report
<h3>Cash Balance</h3>

<p>Total Capital: TZS <?= money($totalCapital); ?></p>

<p>Total Sales: TZS <?= money($totalSales); ?></p>

<p>Total Purchases: TZS <?= money($totalPurchases); ?></p>

<p>Total Expenses: TZS <?= money($totalExpenses); ?></p>

<h4>
Cash Balance:
TZS <?= money($cashBalance); ?>
</h4>
STEP 17 — Bootstrap Dashboard Cards
<div class="row g-4">
<div class="col-md-3">
<div class="card shadow-sm border-0 rounded-4 p-3">
<small>Total Sales</small>
<h4>TZS <?= money($totalSales); ?></h4>
</div>
</div>

<div class="col-md-3">
<div class="card shadow-sm border-0 rounded-4 p-3">
<small>Total Expenses</small>
<h4>TZS <?= money($totalExpenses); ?></h4>
</div>
</div>

<div class="col-md-3">
<div class="card shadow-sm border-0 rounded-4 p-3">
<small>Profit / Loss</small>
<h4>TZS <?= money($profitLoss); ?></h4>
</div>
</div>

<div class="col-md-3">
<div class="card shadow-sm border-0 rounded-4 p-3">
<small>Cash Balance</small>
<h4>TZS <?= money($cashBalance); ?></h4>
</div>
</div>
</div>
Features za Accounting System PHP
income management
expense management
sales management
purchase management
customer debts
supplier debts
payments recording
profit and loss report
cash balance report
user login
Bootstrap dashboard
secure PDO queries
Mfumo Huu Unaweza Kutumika Wapi?
small business
farm business
school accounting
shop management
POS system
NGO records
church accounting
hotel accounting
service business
Benefits za Accounting System PHP
Better Financial Control

Unajua mapato, matumizi na balance muda wowote.

Easy Reporting

Ripoti za profit/loss na cash balance zinapatikana haraka.

Debt Tracking

Unaweza kufuatilia wateja wanaodaiwa na suppliers wanaodai.

Professional Records

Data zinahifadhiwa vizuri kwenye database.

Hitimisho

Accounting System PHP ni project nzuri kwa developer yeyote anayetaka kutengeneza mfumo wa biashara.

Kwa kutumia:

PHP PDO
MySQL
Bootstrap
prepared statements
reports

unaweza kutengeneza mfumo mzuri wa kusimamia fedha na ripoti za biashara.

Kwa tutorials zaidi tembelea:

https://faulink.com

🚀 Unahitaji mfumo au website ya biashara?

Chagua huduma hapa chini kisha mteja bofya moja kwa moja kwenda kwenye ukurasa wa huduma au kuwasiliana nasi kwa WhatsApp.

Share this post

Comments

0
No comments yet. Be the first to comment.

Continue Reading

Subscribe

Get new updates

Jiunge upokee posts mpya, tutorials, na updates za mifumo moja kwa moja kwenye email yako.

Faulink Support