Skip to main content
The Save App analytics API gives you programmatic access to the numbers that matter most: total group balances, pending approvals, per-member savings, financial period reports, individual credit scores, and a full audit trail of every admin action. Dashboard and report endpoints are restricted to admins; the summary endpoint is available to all authenticated users.

GET /api/analytics/dashboard

Returns high-level counts for the group. Requires an admin JWT.

Response

integer
Total number of users with the member role in the group.
integer
Number of members whose accounts are currently active (is_active = true).
float
Current total balance of the group fund, in UGX.
integer
Number of loan requests currently in PENDING status awaiting admin approval.
integer
Number of transactions currently in PENDING status awaiting admin approval.
integer
Number of payouts currently in PENDING status awaiting execution.
Sample response

GET /api/analytics/summary

Returns a personalised summary for the authenticated user. Available to all authenticated users — both admins and members.

Response

integer
Total number of members in the group.
integer
Number of currently active members.
float
Current total balance of the group fund, in UGX.
float
The authenticated user’s total contribution amount (contribution_paid), in UGX.
integer
Combined count of pending loans and pending transactions across the group.
string
Name of the savings group the authenticated user belongs to.
string
Display name of the authenticated user making the request.
float
Sum of all approved contribution transactions for the current calendar month, in UGX.
float
Total interest amount accrued from loans in APPROVED, ACTIVE, or COMPLETED status, in UGX.
string | null
Unique identifier of the group, if available. May be null.
Sample response

GET /api/analytics/reports

Returns a financial summary for a given date range. Requires an admin JWT.

Query parameters

integer
Start of the report period as a Unix millisecond timestamp. Defaults to 30 days before the current time if omitted.
integer
End of the report period as a Unix millisecond timestamp. Defaults to the current time if omitted.

Response

datetime
ISO 8601 datetime derived from the resolved startDate value.
datetime
ISO 8601 datetime derived from the resolved endDate value.
float
Sum of all approved contribution transactions within the period, in UGX.
float
Sum of all approved payouts executed within the period, in UGX.
float
Sum of all approved, active, or completed loan principal amounts requested within the period, in UGX.
float
Sum of all loan repayment amounts recorded within the period, in UGX.
Sample response

GET /api/credit-scores/me

Returns the credit score record for the authenticated user. Available to all authenticated users.

Response

string
UUID of the member whose score is returned.
string
Display name of the member.
float
Current credit score. The scale runs from min_credit_score (default 300) to max_credit_score (default 850), with new members starting at starting_credit_score (default 500).
integer
Number of contribution payments made on time.
integer
Number of contribution payments made after the due date.
integer
Number of contribution payments that were missed entirely.
integer
Number of loans fully repaid before or on the due date.
integer
Number of loans repaid after the due date.
integer
Number of loans that defaulted without repayment.
integer
Number of complete group cycles the member has participated in.
integer
Number of cycles successfully completed by the member.
datetime
ISO 8601 timestamp of the most recent score recalculation.

GET /api/audit-logs

Returns a paginated list of admin action records. Requires an admin JWT.

Query parameters

string
Filter results to actions performed by a specific admin UUID.
string
Filter by the type of entity that was acted on (e.g., "loan", "member", "config").
string
Filter by the action string (e.g., "approve", "reject", "update").
string
ISO 8601 datetime. Only return logs created at or after this time.
string
ISO 8601 datetime. Only return logs created at or before this time.
integer
default:"100"
Maximum number of records to return. Upper bound is 500.
integer
default:"0"
Zero-based index of the first record to return. Use with limit for pagination.

Response

Returns an array of AuditLogResponse objects, ordered by created_at descending.
string
UUID of the audit log entry.
string
UUID of the admin who performed the action.
string
Display name of the admin who performed the action.
string
String describing what was done (e.g., "approve", "reject", "update").
string
The type of entity that was acted on (e.g., "loan", "member", "config").
string
UUID of the entity that was acted on.
string | null
JSON-serialised representation of the entity’s state before the action. May be null for creation events.
string | null
JSON-serialised representation of the entity’s state after the action. May be null for deletion events.
datetime
ISO 8601 timestamp of when the action was recorded.
Sample response