Paisa supports budgeting and the model is inspired by YNAB. It doesn't use virtual account, but uses periodic transaction which is simpler from data entry perspective, but achieves the same thing
Not trying to be argumentative, but every time I've heard someone claim they do envelope budgeting in ledger without virtual accounts, I've always found a flaw in their approach.[1] So let me give you the standard scenario:
I have two checking accounts, and a credit card. I budget $300/mo on groceries. Sometimes I buy groceries with my credit card, and sometimes using money from either of those two checking accounts.
Last month I spent $200. This month I'll spend $350. I should see that I have $50 left in the envelope. At the same time, I should see an accurate amount of money in my actual checking accounts/credit card (i.e. despite doing automatic transactions).
How do you do this with periodic transactions, and without a virtual account?
[1] Same goes for Beancount. The author was adamant one could do it without virtual accounts, but never showed a way to do it.
> Not trying to be argumentative, but every time I've heard someone claim they do envelope budgeting in ledger without virtual accounts, I've always found a flaw in their approach.[1] So let me give you the standard scenario:
I fully understand. I spent some time looking into the details and if you do it via ledger command line, this is probably the only way to do Envelope method.
Now, Paisa is a bit different, I can process the info before presenting it to the user. The fundamental data that we require is
1) what is the actual spend
2) what is the budget.
Periodic transaction is a type of transaction which is completely ignored by ledger unless you try to forecast. So this fits my use case perfectly. When I export transactions from ledger, I will know whether it's forecast/normal transaction. Forecast is ignored everywhere, so your checking account balance will show actual balance everywhere. But if you go to budget page, it will take the forecast transaction into consideration. It will show what is the current balance, month end balance if the forecasted spends are done etc.
Again, the fundamental difference is, Paisa can process the output of ledger and it can get away with asking the user to provide the bare minimum data (actual, forecast in this case)
I don't see why you need virtual accounts for this. You can make do with sub-accounts.
You can use accounts names `Liabilities:Credit-Card:Budget`, `Liabilities:Credit-Card:Bank-Name:Envelope`, `Assets:Checking:Budget`, and `Assets:Checking:Bank-Name:Budget`. You can set up your initial budgets by transferring from `...:Budget` to `...:Bank-Name:Envelope`, and then whenever you engage in transactions, shift money in the reverse direction to `...:Budget:Used`.
That way, whenever you query `Budget:Used$`, you'll see how much of your budget you've used, and whenever you query `Envelope$` or `Budget`, you'll see how much you have remaining in your budget (i.e., Budget - Budget:Used), and when you query `Budget$`, you'll see what your total budget is.
double entry accounting would solve this problem by aka "contra" entries most of the time.
one thing would be to have a petty cash "virtual account" that pulls money in from your checking account(s), credit cards and pay off groceries from there. that would not be helpful when auditing actual payments because you did actually pay directly from a certain bank and not the pool but this should be simpler for personal use.