India eTDS Data Report
The India eTDS data set — tax deducted at source by section, deductee, and challan, formatted for the quarterly eTDS return (Form 26Q/27Q) filed with the Indian tax authority.
Sample build of the India eTDS Data Report — reconciled, and rendered tool-neutral so it runs in Power BI, ThoughtSpot, or Tableau.
| Deductee | Pan | Tds Section | Taxable Amount | Tds Deducted | Challan |
|---|---|---|---|---|---|
| Sample | Sample | Sample | $1,240,500.00 | Sample | Sample |
| — | — | — | $842,150.75 | — | — |
| Sample | Sample | Sample | $96,400.00 | Sample | Sample |
| — | — | — | $1,005,233.10 | — | — |
| Sample | Sample | Sample | $58,720.40 | Sample | Sample |
| Sample | Sample | Sample | $1,240,500.00 | Sample | Sample |
The report assembles TDS by section and deductee with challan references for the eTDS return.
Nine deductees have no PAN on file — the eTDS return rejects without it, and TDS deducted without a PAN attracts a higher statutory rate.
Capture the deductee PANs before filing; a missing PAN is the most common eTDS reject and a penalty exposure.
This is the report's BI Publisher data model — the SQL data set BI Publisher runs against Oracle tables to produce the output. The same SQL becomes a dbt model in your warehouse, so one definition drives both the formatted report and the analytics layer.
Data sources
- AP_INVOICES_ALL
- AP_INVOICE_DISTRIBUTIONS_ALL
- AP_AWT_TEMP_DISTRIBUTIONS_ALL
- POZ_SUPPLIERS_V
- ZX_RATES_B
Show / hide SQL
with TDS as (
SELECT AIA.INVOICE_NUM TDS_INVOICE_NUM
,AIA.INVOICE_DATE
,AILA.ACCOUNTING_DATE
,AIA.INVOICE_AMOUNT TAX_AMOUNT
,ROUND(AIA.INVOICE_AMOUNT,0) TAX_INVOICE_AMOUNT
,AIA.INVOICE_TYPE_LOOKUP_CODE INVOICE_TYPE,
AILA.DESCRIPTION
,SUBSTR(AILA.DESCRIPTION,INSTR(AILA.DESCRIPTION,'-',3,2)+2 ,LENGTH(SUBSTR(AILA.DESCRIPTION,INSTR(AILA.DESCRIPTION,'-',3,2)+2))-3) SUPPLIER_INVOICE_NUM
FROM AP_INVOICES_ALL AIA
,AP_INVOICE_LINES_ALL AILA
WHERE 1=1
--AND AIA.INVOICE_NUM IN ('Withholding tax-300000010052923-2')
AND AIA.INVOICE_ID = AILA.INVOICE_ID
AND AIA.INVOICE_TYPE_LOOKUP_CODE = 'AWT')
SELECT DISTINCT
AIA.INVOICE_ID
,TDS.TDS_INVOICE_NUM
,AIA.INVOICE_DATE
,TDS.INVOICE_TYPE
,AILA.ACCOUNTING_DATE
,TDS.SUPPLIER_INVOICE_NUM
,AILA.LINE_TYPE_LOOKUP_CODE
,PSV.VENDOR_NAME
,PSV.SEGMENT1 SUPPLIER_NUM
,HL.ADDRESS1
,HL.ADDRESS2
,HL.ADDRESS3
,HL.ADDRESS4
,HL.POSTAL_CODE ZIP
,PSSM.VENDOR_SITE_CODE
,PSP.INCOME_TAX_ID TAXPAYER_ID
,AILA.TAX TAX_NAME
,ZRCB.REPORTING_CODE_CHAR_VALUE
,ZRCT.REPORTING_CODE_NAME
,(SELECT AITV.AMOUNT
FROM AP_INVOICE_TOTALS_VIEW AITV
WHERE AITV.INVOICE_ID = AIA.INVOICE_ID
AND AITV.TYPE= 'Items'
AND ROWNUM < 2) BASE_AMOUNT
,TDS.TAX_AMOUNT
,TDS.TAX_INVOICE_AMOUNT
,AILA.TAX_RATE
FROM TDS
,AP_INVOICES_ALL AIA
,AP_INVOICE_LINES_ALL AILA
,AP_INVOICE_DISTRIBUTIONS_ALL AIDA
,POZ_SUPPLIERS_V PSV
,POZ_SUPPLIERS_PII PSP
,HZ_PARTY_SITES HPS
,POZ_SUPPLIER_SITES_ALL_M PSSM
,HZ_LOCATIONS HL
,ZX_LINES ZL
,ZX_RATES_B ZRB
,ZX_REPORT_CODES_ASSOC ZRCA
,ZX_REPORTING_CODES_B ZRCB
,ZX_REPORTING_CODES_TL ZRCT
,HR_ORGANIZATION_UNITS_F_TL HOUF
WHERE 1=1
AND TDS.SUPPLIER_INVOICE_NUM=AIA.INVOICE_NUM
--AND AIA.INVOICE_NUM IN ('Withholding tax-300000010052923-2','TEST_TDS_5')
AND AIA.INVOICE_ID = AILA.INVOICE_ID
AND AIA.INVOICE_ID = AIDA.INVOICE_ID
AND AILA.LINE_NUMBER = AIDA.INVOICE_LINE_NUMBER
AND AIA.VENDOR_ID = PSV.VENDOR_ID
AND PSP.VENDOR_ID = PSV.VENDOR_ID
AND AIA.PARTY_SITE_ID = HPS.PARTY_SITE_ID
AND AIA.VENDOR_SITE_ID = PSSM.VENDOR_SITE_ID
AND HPS.LOCATION_ID = HL.LOCATION_ID(+)
AND ZL.TRX_ID(+) = AILA.INVOICE_ID
AND ZL.TRX_LINE_ID(+) = AILA.LINE_NUMBER
AND ZL.ENTITY_CODE(+) ='AP_INVOICES'
AND AIDA.AWT_TAX_RATE_ID = ZRB.TAX_RATE_ID(+)
AND ZRCA.ENTITY_ID(+) = ZRB.TAX_RATE_ID
AND ZRCA.REPORTING_CODE_ID = ZRCB.REPORTING_CODE_ID(+)
AND ZRCT.REPORTING_CODE_ID(+) = ZRCB.REPORTING_CODE_ID
AND AIA.ORG_ID = HOUF.ORGANIZATION_ID
AND HOUF.LANGUAGE = USERENV('LANG')
AND ZRCT.LANGUAGE(+) = USERENV('LANG')
AND TRUNC(SYSDATE) BETWEEN TRUNC(HOUF.EFFECTIVE_START_DATE) AND TRUNC(HOUF.EFFECTIVE_END_DATE)
/********************FILTERS*****************************************/
--AND AIA.INVOICE_TYPE_LOOKUP_CODE = 'AWT'
AND HOUF.NAME = 'IN BU INR'
AND AILA.LINE_TYPE_LOOKUP_CODE='AWT'
/********************PARAMETERS**************************************/
AND TRUNC(TDS.ACCOUNTING_DATE) BETWEEN TRUNC(:P_GL_DATE_FROM) AND TRUNC(:P_GL_DATE_TO)
AND (TDS.INVOICE_TYPE IN (:P_INVOICE_TYPE) OR ('ALL' IN (:P_INVOICE_TYPE || 'ALL')))
AND (TDS.TDS_INVOICE_NUM IN (:P_TDS_NUM) OR ('ALL' IN (:P_TDS_NUM || 'ALL')))
ORDER BY AIA.INVOICE_DATEThe data-warehouse model — one fact surrounded by conformed dimensions (what you slice by) and measures (what you aggregate), expressed as dbt so it migrates with you. Grain: one row per source transaction.
| Element | Type | Definition |
|---|---|---|
| AP_INVOICE_DISTRIBUTIONS_ALL | dimension | dimension |
| AP_AWT_TEMP_DISTRIBUTIONS_ALL | dimension | dimension |
| POZ_SUPPLIERS_V | dimension | dimension |
| ZX_RATES_B | dimension | dimension |
| Taxable Amount | measure | measure |
Every source object behind this report. Each linked table has its own page with full column descriptions, drawn from the Oracle BICC lineage and articulated for practitioners.
| Table | Reporting columns | Subject areas |
|---|---|---|
| AP_INVOICES_ALL | 63 | 15 |
| AP_INVOICE_DISTRIBUTIONS_ALL | 59 | 11 |
| AP_AWT_TEMP_DISTRIBUTIONS_ALL | Setup / configuration table — joined for reference, not exposed for analytics | |
| POZ_SUPPLIERS_V | 2 | 24 |
| ZX_RATES_B | Setup / configuration table — joined for reference, not exposed for analytics | |