System Overview
BPDS manages the end-to-end distribution of government payments to registered beneficiaries. District officers register and verify beneficiaries, administrators review and approve payment batches, and the platform releases funds over mobile-money and bank rails while keeping a reconcilable ledger of every entitlement and every payment made. It is built for transparency: each record carries its own payment history, verification status, and outstanding balance.
Payment Distribution Workflow
Funds move through five stages, each with its own controls and audit points.
Intake & Registration
Beneficiary records are captured or imported per district, with National ID (NIN), location hierarchy (district, sub-county, parish, village), entitlement details, and bank or mobile-money destination. Records enter a verification queue before any funds move.
Ledger & Entitlement
Each beneficiary carries an entitlement ledger: unit price, amount claimed, previous payments, total paid, and outstanding balance. Every value is derived and stored so the running balance is always reconcilable against what has been disbursed.
Disbursement Rails
Approved payments are routed to the beneficiary destination over two rails: mobile money via the WENDY / PostBank integration, and direct bank transfer using the stored account details. Payments are batched, approved, then released.
Reconciliation
A reconciliation service matches released payments back to the ledger, updates outstanding balances, and flags mismatches (partial pays, failed transfers, duplicates) for review before a batch is closed.
AML & Compliance
Before release, payment batches pass anti-money-laundering checks: destination and identity screening, duplicate-account detection, and value-threshold monitoring. Flagged items are held for manual clearance and recorded in the audit trail.
Technology Stack
Next.js 16 + React 19
App Router, server components, and server actions for the full-stack application layer.
Tailwind CSS
Utility-first styling with a consistent design system and full light / dark theming.
PostgreSQL + Drizzle ORM
Typed schema and queries over a relational store for beneficiaries, payments, and audit records.
Auth.js (NextAuth)
Credential authentication with hashed passwords and role-scoped sessions.
Reconciliation Service
Matches disbursements against the entitlement ledger and surfaces exceptions for review.
Payment Rails
Mobile money via WENDY / PostBank and direct bank transfer for beneficiary payout.
Security Controls
Role-Based Access Control
Every session is scoped to a role (system administrator, district CAO, data entry officer). Access to beneficiary data and payment actions is enforced per role and, where relevant, per district.
Encryption In Transit & At Rest
All traffic is served over HTTPS / TLS. Data is stored in a PostgreSQL database on encrypted storage, with credentials hashed using bcrypt rather than kept in plain text.
Tamper-Evident Audit Logging
Sensitive actions (verification changes, approvals, disbursements) are written to an append-only audit trail so that any change to a record or a payment can be traced back to an actor and a time.
DPPA Alignment
Handling of personal data follows Uganda's Data Protection and Privacy Act: purpose-limited collection, restricted access, and retention tied to the payment programme.
Test Credentials
Use any of the accounts below to sign in and explore the platform. Each role sees a different slice of the system.