Purchases
- Last UpdatedAug 11, 2025
- 8 minute read
The Purchases page allows you to enter pricing information and purchase constraints for purchased feedstocks and utilities. From the Purchases page, you can edit the purchase configuration for crudes, imports and utilities.

The Crudes tab shows the crudes that are available for processing by the unit models in Plan, and allows their prices and supply constraints to be set.
The Imports tab shows the intermediate feedstocks that can be purchased for processing or blending in Plan. Feedstocks are materials such as ethanol which may be bought for blending into the gasoline pool, or low sulfur fuel oil which might be purchased for blending with the refineries other fuel oils. Feedstocks are represented by bulk properties which describe the characteristics of the whole material when it is used for blending or processing. This is in contrast to crude oils, which are represented as a series of fractions (or cuts) each with their own set of properties that are carried through the plant.
The following views are available for the Purchases and Imports grids from the View list in the Grid group of the Home ribbon tab:
-
All: Shows all columns.
-
Infeasibility Breakers: Similar to the Optimization view, but also contains a column to activate infeasibility breakers associated with each feedstock. For this to have an effect, infeasibility breakers must be enabled for the optimization.
-
Optimization: Automatically selected when the run type is set to Optimize. Shows relevant columns for this mode.
-
Reference Density: Similar to the Optimization view, but also contains a column for the purchase reference density to be entered for weight/volume price or amount conversions. If no reference density is entered, the actual density of the feedstock is used.
When a feedstock is priced in weight terms and a reference density is used, the weight-based price is converted to a volume basis using the reference density. The purchase then occurs in a volume basis. Only the price is converted using the reference density: any weight/volume conversions necessary for flow constraints use the actual feedstock density.
-
Simulation: Automatically selected when the run type is set to Simulate. Shows relevant columns for this mode.
Manage crudes and imports
While you can add purchases via the Purchases page, the recommended workflow is to add purchases via the Flowsheet page:
-
Select the feed unit where the feedstock will enter the plant by double-clicking on the unit on the flowsheet.
-
Edit the feedstock group associated with the feed unit.
-
In the Feedstock Group Editor choose the appropriate feedstocks.
To add new crudes or imports for purchase:
-
Click Add Purchase in the Purchases group of the Home ribbon tab. A new row is added to the table.
-
Choose the Feedstock for the purchase.
-
Click the arrow button in the Feedstock Group column. If necessary, assign the feedstock to different feedstock groups by clicking the check boxes next to each group name.
-
Enter a Name for the purchase.
-
Enter the Price for the purchase, unless you are using a price set.
-
If needed, enter a reference density for the purchase.
-
Optionally, choose a Market for the purchase. Note that the Market column is only visible if you select All from the View menu in the Grid group of the Home ribbon tab.
-
Enter any Minimum, Maximum or Fixed constraints for the amount of material being purchased.
If you enter a minimum or a fixed constraint, you can also activate a Threshold. When an item has a threshold applied, the amount must then be either zero or at least the minimum amount. For example, you could define a threshold on the purchase of the crude Agbami of 500 kbbl. The valid solution would be either zero or 500 kbbl or more of the crude. That is, it would be impossible to purchase 254 kbbl of the crude, but 503 kbbl would be feasible.
After you optimize the case, you can see the Solution value for each active purchase, and the and the Marginal value for any constraints that were applied.
The following points should be taken into accounts when adding purchases:
-
You must have add permissions for feedstocks to add materials to the Crudes or Imports table.
-
If feeding material to a distillation model, the associated feedstock must have a distillation profile. It must therefore have been published via an assay tool such as Assay.
-
If using per-period constraints for crude or import purchases, be sure to correctly set the associated on the Inventories page.
To edit existing crudes or imports, enter and edit values directly in the Crudes or Imports table.
To remove one or more crudes or imports:
-
Select the items you want to delete.
-
Do either of the following:
-
Click Delete Purchase in the Purchases group of the Home ribbon tab.
-
Right-click on the selected items and choose Delete Purchase from the context menu.
-
-
Click Yes in the confirmation dialog. The selected items are deleted.
Note that deleting a crude or an import from the purchases table does not delete the corresponding feedstock from any feedstock groups. The feedstock should also be manually removed in these.
Exclude a material purchase from a case
In each of the tabs of the Purchases page (Crudes, Imports and Utilities) each material eligible for purchase has a check box under the Active column. To prevent a material from being purchased when optimizing a case, without having to delete the material from the Purchases page, you can clear the corresponding check box.
You can also enter zero in the Fixed column to constrain the amount being purchased.
Price tranches
Crudes, imports and utilities may be purchased with different price tranches, that is, different prices for the same material, each price with its own set of purchase criteria.
Example: A refinery may have a long term contract for a particular crude oil with a set price, while also buying the same crude oil on the open market with a different price. This represents a purchase of the same material, but with different pricing.
To add a price tranche in the Crudes or Imports tab:
-
Select the item to add a tranche for.
-
Click Add Tranche in the Purchases group of the Home ribbon tab, or right click the selected row and choose Add Tranche from the context menu. A new row is added to the grid.
-
Edit the name for the tranche in the Name column. Make sure the Active check box is selected if you want the tranche to be active.
-
Enter the Price of the material, and the corresponding UoM.
-
If needed, enter the reference density of the material, with unit of measure. To see the reference density columns, the View in the Grid group of the Home ribbon tab must be set to Reference Density.
-
Enter any constraints on the amount of material to be sold (Minimum, Maximum or Fixed) and the corresponding UoM.
-
Optionally, enter a Priority for the tranche. If you set a priority, ensure that the tranche has no active minimum or fixed constraints, and the solution is not locked.
Lock purchases
Solution values can be locked during subsequent runs. This means that a solution value will not change in any subsequent run, even if other input to the run is changed.

