Oracle Tax Year End processing for SARS (South African Revenue Service)

Trending Puzzle : How many brothers are we?

If you are an oracle payroll consultant working for South Africa legislation, SARS is a well familiar word for you. You must need to submit the tax files (IRP5 and IT3A) twice in a year. First in August and finally in February. Unfortunately there are not much documents available on internet or by Oracle to guide a consultant on this. In this article you will know how to process tax year end step by step and how to resolve some known common issues.

Oracle Tax Year End processing for SARS:

From oracle point of view you will need to run following programs one after another in order to be able to complete tax year end processing

  • Tax Year End Data Validation Report
  • IRP5 Tax Certificates
  • IT3A Tax Certificates
  • Electronic Tax File

But its not as simple as it seems, as you will need to reconcile your Summary Of Tax Certificates and Gross To Net, you will also need to make sure there is  a tax files issue for each employee in your organization. So before you run these programs, you must verify and correct employee data otherwise you will have hard time in reconciling these files.

Data Validation and correction before running Tax Year End:

Before running any of these programs please make sure you have followed these steps

1. Make sure all employees have correct Income tax number:

Please make sure all current of ex-employees have their Income Tax Number entered.
Navigation : ZA_HRMS_Manager –> Enter and Maintain –> Employment tab

You may also use this query :

select employee_number, per_information1
from apps.per_all_people_f
where business_group_id = :Your_BG_ID /* Give your business Group ID*/
and employee_number is not null /* You may link other table to retrive only empployees*/
and per_information1 is null
and ((effective_start_date between '1-Mar-2015' and '28-FEB-2016') or (effective_end_date between '01-MAR-2015' and '28-FEB-2015'))

2. Make sure all employees are tagged to a legal employer:

Make sure all employees have proper and correct tax information and mandatory fields like “Nature of person” and “Legal Entity” are correctly entered.
Navigation : ZA_HRMS_Manager –> Enter and Maintain –> Assignment –> Extra Information –> Tax Information

You may use query like below to retrieve missing this info

select paaf.assignment_number
from per_all_assignments_f paaf,(select * from PER_ASSIGNMENT_EXTRA_INFO where INFORMATION_TYPE ='ZA_SPECIFIC_INFO' ) paei
where paaf.assignment_id=paei.assignment_id(+)
and '31-AUG-2015' between paaf.effective_start_date and paaf.effective_end_date
and paei.AEI_INFORMATION7 is null
and paaf.payroll_id in (61,62,81,82,83, 123, 124) /*Enter your payrol ids*/

 3. Make sure all employees have payroll and linked to correct legal employer:

This is very important if you have multiple payrolls or legal entities. There could be a scenario when an employee was transferred from one payroll to another but legal entity was not changed/updated (EIT : Tax Information). Please do identify such employees and correct the record. It may cause serious problem while reconciling the files.

Run the Tax Year End processing for SARS:

Once the data are corrected it is time to run the actual programs. The first program you will run is “Tax Year End Data Validation and Preprocess“. This program has multiple parameters and their details are given below:

Oracle Tax Year End Processing for SARS

Legal Entity : Select the legal entity foe which you would like to run the program.
Tax Year : This will be your tax year (Tax year is March to February)
Period of reconciliation : As said before you run this processing twice in a year. Once in August and another in February. Select the relevant value from list.
Certificate Type : Leave it normal
Payroll : Select the payroll for which you will be running the tax year end. If you have multiple payroll for single legal entity, you will see all of them in the list. Run one by one for all payrolls.
Assignment Set: You may run it for any assignment set also. If not, leave it blank
Employee Name : You may run it for a single employee. If not, leave it blank.
Test Run : No. (If set to yes system will forcefully submit Tax Certificate Preprocess and Create Tax Year End
Exception Log process even if there is an error with the “Tax Year End Data Validation and Preprocess”)
Combine certificate : No

This program will go through each eligible employees and validate their records. If there is no issue with eligible employees it will submit internally below two programs

  • Tax Certificate Preprocess (Tax Certificate Preprocess)
  • Create Tax Year End exception log (Create Tax Year End Exception Log)

However, if there is any issue with any of the eligible employees, system will not submit any program but will finish in normal status. If this is the case, please click on the “View Output” tab to see the issue. You might see a PDF output like below. Correct these records and resubmit the program.

Oracle tax year end processing for SARS

As we said if there is no issue with eligible employees, system will submit other two programs. Please make a note of Oracle tax year end processing for SARSrequest id of the program “Tax Certificate Preprocess (Tax Certificate Preprocess)” you will need it for further processing. Most likely this program will finish without any error and it will submit another program “Create Tax Year End exception log (Create Tax Year End Exception Log)”. Please click on the “View Log” tab for this program to go through the log files. Most consultant will ignore this part as program will submit in normal status. You will have some issues with individual employees and they may look as follows

