LEDGER
BY ECOLOANS
{{ nav.icon }}{{ nav.label }}{{ nav.badge }}
Ask Q1
{{ userInitials }}
{{ userName }}
ADMIN · SETTINGS
THEME
{{ navToggleGlyph }}
⏻
{{ tkLabel }}
{{ t.sym }}{{ t.val }}{{ t.delta }}
{{ t.sym }}{{ t.val }}{{ t.delta }}
{{ kpiOutLabel }}
{{ kpiOut }}
COLLECTION OUTSTANDING
{{ kpiExpected }}
ACTIVE CLIENTS
{{ kpiClients }}
OVERDUE
{{ kpiOverdue }}
{{ kpiOverdueSub }}
LOADING THE BOOK
{{ screenTitle }}
{{ screenSub }}
{{ dbStatus }}
{{ arrangeLabel }}
LOG PETTY CASH
BULK UPLOAD
NEW LOAN
MARKET NEWS
{{ newsStamp }}
{{ c.label }}
AI BRIEF · {{ newsBrief }}
{{ newsMsg }}
{{ reelMeta }}
{{ reelTitle }}
WORLD TODAY · THE ECONOMIST
{{ reelPos }}
NEXT
✕
{{ newsLead.meta }}
{{ newsLead.title }}
{{ n.title }}
{{ n.meta }}
EXPECTED RETURN
{{ kpiExpected }}
{{ kpiOpenCount }} OPEN
Ledger →
{{ slideTitle }}
{{ b.amountFmt }}
{{ b.countLabel }}
{{ b.label }}
{{ s.label }}
{{ s.amt }}
{{ s.pct }}%
{{ c.name }}
{{ c.amt }}
‹
{{ calLabel }}
{{ calSelLabelUp }}{{ calSelTotalFmt }}
›
{{ d }}
{{ c.day }}
{{ c.dueTip }}
{{ c.count }}
{{ b.date }}{{ b.tag }}
{{ b.name }}
{{ b.amount }}
{{ b.sub }}
No collections due this month.
{{ f.name }}
{{ f.count }}
{{ f.amt }}
REF NUMBER
CUSTOMER
LENT
RETURN
STATUS
LOAN DUE
ACTION
{{ l.ref }}
{{ l.customer }}
{{ l.lentFmt }}
{{ l.returnFmt }}
{{ l.debitNote }}
{{ l.statusLabel }}
{{ l.dueFmt }}
{{ l.instLabel }}
{{ l.nextLabel }}
⋮
CLIENTS {{ clientCount }} ON BOOK
ADD CLIENT
#
REF
CUSTOMER
ID NUMBER
ADDED
OFFICER
{{ c.num }}
{{ c.ref }}
{{ c.name }}
{{ c.idMasked }}
{{ c.added }}
{{ c.employee }}
ID NUMBERS MASKED — FULL PII VISIBLE ONLY WITH ELEVATED ACCESS
CLIENTS
/
{{ cv.ref }}
{{ cv.initials }}
{{ cv.name }}
{{ cv.tier }}
{{ cv.ref }}Added {{ cv.added }}Officer · {{ cv.employee }}
Call
SMS
Contract
{{ cvRevealText }}
Full loan form
Quick loan
OPEN LOANS
{{ cv.openCount }}
OUTSTANDING
{{ cv.outstandingFmt }}
TOTAL BORROWED
{{ cv.totalFmt }}
CREDIT SCORE
{{ cv.score }}
LOANS · {{ cvLoanCount }}
Tap a status to update it
LOAN
{{ l.ref }}
PRINCIPAL
{{ l.amountFmt }}
INSTALMENT
{{ l.instFmt }}
{{ l.instOf }}
NEXT DUE
{{ l.dueFmt }}
{{ p.label }}
No loans on record yet. Use Quick loan to issue one.
RECENT ACTIVITY
{{ a.type }}
{{ a.comment }}
{{ a.date }}
{{ a.by }}
Nothing logged for this client yet.
{{ sec.title }}
Edit
{{ r.k }}{{ r.v }}
Cancel
Save
✕
EMPLOYEES
INVITE EMPLOYEE
NAME
BOOK VALUE
ROLE
ADDED
STATUS
{{ e.name }}
{{ e.email }}
{{ e.bookFmt }}
{{ e.role }}
{{ e.added }}
{{ e.status }}
EMPLOYEES SET THEIR OWN PASSWORD VIA EMAIL INVITE — ADMIN-SET PASSWORDS REMOVED
✕
LOGBOOK GLOBAL AUDIT TRAIL
{{ p.label }}
FROM
TO
{{ lgCount }}
#
REF
CUSTOMER
AMOUNT
CHANGE
DATE
COMMENT
{{ g.ref }}
{{ g.customer }}
{{ g.amountFmt }}
{{ g.type }}
{{ g.date }}
{{ g.comment }}
LEDGER LOCKED
Enter the 6-digit ledger passcode.
Cancelling returns to the dashboard — no bypass.
INCORRECT PASSCODE
CANCEL
UNLOCK
PROTOTYPE CODE: 246810
LEDGER ADMINISTRATION · UNLOCKED
LOCK
CASH
What the business has in the bank
BANK BALANCE
{{ lgBank.val }}
{{ lgBank.sub }}
{{ lgBank.legA }}{{ lgBank.legB }}
MONTH-END CASH · FORECAST
{{ lgEnd.val }}
{{ lgEnd.sub }}
{{ lgEnd.legA }}{{ lgEnd.legB }}{{ lgEnd.legC }}
RECEIVABLES
What clients still owe us
COLLECTED THIS MONTH
{{ lgMonth.val }}
{{ lgMonth.of }}
{{ lgMonth.sub }}
{{ lgMonth.pct }}
STILL TO COLLECT
{{ lgOwed.val }}
{{ lgOwed.sub }}
{{ lgOwed.legA }}{{ lgOwed.legB }}
TO RECONCILE
{{ lgRecon.val }}
{{ lgRecon.sub }}
INCOME, EXPENSES & LOSSES
What we earned and what went out
MONTHLY LEDGER
{{ lgBook.val }}
{{ lgBook.sub }}
OFFICE EXPENSES · MONTHLY
{{ lgExp.val }}
{{ lgExp.sub }}
PETTY CASH · OUTSTANDING
{{ lgPetty.val }}
{{ lgPetty.sub }}
WRITTEN OFF
{{ lgWo.val }}
{{ lgWo.sub }}
ADMINISTRATION
EMPLOYEES
ADD EMPLOYEE
CLIENT ACCESS
AUDIT LOGBOOK
SETTINGS & CLOUD
INTEGRATIONS
API & WEBHOOKS
{{ admApiSub }}
Q1 CONNECTED APPS
{{ q1AppsSub }}
MONTHLY LEDGER
✕
BOOK VALUE
{{ ledBookFmt }}
CURRENT BOOK
{{ ledOutstandingFmt }}
PROJECTED RETURN
{{ ledReturnedFmt }}
WRITTEN OFF
{{ ledWrittenOffFmt }}
PRINCIPAL LOANED
{{ ledPrincipalFmt }}
MONTH
ISSUED
PAID
START BOOK
END BOOK
CHANGE
{{ m.month }}
{{ m.issued }}
{{ m.paid }}
{{ m.startFmt }}
{{ m.endFmt }}
{{ m.changeFmt }}
View More →
{{ calSelLabelUp }}
{{ calSelSub }}
{{ a.customer }}
{{ a.statusLabel }}
{{ a.ref }} · {{ a.master }}{{ a.dueAmountFmt }}
No agreements due on this day.
✕
API & WEBHOOKS
Connect your website to LEDGER. Applications sent through the API or the embed form arrive in this workspace's Applications inbox.
{{ apiWs }}
{{ e.label }}
SECRET API KEYS
+ NEW KEY
For your server only. Never put a secret key in website code.
Copy this key now. It won't be shown again.
{{ apiSecret }}
COPY KEY
DONE
KEY NAME
PERMISSIONS
{{ c.label }}
CREATE KEY
CANCEL
{{ k.name }}
{{ k.masked }}
{{ k.scopes }}
{{ k.meta }}
REVOKE
REVOKED
No keys yet for this environment.
WEBHOOKS
+ ADD ENDPOINT
LEDGER sends a signed POST to your URL when these events happen.
ENDPOINT URL
EVENTS
{{ c.label }}
ADD ENDPOINT
CANCEL
{{ h.url }}
{{ h.events }}
{{ h.last }}
TEST
REMOVE
No endpoints yet.
SIGNING SECRET
{{ apiWhMasked }}
COPY
EMBED APPLICATION FORM
Paste this on any page of your website. The publishable key can only submit applications, and only from the domains listed below.
{{ apiEmbed }}
COPY SNIPPET
SEND TEST APPLICATION
ALLOWED DOMAINS
{{ d.name }}✕
No domains yet. The form won't load until you add one.
ADD
REST API
{{ apiBase }}
{{ ep.m }}
{{ ep.p }}
{{ ep.d }}
SUBMIT AN APPLICATION
{{ apiCurl }}
COPY REQUEST
RECENT ACTIVITY
{{ r.time }}
{{ r.m }}
{{ r.p }}
{{ r.code }}
{{ r.src }}
No API calls or webhook deliveries yet.
✕
PETTY CASH OFFICE EXPENSES · {{ pettyMonthTotal }} THIS MONTH
LOG AN EXPENSE
{{ c.label }}
STAFF MEMBER
{{ c.label }}
LOG EXPENSE
EXPENSES BY STAFF · {{ pcMonthLabel }}
{{ k.initials }}
{{ k.name }}
{{ k.monthFmt }}
{{ k.meta }}
{{ pcListLabel }}
SHOW ALL ✕
No expenses recorded yet.
{{ p.catLabel }}
{{ p.title }}
{{ p.sub }}
{{ p.amountFmt }}
{{ p.status }}
UPDATE
APPLICATIONS {{ appNewCount }} NEW · {{ appTotal }} TOTAL
MOBILE APP · LIVE FEED
{{ qkLabel }}
Loan applications submitted from the borrower mobile app land here. Review, run affordability, then approve into a loan or decline — every decision is logged.
{{ f.label }} {{ f.count }}
APPLICANT
AMOUNT
PURPOSE / TERM
SUBMITTED
STATUS
{{ a.name }}
{{ a.tagline }}
{{ a.amountFmt }}
{{ a.purpose }} · {{ a.termFmt }}
{{ a.submitted }}
{{ a.statusLabel }}
No applications in this view.
{{ appD.source }}
{{ appD.name }}
{{ appD.matchNote }}
{{ appD.statusLabel }}
✕
REQUESTED
{{ appD.amountFmt }}
EST. INSTALLMENT
{{ appD.installFmt }}
AFFORDABILITY
{{ appD.verdict }}
APPLICANT
{{ row.k }}{{ row.v }}
EMPLOYMENT & INCOME
{{ row.k }}{{ row.v }}
ATTACHED DOCUMENTS
{{ d }}
{{ appD.approveLabel }}
Request more info
Decline
← LOANS
ISSUE LOAN
BULK UPLOAD
CLIENT
ASSIGNED EMPLOYEE
LOAN AMOUNT (R)
RETURN AFTER 35% INTEREST
{{ nfReturn }}
REPAYMENT TERM
LOAN PURPOSE
AFFORDABILITY ASSESSMENT
SALARY DATE
MONTHLY EXPENSES (R)
CREDIT CARD DEBT (R)
EXISTING LOANS (R)
RENT / BOND (R)
GROCERIES / FAMILY SUPPORT (R)
DUE DATE
COMMENT
{{ afVerdict }}
{{ afReason }}
RECOMMENDED MAX
{{ afMaxLoan }}
NET INCOME
{{ afNet }}
OBLIGATIONS
{{ afObl }}
THIS REPAYMENT
{{ afRepay }}
DISPOSABLE
{{ afDisposable }}
DEBT-TO-INCOME · {{ afDti }}SAFE ≤ 55%
{{ afSubmitLabel }}
TERM: {{ nfTermLabel }} · OBLIGATIONS: {{ nfObligations }}
← CLIENTS
ADD CLIENT
Autofill from documents CLAUDE
Upload an ID, payslip or bank statement — Claude reads the details and fills the form.
{{ d.name }}{{ d.tag }}
{{ assessLabel }}
✓ {{ docFieldCount }} FIELDS AUTOFILLED · REVIEW HIGHLIGHTED VALUES BEFORE SAVING
{{ w.label }}
BANKING DETAILS ARE ENCRYPTED AT REST AND MASKED IN ALL LIST VIEWS
MASTER CREDIT AGREEMENT {{ contractNo }}
AUTO-GENERATED
{{ ctplIntroRendered }}
{{ cl.n }}{{ cl.text }}
SIGN ON THE PAD BELOW
TABLET MODE
CLEAR
{{ sigHint }}
{{ sigPenLabel }}
ASSIGN AN OFFICER TO THIS CLIENT
{{ o.initials }}
{{ o.name }}
{{ o.role }}
{{ o.mark }}
BACK
{{ wizNextLabel }}
✕
SETTINGS
{{ saveState }}
RESET DEMO DATA
DATA & MVP HANDOFF
Everything — clients, loans, employees, contracts, logbook, petty cash and settings — saves to this device automatically. Export the full dataset as JSON to seed the production MVP build, or import a saved snapshot.
{{ dataClients }}
Clients
{{ dataLoans }}
Loans
{{ dataEmployees }}
Employees
EXPORT DATA (JSON)
PROFILE
{{ avatarInitials }}
{{ prof.name }}
{{ prof.role }} · {{ prof.email }}
REMOVE
FULL NAME
EMAIL
MOBILE
JOB TITLE
STAFF NUMBER
ROLE
SAVE PROFILE
PREFERENCES
Appearance
Switch between dark and light themes
{{ themeLabel }}
PII masking
IDs, accounts & salaries masked in list views by default
ON
CONTRACT BUILDER
USED FOR EVERY MASTER AGREEMENT
Variables: {org} {client} {id} {rate} — filled automatically per client.
PREAMBLE
CLAUSES
{{ c.n }}
✕
+ Add clause
RESET TO DEFAULT
SAVES AUTOMATICALLY
TWILIO VOICE & SMS
{{ twBadge }}
Twilio
Programmable Voice & Messaging
{{ twBtnLabel }}
Account SID{{ twSid }}
Sender number{{ twFrom }}
{{ twMins }}
Voice minutes · Jul
{{ twSmsCount }}
SMS sent · Jul
Test call
Test SMS
AI DOCUMENT READER
{{ aiBadge }}
Reads uploaded IDs, payslips & bank statements to autofill client onboarding. PDFs are read on-device automatically — no key needed. Connect Claude or OpenAI to also read photos & scanned images.
Claude (Anthropic)
OpenAI
{{ aiKeyLabel }}
{{ aiSaveLabel }}
{{ aiHostNote }}
CLOUD STORAGE
{{ sbBadge }}
Supabase — hosted Postgres
{{ sbSubline }}
{{ sbBtnLabel }}
↑ Push book now
↓ Pull from cloud
Setup SQL
{{ sbErr }}
{{ sbSql }}
{{ dataClients }}
Clients
{{ dataLoans }}
Loans
{{ txnCount }}
Contracts
SECURITY & SESSION
Password
We email you a secure reset link — no password is stored here
Send reset link
This session
Signed in · Johannesburg · 19 Jul 2026
SIGN OUT
ACTIVITY LOG
Full logbook →
{{ setLogCount }} recorded on this device.
{{ g.type }}
{{ g.date }}
{{ g.customer }}
{{ g.detail }}
Nothing logged yet.
PDF
{{ pdfTitle }}
DOWNLOAD / PRINT
CLOSE
{{ pdfEl }}
‹
{{ dpLabel }}
›
{{ y.y }}
S
M
T
W
T
F
S
{{ c.day }}
SIGNATURE TABLET · MASTER CREDIT AGREEMENT
{{ sigSignerName }} — please sign below
{{ sigPenLabel }}
{{ sigHint }}
CLEAR
CANCEL
ACCEPT SIGNATURE ✓
TWILIO VOICE · {{ callStatus }}
{{ callInitials }}
{{ callName }}
{{ callPhone }}
{{ callTimer }}
END CALL
{{ attnCount }} accounts need attention
Overdue or due today — attend or acknowledge to continue.
{{ a.customer }}
{{ a.ref }} · {{ a.note }} · {{ a.amountFmt }}
View
Attend
Acknowledge all
Q1
NEW
✕
{{ m.text }}
{{ m.actLabel }} →
Q1 is thinking…
{{ c.label }}
Call {{ ccName }}?
{{ ccPhone }}
{{ ccRef }} · CALL WILL BE LOGGED
Cancel
Call now
Loan issued
{{ inN.ref }} · {{ inN.name }}
Loan amount
{{ inN.amount }}
Return after 35%
{{ inN.ret }}
Due date
{{ inN.due }}
View client
Done
{{ toastMsg }}
LOAN HISTORY {{ mLoan.ref }}
✕
AMOUNT
{{ mLoan.amountFmt }}
DUE AMOUNT
{{ mLoan.dueAmountFmt }}
STATUS
{{ mLoan.statusLabel }}
Call
Text
SET STATUS
{{ s.label }}
SMS TO {{ mLoanPhone }}
Send
Insert reminder
CLIENT'S OTHER LOANS
{{ o.ref }}
{{ o.amountFmt }}
{{ o.dueYr }}
{{ o.statusLabel }}
No other loans on record
LOAN LOGBOOK
{{ a.type }} {{ a.date }} · {{ a.by }}
{{ a.comment }}
{{ mHClient.initials }}
{{ mHClient.name }}
{{ mHClient.ref }}
ID{{ mHClient.idMasked }}
Contact{{ mHClient.phone }}
City{{ mHClient.city }}
Employer{{ mHClient.employer }}
Officer{{ mHClient.employee }}
Credit score{{ mHClient.score }}
Loan term{{ mHClient.term }}
REPAYMENT PERFORMANCE{{ mHClient.perfLabel }} · {{ mHClient.perfPct }}
{{ mHClient.loanCount }} loans{{ mHClient.paidCount }} paid{{ mHClient.overdueCount }} overdue
PAYMENT DATE{{ mHClient.dueFull }}
{{ mHClient.payCal.label }}
{{ pc.d }}
View full client info
{{ mCli.name }}
✎ EDIT
✕
{{ mCli.ref }} · ADDED {{ mCli.added }} · OFFICER: {{ mCli.employee }}
PERSONAL
ID {{ mCli.idMasked }}
Contact {{ mCli.phone }}
City {{ mCli.city }}
EMPLOYMENT
Type {{ mCli.employment }}
Employer {{ mCli.employer }}
Net salary {{ mCli.salaryMasked }}
BANKING
Bank {{ mCli.bank }}
Account {{ mCli.accountMasked }}
LOAN INFO
Open loans {{ mCli.openCount }}
Outstanding {{ mCli.outstandingFmt }}
Credit score {{ mCli.score }}
EDIT CLIENT & ACCOUNT INFO
FULL NAME
ID NUMBER
CONTACT
CITY
EMPLOYMENT TYPE
EMPLOYER
NET SALARY (R / MONTH)
ASSIGNED OFFICER
BANK
ACCOUNT NUMBER
SAVE CHANGES
CANCEL
ALL LOANS · {{ mCliLoanCount }}
{{ l.ref }}
{{ l.amountFmt }}
{{ l.statusLabel }}
{{ l.dueFmt }}
No loans on record
{{ revealLabel }}
{{ dbTag }}
{{ dbDateLabel }}
✕
{{ dbSummary }}
TO COLLECT
{{ dbTotalFmt }}
PAYMENTS
{{ dbCount }}
CLIENT
REF
RETURN DUE
{{ r.customer }}
{{ r.bank }}
{{ r.ref }}
{{ r.amountFmt }}
{{ r.instLabel }}
{{ p.label }}
Open the loan book
Dismiss
MONTH SUMMARY
{{ mo.title }}
✕
GIVEN OUT
{{ mo.given }}
{{ mo.givenN }}
COLLECTED
{{ mo.col }}
{{ mo.colN }}
GROSS PROFIT
{{ mo.gross }}
{{ mo.colN }}
OFFICE EXPENSES
{{ mo.exp }}
{{ mo.expN }}
NET PROFIT · COLLECTED − PRINCIPAL PORTION − EXPENSES
{{ mo.net }}
LOANS GIVEN OUT
{{ r.name }} {{ r.ref }}
{{ r.a }}
No loans issued this month.
COLLECTED · PAID
{{ r.name }} {{ r.ref }}
{{ r.a }}
{{ r.p }}
Nothing marked paid for this month.
OFFICE EXPENSES PAID
{{ r.name }}
{{ r.a }}
{{ mo.note }}
OFFICE EXPENSES · MONTHLY
{{ exTotFmt }}
PAID THIS MONTH ({{ exMonth }}) · {{ exPaidFmt }}
✕
Recurring costs that come out every month. Marking one paid deducts it from the bank balance for that month.
Add expense
No monthly expenses yet.
{{ e.name }}
{{ e.cat }}
{{ e.amt }}
{{ e.paidLabel }}
✕
CLIENT ACCESS
{{ caBlocked }} blocked of {{ caTotal }}
✕
A blocked client can't be issued a new loan. Their existing loans and history are unchanged.
{{ c.name }}
{{ c.sub }}
{{ c.state }}
{{ c.btnLabel }}
BANK BALANCE
{{ bkCurrent }}
{{ bkAgo }}
✕
The balance runs on its own from the last confirmed figure: loans marked paid add their collected amount, new loans logged here deduct their principal. Confirm against your bank statement to reset the starting point.
{{ bkAnchor }}
{{ bkMovesTitle }}
{{ t.ref }} · {{ t.label }}
{{ t.amt }}
{{ t.when }}
Save balance
Matches bank — confirm
RECENT UPDATES
{{ h.bal }}
{{ h.when }}
{{ h.note }}
{{ h.by }}
{{ nv.cat }}
✕
{{ nv.title }}
{{ nv.meta }}
{{ nv.desc }}
NOTIFICATIONS
{{ nfDate }}
TO COLLECT
{{ nfTotalFmt }}
✕
DUE TODAY
{{ nfToday }}
FLAGGED · NOT UPDATED
{{ nfFlagged }}
Nothing due today and every past collection has been updated.
{{ r.customer }} {{ r.ref }}
{{ r.note }}
{{ r.amountFmt }}
{{ p.label }}
UPDATE STATUS {{ mLoan.ref }}
✕
{{ stMonth.label }}
{{ stMonth.sub }}
{{ s.label }}
FUTURE PENDING · NOT AFFECTED
{{ f.due }} · {{ f.inst }}{{ f.amt }}
IMPORT BANK REPORT
✕
NUPAY TRANSACTION REPORT · XLSX OR CSV · MATCHED BY MANDATE ID
{{ brFileName }}
Choose another file
{{ brSummary }}
✓
{{ r.ref }}{{ r.name }}
Due {{ r.due }}Bank: {{ r.res }}
{{ r.action }}
{{ r.warn }}
{{ r.amt }}
Cancel
{{ brApplyLabel }}
Q1 CONNECTED APPS
✕
On every question Q1 reads each switched-on app's data link and answers from it. Actions are only run after you approve them in the chat.
{{ a.stLabel }}
{{ a.editLabel }}
API BASE URL
DATA PATH Q1 READS (GET)
API KEY / TOKEN
PROXY URL (OPTIONAL)
{{ a.hint }}
{{ a.actLabel }}
Test connection
Remove
{{ a.msg }}
+ Add another app
Done
BULK STATUS UPDATE
✕
DUE OR PAST COLLECTIONS NOT YET MARKED PAID
Import bank report
Nothing needs updating. Every past collection has a status.
SET STATUS TO
{{ o.label }}
{{ bsCount }}
{{ bsAllLabel }}
✓
{{ r.name }}
{{ r.ref }}Due {{ r.date }}{{ r.inst }}Now: {{ r.cur }}
{{ r.amt }}
Cancel
{{ bsApplyLabel }}
EDIT LOAN {{ mLoan.ref }}
✕
{{ ledCustomer }}
PRINCIPAL (R)
RETURN RATE (%)
ISSUED DATE
{{ ledIssuedLabel }}
DUE DATE
{{ ledDueLabel }}
STATUS
TERM (MONTHS)
{{ t.n }}
{{ ledTermNote }}
PURPOSE
QUICK ADJUST
Top up principal
+ ADD
{{ ledAdjustNote }}
Date changes are recorded in the Logbook (old → new) for admin audit.
TOTAL REPAYABLE
{{ ledRepayable }}
MONTHLY INSTALLMENT
{{ ledInstallment }}
CANCEL
SAVE CHANGES
DELETE {{ mLoan.ref }}?
This removes the loan from the book. The deletion is recorded in the Logbook against your name and cannot be undone.
MANAGER PIN REQUIRED
{{ delPinErrMsg }}
CANCEL
DELETE LOAN
INVITE EMPLOYEE
✕
NO PASSWORD FIELD — THE EMPLOYEE SETS THEIR OWN VIA A SECURE INVITE LINK
SEND INVITE
EDIT EMPLOYEE
✕
FULL NAME
EMAIL
ROLE
STATUS
BOOK VALUE (R)
PASSWORDS ARE NEVER SET HERE — USE “RESEND INVITE” TO LET THE EMPLOYEE SET THEIR OWN
SAVE CHANGES
RESEND INVITE
REMOVE EMPLOYEE
QUICK LOAN
✕
{{ qlClient }} · {{ qlRef }} · REUSING MASTER AGREEMENT {{ qlMaster }}
All banking, employment & KYC details stay as recorded — you only set the new amount and debit date. Return of 35% and the signed contract carry over automatically.
TERM (MONTHS)
{{ t.n }}
LOAN AMOUNT (R)
DEBIT / DUE DATE
Return due at 35%
{{ qlReturn }}
ISSUE LOAN
{{ hubInitials }}
{{ hubName }}
{{ hubTier }}
{{ hubRef }}
MANAGE
Overview
Loans{{ hubLoanCount }}
Personal details
Employment
Account & banking
Income & affordability
Activity
ACTIONS
Quick loan
Call client
Send SMS
Contract
{{ hubRevealText }}
Open full workspace
{{ hubTabTitle }}
{{ hubTabSub }}
✕
Total return
{{ hubSum.total }}
{{ hubSum.totalSub }}
Collected
{{ hubSum.collected }}
{{ hubSum.collectedSub }}
Still to collect
{{ hubSum.toCollect }}
{{ hubSum.toCollectSub }}
{{ hubSum.pct }} repaid
{{ hubSum.lateTxt }}
{{ hubSum.lentLine }} · {{ hubSum.since }}
Client performance
Mark {{ hubTlNextRef }} paid
★
{{ hubRate.score }}
{{ hubRate.label }}
{{ hubRate.paidTxt }}
due instalments paid
{{ hubRate.missed }}
missed or late
{{ hubRate.tenure }}
with us
{{ hubRate.note }}
NEXT COLLECTION
{{ hubReturnFmt }}
{{ hubNextSub }}
RETURN DATE
{{ hubDueFmt }}
{{ hubCountdown }}
{{ hubDueRef }}
LOANS & WHAT'S DUE · {{ hubLoanCount }}
Edit client info
+ New loan
{{ l.ref }}
{{ l.statusLabel }}
{{ l.returnFmt }}
{{ l.dueFmt }}
{{ l.lateLabel }}
{{ l.instLabel }}
{{ l.nextLabel }}
{{ l.monthsLabel }}
{{ m.mark }} {{ m.label }}{{ m.n }}
Edit loan
+ Top up
Change status
Statement
History
No loans yet — issue one with + Quick Loan.
AFFORDABILITY
{{ hubAffVerdict }}
{{ hubAffNote }}
{{ k.l }}
{{ k.v }}
0%30% SAFE45% LIMIT100%
{{ r.k }}{{ r.v }}
Edit {{ hubTabLower }}
Cancel
Save changes
{{ a.type }}
{{ a.comment }}
{{ a.date }}
{{ a.by }}
Nothing logged for this client yet.
BULK UPLOAD LOANS
✕
DROP ANY CSV — COLUMNS ARE DETECTED AUTOMATICALLY
LOAD SAMPLE
CLEAR
{{ bulkFileName }} · {{ bulkLineCount }} LINES
CANCEL
SCAN & EXTRACT LOANS
Reading {{ bulkFileLabel }}…
{{ s.label }}
{{ bulkTotalLabel }} from {{ bulkFileLabel }}. How should they be applied to the book?
AMEND THE BOOK
Add these rows alongside the {{ bulkModeCount }} loans already on the book. Existing loans stay as they are; you choose per row how to handle clients who already hold an active loan.
REPLACE THE ENTIRE BOOK · PIN REQUIRED
Clear all {{ bulkModeCount }} existing loans and keep only what is in this upload. Clients, payments and the audit trail are untouched.
Back
AUTHORISE FULL REPLACEMENT
Enter the manager PIN to clear all {{ bulkModeCount }} existing loans. This cannot be undone from the console.
{{ bulkPinErrMsg }}
Authorise and continue
Cancel
{{ bulkAlert }}
DETECTED COLUMNS
{{ m.label }}
{{ bulkTotalLabel }}
{{ bulkOkCount }} READY · {{ bulkTotalFmt }}
{{ bulkErrCount }} NEED ATTENTION
Every uploaded row is listed. All fields are editable before you import.
{{ bulkSkipMsg }}
{{ bulkModeLabel }}
{{ bulkModeNote }}
CHANGE
{{ bulkDupMsg }}
APPLY TO ALL {{ bulkDupCount }} ROWS
NEW LOAN
OVERWRITE
MERGE
CLIENT
AMOUNT (R)
TERM
DUE
PURPOSE
CONF
{{ r.confFmt }}
✕
{{ r.note }}
+ ADD “{{ r.clientRaw }}” AS NEW CLIENT
KYC stays incomplete until you fill in ID and bank details
{{ r.activeMsg }}
NEW LOAN
OVERWRITE
MERGE
{{ r.modeMsg }}
BACK TO FILE
{{ bulkImportLabel }}
MASTER CREDIT AGREEMENT {{ cdoc.no }}
✕
{{ cdocOrg }}
MASTER CREDIT AGREEMENT · {{ cdoc.no }}
{{ cdoc.intro }}
{{ cl.n }}{{ cl.text }}
CLIENT
{{ cdoc.client }}
ID NUMBER
{{ cdoc.idMasked }}
DEBIT ACCOUNT
{{ cdoc.bank }}
SIGNED ON
{{ cdoc.signedOn }}
CLIENT SIGNATURE
{{ cdoc.sigEl }}
NOT YET SIGNED
{{ cdoc.signLabel }}
VIEW PDF
DOWNLOAD PDF
{{ sl.title }} {{ sl.no }}
✕
{{ sl.docEl }}
DOWNLOAD PDF
SEND TO CLIENT
TRANSACTION CONTRACT {{ mLoan.ref }}
✕
↺ RETURNING CLIENT
Reusing signed master agreement {{ ctMasterNo }} ({{ ctSignedOn }}). No re-signing needed — only amounts and dates change below.
NO SIGNED MASTER AGREEMENT
This client has no master credit agreement on file. Add them through onboarding to capture a signature before issuing contracts.
CLIENT
{{ ctClient }}
CONTRACT NO
{{ ctTxnNo }}
PRINCIPAL
{{ mLoan.amountFmt }}
DUE AMOUNT
{{ mLoan.dueAmountFmt }}
DUE DATE
{{ ctDue }}
SIGNATURE
RE-SIGN
{{ ctSigEl }}—
{{ ctSaveLabel }}
VIEW FULL MASTER CONTRACT ›
{{ ctSavedCount }} TRANSACTION CONTRACTS SAVED FOR THIS CLIENT · ALL RETAINED IN THE VAULT
LOAN OPTIONS
View loan history
Edit loan
Update status
Settlement letterQR
Delete loan
CLIENT OPTIONS
Client info
Contract