Katkat

Design a Loan System with Borrower Repayments and Periodic Investor Payouts

ValonSoftware Engineer · Onsite

Last updated

System design question about a loan system in which borrowers make repayments and the investors who own the loans are paid on a schedule. It tests loan and ownership modeling, repayment allocation, exact ledger accounting, idempotent payout runs, cent-level splitting among investors, and handling of payments reversed after a payout.

Design the backend of a loan system. Borrowers hold loans and make repayments on them, and the system periodically pays out to the investors who own the loans.

Constraints and Clarifications

  • The prompt names two flows: borrowers repaying their loans, and periodic payouts to investors. Treat loan origination, underwriting and collections as out of scope unless the interviewer brings them in.
  • Scale, payment methods, payout frequency and how loan ownership is split among investors are not given. Ask for them or state your assumptions.
  • Every amount is money: it must be exact, and every cent collected must be traceable to where it went.

Clarifying Questions

  • How are investors tied to loans: does each loan belong to one investor, or do several investors hold fractional shares of a loan? Can ownership change over time?
  • How often are investors paid, and what does a payout include: collected principal and interest only, or fees as well, and net of any fee the system's operator keeps?
  • How is a repayment applied to a loan: in what order are fees, interest and principal paid, and what happens to partial payments, overpayments and early payoff?
  • If a borrower misses a payment, do the investors simply receive less for that period, or must the system pay them the scheduled amount anyway?
  • How do borrowers pay (one-off bank transfer, card, recurring autopay), and how long after acceptance can a payment still fail or be reversed?
  • How many loans and borrowers are there, and how concentrated are payments around due dates?

Hints

Hint 1

Follow one payment: Trace a single borrower repayment from the moment it arrives until part of it reaches an investor, and name the record that changes at each step.

Hint 2

Money can come back: A bank payment can bounce after you have already recorded it as received. Decide what that means if the investors' share of it has already been paid out.

Hint 3

The payout is a batch job: The periodic payout runs over many loans and investors at once. Think about what happens if it crashes halfway through or is started twice.

Follow-up questions

  • A borrower's payment is reversed after the investors already received their share. How does the system recover, and how do the books stay correct?
  • Three investors each own a third of a loan, and a payment does not split evenly in cents. Who gets the extra cent, and how do you make that choice reproducible?
  • The payout job crashes after sending half of its transfers. How does the rerun avoid paying anyone twice or skipping anyone?
  • An investor sells their share of a loan to another investor halfway through a payout period. Who is paid what for that period?