Skip to content
EBS Reference

MTL_MATERIAL_TRANSACTIONS

Schema: INVtransactionPer inventory org

The material transaction ledger — one row per inventory movement or cost update, classified by transaction type, action, and source type, with quantity, date, and the document reference that caused it; the reconciliation backbone for every stock question

Identity
Module: InventoryInventory-org partitioned (ORGANIZATION_ID)
Notes

Inter-org transfers write two rows (issue and receipt) linked through the transfer transaction id; TRANSFER_ORGANIZATION_ID carries the counterpart org. The UOM column here is TRANSACTION_UOM — the on-hand table spells its equivalent TRANSACTION_UOM_CODE. Accounting distributions, lot detail, and serial detail hang off TRANSACTION_ID in child tables.

What the badges mean
Schema: INV
Schema: the Oracle product schema that owns the table (INV, ONT, WSH, PO, BOM, WIP, MRP, MSC, AR, AP, GL, HR, APPLSYS) — tells you which product family the object belongs to, not who can query it.
master
Data class: what the table holds — master data, transaction documents, control/configuration, interface/staging, or an APPS-schema view.

Structural facts — how the table is partitioned, not a trap by itself

OU-striped (ORG_ID)
Rows are scoped to an operating unit. A landed extract carries every operating unit’s rows — filter or join on ORG_ID, and don’t confuse it with ORGANIZATION_ID (see the quirks guide).
Per inventory org
Rows are scoped to an inventory organization (plant or warehouse) via ORGANIZATION_ID — a different partition from OU-striped tables (see the quirks guide).
Language-striped
The table carries a LANGUAGE column (a _TL translation table or FND_LOOKUP_VALUES) — one row per language. Filter to one LANGUAGE or a join multiplies rows (see the quirks guide).

Join & extract hazards — verify before you rely on this

View
This is an APPS-schema convenience view, not a physical table. Extract the base tables it joins instead — views can be slow at scale and aren't guaranteed stable across patches.
In field listings, the Key chip marks a primary-key field.

Fields

18 fields · 1 key

18 fields.

Table fields: position, field name, description, data type, and flags. 18 fields.
#FieldDescriptionTypeFlags
1TRANSACTION_IDTransaction id — the ledger's key; distributions, lot, and serial detail join on itNUMBER
Primary-key field
2INVENTORY_ITEM_IDItem idNUMBER
3ORGANIZATION_IDInventory organization the movement happened inNUMBER
4SUBINVENTORY_CODEThe subinventory the movement touchedVARCHAR2
5LOCATOR_IDThe locator the movement touchedNUMBER
6TRANSACTION_TYPE_IDThe transaction type — the user-facing classification; decodes via MTL_TRANSACTION_TYPESNUMBER
7TRANSACTION_ACTION_IDThe physical action (issue, receipt, transfer…) behind the typeNUMBER
Decodes via FND_LOOKUP_VALUES — the exact lookup type is unattested; confirm it against your instance
8TRANSACTION_SOURCE_TYPE_IDWhat kind of document drove the movement (purchase order, sales order, job…)NUMBER
9TRANSACTION_SOURCE_IDThe driving document's id — what it points at depends on the source typeNUMBER
10TRANSACTION_QUANTITYSigned quantity in the transaction UOMNUMBER
11PRIMARY_QUANTITYSigned quantity in the item's primary UOM — the column to aggregateNUMBER
12TRANSACTION_UOMThe UOM the transaction was entered in (the on-hand table spells its equivalent TRANSACTION_UOM_CODE)VARCHAR2
13TRANSACTION_DATEWhen the movement happened — the primary analysis dateDATE
The table's primary analysis date — a real DATE column, no conversion needed
14TRANSFER_ORGANIZATION_IDCounterpart org on inter-org transfersNUMBER
15ACTUAL_COSTUnit cost the movement was valued atNUMBER
16REVISIONItem revision the movement applied toVARCHAR2
17TRANSACTION_REFERENCEFree-form reference entered with the transactionVARCHAR2
18RCV_TRANSACTION_IDThe receiving transaction that drove this movement, for receipt-sourced rows — the cross-ledger link to receivingNUMBER

