A route is a reusable rule for one kind of movement
A route is a reusable rule for one kind of movement. It answers three questions, once, so you don’t answer them again on every transaction:
- Who can be the source? Which accounts are allowed to send.
- Who can be the destination? Which accounts are allowed to receive.
- Which parts get recorded? Which debits and credits the movement should produce.
A route is like a form template for one kind of transaction. It lays out who’s allowed and how the movement is booked, so every movement of that kind comes out identical. A fee, as you’ll see, is just an extra line on that form.
Fees are just more operations
Fees feel mysterious, but they’re not magic — and they’re not “subtract a number and move on”. Remember that a transaction is made of operations (each one part — a single debit or credit). A fee is simply more operations in the same transaction, sending value into a fee or revenue account. Take the one-to-many example from before. A customer pays R$103:
- R$100 lands at the merchant.
- R$3 lands in a fee account.
When you’d reach for routes and fees
You don’t need a route for a one-off movement. You reach for one when a kind of movement repeats and must always be booked the same way — payments, transfers, settlements. And you add a fee whenever a movement should also send a slice of value into a revenue or cost account. Defining these deliberately up front is part of planning your Ledger, which comes next.
In short
- A route is a reusable rule for one kind of movement: who can send, who can receive, and which parts get recorded.
- Routes keep every movement of a kind recorded correctly, with only valid accounts taking part.
- A fee isn’t magic — it’s just more operations moving value into a fee or revenue account (customer R$103 = merchant R$100 + fee R$3).
- Because the fee is part of the same transaction, it’s all-or-nothing with the rest.
See it in LerianSee these ideas in practice: Transaction routing entities and the Fees plugin.

