Thank you for this explanation Ray this was important to do.
I add a my comments here since not everybody has seen the original thread on twitter (https://twitter.com/Frederic_C2C/status/1313521444106706944)
However, I do not agree on the benefits... because there is none.
- This kind of posting is more use for payment remittance (i.e: cheque remittance, corporate credit card...). In these cases, you want to use a suspense account because then you can match with the bank global amount matching the total of the remittance. Unfortunately, this was not implemented for that reason...so the real issue is not fixed.
(Do not tell me to use the batch booking because these are ok for 10 lines but not hundreds of payment lines like credit cards payments for e-commerce business)
- the setting is more complex than before and add too many extra account in all country specific chart of accounts (it adds 2 outstanding accounts per bank account and not always correctly positioned and not translated)
- Posting a simple payment in 2 steps instead of one is just over complicated.
- it does not solve any problem of balance differences between the bank and your GL since this is already handle by the bank reconciliation report. It was even made to avoid useless entries
Hopefully this is not wrong accounting wise and it is not more complex for end-user.
I am happy Ray you said recently that you, at odoo, are working to improve this.
Thanks for your feedback. As someone who has spent a lot of time tracking down the "unexplained difference" I benefit from having ONE place (GL) to look rather than two (GL + Bank statement Lines) but I have room for you to disagree and is has already helped me in a way the bank reconciliation report could not -"something is wrong but I can't tell you what". Now I can see what is still in the suspense account - and know that if it is there because a statement line is missing or different or an Odoo payment is missing or different, and I can see the date of the entry. The end user needs to do nothing extra in terms of setup because we do it for them. I have shown this to prospects who are new to Odoo and they have told me (a) it makes sense and (b) it matches how other systems they have used work. So I guess it works for some.
Frédéric, would you accept to have entries in your Sales Journals that are not invoices? (Like sales order that might become invoices later on) Probably not: that would be a big mess.
So, why do you want that for banks? In v14, if you do a SEPA payment or a check, the journal entry is not posted to your bank account. That way, your bank balance reflect the actual statements you received from the bank.
The payment is only posted to your bank account when matched with a statement. (When you actually notice the payment has been accepted, there are fees attached to the transaction, and you know the right currency rate). That way, your bank balance always reflects the reality as provided by bank statements.
Note: The changes are “under the hood” and don’t affect the way
users record payments or the bank reconciliation workflow.
They provide more accurate information, sooner, to support users who work with the bank account and/or who find problems during reconciliation. Only the journal entries created are different. Entering payments, reporting on them, etc. – is unchanged.
The Bank Account journal now has three additional accounts linked to it.
a suspense account where the counterpart to transactions reported by your bank (via a statement) are held until they are linked to a payment already in Odoo.
an outstanding payments account where outgoing payments are posted until they are linked to a withdrawal from your bank statement.
an outstanding receipts account where incoming payments are posted until they are linked with a deposit from your bank statement.
Odoo no longer posts entries directly to the bank account during payment recording, but rather moves them through the outstanding accounts and posts to the bank account when the bank verifies the same transaction has cleared the bank. This movement happens automatically for you when you reconcile the bank account with a bank statement - you don’t need to do any additional work.
Statement lines are now imported into the general ledger (via the suspense account) instead of being a separate model (operations or bank.statement.lines records at v13). You can search for bank statement lines in the same way you search for journal items. You can see the book balance and bank balance for every transaction posted in Odoo, and for every transaction posted by the Bank – in the same place.
After reconciling your bank statement, there will be no balances in any of these accounts. They are all transitory accounts.
Suspense account entries are moved to the corresponding outstanding account when matched (to clear the balance for that transaction in that account). This happens when a counterpart for the payment in the outstanding receipt or outstanding payment account is found and matched.
You always have an accurate bank balance in your general ledger (based on how often you synch or import statement information from your bank). You don’t have to reconcile a statement to see your bank balance in Odoo. You see the verified bank balance and the unverified bank balance on the Accounting dashboard for each Bank Account.
You can now find the entry or entries causing any difference between your GL balance and bank statement balance. After reconciling what matches: if you didn’t post something you can find those entries by looking in the suspense account. if you posted something twice, you can find those entries by looking in the outstanding payment account. Any bank statement line journal entry with an entry still in the suspense account is a problem (more about this later). This provides an answer to the question "Where is the unexplained difference?"
You can now manually reconcile Journal Entries using these outstanding accounts. This is particularly useful for liabilities that don’t have a corresponding Vendor Bill – like Payroll, Sales Tax, etc. or daily Sales and Income reports from systems external to Odoo.
Record a Customer Payment (v13):
Record a Customer Payment (v14):
Notice how, at version 14, the payment is posted to the outstanding receipts account instead of the bank account.
Record your Bank Statement (v13):
creates a bank.statement.line entry)
Record your Bank Statement (v14)
(this creates a journal entry for every statement line, even before reconciliation starts. You can tell which bank statement lines are reconciled and which are not by looking for any that have a balance in the suspense account - read further to see what happens after reconciliation!)
Notice how we are now posting the verified bank transaction amount to the bank account and holding the credit in the suspense account until it is matched with a transaction in Odoo. This means Odoo will never post anything to a bank account that isn't verified by the bank!
Reconcile your Bank Statement (v13)
Reconcile your Bank Statement (v14)
Now, Odoo will update the Journal Entry created by the bank statement line:
We move the credit from the suspense account and replace it with a credit to the outstanding receipts account, which offsets the debit posted there when the payment was originally recorded in Odoo via Journal Entry BNK1/2020/10/0001 above.
* Remember BNK1/2020/10/0002 was created for us when the bank statement line was imported or live synched to Odoo, so now Odoo is just automatically updating that entry to clear the suspense account and balance the outstanding account.
The other part of this change that you need to be aware of is that Invoices and Bills now have an IN PAYMENT status which is another transitional status that these documents travel “through” in between when Odoo is told they are paid and when the bank confirms they are paid.
You will see this on Individual Invoices and Bills like this:
The IN PAYMENT status was optional at v13 but is now used for all payments to better help you identify bounced checks, fraudulent customer payments or funds to vendors that have not yet cleared the bank.
We hope you like the changes!
If you are a user who has ever had to troubleshoot discrepancies between Odoo and the Bank Statement, or who has needed to deal with funds not yet cleared in the bank, we believe you will find it much easier to work with Odoo now.
Yes @Ray. I find it really helpful regarding the bank journal but regarding the cash payments that get confirmed right away, it is a little bit confusing for the users to see that a payment invoice made with "Cash Journal" changes the status of an invoice to "In Payment" and not in "Paid" and also not accounting directly to the "Cash Account" but accounting to an "outstanding account". Is there a specific reason why Odoo choosed to follow this approach also for the "Cash Journals"?
I have answered the questions related to "How to handle CASH payments" at https://www.odoo.com/forum/help-1/question/v14-could-someone-explain-the-complete-cash-payment-receipt-process-from-invoice-178031
@ray: I have asked you a question but forgot to mention you so I will post my question again.
Hi Ray, does this new method also works for payments like a direct online Buckaroo Payment done by a customer? I was used to create an extra journal to record these payments (and reconcile them once the actual payments were received on our bank). Do I still need to use this method or is that no longer necessary?
Thank in advance for answering
Thijs van Oers
Hi Ray Carnes. Are there any possibility to bypass this new feature?
Due to specific of our business, significant part of Cash and cash equivalents accounts are Petty cash (cash currency). As a result we have no "Bank Statement". This new feature complicates payment registration for us. We should at first registrate payment, then create artifical bank statement and last reconcile payment.
Please advice how to deal with Petty cash, old functionality was the best for us.
Hey Татьяна, to bypass the outstanding receipts and payments accounts simply replace those with the same cash account you have specified in the "General Information" tab of the journal.
When you register payment this will then post directly to the cash account specified and mark the invoice as fully paid.
Im Trying to Append 2 Journal Entry lines Regarding Bank charges(1 to Bank Charges(debit) and 2 to Bank(credit)) in the same Journal While Creating a Register Payment, I've Done in the Odoo13 And its totally working but when i tried in Odoo14 The following error is coming,
The journal entry Draft Entry (* 101) (INV/2021/04/0018) reached an invalid state relative to its payment. To be consistent, the journal entry must always contains: - one journal item involving the outstanding payment/receipts account. - one journal item involving a receivable/payable account. - optional journal items, all sharing the same account.
@Ray Should there be a suspense accounts, o/s receipts and o/s payments for each new bank account? We have 10 bank accounts (multi-currency) so that would mean 30 accounts in the COA just for the "Bank and Cash" category. Or would it work to use one suspense account, o/s receipts and o/s payments per currency? Thank you
Hi Patricia, it was pure chance that I read this "question" because you actually "answered" the post, in the future to make sure you notify someone other than the original questioner you should perhaps post a new question or a comment on someone's answer. Odoo will create all of the accounts automatically for you. It is best to have unique suspense and outstanding accounts per bank account. The suspense account is a liability and the outstanding accounts are Assets - none of them are Bank and Cash - and none of them will show up on your reports unless they have a balance (which means you haven't finished reconciliation).