Example: The flow of naphtha from a crude could be locked, and in subsequent runs it would not be able to change. Therefore, if a fixed swing cut point was changed and the model re-run, the crude blend would have to change in order to match the fixed flow rate.
Locking a solution value acts in a similar way to fixing the value. The advantage over fixing a value is that the lock can be clearly seen in the user interface, so it is simpler to distinguish true fixed values from those which are temporarily locked.
To lock one or more solution values, select the corresponding rows in the table and do either of the following:
-
Click Lock Solution in the Behaviour group of the Home ribbon tab.
-
Right-click on the table and choose Locking > Lock from the context menu.
To unlock one or more solution values, select them and either click Unlock Solution in the ribbon or choose Locking > Unlock from the context menu.
Purchase priorities
Define priorities for tranches of crude, import or utility purchases if you want the optimizer to consider purchasing tranches of a feedstock or utility in a specific order, even if this results in a lower objective function. For example, you might have to purchase a given tranche of a utility for contractual reasons, even if cheaper tranches are available.
Setting a priority on a purchase without distinct tranches has no effect on the optimization.
To set a priority for a tranche in the Crudes, Imports or Utilities tab:
-
Make sure that the Solution value for the purchase is not locked.
-
Make sure there are no minimum or fixed constraints active for the purchase. The optimization fails with an error otherwise.
-
Enter an integer number in the Priority column for the purchase. A lower number corresponds to a higher priority: a tranche with priority 1 is purchased before a tranche with priority 2, and so on.
-
For utility purchases only, define and activate a maximum constraint for the utility. The optimization fails with an error if a priority is defined without an active maximum constraint.
Show differences with the parent case
Whenever a value in the row is different from the value in the parent case within
the model, the unnamed column next to the Active column shows a double arrow icon (
) . Note that this column may not be present in all views.
The Deltas group of the Home ribbon tab lets you further manage these differences:

-
Click the Show button to display a blue triangle icon in the top right corner of every cell whose value overrides the value in the parent case. This allows you to pinpoint the specific cells with overridden values, rather than whole rows.
-
A dark blue triangle means that the value is different from the parent case value.
-
A light blue triangle means that the value is the same as in the parent case, but has been entered manually, so it is still treated as an override. Future changes in the parent case value will not be reflected in the subcase value.

-
-
Click Restore to change the values of the selected cells back to those of the parent case. You can also right click and choose Restore from the context menu.
Tip: To show all the differences between cases within a model, see Compare Cases.
To merge differences across cases, see Update Cases.