Rate Contract
A Rate Contract is a pre-negotiated agreement with a vendor that locks in fixed prices for specific materials over a defined period. Instead of going through the full quotation cycle (MR → RFQ → Vendor Offers → Comparison) every time you need commonly purchased materials, a rate contract lets you generate Purchase Orders directly at the agreed rates. This eliminates repetitive vendor negotiations, ensures price consistency across all projects, and significantly accelerates the procurement timeline for high-volume items.
Rate contracts are particularly valuable in construction and facilities management where the same materials — cement, steel, sand, pipes, electrical fittings — are purchased repeatedly across multiple projects. By negotiating volume-based pricing once and locking it into a contract, organizations achieve both cost savings and procurement efficiency.
How Rate Contracts Work
The rate contract workflow bypasses the standard RFQ cycle for contracted materials. Here is how the two procurement paths compare:
| Step | Standard Procurement | Rate Contract Procurement |
|---|---|---|
| 1 | Material Requisition (MR) | Material Requisition (MR) |
| 2 | Create RFQ & send to vendors | Skip — rates already agreed |
| 3 | Collect vendor offers | Skip — vendor already selected |
| 4 | Compare offers & select vendor | Skip — comparison not needed |
| 5 | Create Purchase Order | Create PO directly from rate contract |
| 6 | Receive materials (MRN) | Receive materials (MRN) |
By eliminating steps 2–4, rate contracts can reduce procurement lead time by several days to weeks, depending on the complexity of the items involved.
Contract Header Fields
Each rate contract captures the overall agreement details in its header. These fields identify the vendor, validity period, currency, and current status of the contract.
| Field | Description | Required |
|---|---|---|
| Contract Code | Unique system-generated identifier for the rate contract (e.g., RC/00123). Auto-assigned via the omni_object_sequence numbering system. Maximum 80 characters. |
Auto |
| Vendor | The vendor with whom the rate contract is established. Selected from the Vendor Directory. The vendor must be registered and active before a rate contract can be created. | Yes |
| Currency | The transaction currency for all rates in the contract (e.g., AED, USD, INR). Supports multi-currency operations — each contract is denominated in a single currency, and rates on POs generated from the contract inherit this currency. See Currencies. | Yes |
| Valid From | The start date of the contract validity period. POs can only be generated from the contract on or after this date. | Yes |
| Valid To | The end date of the contract validity period. After this date, the contract is considered expired and no new POs can be generated from it. Stored as Start_To in the database. |
Yes |
| Status | Current lifecycle status of the contract: Draft, Active (approved), or Expired. See Contract Statuses below. | Auto |
| Attachment | File attachment for supporting documents such as the signed contract agreement, vendor correspondence, terms and conditions, or price negotiation records. Supports any file type. | No |
| Created On | Timestamp when the rate contract was first created in the system. Auto-recorded. | Auto |
| Created By | The user who created the rate contract. Auto-recorded from the logged-in user. | Auto |
Material Line Items (Contract Details)
Each rate contract contains one or more material line items that specify exactly which materials are covered, at what rate, and with what quantity constraints. These detail lines are the core of the agreement — they define the pricing and volume terms for each material.
| Field | Description | Required |
|---|---|---|
| Material | The material covered under this contract line. Selected from the Material Master. Each material can appear only once per contract. | Yes |
| Rate | The fixed unit price agreed with the vendor for this material. This is the price that will be auto-populated on POs generated from this contract. Stored as a monetary value in the contract’s currency. | Yes |
| Min Qty Per Order | The minimum quantity that must be ordered each time a PO is raised for this material. Orders below this threshold are not permitted. Use this to enforce the vendor’s minimum order quantity (MOQ) requirement. Set to 0 or leave blank if there is no minimum. | No |
| Max Qty Per Order | The maximum quantity that can be ordered in a single PO for this material. This prevents unexpectedly large orders that might exceed the vendor’s supply capacity or the agreed pricing tier. Set to 0 or leave blank if there is no per-order cap. | No |
| Max Qty For Contract | The total maximum quantity that can be ordered across all POs for the entire duration of the contract. Once cumulative orders reach this ceiling, no further POs can be generated for this material from this contract. This represents the overall volume commitment in the agreement. | No |
| FOC Qty Per Unit Purchase | The free-of-charge (FOC) quantity the vendor provides for each unit purchased. For example, a value of 0.05 means the vendor gives 0.05 units free for every 1 unit purchased (i.e., buy 20, get 1 free). This incentive is factored into the effective cost calculation. Set to 0 if no FOC applies. |
No |
FOC (Free of Charge) quantity is a common vendor incentive in construction procurement. If the FOC value is 0.10, it means for every 1 unit purchased, the vendor provides an additional 0.10 units free. On an order of 100 bags of cement, this translates to 10 extra bags at no cost, effectively reducing the unit price by approximately 9%. Always negotiate FOC terms alongside rates for high-volume materials.
Quantity Controls Explained
The three quantity constraint fields work together to govern how materials are ordered under the contract. Understanding these controls is essential for setting up contracts correctly.
| Control | Scope | Purpose | Example |
|---|---|---|---|
| Min Qty Per Order | Single PO | Ensures each order meets the vendor’s minimum delivery threshold. Prevents uneconomically small orders that waste logistics resources. | Min = 50 bags. A PO for 30 bags is rejected; a PO for 60 bags is accepted. |
| Max Qty Per Order | Single PO | Caps each individual order to prevent over-ordering in a single transaction. Protects against stockpiling and ensures the vendor can fulfil each order. | Max = 500 bags. A PO for 600 bags is rejected; a PO for 400 bags is accepted. |
| Max Qty For Contract | Entire contract lifetime | Limits the total volume commitment over the contract period. Once cumulative orders reach this ceiling, the material line is considered exhausted even if the contract is still within its date range. | Contract max = 5,000 bags. If 4,800 bags have been ordered already, the next PO can only be for up to 200 bags. |
When generating a PO from a rate contract, the system validates the requested quantity against all three constraints. The order is blocked if the quantity falls below the minimum, exceeds the per-order maximum, or would push cumulative orders beyond the contract maximum. The system automatically adjusts the maximum available quantity based on what has already been ordered.
Creating a Rate Contract
Follow these steps to create a new rate contract in the system:
- Navigate to Rate Contracts — Go to Procurement → Rate Contract. The list page displays all existing rate contracts with their status, vendor, validity dates, and contract code.
- Click “Add” or “Create New” — The system creates a new rate contract header with an auto-generated contract code.
- Select the vendor — Choose the vendor from the Vendor Directory dropdown. The vendor must already be registered in the system. If the vendor is not listed, register them first via Vendor Registration.
- Set the currency — Select the transaction currency for the contract. All rates in the material lines will be denominated in this currency. For international vendors, choose the appropriate foreign currency (e.g., USD, EUR).
- Define the validity period — Set the Valid From and Valid To dates. The contract is only usable for PO generation within this date range. Typical contract durations are 6 months, 1 year, or aligned with a specific project’s timeline.
-
Add material line items — Click Add Item to add materials from the Material Master. For each material, enter:
- The agreed Rate (unit price)
- Min Qty Per Order (vendor’s minimum order quantity, if applicable)
- Max Qty Per Order (per-order cap, if applicable)
- Max Qty For Contract (total volume commitment, if applicable)
- FOC Qty Per Unit (free-of-charge bonus quantity, if applicable)
- Attach supporting documents — Optionally upload the signed contract agreement, vendor quotation letter, negotiation notes, or terms and conditions using the attachment field.
- Save the contract — Save the contract. It is created in Draft status and is not yet usable for PO generation.
- Submit for approval — Submit the draft contract to the designated approver. Once approved, the status changes to Active and the contract becomes available for PO creation.
Contract Statuses
A rate contract moves through three lifecycle states. The status determines whether the contract can be used for PO generation.
| Status | Description | PO Generation | Editable |
|---|---|---|---|
| Draft | The contract has been created but not yet approved. All fields and material lines are fully editable. The contract is not available for PO creation. | No | Yes |
| Active (Approved) | The contract has been approved by the designated authority. The approval timestamp and approver are recorded. The contract is now available for direct PO generation. Material lines and rates are locked to prevent unauthorized changes. | Yes (within validity dates) | No |
| Expired | The contract’s Valid To date has passed, or the contract has been manually deactivated. No new POs can be generated. Existing POs created from this contract remain valid and unaffected. | No | No |
Draft → (Submit for Approval) → Active → (Validity period ends) → Expired. A contract can also transition from Draft → Expired if it is never approved before its Valid To date passes. Active contracts cannot be reverted to Draft.
Approval Workflow
Rate contracts require formal approval before they become active. The approval ensures that negotiated rates, vendor selection, quantity commitments, and contract terms have been reviewed by authorized personnel.
Approval Process
- Draft contract is submitted — The creator submits the contract for approval after completing all header fields and material lines.
- Approver reviews the contract — The designated approver (typically a procurement manager or department head) reviews the vendor, rates, quantity constraints, FOC terms, and validity period.
- Approval decision — The approver either approves or returns the contract for revision.
- Approval recorded — On approval, the system records the Approved On timestamp and Approved By user. The contract status changes to Active.
Approval Actions
| Action | Result |
|---|---|
| Approve | Contract status changes to Active. The Approved_On and Approved_By fields are populated. The contract becomes available for PO generation immediately. |
| Return / Reject | Contract remains in Draft status with reviewer comments. The creator can revise the rates, materials, or terms and resubmit. |
A rate contract must be approved before any POs can be generated from it. Draft contracts are not visible in the PO creation workflow’s rate contract selection. This prevents unauthorized pricing agreements from being used in procurement.
Generating Purchase Orders from a Rate Contract
The primary benefit of rate contracts is the ability to create POs directly without going through the RFQ cycle. When a project needs materials covered by an active rate contract, the procurement team can generate a PO in a few steps:
- Open the active rate contract — Navigate to Procurement → Rate Contract and select the relevant contract. Verify it is in Active status and the current date falls within the validity period.
-
Select “Create PO” — Click the action to generate a Purchase Order from this contract. The system calls
omni_sp_scm_CreatePurchaseOrder_For_RateContractto create the PO. -
Choose materials and quantities — Select which materials from the contract to include in this PO and specify the order quantities. The system validates each quantity against:
- Min Qty Per Order — the order must meet the minimum
- Max Qty Per Order — the order must not exceed the per-order cap
- Max Qty For Contract — cumulative orders must not exceed the contract total
- Rates auto-populate — The PO line items are automatically filled with the contracted rates, currency, and vendor details. No manual rate entry is needed.
- Specify delivery details — Add the delivery job/site, required delivery date, and any special instructions.
- Submit the PO — Save and submit the PO for approval through the standard Purchase Order workflow.
Additionally, rate contracts can be linked during RFQ processing. If an RFQ is raised for materials that are covered by an active rate contract, the system can create vendor offer entries from the contract via omni_sp_scm_CreateVendorPOOfferFromRFQ_For_RateContract, automatically populating the vendor’s offer at the contracted rate.
After a PO is created from a rate contract, quantities on individual PO lines can be adjusted using omni_sp_scm_UpdatePODetailQTYForRateContract. The system re-validates the updated quantity against the contract’s min/max constraints and remaining contract balance before allowing the change.
Multi-Currency Support
Rate contracts fully support multi-currency operations, which is essential for organizations that procure from international vendors:
- Contract currency — Each rate contract is denominated in a single currency specified in the
Currency_Codefield (e.g., AED, USD, EUR, INR, GBP). All material rates within the contract are expressed in this currency. - PO currency inheritance — When a PO is generated from the rate contract, it inherits the contract’s currency. The PO amounts are in the contract currency and will be converted at the applicable exchange rate for accounting purposes.
- Multiple contracts per vendor — You can have rate contracts with the same vendor in different currencies. For example, a steel supplier might have one contract in USD for imported steel and another in AED for locally sourced steel.
- Exchange rate handling — The exchange rate is applied at the PO or invoice level, not at the rate contract level. This means the contracted rate remains fixed in the agreed currency, while the local currency equivalent fluctuates with exchange rates.
Bulk Upload
For contracts with a large number of material lines, JobNext provides a bulk upload feature to import rate contract details from a spreadsheet rather than entering each line manually.
Upload Process
- Download the template — From the rate contract screen, download the upload template spreadsheet. This template contains the required column headers matching the staging table (
omni_upload_Rate_Contract). - Fill in the spreadsheet — Enter the material codes, rates, min/max quantities, FOC quantities, and other details for each material line. Ensure the material codes match existing entries in the Material Master.
- Upload the file — Navigate back to the rate contract and use the Upload function. The system loads the spreadsheet data into the
omni_upload_Rate_Contractstaging table. - Validation and import — The system executes
omni_sp_upload_scm_rate_contractto validate and import the data. Material codes are verified against the master, and any invalid entries are flagged with error messages. - Review imported lines — After successful import, all material lines appear in the contract’s detail grid. Review the imported data for accuracy before submitting for approval.
Bulk upload is especially useful when establishing rate contracts for a large material catalog (50+ items), migrating rate contracts from a previous system, or renewing an existing contract with updated rates for all materials. For contracts with fewer than 10–15 materials, manual entry is usually faster.
Contract Renewal and Expiry Management
Rate contracts have a finite validity period. Proactive management of expiring contracts is critical to avoid procurement gaps where materials suddenly have no agreed pricing.
Expiry Behavior
- When the Valid To date passes, the contract status automatically becomes Expired.
- No new POs can be generated from an expired contract.
- Existing POs that were created before expiry remain valid and can still be received and invoiced normally.
- The system does not automatically alert users when a contract is about to expire. Users must monitor expiry dates proactively.
Renewal Process
JobNext does not have a one-click “renew” function that extends an existing contract. Instead, renewal involves creating a new contract:
- Review the expiring contract — Open the current contract and review the materials, rates, quantity commitments, and actual utilization (how much of the contracted volume was actually ordered).
- Negotiate updated terms — Contact the vendor to negotiate rates for the renewal period. Consider market price changes, the previous contract’s utilization, and any FOC adjustments.
- Create a new rate contract — Create a new contract with the same vendor, updated rates, new validity dates, and revised quantity constraints. You can use the bulk upload feature to quickly populate the material lines if re-entering a large number of items.
- Ensure continuity — Set the new contract’s Valid From date to the day after the old contract’s Valid To date to avoid any gap in coverage.
- Approve the new contract — Submit and get the new contract approved before the old one expires.
If a rate contract expires before its replacement is approved, procurement teams will have to revert to the standard RFQ cycle for those materials, causing delays. Start the renewal process at least 30 days before expiry to allow time for vendor negotiation, contract creation, and internal approval.
Rate Contract vs. Standard RFQ: When to Use Which
Not every material purchase should go through a rate contract. The table below helps determine the right procurement approach:
| Criteria | Use Rate Contract | Use Standard RFQ |
|---|---|---|
| Purchase frequency | Materials ordered regularly (weekly, monthly) across multiple projects | One-time or infrequent purchases for a specific project |
| Price stability | Prices are relatively stable or the vendor agrees to fix them for the contract period | Prices are volatile and vary significantly between orders (e.g., commodities with daily fluctuations) |
| Volume | High volume with enough demand to negotiate bulk discounts | Low volume or specialty items where competitive bidding yields better pricing |
| Vendor relationship | Established, trusted vendor with proven quality and reliability | New vendors or situations where you want to compare multiple suppliers |
| Procurement speed | Fast turnaround needed — materials required urgently and repeatedly | Timeline allows for the full quotation cycle (typically 1–3 weeks) |
| Material type | Standard, commoditized materials (cement, steel, sand, pipes, fittings, consumables) | Custom-fabricated items, specialized equipment, or materials requiring detailed technical evaluation |
Many organizations use rate contracts for their top 20–30 high-volume materials while using the standard RFQ process for everything else. This hybrid approach maximizes efficiency for routine purchases while maintaining competitive pricing for specialty items.
Best Practices
- Negotiate before project mobilization — Finalize rate contracts for high-volume materials (cement, steel, aggregate, pipes, fittings) before projects begin execution. This locks in pricing during the budgeting phase, ensures that estimates match procurement costs, and prevents delays at the start of the project.
- Monitor expiry dates proactively — Maintain a calendar or report of all active rate contracts with their expiry dates. Begin renewal negotiations at least 30 days before a contract expires. Coverage gaps force teams back to the slower RFQ cycle and may result in higher spot-market prices.
- Set realistic quantity constraints — Base the Min Qty Per Order, Max Qty Per Order, and Max Qty For Contract values on actual historical consumption data and vendor delivery capabilities. Setting the contract maximum too low causes premature exhaustion; setting it too high over-commits your organization.
- Leverage FOC terms for high-volume items — Always negotiate free-of-charge (FOC) quantities alongside unit rates, especially for high-volume consumables. Even a small FOC percentage (2–5%) can yield significant savings over the contract period across all projects.
- One vendor, one contract, one currency — Keep each rate contract focused on a single vendor and currency. If you procure from the same vendor in multiple currencies, create separate contracts. This avoids confusion in PO generation and simplifies financial reconciliation.
- Register vendors before creating contracts — Ensure all rate contract vendors are fully registered in the Vendor Directory with accurate contact details, tax identifiers, and bank information. A rate contract is only as good as the vendor record it points to.
- Attach signed agreements — Always upload the signed contract document (PDF or scan) to the rate contract’s attachment field. This provides an audit trail and legal reference if there are future disputes about agreed rates or terms.
- Review utilization before renewal — Before renewing a contract, analyze how much of the contracted volume was actually used. If utilization was below 50%, reconsider whether a rate contract is appropriate for those materials, or adjust the quantity commitments downward for the new contract.
- Use bulk upload for large catalogs — When a rate contract covers more than 15–20 materials, use the spreadsheet upload feature instead of manual entry. This is faster, reduces data entry errors, and provides a reviewable offline record of all contracted rates.
- Coordinate across projects — Rate contracts benefit the entire organization, not just one project. When negotiating, aggregate demand from all active and upcoming projects to maximize volume and negotiating leverage. The procurement team should communicate active rate contracts to all project managers so they are aware of available contracted pricing.
Troubleshooting
| Problem | Cause | Solution |
|---|---|---|
| Cannot generate PO from contract | Contract is still in Draft status (not approved), or the current date is outside the validity period. | Verify the contract status is Active and the current date falls between Valid From and Valid To. Submit for approval if still in Draft. |
| PO quantity rejected — below minimum | The requested quantity is less than the Min Qty Per Order set on the material line. | Increase the PO quantity to at least the minimum, or ask an admin to adjust the min qty on the contract if the vendor has agreed to a lower threshold. |
| PO quantity rejected — exceeds maximum | The requested quantity exceeds the Max Qty Per Order or the remaining balance under Max Qty For Contract. | Reduce the quantity. If the contract max has been reached, either negotiate an amendment with the vendor or procure the excess via the standard RFQ process. |
| Contract shows as expired but dates are correct | The status field was manually set or a system update changed the status. | Check the Valid To date carefully (time component may matter). Contact the system administrator if the status appears incorrect. |
| Material not found during line item entry | The material is not registered in the Material Master, or it is inactive. | Register the material in the Material Master first, then add it to the rate contract. |
| Vendor not available in dropdown | The vendor is not registered or is inactive in the Vendor Directory. | Register the vendor via Vendor Registration and ensure their status is active. |
| Bulk upload fails with errors | Material codes in the spreadsheet do not match the Material Master, or required columns are missing. | Download a fresh template, verify all material codes exist in the system, and ensure no required fields are blank. Re-upload after corrections. |
Related Pages
- Vendor Directory — Manage the vendor records that rate contracts are linked to
- Vendor Registration — Register new vendors before creating rate contracts
- Material Master — The material catalog from which contract line items are selected
- Material Requisition — The demand document that triggers procurement, including rate-contract-based POs
- Purchase Order — POs generated from rate contracts follow the standard PO workflow
- RFQ & Vendor Offers — The alternative procurement path when rate contracts are not available
- Currencies — Multi-currency configuration used by rate contracts