The Finance module is the central hub for all monetary operations at Gobarau Academy. It covers the full lifecycle of school fees — from defining fee categories and mapping them to class levels, to recording individual student payments with full audit trails. Beyond fees, the module manages scholarship funds and their recipients, and operates a school marketplace where students can request items, backed by inventory tracking and restock history. All write endpoints require authentication; scholarship and restock operations are restricted to admin-level users.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/muhammadbugaje/gobarau_backend/llms.txt
Use this file to discover all available pages before exploring further.
Fee Management
Fee Types
Fee types are reusable categories (e.g., “Tuition”, “ICT Levy”, “PTA Fee”) that are later assigned amounts via Fee Structures. The
code field must be globally unique.GET /api/finance/fee-types/
Returns a list of all fee type definitions.
Permissions: IsAuthenticated, IsStaffOrAdmin
Auto-incrementing primary key of the fee type.
Globally unique UUID identifier of the fee type.
Human-readable name of the fee category (e.g., “Tuition Fee”).
Short unique code identifier (max 20 characters), e.g.,
"TUI".Optional long-form description of the fee type. Defaults to empty string.
Whether this fee is charged on a recurring basis each term or session.
Timestamp when the record was created.
Timestamp of the last update.
POST /api/finance/fee-types/
Creates a new fee type.
Permissions: IsAuthenticated, IsStaffOrAdmin
Display name for this fee category. Maximum 200 characters.
Short unique code (max 20 characters). Must be unique across all fee types.
Optional description. Defaults to
"".Set to
true for fees billed every term/session. Defaults to false.Fee Structures
Fee structures bind a fee type to a specific class level and academic session, with a concrete monetary amount and an optional due date.GET /api/finance/fee-structures/
Returns all fee structures across all class levels and sessions.
Permissions: IsAuthenticated, IsStaffOrAdmin
Auto-incrementing primary key.
Globally unique UUID identifier.
ID of the related
FeeType.ID of the
ClassLevel from the administration module.ID of the
AcademicSession this structure applies to.Fee amount, up to 10 digits with 2 decimal places (e.g.,
"15000.00").Optional ISO 8601 date by which the fee should be paid.
null if not set.Timestamp when the record was created.
Timestamp of the last update.
POST /api/finance/fee-structures/
Creates a new fee structure.
Permissions: IsAuthenticated, IsStaffOrAdmin
ID of an existing
FeeType.ID of the target
ClassLevel.ID of the
AcademicSession this amount applies to.Monetary amount charged. e.g.,
"25000.00".Optional payment deadline in
YYYY-MM-DD format.Payments
Payments record individual transactions made by students against a specific fee structure. Every payment must carry a globally uniquereceipt_number.
The
receipt_number field has a unique=True database constraint. Attempting to create two payments with the same receipt number will return a 400 Bad Request validation error.GET /api/finance/payments/
Returns all payment records ordered by most recent payment date.
Permissions: IsAuthenticated, IsStaffOrAdmin
Auto-incrementing primary key of the payment record.
Globally unique UUID identifier.
ID of the
StudentProfile who made the payment.ID of the
FeeStructure this payment is against.Amount paid in this transaction.
Date the payment was recorded (
YYYY-MM-DD).Payment method. One of:
cash, bank_transfer, online.Optional external reference number (e.g., bank teller number). Defaults to
"".Payment status. One of:
pending, paid, partial, overdue, refunded.Unique receipt identifier (max 50 characters).
Timestamp when the record was created.
Timestamp of the last update.
ID of the
Person (staff) who created this record (from AuditMixin).ID of the
Person who last modified this record.POST /api/finance/payments/
Records a new student payment transaction.
Permissions: IsAuthenticated, IsStaffOrAdmin
ID of the
StudentProfile making the payment.ID of the
FeeStructure being paid against.Amount paid in this transaction, e.g.,
"5000.00".Date of payment in
YYYY-MM-DD format.Payment method. Must be one of:
cash, bank_transfer, online.A unique receipt reference. Maximum 50 characters. Must not already exist.
Optional external reference (e.g., bank slip number). Defaults to
"".Payment status. Defaults to
pending. Options: pending, paid, partial, overdue, refunded.Scholarships
Scholarship management is restricted to admin-level users only (IsAdminLevel). Staff without admin privileges will receive a 403 Forbidden response.
Scholarship Funds
GET /api/finance/scholarship-funds/
Returns all scholarship funds available for allocation.
Permissions: IsAuthenticated, IsAdminLevel
Auto-incrementing primary key of the scholarship fund.
Globally unique UUID identifier.
Name of the scholarship fund (max 200 characters).
Optional description of the fund’s purpose.
Total amount available in the fund.
ID of the
AcademicSession this fund is allocated for.Whether recipients can currently be assigned from this fund.
Timestamp when the record was created.
Timestamp of the last update.
POST /api/finance/scholarship-funds/
Creates a new scholarship fund.
Permissions: IsAuthenticated, IsAdminLevel
Display name for this scholarship fund.
Total monetary value of the fund, e.g.,
"500000.00".ID of the
AcademicSession this fund belongs to.Optional description. Defaults to
"".Defaults to
true. Set to false to freeze the fund.Scholarship Recipients
GET /api/finance/scholarship-recipients/
Returns all scholarship recipient records ordered by most recent award date.
Permissions: IsAuthenticated, IsAdminLevel
Auto-incrementing primary key.
Globally unique UUID identifier.
ID of the
StudentProfile who received the award.ID of the
ScholarshipFund from which the award was drawn.Exact amount awarded to this student.
ISO 8601 date the scholarship was awarded.
Timestamp when the record was created.
Timestamp of the last update.
ID of the staff member who created this record (from
AuditMixin).ID of the staff member who last modified this record.
POST /api/finance/scholarship-recipients/
Awards a scholarship to a student.
Permissions: IsAuthenticated, IsAdminLevel
ID of the recipient
StudentProfile.ID of the
ScholarshipFund to draw from.Amount to award, e.g.,
"50000.00".Date of award in
YYYY-MM-DD format.Marketplace
The school marketplace allows students to request items such as uniforms, stationery, and lab materials. Items are organized by category, tracked with inventory levels, and fulfilled through a request workflow.Item Categories
GET /api/finance/item-categories/
Returns all marketplace item categories.
Permissions: IsAuthenticated, IsStaffOrAdmin
Auto-incrementing primary key of the category.
Globally unique UUID identifier.
Category name, max 100 characters (e.g., “Stationery”, “Uniform”).
Optional description. Defaults to
"".Timestamp when the record was created.
Timestamp of the last update.
POST /api/finance/item-categories/
Creates a new item category.
Permissions: IsAuthenticated, IsStaffOrAdmin
Category name. Maximum 100 characters.
Optional description. Defaults to
"".Marketplace Items
GET /api/finance/marketplace-items/
Returns all items listed in the school marketplace.
Permissions: IsAuthenticated, IsStaffOrAdmin
Auto-incrementing primary key.
Globally unique UUID identifier.
Item name (max 200 characters).
Optional item description.
ID of the associated
ItemCategory. Nullable — the category can be removed without deleting the item (SET_NULL).Unit selling price of the item.
Current quantity in stock.
Whether the item is currently visible and requestable by students.
Timestamp when the record was created.
Timestamp of the last update.
POST /api/finance/marketplace-items/
Adds a new item to the marketplace.
Permissions: IsAuthenticated, IsStaffOrAdmin
Item name. Maximum 200 characters.
Unit price, e.g.,
"1200.00".Optional ID of an
ItemCategory. Can be null.Optional item description. Defaults to
"".Initial stock quantity. Defaults to
0.Set to
false to hide the item from students. Defaults to true.Marketplace Requests
AMarketplaceRequest represents a student’s order. Individual line items (which item, how many, at what price) are stored separately via RequestItem.
GET /api/finance/marketplace-requests/
Returns all marketplace requests. The response includes a nested request_items array via MarketplaceRequestSerializer.
Permissions: IsAuthenticated, IsStaffOrAdmin
Auto-incrementing primary key of the request.
Globally unique UUID identifier.
ID of the requesting
StudentProfile.Automatically set to today’s date on creation (
auto_now_add=True).Current status. One of:
pending, approved, fulfilled, cancelled.Timestamp when the record was created.
Timestamp of the last update.
Nested list of
RequestItem objects associated with this request (read-only).POST /api/finance/marketplace-requests/
Creates a new marketplace request for a student.
Permissions: IsAuthenticated, IsStaffOrAdmin
ID of the
StudentProfile submitting the request.Initial status. Defaults to
pending. Options: pending, approved, fulfilled, cancelled.Request Items
Request items are the individual line items attached to a marketplace request. Eachrequest + item pair must be unique within a single request.
GET /api/finance/request-items/
Returns all request line items.
Permissions: IsAuthenticated, IsStaffOrAdmin
Auto-incrementing primary key.
Globally unique UUID identifier.
ID of the parent
MarketplaceRequest.ID of the
MarketplaceItem being requested.Number of units. Defaults to
1. Must be a positive integer.Price per unit captured at the time of the request.
Timestamp when the record was created.
Timestamp of the last update.
POST /api/finance/request-items/
Adds a line item to an existing marketplace request.
Permissions: IsAuthenticated, IsStaffOrAdmin
ID of an existing
MarketplaceRequest.ID of the
MarketplaceItem to request.Number of units to request. Must be ≥ 1.
Unit price at the time of adding the item, e.g.,
"1200.00".Restock Logs
Restock logs provide a complete, immutable audit trail every time stock is added to a marketplace item. Creation is restricted to admin-level users.GET /api/finance/restock-logs/
Returns all restock events ordered by most recent first.
Permissions: IsAuthenticated, IsAdminLevel
Auto-incrementing primary key of the restock event.
Globally unique UUID identifier.
ID of the
MarketplaceItem that was restocked.Number of units added during this restock event.
Stock level before the restock.
Stock level after the restock.
Timestamp when the restock was recorded. Set automatically (
auto_now_add=True).Timestamp when the record was created.
Timestamp of the last update.
ID of the staff member who created this restock record (from
AuditMixin).ID of the staff member who last modified this record.
POST /api/finance/restock-logs/
Records a new restock event for a marketplace item.
Permissions: IsAuthenticated, IsAdminLevel
ID of the
MarketplaceItem being restocked.Number of units added to stock.
Stock level before this restock (for audit accuracy).
Resulting stock level after the addition.