Field provenance: hand-curated. 1 key field.

Boilerplate SQL

Starting point for reading MTL_MATERIAL_TRANSACTIONS on Databricks — real DATE columns need no conversion, and the org anchor is already in place. The optional LAST_UPDATE_DATE watermark is included. Set your Unity Catalog location, schema, and org values below; they’re substituted into the SQL and the copy button.

Query parameters

7 parameters not filled: <catalog>, <schema>, <inventory_org_id>, <TRANSACTION_ID>, <DATE_FROM>, <DATE_TO>, <watermark>

-- ============================================================
-- Table  : MTL_MATERIAL_TRANSACTIONS — The material transaction ledger — one row per inventory movement or cost update, classified by transaction type, action, and source type, with quantity, date, and the document reference that caused it; the reconciliation backbone for every stock question
-- Purpose: Column-selected read of MTL_MATERIAL_TRANSACTIONS — auto-generated from field metadata
-- Grain  : One row per inventory org (ORGANIZATION_ID) + TRANSACTION_ID
-- Notes  : Auto-generated skeleton for Oracle EBS R12 data landed in your lakehouse. Dates are real DATE/TIMESTAMP columns — no conversion needed. WHO audit columns omitted (see the quirks guide); the optional LAST_UPDATE_DATE watermark filter supports incremental extracts.
-- ============================================================
SELECT
  t.TRANSACTION_ID AS "Transaction id — the ledger's key; distributions, lot, and serial detail join on it",
  t.INVENTORY_ITEM_ID AS "Item id",
  t.ORGANIZATION_ID AS "Inventory organization the movement happened in",
  t.SUBINVENTORY_CODE AS "The subinventory the movement touched",
  t.LOCATOR_ID AS "The locator the movement touched",
  t.TRANSACTION_TYPE_ID AS "The transaction type — the user-facing classification; decodes via MTL_TRANSACTION_TYPES",
  t.TRANSACTION_ACTION_ID AS "The physical action (issue, receipt, transfer…) behind the type",  -- decode t.TRANSACTION_ACTION_ID via FND_LOOKUP_VALUES (LANGUAGE-filtered; confirm the LOOKUP_TYPE against your instance) — see quirks guide #lookups
  t.TRANSACTION_SOURCE_TYPE_ID AS "What kind of document drove the movement (purchase order, sales order, job…)",
  t.TRANSACTION_SOURCE_ID AS "The driving document's id — what it points at depends on the source type",
  t.TRANSACTION_QUANTITY AS "Signed quantity in the transaction UOM",
  t.PRIMARY_QUANTITY AS "Signed quantity in the item's primary UOM — the column to aggregate",
  t.TRANSACTION_UOM AS "The UOM the transaction was entered in (the on-hand table spells its equivalent TRANSACTION_UOM_CODE)",
  t.TRANSACTION_DATE AS "When the movement happened — the primary analysis date",
  t.TRANSFER_ORGANIZATION_ID AS "Counterpart org on inter-org transfers",
  t.ACTUAL_COST AS "Unit cost the movement was valued at",
  t.REVISION AS "Item revision the movement applied to",
  t.TRANSACTION_REFERENCE AS "Free-form reference entered with the transaction",
  t.RCV_TRANSACTION_ID AS "The receiving transaction that drove this movement, for receipt-sourced rows — the cross-ledger link to receiving"
FROM <catalog>.<schema>.MTL_MATERIAL_TRANSACTIONS t
WHERE
  t.ORGANIZATION_ID = <inventory_org_id>  -- inventory org, NOT the operating unit — see quirks guide #two-orgs
  -- AND t.TRANSACTION_ID = <TRANSACTION_ID>
  -- AND t.TRANSACTION_DATE >= DATE '<DATE_FROM>'
  -- AND t.TRANSACTION_DATE <= DATE '<DATE_TO>'
  -- AND t.LAST_UPDATE_DATE >= TIMESTAMP '<watermark>'  -- WHO watermark, bulk-stamped by batch jobs; see quirks guide #who-columns
