Analytics Catalog/Oracle Fusion ERP/Payables/Supplier Subledger Balance by Account Report
Explore the catalogReportsModulesEnterprise modelOTBI subject areasBICC PVOs
Oracle Fusion · Payables

Supplier Subledger Balance by Account Report

Payables

The Payables subledger balance owed to each supplier, reconciled to the GL liability account it posts to — supplier open balance rolled to the account, the basis for tying the AP subledger to the ledger.

Related  Subledger-level companion to the Supplier Balance by Account Report.

Sample build of the Supplier Subledger Balance by Account Report — reconciled, and rendered tool-neutral so it runs in Power BI, ThoughtSpot, or Tableau.

Supplier Subledger Balance by Account Report
Sample build · illustrative
Filters
From Acc
Sample
From Brand
Sample
From Cc
Sample
From Entity
Globex Holdings
From Future1
Sample
From Future2
Sample
$8.42M
Open AP
312
Suppliers
$0 diff
Ties to GL
SupplierLiability AccountOpen BalancePeriodCurrency
Acme Industrial1000-2100-000$1,240,500.00APR-26USD
Northwind Trading1000-5400-000$842,150.75MAR-26USD
Globex Holdings1000-1410-000$96,400.00FEB-26USD
Initech LLC2000-2100-000$1,005,233.10JAN-26USD
Umbrella Corp1000-6300-000$58,720.40DEC-25USD
Acme Industrial1000-2100-000$1,240,500.00APR-26USD
AI Analyst · active
reading

The report rolls open AP by supplier to the liability account and reconciles the total to GL.

flag

The subledger ties to GL except on one account where a manual GL journal posted directly to the liability account, bypassing AP.

root cause & next step

Keep manual journals off the AP liability account — let Payables post it — so the subledger-to-GL tie stays exact.

Illustrative data. The live interactive version — drill-through, filters, export, and the AI Analyst — runs on your warehouse. See it live →

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

How it interconnects: this data set reads the physical tables above. Those same tables surface in OTBI as subject areas and in BICC as PVOs — three lenses on one source. Open any table to trace its subject areas and View Objects.
SQL data set · genericized · parameterized · no hardcoded segments
Show / hide SQL
WITH SECURITY_TBL AS
(
	SELECT 
			DISTINCT HOU.organization_id
	FROM 
			hr_operating_units  HOU,
			fun_user_role_data_asgnmnts FURDA,
			per_roles_dn PRD,
			per_user_roles PUR,
			per_users PU
	WHERE 
			1							=1
		AND FURDA.org_id 				=HOU.organization_id
		AND UPPER(FURDA.role_name) IN ('XXC_ACCOUNTS_PAYABLE_ANALYST_JOB', 'XXC_ACCOUNTS_PAYABLES_MANAGER_JOB')
		AND UPPER(FURDA.active_flag) 	='Y'
		AND UPPER(FURDA.role_name) 		=UPPER(PRD.role_common_name)
		AND PRD.role_id 				=PUR.role_id
		AND PUR.user_id 				=PU.user_id
		AND upper(pu.username) 			=upper(:xdo_user_name)
		AND pu.user_guid 				=FURDA.user_guid
)

SELECT
			ledger_id
		,	party_id
		,	party_number		SUPPLIER_NUM
		,	party_name 			VENDOR_NAME
		,	segment4			NAT_ACCOUNT
		,	description			ACC_DESC
		,	SUM(BAL_DR)			BEG_BAL_DR
		,	SUM(BAL_CR)   		BEG_BAL_CR
		,	SUM(accounted_DR)	CS_1	
		,	SUM(accounted_CR)   CS_2	

FROM 