You must need to correct them one by one before you proceed further. This is the very important steps of this process and many consultants stuck here due to lack of information available on internet. We are going to list down the common issues you will see in the log file and their resolution:

Gross Non-Retirement Funding Income : -1

For the affected employee run the “Tax Register Report” and check the SARS code that has negative value. Most likely it would be “3698”. Make a note of that negative amount and Now find out the last payroll run for that employee (employee could be terminated also). You will need to do the balance adjustment against that SARS code. To do the balance adjustment please follow the navigation ZA_HRMS_Manager –> Enter and maintain –> Assignment –> Other Adjust Balance (Please make sure you have set the effective date correctly. It must be the employees last payroll run period or before that). You will also need to identify the correct elements using that balance feed needs to be done. For that first identify the Balance linked with that SARS code and then element feeding to that balance. If you are not sure which balance is linked with that SARS code, please use the query below to identify.

Oracle Balance Adjustment

SELECT pbt.balance_name, irp5.CODE
FROM pay_balance_types pbt,
pay_element_types_f petf,
pay_input_values_f pivf,
pay_balance_feeds_f pbff,
pay_za_irp5_bal_codes irp5
AND irp5.CODE = ‘3698’ /*Give the correct SARS Code*/

Code 3810 / 3860 must be equal to the Code 4474.

For this please run the “Tax Register Report” for affected employee and check the code 3810 and 4474. Find out the difference between 4474 and 3810. If employee’s contribution (3810) is more than employer’s contribution (4474) then reduce the employee’s contribution by passing negative value of difference and do the balance adjustment. Again you will need to identify the balances associated with the SARS code 3810 using above query and do the balance adjustments.

Code 4474 must be greater than zero if Code 3810 or Code 3860 has a value.

Steps will be same as above identify the amount against SARS code 3810 and 3860 and feed that exact amount against the SARS code 4474.

Code 3703 must not have a value if Code 3701 or Code 3702 has a value.

Run the “Tax Register Report” for that employee and check the value for SARS codes 3703, 3701 and 3702. As the message is saying there should not be any values against the code 3703 if value exists for 3701 or 3702 so do the negative balance adjustment against the code 3703 tio make it zero (0). You can use the above query to identify balance feeding to SARS code 3703.

The Employee Number xxxxxx has a negative amount in SARS Code 3601. Please correct this amount.

Same as earlier steps run the “Tax Register Report” for affected employee and identify the negative amount against SARS code 3601. Now through the balance adjustment make that zero by passing the exactly same positive amount.

The Employee Number 81055767 has a negative amount in SARS Code 4101. Please correct this amount.

Steps would be same as above but for SARS code 4101

The Employee Number 10000608 has a negative amount in SARS Code 3713. Please correct this amount

Once gain steps would be same as above but against the SARS code 3713. You may use the query given to identify the balance feeding to that SARS code.

The Employee Number xxxxxx does not have a final process run as on the termination date of the assignment or tax year end. Process a final payroll run or a tax balance adjustment for this employee.

ZA Tax Balance adjustment for SARS If possible run the final process for the terminated employees, if not, do the balance adjustment. You will also see the exact tax amount that you will need to adjust along with this warning/error message in the log file. You may use the seeded element “ZA_Tax_Balance Adjustments” for this purpose. That amount you will feed would be against the input value “PAYE”


Warning: Code 4005 (Medical Aid Contributions) has a value and Code 4116 (Medical Tax Credits) is zero

To rectify this go through the employee record and calculate what could be the value for 4116. SARS changes the medical tax credit value every year so you will need to calculate the correct value against code 4116 manually and do the balance adjustment.

P.S. If you face any other issue apart of mentioned here please run the tax register report for that employee and try to find out the correct SARS code against which you have to do the balance adjustment. And then use the query given above to identify the balance feeding to that SARS code.

Rollabk the Tax Year End Data Validation and Preprocess:

Rollback Tax Validation processNow since you have corrected all records from the log file you will need to re run the “Tax Year End Data Validation and Preprocess” but before that you will need to roll back the previous run. To roll back the process run “Rollback” program and pass required information. Please make sure you select correct “Payroll Process” value.

Rerun the Tax Year End Data Validation and Preprocess:

Now this time all programs should complete without and warning or error message and log file should also be clean. If this is the case you are good to go and jump ahead to to reconciliation. however, if not please please what is there in the log file and correct accordingly.