ORDER BY t.TRANSACTION_ID;

Verified September 2026

Relationships

Diagram of 1-hop neighbors — join details below. FND lookup decode and translation edges are highlighted; they’re the joins newcomers most often get wrong.

Join details

  • MTL_MATERIAL_TRANSACTIONSMTL_SYSTEM_ITEMS_Bforeign key · N:1
    ON MTL_MATERIAL_TRANSACTIONS.INVENTORY_ITEM_ID = MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID AND MTL_MATERIAL_TRANSACTIONS.ORGANIZATION_ID = MTL_SYSTEM_ITEMS_B.ORGANIZATION_ID
  • MTL_MATERIAL_TRANSACTIONSMTL_TRANSACTION_TYPESforeign key · N:1
    ON MTL_MATERIAL_TRANSACTIONS.TRANSACTION_TYPE_ID = MTL_TRANSACTION_TYPES.TRANSACTION_TYPE_ID
  • MTL_MATERIAL_TRANSACTIONSMTL_SECONDARY_INVENTORIESforeign key · N:1
    ON MTL_MATERIAL_TRANSACTIONS.SUBINVENTORY_CODE = MTL_SECONDARY_INVENTORIES.SECONDARY_INVENTORY_NAME AND MTL_MATERIAL_TRANSACTIONS.ORGANIZATION_ID = MTL_SECONDARY_INVENTORIES.ORGANIZATION_ID
  • MTL_MATERIAL_TRANSACTIONSMTL_ITEM_LOCATIONSforeign key · N:1
    ON MTL_MATERIAL_TRANSACTIONS.LOCATOR_ID = MTL_ITEM_LOCATIONS.INVENTORY_LOCATION_ID AND MTL_MATERIAL_TRANSACTIONS.ORGANIZATION_ID = MTL_ITEM_LOCATIONS.ORGANIZATION_ID
  • MTL_MATERIAL_TRANSACTIONSMTL_PARAMETERSforeign key · N:1
    ON MTL_MATERIAL_TRANSACTIONS.ORGANIZATION_ID = MTL_PARAMETERS.ORGANIZATION_ID
  • MTL_TRANSACTION_ACCOUNTSMTL_MATERIAL_TRANSACTIONSforeign key · N:1
    ON MTL_TRANSACTION_ACCOUNTS.TRANSACTION_ID = MTL_MATERIAL_TRANSACTIONS.TRANSACTION_ID AND MTL_TRANSACTION_ACCOUNTS.ORGANIZATION_ID = MTL_MATERIAL_TRANSACTIONS.ORGANIZATION_ID
  • MTL_TRANSACTION_LOT_NUMBERSMTL_MATERIAL_TRANSACTIONSforeign key · N:1
    ON MTL_TRANSACTION_LOT_NUMBERS.TRANSACTION_ID = MTL_MATERIAL_TRANSACTIONS.TRANSACTION_ID AND MTL_TRANSACTION_LOT_NUMBERS.ORGANIZATION_ID = MTL_MATERIAL_TRANSACTIONS.ORGANIZATION_ID
  • MTL_MATERIAL_TRANSACTIONSRCV_TRANSACTIONSforeign key · N:1
    ON MTL_MATERIAL_TRANSACTIONS.RCV_TRANSACTION_ID = RCV_TRANSACTIONS.TRANSACTION_ID AND MTL_MATERIAL_TRANSACTIONS.ORGANIZATION_ID = RCV_TRANSACTIONS.ORGANIZATION_ID

Browse more Inventory tables

More Inventory tables

Maintained by Summit Analytics, a supply chain analytics practice. The tools and references are free — the consulting is selective.

Part of the Summit Analytics reference library.

Work with the practice

Not affiliated with or endorsed by Oracle. Oracle and Oracle E-Business Suite are registered trademarks of Oracle and/or its affiliates.