(
SELECT 
			GLL.ledger_id
		,	AIA.party_id
		,	NVL(POZ.segment1,(SELECT PAP.person_number FROM per_all_people_f PAP
								WHERE TO_CHAR(PAP.person_id)=HP.ORIG_SYSTEM_REFERENCE
								AND TRUNC(SYSDATE) BETWEEN PAP.EFFECTIVE_START_DATE AND PAP.EFFECTIVE_END_DATE)) party_number	
		,	HP.party_name
		,	GCC.segment4
		,	FT.description	
		,	CASE WHEN GLP.start_date < (select distinct start_date from gl_periods where period_set_name = GLP.period_set_name and period_name = :P_FROM_PERIOD) THEN NVL(XAL.accounted_dr,0) ELSE 0 END BAL_DR	
		,	CASE WHEN GLP.start_date < (select distinct start_date from gl_periods where period_set_name = GLP.period_set_name and period_name = :P_FROM_PERIOD) THEN NVL(XAL.accounted_cr,0) ELSE 0 END BAL_CR
		,	CASE WHEN GLP.start_date >= (select distinct start_date from gl_periods where period_set_name = GLP.period_set_name and period_name = :P_FROM_PERIOD) AND GLP.end_date <= (select distinct end_date from gl_periods where period_set_name = GLP.period_set_name and period_name = :P_TO_PERIOD) THEN NVL(XAL.accounted_dr,0) ELSE 0 END accounted_DR	
		,	CASE WHEN GLP.start_date >= (select distinct start_date from gl_periods where period_set_name = GLP.period_set_name and period_name = :P_FROM_PERIOD) AND GLP.end_date <= (select distinct end_date from gl_periods where period_set_name = GLP.period_set_name and period_name = :P_TO_PERIOD) THEN NVL(XAL.accounted_cr,0) ELSE 0 END accounted_CR
 
FROM 
		gl_ledgers GLL JOIN xla_ae_headers XAH ON GLL.ledger_id=XAH.ledger_id
											AND XAH.accounting_entry_status_code='F'
											AND XAH.GL_TRANSFER_STATUS_CODE		='Y'
		 JOIN gl_periods GLP ON GLP.period_name=XAH.period_name
							AND GLP.period_type=GLL.accounted_period_type
		 JOIN xla_subledgers XS ON XAH.application_id=XS.application_id
							   AND XS.je_source_name='Payables'
		 JOIN xla_ae_lines XAL ON XAL.ae_header_id=XAH.ae_header_id
		 JOIN gl_import_references GIR ON GIR.gl_sl_link_id=XAL.gl_sl_link_id 	
								AND GIR.gl_sl_link_table=XAL.gl_sl_link_table
		 JOIN gl_code_combinations GCC ON XAL.code_combination_id=GCC.code_combination_id
		 JOIN fnd_flex_values FFV ON GCC.segment4 =FFV.flex_value
									AND FFV.value_category='GREECE ACCOUNT VALUE SET'
		 JOIN fnd_flex_values_tl FT ON FFV.flex_value_id =FT.flex_value_id
									AND UPPER(FT.language)='EL'
		 JOIN xla_transaction_entities XTE ON XAH.application_id=XTE.application_id
											AND XAH.entity_id=XTE.entity_id
											AND XTE.entity_code='AP_INVOICES'
		 JOIN ap_invoices_all AIA ON XTE.source_id_int_1=AIA.invoice_id
											AND	GLL.ledger_id=AIA.set_of_books_id
		 JOIN hz_parties HP ON AIA.party_id=HP.party_id
		 LEFT OUTER JOIN poz_suppliers_v POZ ON HP.party_id =POZ.party_id
		 LEFT OUTER JOIN poz_supplier_sites_all_m PSS ON AIA.vendor_site_id=PSS.vendor_site_id
		 JOIN hr_operating_units HOU ON AIA.org_id=HOU.organization_id
										AND HOU.NAME='GR BU EUR'
		 JOIN xle_entity_profiles XEP ON AIA.legal_entity_id=XEP.legal_entity_id
		 JOIN security_tbl ST ON ST.organization_id=HOU.organization_id

WHERE
				1=1
			AND CAST(GCC.segment9 AS NUMERIC) BETWEEN :P_FROM_FUTURE2 AND :P_TO_FUTURE2
			AND CAST(GCC.segment8 AS NUMERIC) BETWEEN :P_FROM_FUTURE1 AND :P_TO_FUTURE1
			AND CAST(GCC.segment7 AS NUMERIC) BETWEEN :P_FROM_IC AND :P_TO_IC
			AND CAST(GCC.segment6 AS NUMERIC) BETWEEN :P_FROM_BRAND AND :P_TO_BRAND
			AND CAST(GCC.segment5 AS NUMERIC) BETWEEN :P_FROM_LOC AND :P_TO_LOC
			AND CAST(GCC.segment4 AS NUMERIC) BETWEEN CAST(:P_FROM_ACC AS NUMERIC) AND CAST(:P_TO_ACC AS NUMERIC)
			AND CAST(GCC.segment3 AS NUMERIC) BETWEEN :P_FROM_CC AND :P_TO_CC
			AND CAST(GCC.segment2 AS NUMERIC) BETWEEN :P_FROM_SM AND :P_TO_SM
			AND CAST(GCC.segment1 AS NUMERIC) BETWEEN :P_FROM_ENTITY AND :P_TO_ENTITY
			AND (PSS.vendor_site_code IN (:P_S_SITE) OR  'All' IN (:P_S_SITE||'All'))
			AND (HP.party_name IN (:P_S_NAME) OR  'All' IN (:P_S_NAME||'All'))
			AND (POZ.vendor_type_lookup_code IN (:P_VTYPE) OR  'All' IN (:P_VTYPE||'All'))
			AND (XEP.name IN (:P_LE_NAME) OR  'All' IN (:P_LE_NAME||'All'))
						
UNION ALL

SELECT 
			GLL.ledger_id
		,	AC.party_id
		,	NVL(POZ.segment1,(SELECT PAP.person_number FROM per_all_people_f PAP
								WHERE TO_CHAR(PAP.person_id)=HP.ORIG_SYSTEM_REFERENCE
								AND TRUNC(SYSDATE) BETWEEN PAP.EFFECTIVE_START_DATE AND PAP.EFFECTIVE_END_DATE)) party_number	
		,	HP.party_name	
		,	GCC.segment4
		,	FT.description	
		,	CASE WHEN GLP.start_date < (select distinct start_date from gl_periods where period_set_name = GLP.period_set_name and period_name = :P_FROM_PERIOD) THEN NVL(XAL.accounted_dr,0) ELSE 0 END BEG_BAL_DR	
		,	CASE WHEN GLP.start_date < (select distinct start_date from gl_periods where period_set_name = GLP.period_set_name and period_name = :P_FROM_PERIOD) THEN NVL(XAL.accounted_cr,0) ELSE 0 END BEG_BAL_CR
		,	CASE WHEN GLP.start_date >= (select distinct start_date from gl_periods where period_set_name = GLP.period_set_name and period_name = :P_FROM_PERIOD) AND GLP.end_date <= (select distinct end_date from gl_periods where period_set_name = GLP.period_set_name and period_name = :P_TO_PERIOD) THEN NVL(XAL.accounted_dr,0) ELSE 0 END accounted_DR	
		,	CASE WHEN GLP.start_date >= (select distinct start_date from gl_periods where period_set_name = GLP.period_set_name and period_name = :P_FROM_PERIOD) AND GLP.end_date <= (select distinct end_date from gl_periods where period_set_name = GLP.period_set_name and period_name = :P_TO_PERIOD) THEN NVL(XAL.accounted_cr,0) ELSE 0 END accounted_CR
 
FROM 
		gl_ledgers GLL JOIN xla_ae_headers XAH ON GLL.ledger_id=XAH.ledger_id
											AND XAH.accounting_entry_status_code='F'
											AND XAH.GL_TRANSFER_STATUS_CODE		='Y'
		 JOIN gl_periods GLP ON GLP.period_name=XAH.period_name
							AND GLP.period_type=GLL.accounted_period_type
		 JOIN xla_subledgers XS ON XAH.application_id=XS.application_id
							   AND XS.je_source_name='Payables'
		 JOIN xla_ae_lines XAL ON XAL.ae_header_id=XAH.ae_header_id
		 JOIN gl_import_references GIR ON GIR.gl_sl_link_id=XAL.gl_sl_link_id 	
								AND GIR.gl_sl_link_table=XAL.gl_sl_link_table
		 JOIN gl_code_combinations GCC ON XAL.code_combination_id=GCC.code_combination_id
		 JOIN fnd_flex_values FFV ON GCC.segment4 =FFV.flex_value
									AND FFV.value_category='GREECE ACCOUNT VALUE SET'
		 JOIN fnd_flex_values_tl FT ON FFV.flex_value_id =FT.flex_value_id
									AND UPPER(FT.language)='EL'
		 JOIN xla_transaction_entities XTE ON XAH.application_id=XTE.application_id
											AND XAH.entity_id=XTE.entity_id
											AND XTE.entity_code='AP_PAYMENTS'
		 JOIN ap_checks_all AC ON XTE.source_id_int_1=AC.check_id
		 JOIN hz_parties HP ON AC.party_id=HP.party_id
		 LEFT OUTER JOIN poz_suppliers_v POZ ON HP.party_id =POZ.party_id
		 LEFT OUTER JOIN poz_supplier_sites_all_m PSS ON AC.vendor_site_id=PSS.vendor_site_id 
		 JOIN hr_operating_units HOU ON AC.org_id=HOU.organization_id
										AND HOU.NAME='GR BU EUR'
		 LEFT OUTER JOIN hr_organization_information_f HOUF ON HOU.organization_id=HOUF.organization_id
										AND	TO_CHAR(GLL.ledger_id)=HOUF.org_information3
		 JOIN xle_entity_profiles XEP ON AC.legal_entity_id=XEP.legal_entity_id
		 JOIN security_tbl ST ON ST.organization_id=HOU.organization_id
		 
WHERE
				1=1
			AND CAST(GCC.segment9 AS NUMERIC) BETWEEN :P_FROM_FUTURE2 AND :P_TO_FUTURE2
			AND CAST(GCC.segment8 AS NUMERIC) BETWEEN :P_FROM_FUTURE1 AND :P_TO_FUTURE1
			AND CAST(GCC.segment7 AS NUMERIC) BETWEEN :P_FROM_IC AND :P_TO_IC
			AND CAST(GCC.segment6 AS NUMERIC) BETWEEN :P_FROM_BRAND AND :P_TO_BRAND
			AND CAST(GCC.segment5 AS NUMERIC) BETWEEN :P_FROM_LOC AND :P_TO_LOC
			AND CAST(GCC.segment4 AS NUMERIC) BETWEEN CAST(:P_FROM_ACC AS NUMERIC) AND CAST(:P_TO_ACC AS NUMERIC)
			AND CAST(GCC.segment3 AS NUMERIC) BETWEEN :P_FROM_CC AND :P_TO_CC
			AND CAST(GCC.segment2 AS NUMERIC) BETWEEN :P_FROM_SM AND :P_TO_SM
			AND CAST(GCC.segment1 AS NUMERIC) BETWEEN :P_FROM_ENTITY AND :P_TO_ENTITY
			AND (PSS.vendor_site_code IN (:P_S_SITE) OR  'All' IN (:P_S_SITE||'All'))
			AND (HP.party_name IN (:P_S_NAME) OR  'All' IN (:P_S_NAME||'All'))
			AND (POZ.vendor_type_lookup_code IN (:P_VTYPE) OR  'All' IN (:P_VTYPE||'All'))
			AND (XEP.name IN (:P_LE_NAME) OR  'All' IN (:P_LE_NAME||'All'))
)
WHERE
				1=1
			AND (PARTY_NUMBER IN (:P_S_NUM) OR  'All' IN (:P_S_NUM||'All'))
			
