Erpnext: Discount Payment Terms (2%-10, Net 30 etc) Feature Request

Created on 22 Nov 2015  Â·  18Comments  Â·  Source: frappe/erpnext

Can someone develop a method for integrating Discount Payment Terms into invoice and payment entry? This feature would allow a customer to take a discount (%) to the invoice total if the invoice is paid within a set number of days; or pay the full amount on standard Net terms. A typical example is 2% discount for payments received within 10 days of invoice posting date, otherwise full amount due within 30 days. Another example is 1.5%—15, Net 45. The key is to change the payment entry screen to show discount amount available depending on the date of payment entry as compared to invoice posting date. The discount would show zero if the discount days is greater than allowed. There would also need to be a column/field to enter how much discount is actually applied to the invoice. This would automatically reconcile with accounting and keep track of all discounts taken across all accounts. I'm willing to pay for this feature.

paid development

Most helpful comment

Please add to the features requests for new version with automation. Every major accounting and erp software package has this feature. SAP, Oracle, Sage, Quick books, etc. all have automatic posting of payments with cash discount. Payment screen should have the calculated discount shown if the date of payment received is within the alloted days. Total paid and total discount applied are verified then automatically posted. So, a credit note does not have to be separately processed.

All 18 comments

@sbkolate @MaxMorais ?

@Jammyinc @rmehta We can not update Submitted Invoice.
One way is to cancel and create revision of sales invoice with updated payment terms

Other way is to Add Payment Terms in Terms and Condition Box.
If customer do payment within 10-30 Days.
Create Credit Note against customer to give extra benefit of timely payment.

Also, one can issue monthly target xy billing amount for customer and give monthly credit note against completed target.

Please add to the features requests for new version with automation. Every major accounting and erp software package has this feature. SAP, Oracle, Sage, Quick books, etc. all have automatic posting of payments with cash discount. Payment screen should have the calculated discount shown if the date of payment received is within the alloted days. Total paid and total discount applied are verified then automatically posted. So, a credit note does not have to be separately processed.

I have a solution for this that can ship as a custom app, but I'd like to see it make it into the core. This was raised in another issue as well.

I'm very interested in this paid development and can contribute accordingly. We have supplier terms like described above - 5% discount if we pay in 10 days, etc... We run a report that shows our payables and what should be paid that week by either due date OR in order to get the discount. It's very nice to see this report and then just run our checks for payables based on the report.

@PawanMeh @akurungadam @nabinhait can we sketch-out specs for this feature request? That shall help in proposing a quote for this feature.

I feel that it would be easy to add to payment terms such as:
"discount %" _if paid by_ "# of days after invoice date", otherwise full amount due by "# of days after invoice date"

Then, it should calculate accordingly and be able to run report against these dates to show payables. Our current system has a report where you enter the date you want to run payables for and then it shows all payables that are either due by that date and haven't been paid OR payables that will give you a discount if you pay by that date.

@umairsy I'm refactoring the the code to contribute, which is a this-week item. @heatherpotter I'd like to review the functionality with you to get feedback. Please reach out to me directly so we can schedule a brief demo.
It's nice to hear the other people need this too.

https://github.com/frappe/erpnext/issues/14472

@sbkolate : "We can not update Submitted Invoice"

there is no need for updating the Sales Invoice or Purchase Invoice for the discount amount. At the time of booking payment entry, Cash discount is to accounted: Discount given - indirect expenses, Discount received - indirect income.

So, the requirement is to enable capturing discount terms as part of "Payment Template" and then generating some report (ideally as sub-report of accounts payable summary) to show how much is payable by the discount due date.

Once the above report identifies the Invoice (SI or PI) which are paid within discount date, it will capture as part of deduction the ledger account of Discount Expenses or Discount Income - This should be pulled from the payment terms attached.

@agritheory @heatherpotter - are we on the same page regarding the accounting treatment of this feature?

