Supplier Deals: Off-Invoice & Bill-Backs
Retail buyers don't just accept the list price—they negotiate. Whether it's a 5% discount for buying a truckload, or a $2 rebate for every unit sold during a promotion, Oracle RMS handles it through the Deal Management module. Understand how DEAL_HEAD drives cost calculations and complex rebate billing.
In large-scale retail, the base cost of an item is rarely the final word. Buyers constantly negotiate temporary price reductions to support marketing campaigns, volume discounts to lower inventory costs, or rebates based on sales performance.
Oracle Retail Merchandising System (RMS) manages these negotiations through the Deal Management module. This guide explores the two primary deal architectures—Off-Invoice and Bill-Back—and how the DEAL_HEAD tables interact with Purchase Orders to manipulate the true cost of goods.
1. Off-Invoice Deals
An Off-Invoice Deal is the simplest and most common type of supplier discount. It is a reduction in the unit cost that is applied before the supplier sends the invoice.
If the base cost of an item is $10.00, and there is an active $1.00 Off-Invoice deal, the Purchase Order will be generated with a unit cost of $9.00.
How RMS Applies Off-Invoice Deals
- A buyer creates a Deal in RMS (type
Off-Invoice), specifying the item, supplier, location, and the active date range. - The Deal is approved, moving
DEAL_HEAD.STATUStoA. - When a PO is created for that item/supplier during the active dates, RMS automatically detects the deal.
- RMS calculates the discount and applies it to
ORDLOC.UNIT_COST. - The PO is transmitted to the supplier with the discounted cost, and the supplier's invoice is expected to match it.
Inventory Valuation
Off-Invoice deals directly reduce the Weighted Average Cost (WAC) of the inventory upon receipt. Because the PO cost is lower, the inventory hits the Stock Ledger at the discounted valuation.
2. Bill-Back (Rebate) Deals
A Bill-Back Deal (or Rebate) is more complex. The retailer pays the full base cost upfront on the PO, but the supplier agrees to refund a portion of the cost later, based on specific performance metrics.
Bill-Backs are typically tied to one of two triggers:
- Receipts: The supplier rebates $1.00 for every unit received into the warehouse during the deal period.
- Sales (Scan-Based): The supplier rebates $1.00 for every unit actually sold to a customer at the cash register during a specific promotional week.
The Bill-Back Lifecycle
- The PO is created at the full Base Cost (e.g., $10.00). The supplier invoices $10.00, and the retailer pays $10.00.
- The goods are received (or sold). RMS tracks these events.
- A nightly batch process (
dealcalc.pc/dealupld.pc) scans theTRAN_DATAtable for receipts or sales that match the active Bill-Back deal parameters. - RMS calculates the accrued rebate (e.g., 1,000 units sold * $1.00 = $1,000 rebate).
- RMS generates a financial claim against the supplier. This claim is sent to the financials system (like ReIM or Oracle Financials) to deduct $1,000 from the supplier's next payment.
Stock Ledger Timing
Unlike Off-Invoice deals, Bill-Backs do not immediately lower the inventory WAC. The inventory is valued at $10.00. The rebate is treated as a separate income stream (or a reduction in Cost of Goods Sold) recognized at the end of the financial period.
3. Deal Thresholds and Tiers
Supplier negotiations often involve volume tiers. RMS supports this through Complex Deals with thresholds.
For example:
- Buy 0 - 5,000 units: 0% discount.
- Buy 5,001 - 10,000 units: 5% off-invoice discount.
- Buy 10,001+ units: 10% off-invoice discount.
Target vs. Linear Deals
- Target (Retroactive): If you hit the 10,001 tier, you get the 10% discount on all 10,001 units. (Often handled as a Bill-Back at the end of the quarter).
- Linear (Stepped): You pay full price for the first 5,000, get 5% off the next 5,000, and 10% off the 1st unit over 10,000.
The complexity of tracking cumulative order volumes across multiple POs to determine tier eligibility is handled by the RMS deal calculation batches.
4. Core Tables Reference
Deal Header Table (DEAL_HEAD)
| Column | Type | Description |
|---|---|---|
DEAL_ID | NUMBER(10) | Unique identifier for the deal. |
SUPPLIER | NUMBER(10) | The vendor funding the deal. |
BILLING_TYPE | VARCHAR2(2) | 'OI' (Off-Invoice) or 'BB' (Bill-Back). |
STATUS | VARCHAR2(1) | 'W' (Worksheet), 'S' (Submitted), 'A' (Approved), 'C' (Closed). |
ACTIVE_DATE | DATE | When the deal pricing goes into effect. |
CLOSE_DATE | DATE | When the deal pricing expires. |
5. SQL Deep Dives
Finding Active Off-Invoice Deals for an Item
Before a PO is generated, it's highly useful to know if an item has an active deal that will lower its cost.
Tracking Accrued Bill-Back Income
To see how much rebate income a specific Bill-Back deal has generated so far:
6. Common Gotchas
Important Gotchas
- !
PO Creation Date vs Receipt Date. If an Off-Invoice deal expires on Friday, and a buyer creates the PO on Friday (getting the discount), but the goods aren't received until next Wednesday, does the discount still apply? RMS allows you to configure whether deals are evaluated based on Order Date or Receipt Date. Misalignment here causes massive invoice matching discrepancies.
- !
Deal overlapping and stacking. If an item is on a 5% off-invoice deal, and the buyer negotiates another $1.00 off-invoice deal for the same period, RMS must decide how to stack them. Are they additive, or is it cascading (5% off, and then $1.00 off the new total)? This is controlled by the Deal Calculation Indicator.
- !
Missing TRAN_DATA triggers. Bill-Back deals rely on the
dealcalcbatch parsingTRAN_DATA. If a custom interface bypasses RMS APIs and writes directly toITEM_LOC_SOHwithout creating the correspondingTRAN_DATArecords (e.g., Tran Code 1 for Receipts), the Bill-Back engine will never see the transaction and the rebate will be lost.
7. Key Takeaways
Key Takeaways
- Off-Invoice Deals ('OI') reduce the unit cost directly on the Purchase Order. This lowers the inventory valuation (WAC) immediately upon receipt.
- Bill-Back Deals ('BB') leave the PO cost at full price and calculate a retroactive rebate based on actual receipts or sales. This rebate is billed back to the supplier later.
- Deals require a status of Approved ('A') and must fall within their
ACTIVE_DATEandCLOSE_DATEto be applied by the RMS ordering engine. - Complex, multi-tiered deals rely on heavy nightly batch processing (
dealcalc) to sum volumes across multiple orders and calculate retroactive tier eligibility.
8. Official Oracle Resources
For further reading, consult the official Oracle documentation:


