Loan Management on NetSuite
LendSuite
A consumer lending platform built natively on NetSuite — origination, amortization, servicing, and collections running against the ledger instead of beside it.
- Loan Origination
- Amortization Schedules
- Repayment Servicing
- Delinquency & Collections
- Interest Accrual
- My role
- Solution architecture and full SuiteScript build
- The Project
- A native NetSuite application for managing consumer loans
- Product focus
- Consumer lending operations and loan accounting

<Product Overview/>
Most lenders run loans in one system and their books in another, then spend every month reconciling the two. LendSuite puts the loan book inside the ledger.
The problem
Consumer lenders track loans in spreadsheets or standalone software, then re-encode the results into accounting. Interest accruals get calculated by hand, payment allocations vary by whoever posts them, and the loan portfolio and the general ledger tell two different stories by month-end.
The solution
LendSuite runs the entire loan lifecycle inside NetSuite as a native application. Origination, schedules, repayments, penalties, and collections all post to the same ledger they are reported from, so the loan book and the books are the same thing. Nothing is exported, and nothing is encoded twice.
The approach
Loans are modeled as custom records with their own schedules and transaction history, while every financial event writes through NetSuite's native accounting. Interest accrual, penalty assessment, and aging run as scheduled batch jobs, so a growing portfolio does not mean growing manual work.
What it delivers
A loan portfolio that closes with the books. Balances, accrued interest, and aging are always current, payment allocation follows one rule instead of one per staff member, and portfolio reporting comes out of saved searches rather than a spreadsheet rebuilt every month. Month-end becomes review instead of reconstruction.
<Product Features/>
The core workflows and modules that make up the product.
Loan Origination
Capture applications, borrower details, and supporting documents on one record, then move them through evaluation and an approval matrix with every decision and approver logged.
Loan Products & Terms
Configure products once — interest method, term, fees, penalties, and grace periods — so new offerings are set up rather than coded, and every loan inherits consistent terms.
Amortization Schedules
Generate schedules on release and regenerate them cleanly on restructure, refinance, or early settlement, with every version retained for audit.
Repayment Servicing
Post repayments against a single allocation waterfall, handle partial and advance payments, and issue statements of account showing exactly how each peso was applied.
Delinquency & Collections
Track aging buckets, assess penalties automatically, assign accounts for follow-up, and log every collection action against the loan record.
Loan Accounting & Reporting
Interest accrual, fee amortization, and provisioning post straight to the general ledger with full dimensions, and portfolio, aging, and yield reporting run on live data.
<Built on NetSuite/>
Not an integration or a sidecar — a native SuiteApp that treats NetSuite as the platform, not just the destination.
One source of truth
Every financial event writes through native NetSuite accounting rather than into a parallel loan database that has to be reconciled later. There is no sync, because there's nothing to sync.
Configured, not coded
Products, terms, fee structures, and penalty rules live in configuration records, so a new loan product is set up by an administrator rather than shipped as a code change.
Built to scale
Batch work runs as Map/Reduce and scheduled scripts designed around NetSuite's governance model, so daily accrual and aging hold up as the portfolio grows instead of timing out.
What Was Built
Custom records — the data model
NetSuite lets you define your own record types. LendSuite defines Loan, Loan Product, Amortization Schedule, Repayment, Penalty Assessment, and Collection Activity, so the loan book lives inside the system with native search, permissions, and audit history rather than in a separate database.
Suitelets — custom screens
Custom pages built inside NetSuite for work the standard forms cannot express. LendSuite uses them for the loan detail workspace, the repayment posting screen, and the portfolio dashboard.
User Event scripts — rules that always apply
Server-side logic that runs whenever a record is saved, no matter how it was created — screen, import, or API. LendSuite uses them to validate loans, enforce status transitions, and post the accounting entries behind each loan event, so the rules cannot be bypassed.
Client scripts — live feedback on forms
Logic that runs in the browser while someone is filling out a form. LendSuite uses it to preview the amortization schedule as terms change, and to show how a payment will split before it is committed.
Map/Reduce scripts — nightly batch work
NetSuite caps how much processing any single script run can consume, so work across thousands of records has to be batched. LendSuite runs daily interest accrual, penalty assessment, and aging refresh this way, so performance holds as the portfolio grows.
SuiteFlow — approval routing without code
NetSuite's visual workflow builder. The approval matrix — who signs off by amount, product, and role — is configured here, so approval paths change without a deployment.
SuiteQL & saved searches — live reporting
NetSuite's query and reporting tools. Portfolio at risk, aging, yield, and collection performance run directly against live data instead of exported spreadsheets.
Custom segments — reporting dimensions
Custom classification fields that flow through to the general ledger. Branch, loan officer, and product are carried onto every entry, so finance can slice the books the same way operations sees the business.
<How It Works/>
The loan lifecycle and engineering decisions that keep servicing, accounting, and collections reliable.
Architecture Flow
Each loan moves through a seven-step lifecycle, from application to closure.
- 01
Apply
Capture the application, borrower details, and supporting documents against a single loan record.
- 02
Assess
Evaluate capacity, existing exposure, and eligibility against the product's rules, with the result recorded on the loan.
- 03
Approve
Route through the approval matrix by amount and product, then record approved terms and the borrower disclosure.
- 04
Release
Disburse the loan, generate the amortization schedule, and post the opening entries to the ledger.
- 05
Service
Post repayments through the allocation waterfall, apply advance and partial payments, and keep balances current.
- 06
Collect
Track aging, assess penalties, log follow-up activity, and handle restructures or refinancing when they happen.
- 07
Close
Settle the loan, or write it off with the corresponding provision, and retain the full history against the record.
Engineering Decisions
The system choices that keep accruals scalable, payment allocation consistent, and every schedule auditable.
Accrual as a batch job
Daily interest accrual across the portfolio runs as a Map/Reduce script rather than record-by-record logic, so it scales with the loan book instead of hitting governance limits. Each run is idempotent and keyed by date, so a re-run never double-posts.
One allocation waterfall
How a payment splits across penalties, interest, and principal is defined in one place and applied everywhere — posting, statements, and reporting. Allocation is never left to whoever encodes the payment, so two staff members posting the same payment get the same result.
Schedules are versioned
Restructures and refinancing regenerate the amortization schedule rather than editing it. The prior version is retained and linked, so the loan's history stays auditable and a balance can always be traced back to the terms in force at the time.
<Technology Stack/>
The technologies, frameworks, and standards used to build the product.
Platform
- NetSuite
- SuiteScript 2.1
- SuiteApp Bundle
- SuiteFlow
- SuiteCloud (SDF)
Data Model
- Custom Records
- Custom Segments
- Custom Fields
- Native GL Posting
Application
- Suitelets
- User Event Scripts
- Client Scripts
- Dashboard Portlets
Automation & Reporting
- Map/Reduce Scripts
- Scheduled Scripts
- SuiteQL
- Saved Searches
<Project Highlights/>
- 01
Loans and books in one system
No parallel database, no month-end reconciliation between the portfolio and the books.
- 02
Consistent payment treatment
One allocation rule applied everywhere, so balances never depend on who posted the payment.
- 03
Scales with the portfolio
Accrual, penalties, and aging run as batch jobs built around the platform's governance limits.