This document explains functionality of cash discount posting through SD billing document and maintenance of the clearing account.
One of the functionality in customer billing is calculation of cash discount at the time of billing. At the time of billing SAP reads payment terms from customer master data using condition ‘SKTO’. SKTO reads discount percentage and calculates cash discount amount in billing document. SKTO is a statistical condition and therefore is only for information purpose.
To show contingent liability towards cash discount some clients may want to post cash discount to accrual account and clear the same at the time of payment. Configuration to achieve this goes like this-
- SKTO is assigned to account key in pricing procedure (V/08).
- This account key has account determination in VKOA for posting to expense account and accrual account.
- You have to make sure that accrual account in VKOA is same as Cash discount account assigned in T-Code OBXI. It has to be an OI managed balance sheet account.
Journal entry at the time of billing will be:
D Customer 67,575.00
D Discount Expense A/C (assigned in VKOA) 675.75
C Revenue A/C 67,575.00 -
C Discount Accrual A/C (assigned in VKOA – as accrual) 675.75 -
Discount is recognized immediately as expense assuming that customer will pay in time. Credit with same amount goes to an accrual account.
If customer pays in time, entry at the time of payment –
D Checks/Wires in 66,899.25
D Discount Accrual A/C (assigned to T-Code OBXI) 675.75
C Customer 67,575.00 -
Amount in discount accrual account will always represent liability of the company towards cash discount. Client can accurately show its contingent liability towards unclaimed cash discount. Accrual account works as clearing account and therefore we can track cash discount right from billing to payment.
However, there is a problem in this approach. All customers not always pay within due date. In that case customer will pay full amount and at the time of payment discount accrual account will not be debited.
In that case entries should go as shown below:
D Checks/Wires in 67,575.00
C Customer 67,575.00 -
Since original discount amount is lying expense account and reversal account it need to be reversed as well. So next entry to complete this should be –
D Discount Accrual A/C 675.75
C Discount Expense A/C 675.75 -
Above entry SAP does not posts automatically and identifying line item to be reversed manually is a tedious task due to large number of entries in accrual account.
Basically at a time line items in accrual accounts can be divided into 3 categories:
Cat. 1– Lines that represent unclaimed discount. Ideally only these lines should remain in accrual account.
Cat. 2 – Credit amount at the time of billing and debit line items for on time payment. Ideally these line items should be cleared. In case these lines are not cleared it will represent a cluttered clearing account, however clearing such account is not an easy task because there are no common fields between credit amount and debit amount.
Cat. 3– Credit amount at the time of billing where payment is not made on time. Ideally these entries should be reversed against discount expense account and cleared in accrual account.
If lines under category 2 and category 3 are not cleared and accrual account is not maintained it will be difficult to ascertain correct amount of liability towards cash discount. To identify and clear lines under category 2 and 3 in accrual account we can develop 2 custom reports. One report will show line items where customer paid in time and lines should be cleared and other report will show where customer failed to pay in time and line items can be reversed.
Report 1 – Clearing information for accrual account (Customer paid in time):
When customer line items are cleared and discount is automatically posted, that document becomes clearing document for customer billing line item and payment document. It holds good when billing line is cleared at the time of booking payment (where payment document = clearing document) or when billing line and payment lines are cleared later like in case of Lockbox processing (where payment document <> clearing document).
See example below:
Typically this is how a customer account looks after customer has made on time payment.
RV line shows – Billing, DZ – Incoming payment and AB – Clearing document (that posts allowable discount as well)
Customer Account: 100099 in company code 1100.
Acc. Doc | F. Year | Description | Posting Date | Amount in LC | LC | Doc Type | Clearing doc. |
90029409 | 2013 | XYZ Customer | 6/10/2013 | 67,575.00 | USD | RV | 100118364 |
1400004854 | 2013 | XYZ Customer | 6/24/2013 | 66,899.25- | USD | DZ | 100118364 |
100118364 | 2013 | XYZ Customer | 6/24/2013 | 675.75- | USD | AB | 100118364 |
Accrual account after above postings. Please note that both lines are open as of now. Accrual account 120021 in company code 1100 -
| F. Year | Description | Posting Date | Amount in LC | LC | Doc Type | Clearing doc. |
90029409 | 2013 | Discount Accrual A/C | 6/10/2013 | 675.75- | USD | RV |
|
100118364 | 2013 | Discount Accrual A/C | 6/24/2013 | 675.75 | USD | AB |
|
If you observe in customer account that accounting document in the line where discount is posted is same as clearing document. We need to establish link between Billing document 90029409 and clearing document 100118364. This can be achieved using 2 tables i.e. BSIS and BSAD. Please see below –
If we input following information in table BSIS we should get line item from document 100118364 along with other lines but for simplicity I am showing on line from document # 100118364.
Input:
Company Code (BSIS-BUKRS)
Accrual Account (BSIS-HKONT)
Posting Date (BSIS-BUDAT)Output:
If we send above information to table BSAD we should be able to fetch billing document number and clearing document number:
Joining condition between table BSIS and BSAD should be:
BSIS-BELNR = BSAD-AUGBL
BSIS-BUDAT = BSAD-AUGDT
BSIS-BUKRS = BSAD-BUKRS
Input
Output:
You will observe that you will get Billing document - 90029409, Payment document - 100118364 and Clearing document - 1400004854.
By subtotaling field BSAD-SKNTO and BSAD-WSKTO on clearing document you can have zero for cash discount amount (you will have to make them +ive or –ive by using field SHKZG). If your total is zero these accounting documents can be cleared. If total is not zero it means that customer paid amount after due date and therefore not claimed discount. Such discount need to be reversed against expense account.
We can have a nice custom report to show above output:
Again, clearing above lines is a manual task, however a custom program can be further extended to update assignment field in selected line items based on same clearing document number. Based on assignment field a match-code can be configured for automatic clearing of Discount Accrual account.
Selection screen for the above report will look as shown below:
Company Code (BSIS-BUKRS)
Accrual Account (BSIS-HKONT)
Accounting Document (BSIS-BELNR)You have to follow steps below to develop a query report:
Create InfoSet (SQ02) by joining tables BSIS and BSAD as shown below:
Query will show duplicates in its output, you will have to insert following code to remove duplicate. You may have to take help of ABAP consultant:
To show amount according to +/- sign you will need 2 ‘Local Fields’ – One for document currency amount and one for local currency amount.
Configure Local fields as shown below:
Layout for the report can be designed as shown below:
Report 2 – Report to reverse expired discount (Customer not paid yet and discount expired):
For invoices where customer has not made payment in time entry for discount should be reversed. Example –
D Discount Accrual A/C 675.75
C Discount Expense A/C 675.75
Above entry SAP does not posts automatically and identifying line item to be reversed manually is a tedious task due to large number of entries in accrual account.
A report can be developed to identify each customer line where discount is available as per billing document. This report can show whether individual line can be reversed or no.
In the above report last column shows traffic lights, red light means line cannot be reversed, green light means amount can be reversed. On the date of executing report total of all amount under green light can be reversed and cleared against individual lines.
From table BSID (Customer open line items) for lines generated using document type ‘RV’ (SD Billing) program will check whether on the date of execution line item is overdue or no.
Example –
Payment terms - 60 days, discount percentage = 1%.
Baseline date is 04/28/2014; Run Date is 08/10/2014; Days overdue = 104 which is more than 60 days and therefore customer is not eligible for discount. Therefore for this line green light should be indicated and amount can be reversed.
In my example I am comparing days overdue with value in field BSAD-ZBD1T (i.e. highest number of days any discount is available). Amount to be reversed will be calculated as a local field by multiplying discount percentage with discount base.
Selection screen for above report –
Table BSID has all the relevant information to generate this report. You can use query shown below to produce above shown report –
InfoSet (SQ02)
You will need 3 local fields in this report –
Days Overdue, Reversal Amount and Traffic light indicator.
Local fields should have calculation steps as shown below –
ZDPDUE - Days overdue
Formula – Run date (variable %DATE) – Baseline date (BSAD-ZFBDT)
REVAMT - Reversal Amount
Formula – BSAD-SKFBT (Discount base) * (BSAD-ZBD1P (Disc. Percent 1)/100)
XREVRS - Can be reversed?
Formula –
If BSAD-ZBD2T (Days 2) <> 0 AND BSAD-ZBD2T < ZDPDUE then green light. (If value in field days 2 exist then compare it with ZDPDUE)
If BSAD-ZBD2T (Days 2) = 0 AND BSAD-ZBD1T < ZDPDUE then green light. (If value in field days 2 is 0 then compare field ZBD1T with ZDPDUE)
Else, red light
With the help of above 2 reports, user should be able to maintain discount accrual account, also he/she should be able to show discount accrual amount correctly.