Skip to content

Ledger for partner debts / 2025

FTPC: an installment ledger with the history of every payment

Case study: a ledger that replaced a notebook and Excel. Every charge and payment with a date and note, balances in dinars and euros, and a change log.

Booking a payment: partner selection with the current balance in dinars and euros, currency, date, note and a quick exchange rate calculator
Client
FTPC
Year
2025
Build time
about 20 days
Role
Full development: partner records, bookkeeping, two currencies, reports and a change log
Technologies
PHP, MySQL, JavaScript, HTML

2

currencies: every amount in dinars and euros

1

exchange rate for the whole system, set in one place

12

months of turnover on the dashboard

This is a case study of the ledger I built for FTPC, a company that sells and installs video surveillance and alarm systems. The ledger tracks partner debts: every charge and every payment, with a date and a note, in dinars and in euros.

Client and context

FTPC sells and installs video surveillance and alarm systems. In that trade many customers pay in installments: they take the equipment and installation and pay it off in parts. So the company has to know, for each partner separately, what was charged and when, what was paid and when, and how much is still owed. I built the ledger in early 2025, in about 20 days. One person uses it, online.

Problem

Debts were kept partly in a notebook and partly in Excel. Two places for the same data mean the data gets mixed up: one installment written in the notebook, the next in the spreadsheet, and notebook pages get lost. The client described it as a big problem, and it is easy to see why: when a customer says they paid and the notebook has no record of it, there is nothing to go back to.

The third part of the problem was currency. Deals and equipment are often priced in euros while payments come in dinars, so every amount was converted by hand, at a rate nobody wrote down.

Constraints

The hardest part was the database change log. The ledger holds sensitive data, money and the debts of real people, so the owner has to be able to see at any moment exactly what was done: what was entered, changed or deleted, and when. The log does not show up in day to day work, but it is the reason the numbers in the ledger can be trusted.

The second constraint was simplicity. One person uses the ledger, so every action has to be one click away from the dashboard.

Solution

A ledger, not a balance

A notebook stores a balance: a number crossed out and replaced with a new one. The ledger stores changes: every charge and every payment is a record with a date, an amount and a note, and the balance is calculated from them. On the partner's ledger card, each entry shows the balance after it, so you can see how the debt built up, installment by installment. When numbers disagree, you go through the card and find the date where things went apart.

Payments and charges with a note

Booking a payment and charging a partner are separate pages with the same layout. You pick the partner and immediately see their current balance in dinars and euros. Then you choose the currency, enter the amount and date, and add a note on what the charge is for ("monthly installment, invoice no."). Without a note, nobody knows a year later what an entry referred to. Next to the form is a quick calculator for converting euros to dinars and back.

Two currencies, one rate

The euro to dinar rate is set in one place and applies to the whole system, with the date of the change and a note. When an amount is entered in euros, the system converts it to dinars at the current rate and stores both: the dinar amount, for an accurate balance, and the original amount with its currency. The balance is always shown in both currencies. In the screenshot the rate is 117.00, so a 100 EUR charge is booked as 11,700.00 RSD.

A change log and deleted partners

Every change in the database is recorded, with the time and a description of what was done. When a partner is deleted, their history does not go with them: they move to the list of deleted partners, and their charges and payments stay. The account can go; the debt does not.

Dashboard and reports

The dashboard shows payments, charges and the balance for the selected period, in dinars and euros, plus shortcuts to the four most common actions: new partner, payment, charge and ledger card. Below that are turnover by month for the last 12 months and a list of debtors sorted by amount owed, which can be exported to CSV.

The ledger card as a PDF

A partner's ledger card can be printed as a PDF, with entries in date order and a clean layout. A customer who asks how much is left to pay can be sent the whole history, not just one number.

What one installment looks like

A customer takes equipment and installation, and the deal is in euros:

  1. Charge: the amount is entered in euros, with a date and a note, for example "cameras and installation, installment 1 of 3". The system converts it to dinars at the rate from the settings.
  2. Payment: when the customer pays in dinars, the payment is booked with a date, and the balance on the card drops at once, in both currencies.
  3. Check: the card shows every installment and the balance after it. When the customer asks how much is left, the answer and the history are on one page.
  4. Dispute: if the customer disagrees, you go through the card and the change log and see when each entry was made or changed.

Technologies and why

The ledger is built in PHP, MySQL, JavaScript and HTML. It runs online, so nothing has to be installed on a computer. For one user and records of this size nothing more complex was needed: what mattered was that no change is ever lost and that the balance is always calculated from the records.

Result

The notebook and the spreadsheet were replaced by one place for every partner. The question "how much does this partner owe today" gets an answer at once, with the history that explains it, installment by installment. Disagreements are settled by going through the card and the change log, not by arguing over who remembers what. Deleting a partner does not delete what happened with them (as of October 2026).

Inside the application

Charging a partner: amount in dinars or euros, charge date and a note on what it is for
Charging a partner: amount in dinars or euros, charge date and a note on what it is for
Euro to dinar exchange rate settings, with the date of change, a note and a conversion table
Euro to dinar exchange rate settings, with the date of change, a note and a conversion table

Services used on this project

Questions about the project

What is FTPC?

A company that sells and installs video surveillance and alarm systems, with many customers paying in installments. This is a case study of the ledger it uses for partner debts; there is no public link.

What is a partner ledger card?

A list of every charge and payment for one partner, in date order, with a note and the balance after each entry. It shows how a debt came about, not only how large it is, and it can be printed as a PDF.

Can a charge be in euros and the payment in dinars?

Yes. The amount is entered in the currency it was agreed in, the system converts it at the rate from the settings, and it stores both the dinar amount and the original currency. The balance is always shown in both currencies.

What happens when a partner is deleted?

The partner moves to the list of deleted partners, and their history stays. The account goes, the debt and the records do not.

What would a ledger like this cost?

Web applications start at 300 EUR, and the price comes from the specification, screen by screen. A build usually takes 7 to 20 days; this one took about 20. Details are on the pricing page.

Got a similar job?

Describe what you need in a few sentences. Messages sent before 5 pm CET get a same day reply with an estimate of price and timeline.