How to do reconciliation to make sure everything is correct:

Now it is time to reconcile all the data to make sure your tax validation process is successfully and you can release the tax files like IRP5 and IT3A to your employees and also upload the electronic file to SARS system.

Run : Summary of Tax Certificates

Run this report for the same tax year and Tax Certificate Preprocess and note down the value against “PAYE”.

Run : Gross To Net Summary (PDF)

Now run Gross To Net Summary (PDF) report for all payroll periods (first 6 months for Mid year and all 12 months for year end) and add the value against “ZA_Tax_Costing”, “ZA_Tax”, “ZA_Voluntary_Tax” and “ZA_Tax_On_Multiple_Lump_Sums”. Sum of all these values for all period should match the PAYE value from “Summary of Tax Certificates”.

If PAYE value does not match you will need to dig further to identify the actual issue. You may use below query that will give you the employee involved in Summary of Tax certificates and their individual values:



SUM (pai.action_information2) total_deduction,

MAX (total_deduction_desc) total_deduction_desc,

SUM (pai.action_information3) site, MAX (site_desc) site_desc,

SUM (pai.action_information4) paye, MAX (paye_desc) paye_desc,

SUM (pai.action_information5) paye_ret_lum_ben,

MAX (paye_ret_lum_ben_desc) paye_ret_lum_ben_desc,

SUM (pai.action_information6) uif_contribution,

MAX (uif_contribution_desc) uif_contribution_desc,

SUM (pai.action_information7) sdl_contribution,

MAX (sdl_contribution_desc) sdl_contribution_desc,

SUM (pai.action_information8) tot_tax_uif_sdl,

MAX (tot_tax_uif_sdl_desc) tot_tax_uif_sdl_desc,

SUM (pai.action_information13) med_tax_cr,

MAX (med_tax_cr_desc) med_tax_cr_desc

FROM pay_action_information pai,

pay_assignment_actions paa,

(SELECT MAX (DECODE (sars.lookup_code, 4497, sars.meaning)

) total_deduction_desc,

MAX (DECODE (sars.lookup_code, 4101, sars.meaning)) site_desc,

MAX (DECODE (sars.lookup_code, 4102, sars.meaning)) paye_desc,

MAX (DECODE (sars.lookup_code, 4115, sars.meaning)

) paye_ret_lum_ben_desc,

MAX (DECODE (sars.lookup_code, 4141, sars.meaning)

) uif_contribution_desc,

MAX (DECODE (sars.lookup_code, 4142, sars.meaning)

) sdl_contribution_desc,

MAX (DECODE (sars.lookup_code, 4149, sars.meaning)

) tot_tax_uif_sdl_desc,

MAX (DECODE (sars.lookup_code, 4116, sars.meaning)

) med_tax_cr_desc

FROM hr_lookups sars

WHERE sars.lookup_type(+) = ‘ZA_SARS_CODE_DESCRIPTIONS’

AND sars.application_id(+) = 800

AND sars.lookup_code IN

(4497, 4101, 4102, 4115, 4141, 4142, 4149, 4116)) des

,(select assignment_id, assignment_number from per_all_assignments_f paaf where assignment_type = ‘E’ and effective_start_date = (select max(effective_start_date) from per_all_assignments_f where assignment_id = paaf.assignment_id)) ass

WHERE pai.action_context_id = paa.assignment_action_id

AND pai.action_context_type = ‘AAP’

AND pai.action_information_category = ‘ZATYE_EMPLOYEE_TAX_AND_REASONS’

AND pai.action_information30 IS NOT NULL

AND payroll_action_id IN (

SELECT payroll_action_id

FROM pay_payroll_actions

WHERE report_qualifier = ‘Tax Certificate Preprocess’

AND report_type = ‘ZA_TYE’

AND payroll_id in (123, 124) /*Give the correct payroll id*/

AND effective_date = :p_effective_date)

and ass.assignment_id(+) = paa.assignment_id

group by paa.assignment_id,ass.assignment_number

Issue tax file (IRP5 and IT3A) to employees:

If the PAYE values are matching you can move ahead and issue the IRP5 or ITEA file to your employees. You will need to run below programs for the SAME. IT3A is issue to employee who has not paid any tax in that tax year.

  • IRP5 Tax Certificates
  • IT3A Tax Certificates

Upload the electronic file to SARS system (Electronic Tax File):

Finally, run the program “Electronic Tax File” for correct tax year and “Tax certificate Process”. This program will generate an output in ASCII format and same needs to be uploaded to SARS system.

Electronic file for SARS

Final words: I hope this article was any help for you. If you have any suggestion or query please post them in comment section.