Higher Education · Java SDK

Keep a financial aid package inside the cost of attendance

Your aid packaging agent proposes an award. Before it posts to the student account, the Java SDK sends the package facts to your institution’s rules, which stop over-awards and send progress warnings to an aid officer.

What the rules do with a package

Three students from the financial aid simulator. Run financial aid simulator

  1. Allowed

    When: A standard full-time package for a student meeting academic progress.

    Your code: The award posts, and the record keeps the package facts and the rule version.

    Who picks it up: The Business Owner sees packages moving. Auditors read the record inside an engagement.

  2. Sent to a person

    When: The student has an academic progress warning.

    Your code: The package waits for an aid officer.

    Who picks it up: The aid officer with that authority, in the VeriProof Inbox, by email, or in Slack or Microsoft Teams, with reminders and escalation.

  3. Stopped

    When: A proposed $31,400 award against a $28,500 cost of attendance.

    Your code: The status is BLOCKED, and nothing posts.

    Who picks it up: The Governance Engineer sees the over-award rule that stopped it.

Java: post the award on a released result

This version opens and closes the client with try-with-resources. In a long-running service, create it once and reuse it.

Java · com.veriproof:veriproof-sdk-core

import com.veriproof.sdk.GovernOptions;
import com.veriproof.sdk.Veriproof;
import java.util.Map;

try (var veriproof = Veriproof.fromEnvironment()) {
    var result = veriproof.govern(
        "aid.award",
        packageDraft,
        context -> studentAccounts.post(context.input(), context.idempotencyKey()),
        GovernOptions.builder()
            .facts(Map.of(
                "enrollment_status", student.enrollmentStatus(),
                "sap_status", student.sapStatus(),
                "student_aid_index", aidApplication.studentAidIndex(),
                "cost_of_attendance_usd", budget.costOfAttendanceUsd(),
                "proposed_award_total_usd", packageDraft.totalUsd(),
                "verification_complete", verification.isComplete(),
                "dependency_status", student.dependencyStatus()))
            .build());

    if (result.completed()) {
        notifyStudent(result.value());
    } else {
        holdPackage(result.status(), result.reasonCode(), result.message());
    }
}

A held package never reaches studentAccounts.post, so the student account stays unchanged until the rules allow the award.

Why Java here: Many student information systems and their integration layers run on the JVM, so the check wraps the posting call.

Package facts for the award rule

The financial aid simulator sends these fields with every proposed package.

FactWhat it holds
enrollment_statusfull_time, three_quarter, or half_time.
sap_statusAcademic progress: meeting, warning, or failing.
student_aid_indexThe index from the student’s aid application.
cost_of_attendance_usdThe student’s cost of attendance.
proposed_award_total_usdTotal of the proposed package.
verification_completeTrue when required verification is done.
dependency_statusdependent or independent.

Send both sides of the comparison

The over-award rule compares proposed_award_total_usd with cost_of_attendance_usd. Send both, even when your agent already checked. The record then shows the numbers the rule saw, not only its verdict.

When the aid office changes a rule

Developer fix request

If the aid office adds a rule on outside scholarships and your agent doesn’t report them, the Developer gets a fix request naming the field.

Changing the rule

Changing how warnings are handled can be tried in Shadow against real packages. Before the new version enforces in production, an administrator or compliance officer approves the engineer’s change.

See how the six role portals hand off work

Useful links

Try the over-award case

Run the $31,400 package in the financial aid simulator, then open the record and compare the two amounts.