Software built for the installment business
Instalify is an installment business management system from Kode Vision, designed for shops and companies that sell on lease and installments and need full control over recovery, inventory, and accounting.
Our mission
Installment businesses lose money to disorganized records, missed recoveries, and defaulters who move between branches and shops undetected. Instalify exists to fix that — by giving every business a single, reliable system to manage installment sales, track recovery, control inventory, and verify customer clearance before lending. Less loss, more control, and a clearer view of the numbers that matter.
Reduce loss ratio
Customer clearance and disciplined recovery tracking help you lend with confidence and lower defaults.
Built for multi-branch
One business, many branches — with consolidated reporting for owners and isolation for each branch.
Automate the busywork
Sales, inventory, ledgers, and accounting stay in sync automatically, so your team spends time on customers.
Secure by design
OTP verification, role-based access, and audit trails keep your business data controlled and accountable.
Who Instalify is for
Instalify is a cloud-based system used by every kind of installment and lease business: mobile phone and smartphone shops selling on monthly kist, electronics and home appliance stores (LED TV, refrigerator, washing machine, AC), motorcycle and auto bike dealers, car and vehicle dealers, furniture showrooms, solar panel retailers, and computer & laptop shops. The same platform also runs day-to-day cash sales with a fast POS — so one system covers credit, lease, installment, and cash business together.
Every account keeps the complete customer record — NIC, guarantor data, transaction history, installment schedule, and cancellations — while customers can check their own balance and statement on WhatsApp. Explore the full feature list, see pricing, or read practical guides on the Instalify blog.
Every module, documented
Instalify ships 92 modules across 9 areas of the business. This is all of them — what each screen is for, and what it can actually do. Each module carries its own permissions, so any of it can be given to one person and withheld from another.
Payment sources, everywhere money is received
Every payment records how it arrived. The mobile-wallet brands are listed separately because a branch reconciles them separately — one combined “wallet” bucket would lose that. Spellings are normalised on save, so JazzCash, jazz-cash and JAZZ CASH are one mode in every report rather than three.
Customers & Clients
Everything about the person on the other side of the agreement — their record, their guarantor, their history, and whether they should be lent to at all.
- 13-digit NIC/CNIC number, validated on entry so a malformed identity card can never be saved
- Customer photo plus NIC front and NIC back images, stored in private buckets and shown on the agreement
- Auto-generated customer code per branch, used as the short reference everywhere else in the system
- Father/husband name, mobile numbers, address and branch attachment
- Search by name, mobile, customer code or NIC — each as its own indexed search field
- Optional per-branch rule limiting one customer per NIC, so the same person cannot be entered twice
- Every customer belongs to a branch and a business; a branch user never sees another branch's customers
Permission keys: customers.view, customers.create, …
- Guarantor identity, NIC, contact and address held separately from the customer record
- Linked to the customer accounts they guarantee, so a guarantor's exposure is visible in one place
- Guarantor detail prints on the lease agreement
- Full create / view / edit / delete / print / export permission set
Permission keys: guarantors.view, guarantors.create, …
- Every running account across the branch, page by page rather than a single heavy list
- Row actions to open the account, its statement and its installment history
- Owner view spans all branches with a branch selector; a branch sees only its own
- Read-only screen — view, print and export only, no editing from here
Permission keys: active_customers.view, active_customers.create, …
- Credit customer register with balance carried per customer
- Credit sales posted against the customer from the Cash Sale screen (payment method: credit)
- Receipts and adjustments against the credit balance
- Full permission set including print and export
Permission keys: credit_customers.view, credit_customers.create, …
- Separate daily customer register with its own opening balance and schedule
- Feeds the Daily Transactions screen and the Daily Collection Ledger
- View / create / edit / delete — this book is maintained, not reported on, from here
Permission keys: daily_customers.view, daily_customers.create, …
- Complete transaction history for the account — installments, down payments, claims, discounts and reversals
- Running balance and remaining installment count after each entry
- Printable statement, and the same statement customers can pull themselves over WhatsApp
Permission keys: customer_statement.view, customer_statement.create, …
- Search by NIC, name, mobile or customer code
- Aggregates every account of the same person, matched by NIC, with branch and business labels
- Shows the product, balance and payment behaviour behind each account found
- Scoped to the caller's own business from the session — the query string cannot widen it to another tenant
- The platform operator's own cross-business lookup is a separate, deliberate case
Permission keys: customer_clearance.view, customer_clearance.create, …
- Cancels the account and records the reason on the customer's permanent history
- Handles the product coming back and the balance being settled or written off
- Cancelled accounts stay visible in clearance and reporting rather than disappearing
- Full create / view / edit / delete / print / export permissions
Permission keys: customer_cancellation.view, customer_cancellation.create, …
- Build a quotation from the product catalogue with cost, retail and selling price
- Model the down payment, installment count and frequency before committing
- Printable quotation document
- View / create / edit / delete / print
Permission keys: customer_quotation.view, customer_quotation.create, …
Sales & Transactions
How money and goods actually move: the installment sale, the payment against it, the cash counter, and the corrections that real trading needs.
- One or more products per account, each taken out of stock by its exact serial / engine / chassis unit
- Cost price, retail price and selling price captured per product, which is what makes profit reporting possible later
- Total down payment, installment count and frequency (1–12 months) drive the generated schedule
- Sale officer and recovery officer are both recorded — the first earns the incentive, the second owns the recovery
- First due date set explicitly, or derived from the business's due-date policy
- Document handover date and free-text notes on the agreement
- Refuses to open an account with no product: a balance and a schedule against nothing would sit in every outstanding report forever
- Printable lease agreement with customer, guarantor and product detail
Permission keys: lease_sale.view, lease_sale.create, …
- Credit (Cr) receives money; Debit (Dr) reverses it — a return, correction or bounced payment posts as a Dr against the same account
- Four payment types: Installment, Down Payment, Claim and Discount — each posts with its own note prefix (ins. / dp. / clm. / dis.) so the statement reads correctly
- Full or Partial installment mode: a Full payment consumes one installment and advances the due date, a Partial one does not
- A Full payment must reach the branch’s installment threshold — 95% of the installment amount by default, configurable per branch — otherwise it has to be entered as Partial. The same rule applies to a Dr reversal entered as Full
- Nine payment sources: Cash, JazzCash, EasyPaisa, UPaisa, Wallet, Raast, Bank, Cheque and E-Bank — normalised on save, so "JazzCash", "jazz-cash" and "JAZZ CASH" never split one mode into three buckets in a report
- Overpayment guard: a credit entry cannot take the account past its remaining balance
- Remaining installment count recalculated and stored on every posting
- Due date advanced automatically on a full installment, following the account's frequency
- Partial auto-shuffle: when partial payments in a month add up to a full installment, the system can close that installment and move the due date itself
- Claim and Discount post a matching entry to a chosen accounting head, so the general ledger and the customer balance never disagree
- Transaction number generated per branch per day (branch code + date + daily serial), plus receipt number, transaction date, due date override, recovery officer and free-text notes on every entry
- Automatic SMS to the customer on payment, with a per-payment opt-out — and the business-level messaging switch always has the final say
- Every posting is day-locked: nothing can be recorded into a day that is already closed
Permission keys: installments.view, installments.create, …
- Multi-item invoice, each line taken from stock by its exact serial / engine / chassis unit
- Cash or credit payment method; a credit sale posts against a credit customer's running account
- Discount by percentage or by amount
- Cost price and sold price captured per line, so margin is known per invoice
- Sale officer recorded against the invoice
- Branch-prefixed invoice number generated automatically
- Day-locked like every other posting
Permission keys: cash_sale.view, cash_sale.create, …
- Searchable list of cash invoices with customer, date, amount and officer
- Open any invoice to its full line detail
- Print, and a print-count stamp so an original can be told from a reprint
- Void an invoice with a recorded reason rather than deleting it
Permission keys: cash_invoices.view, cash_invoices.create, …
- Return linked to the original invoice, or entered on its own when the invoice is unknown
- Multi-item return with return price, quantity and the unit's serial / engine / chassis
- Reason recorded on the return
- Branch-prefixed return number generated automatically
- Returned units go back into stock
Permission keys: cash_sale_returns.view, cash_sale_returns.create, …
- Post a day's collection against daily customers
- Feeds the Daily Collection Ledger report
- View / create / delete
Permission keys: daily_transactions.view, daily_transactions.create, …
- Collection listing over a date range
- Read-only — view, print and export only
Permission keys: daily_collection_ledger.view, daily_collection_ledger.create, …
- Every transaction in date order with type, payment type, mode, amount and operator
- Filterable to an account, a date range or an officer
Permission keys: installments.view, installments.create, …
Inventory & Products
The goods: what the business sells, what it holds, where each unit physically is, and who supplied it.
- Model, company, category and minimum stock quantity per product
- Owner and CEO may always manage it; anyone else needs the explicit products.create / .edit / .delete grants
- The same screen serves the owner panel and, for whoever holds products.view, the branch dashboard
- Deleting a product cascades to stock, stock ledger, serials and customer products across every branch — which is why that permission is granted deliberately
Permission keys: products.view, products.create, …
- Filter by company, category, sub-category, model and date
- Print and Excel export
- View / print / export only
Permission keys: product_list.view, product_list.create, …
- Categories typed as vehicle, device or other, which changes what a product captures
- Full create / view / edit / delete / print / export
Permission keys: product_categories.view, product_categories.create, …
- Company register shared across the business
- Used to group products in the catalogue and in reporting
Permission keys: product_companies.view, product_companies.create, …
- Supplier register per branch, each linked to its own accounting head
- Credit purchases post to the supplier's ledger automatically
- Supplier balance, and the purchase behind every credit entry
- Pay Supplier posts the payment against that ledger
Permission keys: suppliers.view, suppliers.create, …
- Purchase invoice entry: a whole multi-product purchase in one save
- Purchase returns back to the supplier
- Per-unit serial, engine and chassis numbers, so a specific unit can be traced from purchase to sale
- Serial status tracked as available, sold or returned
- Stock ledger recording every movement in and out
- Cash or credit purchase; a credit purchase raises the supplier's balance
- Branch selector for an owner or CEO — a branch user is pinned to their own stock
Permission keys: inventory.view, inventory.create, …
- From-branch and to-branch, with the specific units selected from available stock
- Sender and receiver named on the transfer
- A branch may only send its own stock; an owner or CEO may move between any two branches
- Stock leaves the sending branch and arrives in the receiving one in a single operation
- View / create
Permission keys: stock_transfer.view, stock_transfer.create, …
- Lists credit-purchased goods whose payable is still in the branch they left — however long ago they moved
- Invoice by invoice, with the full product breakdown behind each amount
- Posted as a new balanced entry, dated today; the original purchase entry is never edited or back-dated
- The product detail travels with it, so the receiving branch's dealer ledger shows what the money was for
- The business total never changes — only which branch owes it, stated on screen before confirming
- Warns when the sending branch's balance would go negative, which usually means it already paid
- Items that cannot be moved are still listed, with the reason, rather than hidden
- Reversible: the opposite entry is posted, and both stay on the ledger
Permission keys: credit_ledger_transfer.view, credit_ledger_transfer.create, …
Accounting & Ledgers
The books behind the trading: a real chart of accounts, double-sided postings, and the reports that come out of them.
- Accounts created under the master account structure the platform defines
- Account modes of CASH, SUPPLIER and XYZ, which decide how a head behaves in the cash and supplier reports
- Opening balances per account
Permission keys: accounts_list.view, accounts_list.create, …
- Sub-heads under any account, so spend can be classified beyond the top-level head
- Used by the expense screens and the sub-head summary report
Permission keys: accounting_sub_heads.view, accounting_sub_heads.create, …
- Debit and credit postings against any account and sub-head
- Slip number, date, description and payment mode on every entry
- Day-locked: nothing posts into a closed day
- Full create / view / edit / delete / print / approve / export permission set
Permission keys: accounts_transactions.view, accounts_transactions.create, …
- Sub-head spend across a date range, at a glance
- Detail view of every entry behind one head
- Add Expense form with the account already fixed, so the head cannot be mis-picked
- The posting itself still goes through the ledger and is still day-locked
- View / create / print / export
Permission keys: manage_expense.view, manage_expense.create, …
- Sub-head hold activity across a date range, at a glance
- Detail view of every entry behind one head
- Add Entry form with the account already fixed — Hold posts as Credit, Adv Recv posts as Debit
- The posting itself still goes through the ledger and is still day-locked
- View / create / print / export
Permission keys: manage_hold.view, manage_hold.create, …
- Opening balance posted against the supplier's own ledger account
- View / create only — an opening balance is set, not edited away
Permission keys: supplier_ob.view, supplier_ob.create, …
- Branch raises the request; it moves no money until the owner approves it
- Approval sits with the owner panel, not with a delegable permission key
- Optional per-branch setting to require approval at all
- View / create / delete / print
Permission keys: balance_transactions.view, balance_transactions.create, …
- Search and correct existing cash-account transactions
- Separate permission from ordinary posting, because it changes history
Permission keys: cash_tx_edition.view, cash_tx_edition.create, …
- Search and correct existing non-cash transactions
- Held under its own permission for the same reason
Permission keys: noncash_tx_edition.view, noncash_tx_edition.create, …
- Account-wise ledger over a date range
- Opening balance, movement and closing balance
- Print and export
Permission keys: accounts_report.view, accounts_report.create, …
- Credit, debit and balance for each supplier across every branch
- The purchase behind each credit entry
- View / print
Permission keys: accounts_supplier_report.view, accounts_supplier_report.create, …
- Account-wise listing for XYZ-mode heads
- View / print
Permission keys: accounts_xyz_report.view, accounts_xyz_report.create, …
- Whole chart of accounts summarised over a date range
- Print and export
Permission keys: accounts_summary_report.view, accounts_summary_report.create, …
- Sub-head totals across a date range
- Where the expense analysis actually happens
Permission keys: accounts_sub_head_summary.view, accounts_sub_head_summary.create, …
Daily Operations & Closing
The discipline that keeps the numbers true: a day that opens, gets counted and closes, and a month that freezes what happened.
- Opening balance computed from the actual cash position before today, not typed in
- Today's collection broken down by installment and down payment
- Cash heads listed with their movement for the day
- Cash-in-hand entered by denomination, so the count is a real count
- Holds: amounts set aside and excluded from the closing figure, added, edited and removed on the screen
- Closing balance and the difference between counted cash and expected cash
- Once a day is closed it is permanently locked — there is no reopen, which is exactly what makes a closed day’s figures worth trusting
- A day opens by itself on the branch's first real transaction — it is never opened as a side effect of looking at the page
- An earlier day left open blocks the current one, so days cannot be skipped silently
- Every day is per branch: each branch opens and closes its own
Permission keys: day_closing.view, day_closing.create, …
- Preview before running, so the month can be checked before it is frozen
- Per-account case detail snapshot — installment amount, due amount, balance amount and case position
- Per-staff recovery summary frozen for the Recovery Performance report
- Month report and case listing after the run
Permission keys: month_closing.view, month_closing.create, …
- Search accounts by due date and branch
- Transfer a single account's due date, or bulk-transfer a whole set
- Convert a case to UD (undue) or PD (past due) explicitly
- Branch-wide due case listing to work from
Permission keys: due_date_transfer.view, due_date_transfer.create, …
- Day-by-day status across a period
- Makes a skipped or still-open day obvious
Permission keys: working_day_report.view, working_day_report.create, …
- Cash movement and closing position for a chosen day
- Printable
Permission keys: day_closing.view, day_closing.create, …
- The day's sales alongside the day's recovery
- Available as a branch report and as a cross-branch master report
Permission keys: reports.view, reports.create, …
- Recovery listing focused on aged accounts
- Printable
Permission keys: reports.view, reports.create, …
Reports
Twenty-odd reports, each with its own permission — which is the point: a staff member can be given the sale listing without ever seeing the margin on it.
- Line-by-line installment sales with cost, selling price, profit and profit %
- Filed under Reports → Confidential precisely because of those columns
Permission keys: ddisr.view, ddisr.create, …
- Summarised installment sales including margin
- Confidential
Permission keys: disr.view, disr.create, …
- Identical listing without any margin figure
- A deliberately separate module: granting this can never imply the confidential one
- The confidential fields are stripped on the server, so they cannot be recovered from the network response either
- View / print / export
Permission keys: ddisr_sales.view, ddisr_sales.create, …
- Summarised sales listing, no cost or profit
- View / print / export
Permission keys: disr_sales.view, disr_sales.create, …
- Lets a recovery officer verify the new accounts that landed on their book
- No cost or profit columns
- View / print / export
Permission keys: sales_verification.view, sales_verification.create, …
- Per-officer incentive over a period
- Print and export
Permission keys: sales_incentive_report.view, sales_incentive_report.create, …
- Officer-wise summary across a date range
- Also available as a master report
Permission keys: sales_incentive_summary.view, sales_incentive_summary.create, …
- Outstanding balance across the book
- Print and export
Permission keys: outstanding_report.view, outstanding_report.create, …
- Per-account outstanding with balance and remaining installments
Permission keys: outstanding_report_aw.view, outstanding_report_aw.create, …
- Due-based pendency listing
- Print and export
Permission keys: pendency_report_due.view, pendency_report_due.create, …
- Filter by a date range or by due day
- One report where there used to be two, so the same question has one answer
Permission keys: pendency_report_due1.view, pendency_report_due1.create, …
- Pick what counts as paid: no payment at all, no full installment, or the month falling short on amount
- Months-not-paid on every row, with the month the count runs from
- Branch and recovery officer filters, print and export
Permission keys: pre_default_watch.view, pre_default_watch.create, …
- Per-officer or per-branch target versus recovery
- Print and export
Permission keys: monthly_target_report.view, monthly_target_report.create, …
- Per-staff recovery performance month by month
- Reads frozen snapshots, so a past month cannot silently change
- View / print / export
Permission keys: recovery_performance_report.view, recovery_performance_report.create, …
- Closed account listing with closing detail
- Print and export
Permission keys: closed_account_report.view, closed_account_report.create, …
- Customer listing with identity and contact detail
- View / print / export
Permission keys: customer_list_report.view, customer_list_report.create, …
- Day-by-day closing figures
- Print and export
Permission keys: day_closing_report.view, day_closing_report.create, …
- Daily DDISR, Daily DISR, Daily Recovery, Daily S&R Summary, Sales & Incentive Summary and Activity Logs
- Shown for company-type businesses, where comparing branch against branch means something
- Lives in the owner panel; the branch dashboard does not carry it
Permission keys: master_report.view, master_report.create, …
- Entry point to every report the user's permissions allow
Permission keys: reports.view, reports.create, …
Management & Organisation
The business around the trading: branches, people, their access, and the paid add-ons.
- Branch types of main branch, branch, main office, office and POS
- Branch code, contact and address; the code prefixes invoice and return numbers
- Per-branch settings including the one-customer-per-NIC rule and balance-transfer approval
- Every branch closes its own day and holds its own stock
Permission keys: branches.view, branches.create, …
- Users attached to a business and a branch, with a role level
- Sign-in through Supabase Auth with email verification
- Activate and deactivate accounts
- Distinct from Staff, which is the HR record
Permission keys: users.view, users.create, …
- Staff records with department and designation
- Sale officer and recovery officer selections everywhere else read from here
- Kept separate from login accounts, because not every officer needs a login
Permission keys: staff.view, staff.create, …
- Per-staff salary entries
- Feeds the payroll side of the expense book
Permission keys: staff.view, staff.create, …
- Reassign a single account, or bulk-transfer a whole book from one officer to another
- View and edit only — nothing is created or deleted here
Permission keys: staff_assignment.view, staff_assignment.create, …
- Assign, update and remove roles per user
- Roles carry the permission sets defined in the platform's Roles and Permissions screens
Permission keys: user_roles.view, user_roles.create, …
- Business name, type, contact, address, currency and timezone
- Logo used on invoices, agreements and statements
- Business type of individual or company, which decides whether cross-branch master reports apply
Permission keys: business_profile.view, business_profile.create, …
- Registration detail held against the account and the unit
- View / create / edit / delete
Permission keys: vehicle_registration.view, vehicle_registration.create, …
- Every message with its recipient, content and delivery status
- Read-only — view and print, since nothing is composed from this page
Permission keys: sms_management.view, sms_management.create, …
- Subscribe to add-ons, and order a branch audit
- A branch holding this can only ever commit its own branch; business-wide subscriptions stay with the owner
- Charges flow onto the monthly invoice
- View / create
Permission keys: premium_services.view, premium_services.create, …
- Invoice listing with amount, premium charges and paid status
- Read-only — view, print and export
Permission keys: business_invoices.view, business_invoices.create, …
- Balance check and statement request answered automatically
- PIN-protected so one customer cannot pull another's account
- Enabled per business through the messaging service switch
Permission keys: sms_management.view, sms_management.create, …
Data Migration
Bringing an existing business onto Instalify without retyping years of history — the tools that made real migrations possible.
- Many entries against one account in one save, each with its own date, type and amount
- Each new entry is deducted from the account balance in the order it was added, and saved in that order
- Corrects the account's stored totals at the same time, so history and balance stay consistent
- A separate permission from Add Installment on purpose — this rewrites history rather than recording today's payment
- View / create / edit / delete
Permission keys: bulk_transaction.view, bulk_transaction.create, …
- Import status across the migration tools
Permission keys: reports.view, reports.create, …
- Spreadsheet upload, parsed and previewed before anything is written
- Existing customer codes and identities preserved
Permission keys: reports.view, reports.create, …
- File parsed and validated before import
- Row-level errors reported back
Permission keys: reports.view, reports.create, …
- Per-officer or per-branch targets brought in for past periods
Permission keys: reports.view, reports.create, …
- Spreadsheet import with preview
- Keeps the original account references intact
Permission keys: reports.view, reports.create, …
- Find orphaned transactions and point them at the correct account
Permission keys: reports.view, reports.create, …
Platform Administration
The master data and access control behind every business on the platform — managed centrally so one business's setup cannot break another's.
- Department and designation master lists
- Used by staff records and role mapping
Permission keys: admin.departments.view, admin.departments.create, …
- Roles created and permissioned centrally
- SUPER_ADMIN and CEO_ROLE carry platform-level meaning and cannot be handed out from a tenant panel
Permission keys: admin.roles.view, admin.roles.create, …
- Seven actions per module: create, view, edit, delete, print, approve, export
- Grant or revoke across many roles at once
- Report-only screens deliberately carry fewer actions
Permission keys: admin.permissions.view, admin.permissions.create, …
- Grant or deny a single permission for one user
- Deny always wins over grant and over the role
- Optional expiry, so a temporary grant expires by itself
- Refused for owners and super admins, so a stray deny can never lock them out
Permission keys: admin.user_permission_overrides.view, admin.user_permission_overrides.create, …
- Designation-to-role mapping per business
Permission keys: admin.role_mapping.view, admin.role_mapping.create, …
- Master account list with account modes
- Sub-head structure defined centrally
- Account types that classify each head
Permission keys: admin.accounts_system.view, admin.accounts_system.create, …
- Global policies seeded by the platform, with per-business overrides
- Drives the due date on a new lease sale and every advance after a full installment
Permission keys: admin.due_date_policies.view, admin.due_date_policies.create, …
- Business list with branches, users and statistics
- Cross-business user management
- Subscription charges and premium subscriptions per business
- Day Manager for hand-correcting day-closing records, and opening a branch's day when it cannot start
Permission keys: admin.users.view, admin.users.create, …
Want to know who’s behind Instalify?
Meet Kode Vision