I agree the functionality needed is with the Payment posting process if
it discounting already functional on the account terms template. The
Payment form should use the posting date vs the invoice date to identify
if the payment is within the discount term period. Then it should
calculate the available discount amount and present it for allocation of
funds alongside typical payment entry details. Attached is an image from
a different accounting system that shows the payment form and how it is
set up to apply discounted payments if they are available.  Obviously no
discount is available in the example.

On 7/11/2018 9:01 AM, FinForce Consulting LLP wrote:
>

@sbkolate https://github.com/sbkolate : "We can not update Submitted
Invoice"

there is no need for updating the Sales Invoice or Purchase Invoice
for the discount amount. At the time of booking payment entry, Cash
discount is to accounted: Discount given - indirect expenses, Discount
received - indirect income.

So, the requirement is to enable capturing discount terms as part of
"Payment Template" and then generating some report (ideally as
sub-report of accounts payable summary) to show how much is payable by
the discount due date.

Once the above report identifies the Invoice (SI or PI) which are paid
within discount date, it will capture as part of deduction the ledger
account of Discount Expenses or Discount Income - This should be
pulled from the payment terms attached.

@agritheory https://github.com/agritheory @heatherpotter
https://github.com/heatherpotter - are we on the same page regarding
the accounting treatment of this feature?

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/frappe/erpnext/issues/4353#issuecomment-404180593,
or mute the thread
https://github.com/notifications/unsubscribe-auth/APOxpXo3wjOC5SIbY-uM43DodSlTzCkIks5uFgVTgaJpZM4GnMR1.

@Jammyinc Your image didn't come through with the email, you may have to edit your message on GitHub in order to include it.

there is no need for updating the Sales Invoice or Purchase Invoice for the discount amount. At the time of booking payment entry, Cash discount is to accounted: Discount given - indirect expenses, Discount received - indirect income.

@FinForceConsulting Theoretically you're right - there's _shouldn't_ need to be any changes to PI/SI, but there is a hangup. Currently there's a function that updates invoice status and it will set any invoice that is less than 100% paid to "Unpaid". So I'm setting it as paid when the Payment Entry is submitted and then it just gets unset at a later time by that update script. Fixing this code _must_ be a part of the open PR.

@agritheory, I'm sorry but am not aware of logic built-in that function you referred here. The PI/SI will be allocated 100% while making the payment and the discount % is shown as -ve amount as a deduction, making it as the net outflow from the bank. That way it should not affect 100% payment and status as unpaid - Maybe the trigger to set paid or unpaid is to be set at the allocation amount towards that invoice. I believe that is what it is currently.

Here's the code and where it is called. If you pay less than 100% it cannot be "paid" according to the invoice's logic.

I'm stating to allocated 100% of the amount against the invoice and discount is to be shown as -ve income inside the payment entry. This will mark the PI as paid. See here I replicated the scenario.

Payment Entry for PI of 105,000. I made payment of 100,000 and 5,000 is a discount.
image

Status of PINV-00006-2, after this payment entry, is 'Paid"
image

I'm following you. Constructing a similar transaction on my side:
image
The problem is that (to me) a Payment Entry is representative of a (paper) check/ cheque. The voucher:
image
Perhaps diverting this discussion, but "Paid Amount" on the voucher is no longer an accurate term. ERPNext Foundation should be receiving a check for $792.00, not $800. Noting the early payment discount is good on the voucher. So it's either a problem with the cheque print format not being designed for payment discounts or an issue with the controller not being designed for payment discounts. I'm open to opinions but this seems like something @nabinhait should probably weigh in on.

What is the progress on this guys? @AgriTheory @nabinhait.

If this has gone into stale mode, maybe we could close this issue and revive when it comes into focus again

this change is really needed, hopefully it can be revived

Was this page helpful?
0 / 5 - 0 ratings

Related issues

neilLasrado picture neilLasrado  Â·  4Comments

heyakyra picture heyakyra  Â·  4Comments

berniezhao11 picture berniezhao11  Â·  4Comments

royalhospital picture royalhospital  Â·  4Comments

jboilesen picture jboilesen  Â·  3Comments