Skip to main content
Fee, tax, and deduction lines reduce the gross approved loan amount down to netToMemberCents, the figure the payees must distribute. The multi-payee SUM invariant is checked against that net, not against the gross.

Gross to net

The gross is the approved loan amount from the most recent APPROVED adjudication decision. Each fee line is computed (percentage and per-thousand lines against the gross, a FLAT_CENTS line as a fixed amount), GCT is applied to the taxable lines, and only the lines treated as DEDUCT reduce the cash the member receives. The flow runs in order:
  1. Start from the gross approved amount.
  2. Compute each fee line. Percentage, per-thousand, and STAMP_DUTY_FORMULA lines are computed against the gross; a FLAT_CENTS line is a fixed amount.
  3. Add GCT to every taxable line.
  4. Subtract the non-waived DEDUCT lines, each including its GCT.
  5. Arrive at the net to member.
When you add a payee, the sum of all payee amounts must equal the net to member exactly. If deductions ever exceed the gross, scheduling is refused with a NET_NEGATIVE error.

How a fee amount is computed

The calcKind field decides how a line’s amount is worked out. There are four kinds.

How a line is treated

The treatment field decides whether a line reduces the disbursed cash. There are three treatments.

Who a line is owed to

The remitTo field records who the fee, tax, or deduction is owed to. There are seven values.

GCT

Each fee line carries a taxable flag. GCT applies only to lines flagged taxable. The processing fee is an ancillary loan service, so it is standard-rated and carries GCT, the same as the legal and valuation fees. Insurance-service fees stay GCT-exempt, so a comprehensive-insurance premium carries none. The workspace default GCT rate is gctRateBps, which defaults to 1500, that is 15%, the Jamaica standard. It is stored on the workspace configuration. A Disbursement officer can override the GCT rate for a single disbursement. The override is passed per schedule and clamped to the range 0 to 10000 basis points. When omitted, the workspace default applies. This covers a special rate or a zero-rated case without changing the workspace default.

The two fee tables

Fees live in two places: an editable per-workspace catalogue, and an immutable snapshot on each instruction. The catalogue is the configurable source. The snapshot is the legal record of exactly what was charged on a specific disbursement.

Seeded Jamaica defaults

A workspace created through the demo seed gets ten Jamaica fee items spread across the loan types. The defaults are starting points. An Administrator or Credit Manager edits them on the Fee schedule page.

What an officer can change

A Disbursement officer can add, edit, and waive fee lines at schedule time. Every change is audited.
  • Add a custom line that is not in the schedule.
  • Edit a schedule line for this loan.
  • Waive a line, with a reason of at least 3 characters, so it does not reduce the net.
Each snapshot line records its source: SCHEDULE for a line drawn from the catalogue, MANUAL for a custom line the officer added. An instruction carries at most 20 fee lines. The audit events are exact:
  • disbursement.fees.applied records the full fee, GCT, and net breakdown for the instruction.
  • disbursement.fee.waived records each waived line and its reason.
Both fire inside scheduleDisbursement. Catalogue edits are audited too: the tenant.fee_schedule.updated event fires on every save from the Fee schedule page.