Oracle Retail20 min readBy Priyanshu Pandey

Supplier Deals: Off-Invoice and Bill-Backs in RMS

Master Oracle RMS Deal Management. Learn how complex supplier negotiations—including Off-Invoice discounts and Bill-Back rebates—are modelled in the database via DEAL_HEAD and DEAL_DETAIL, and how they impact PO costs and the stock ledger.

Phase 4 · Purchasing · Oracle RMS Series

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.

20 min read📅August 8, 2026✍️Priyanshu Pandey📚Oracle RMS Series

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

  1. A buyer creates a Deal in RMS (type Off-Invoice), specifying the item, supplier, location, and the active date range.
  2. The Deal is approved, moving DEAL_HEAD.STATUS to A.
  3. When a PO is created for that item/supplier during the active dates, RMS automatically detects the deal.
  4. RMS calculates the discount and applies it to ORDLOC.UNIT_COST.
  5. 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

  1. The PO is created at the full Base Cost (e.g., $10.00). The supplier invoices $10.00, and the retailer pays $10.00.
  2. The goods are received (or sold). RMS tracks these events.
  3. A nightly batch process (dealcalc.pc / dealupld.pc) scans the TRAN_DATA table for receipts or sales that match the active Bill-Back deal parameters.
  4. RMS calculates the accrued rebate (e.g., 1,000 units sold * $1.00 = $1,000 rebate).
  5. 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_HEAD
The master record for a deal. Contains supplier, deal type, active dates, and status.
DEAL_DETAIL
The specific items or merchandise hierarchies included in the deal.
DEAL_COMP_PROM
The actual discount components (percentages or amounts) tied to the deal.
DEAL_CALC_QUEUE
A staging table where RMS queues transactions (sales/receipts) waiting to have bill-back rebates calculated.

Deal Header Table (DEAL_HEAD)

ColumnTypeDescription
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
DATEWhen the deal pricing goes into effect.
CLOSE_DATE
DATEWhen 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.

Find active deals for an item/supplier combo
sql
SELECT 
    dh.deal_id,
    dh.supplier,
    dh.billing_type,
    dh.active_date,
    dh.close_date,
    dd.item,
    dcp.deal_comp_type, -- '%' (Percent) or 'A' (Amount)
    dcp.deal_comp_val   -- The discount value (e.g., 5 for 5%, or 1.50 for $1.50)
FROM deal_head dh
JOIN deal_detail dd ON dh.deal_id = dd.deal_id
JOIN deal_comp_prom dcp ON dd.deal_detail_id = dcp.deal_detail_id
WHERE dh.status = 'A'
  AND dh.billing_type = 'OI'
  AND dh.active_date <= SYSDATE
  AND dh.close_date >= SYSDATE
  AND dd.item = '10012345'
  AND dh.supplier = 889900;

Tracking Accrued Bill-Back Income

To see how much rebate income a specific Bill-Back deal has generated so far:

Summing accrued rebates
sql
SELECT 
    dh.deal_id,
    dh.supplier,
    SUM(dai.income_amount) AS total_accrued_rebate,
    SUM(dai.billed_amount) AS total_billed_to_supplier,
    (SUM(dai.income_amount) - SUM(dai.billed_amount)) AS pending_billing
FROM deal_head dh
JOIN deal_actuals_item dai ON dh.deal_id = dai.deal_id
WHERE dh.billing_type = 'BB'
  AND dh.deal_id = 45678
GROUP BY dh.deal_id, dh.supplier;

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 dealcalc batch parsing TRAN_DATA. If a custom interface bypasses RMS APIs and writes directly to ITEM_LOC_SOH without creating the corresponding TRAN_DATA records (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_DATE and CLOSE_DATE to 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:

RetailCoder
All systems operational
v1.0 Live

RC:OMS

Multi-channel order management with double-entry inventory ledger. Amazon, Flipkart, Shopify, WooCommerce — one source of truth.

Launch demo →
v1.0 Live

RC:Storefront

Self-hosted headless e-commerce. Your server, your data, zero transaction fees. Native RC:OMS inventory sync.

Visit Storefront →
Pipeline

RC:Pulse

AI-powered retail analytics and demand forecasting — built natively on top of your RC:OMS and Storefront data.

Request early access →
Built in India 🇮🇳  ·  Architected by Priyanshu PandeyTalk to an engineer →