Reading the budget ledger
A budget's remaining amount is a number somebody will question. The ledger is how you answer: every movement on the budget as its own entry, with the reason and the request or order behind it. Nothing changes a budget's balance except a new entry, and no entry is ever changed or deleted.
You read it when a customer's controller phones and says "KST-2200 shows
€3,100 left, our ERP says €4,800". The difference is always explained by the
entries. This article is how to read them.
Where you find it
Under Procurement › Cost centres › Budgets, the list shows every budget with its cost centre, Seq, Allowance, Remaining, period start and end, and whether it is active. Open a budget, then its Ledger tab. Each entry shows:
| Column | Means |
|---|---|
| When | The time of the movement |
| Reason | What kind of movement it was (below) |
| Amount | The change. Negative spends, positive gives back |
| Before, After | The remaining amount on either side of the entry |
| Actor | Who made a manual correction |
| Note | Any note that came with it |
Behind each entry sits the purchase request or the order that caused it. Amounts are in the cost centre's currency. Nothing is ever converted.
The reasons
| Reason | Written when | Effect on remaining |
|---|---|---|
| Initialized | The budget is created | Lifts it from zero to the allowance |
| Reservation | A purchase request is submitted, or a pending request's lines are corrected | Lowers it at once, or moves it by the difference |
| Withdrawal | A request is declined or cancelled | Gives the reservation back |
| Order | An order is placed with no approval needed: the amount is spent in one step. Or an approved request becomes an order: a zero entry naming the order | Lowers it (direct order) or leaves it unchanged (approved request) |
| Cancellation | An order placed through the procurement app is cancelled, whole or line by line | Gives the booked amount back; zero if the budget's period has closed |
| Manual | Somebody corrects the budget by hand, through the cost-centers API | Whatever the correction says. The person is recorded as Actor |
| Rollover | A recurring budget's period ended and its successor was opened | Moves the carried amount from the finished budget to the new one |
| Lapsed | Same moment | Writes off what the finished budget did not carry |
Two things in that table surprise people.
The money moves at the reservation, not at the order. A pending request already lowers the remaining amount, so the next buyer sees only what is truly left. When the request becomes an order, the ledger gets an Order entry of zero that names the order; nothing moves a second time. A remaining amount that looks too low usually has pending requests behind it.
There is no "delivered" or "invoiced" stage. The ledger knows reserved, booked and given back. Whether the goods arrived or the invoice was posted is your ERP's business, not the budget's.
How spend is spread over several budgets
A cost centre can hold several active budgets. Spend takes them in the order of their Seq number: the first is used up before the second is touched. The last budget absorbs whatever is left over and may go below zero. A negative remaining amount is therefore not an error. It is the record that more was booked than the allowance held, and it stays visible until somebody adds money.
A budget alone does not stop spend. What stops it, or sends it to approval, is an approval rule with the condition Available budget. Without one, spend above the remainder is booked and the last budget goes negative.
When a period ends
Recurring budgets roll over by themselves. Every night, each recurring budget whose period has ended gets a successor starting the day after, with the same allowance plus whatever the carry-over setting allows:
| Carry-over | What moves into the new period |
|---|---|
| Never (the default) | Nothing |
| Limited | What was left, up to the cap |
| Always | Everything that was left |
The finished budget shows a Rollover entry for what carried and a Lapsed entry for what did not, and it is set inactive. An overspend never carries: a period that went below zero keeps its negative amount, and the new one starts clean.
A budget whose period ended more than one full period ago is not rolled forward step by step. It is left as it is, which means the nightly run did not reach it. If you find a recurring budget still active long after its period end, open the current period's budget by hand: on the cost centre, under Budgets, with New budget.
What it does not guarantee
Two carts submitted at the very same moment can both read the same remaining amount and both be booked. The ledger records both entries correctly, and the remaining amount ends lower than either buyer saw. On a budget with a tight remainder and many buyers, expect it occasionally, and read the ledger rather than the balance when it happens.
Reconciling with the customer's ERP
When the shop's figure and the ERP's disagree, work through the entries in this order:
- Pending requests. Reservation entries without a later Withdrawal or Order belong to requests still waiting. The shop counts them; the ERP has never heard of them. This is the most common difference by far.
- Orders not yet in the ERP. An Order entry with an amount is a direct order the shop booked at once. If the ERP has not received it yet, that is timing, not an error.
- Cancellations. A Cancellation entry gives budget back. One of zero means the cancellation came after the budget's period had closed; the money stays in the old period. Moving it into the current one is a manual correction.
- Manual entries. Read the Actor and the Note. An unexplained manual entry is the one to raise with the customer.
Where the procurement app could not book or give back budget at the time, it keeps track for you: Procurement › Direct order log lists checkouts whose booking is still pending or was refused, and Procurement › Budget returns lists cancellations whose return is pending or was refused. Both offer a retry, and for a refused case a manual settlement with a note.
What to check
- The latest entry's After equals the budget's Remaining in the list. It always should.
- Every Reservation entry older than a few days belongs to a request that is still Pending under Purchase requests. If the request is long decided, run Run reconciliation on the purchase-request list; it returns budget a declined or cancelled request is still holding.
- After a period end, the finished budget is inactive and a successor with the next period exists.
Next
- Budgets — allowance, period and carry-over.
- Procurement data hygiene — keeping budgets and cost centres current.