GROUP BY 

			ledger_id
		,	party_id
		,	party_number		
		,	party_name 			
		,	segment4			
		,	description
:P_FROM_ACC :P_FROM_BRAND :P_FROM_CC :P_FROM_ENTITY :P_FROM_FUTURE1 :P_FROM_FUTURE2 :P_FROM_IC :P_FROM_LOC :P_FROM_PERIOD :P_FROM_SM :P_LE_NAME :P_S_NAME :P_S_NUM :P_S_SITE :P_TO_ACC :P_TO_BRAND :P_TO_CC :P_TO_ENTITY :P_TO_FUTURE1 :P_TO_FUTURE2 :P_TO_IC :P_TO_LOC :P_TO_PERIOD :P_TO_SM :P_VTYPE :xdo_user_name

The 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.

AP_PAYMENT_SCHEDULES_ALLdimensionAP_INVOICE_DISTRIBUTIONS…dimensionPOZ_SUPPLIERS_VdimensionGL_CODE_COMBINATIONSdimensionAP_INVOICES_ALLfact · one row per source transactionOpen Balance
●— fact → dimension join
ElementTypeDefinition
AP_PAYMENT_SCHEDULES_ALLdimensiondimension
AP_INVOICE_DISTRIBUTIONS_ALLdimensiondimension
POZ_SUPPLIERS_Vdimensiondimension
GL_CODE_COMBINATIONSdimensiondimension
Open Balancemeasuremeasure
Runs on your cloud warehouse — Snowflake, BigQuery, Redshift, or Synapse on AWS, Google Cloud, Azure, or any provider. Reconciled to the source control total — 0% variance by design. You own the code, the model, and the data.
How the data gets here: a BICC bulk extract of the source tables above, on the same pattern for every report. See the extraction pattern & data flow →
See the complete model
How this report's fact and dimensions fit the full picture, via conformed keys.
Payables data model →Enterprise model →

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.

TableReporting columnsSubject areas
AP_INVOICES_ALL6315
AP_PAYMENT_SCHEDULES_ALL212
AP_INVOICE_DISTRIBUTIONS_ALL5911
POZ_SUPPLIERS_V224
GL_CODE_COMBINATIONS761
GL_LEDGERS10104
Reporting columns = fields the report selects that are exposed as analytics attributes; subject areas = the OTBI subject areas the table appears in. Setup and configuration tables (master data, ledger and book setup, lookups) are referenced by the report's joins but aren't exposed as analytics columns or subject areas — that's expected, not a gap.