CNC milling pricing explained
How a CNC milling price is assembled, setting by setting, with a worked example priced by the engine itself.
These are the settings that decide how the work is priced, as opposed to the machine that does it or the material it is made from. They are stored with the configuration.
Every one of them shows up in the breakdown when it affects a price, so if a number surprises you, the answer is on the screen.
A worked example
These numbers were computed by the pricing engine against the shipped CNC milling job shop configuration - the one you get if you start from the template. They are regenerated whenever the engine changes, so they cannot drift away from what your own console would show for the same part.
| Line | One part | Ten parts |
|---|---|---|
| Material | €6.99 | €70.84 |
| Production | €248.71 | €484.16 |
| Total, incl. shipping and VAT | €325.58 | €666.40 |
Note how the price per part falls with quantity: a batch shares what is done once - a set-up, a program, a whole build on a powder process, the tool in moulding. That is where the quantity break comes from. It is not a discount you are giving away; it is your cost structure, passed on.
Every setting on this page
These are in the same order as the editor, with the same help text. Each one has an anchor, and the ? beside a field in your console links straight to it - so if you are reading this because you clicked one, the setting you were looking at is highlighted.
Tolerances, finishes and threads
Tolerance classestolerancesbasic
The tolerance classes buyers can choose; the first row is the default. Tick review on any class you will not price without seeing a drawing.
Price: The time factor multiplies finishing time and the extra minutes are added to inspection; a reviewed class sends the line to you (DFM `tolerance_requires_review`).
Typical: ISO 2768-m 1.0 / 2768-f 1.25 / ±0.025 1.6 reviewed / ±0.01 2.2 reviewed.
Ididyou must set this
Buyer seeslabelyou must set this
What they getnote
Finishing timetime_factoryou must set this
Extra inspectionextra_inspection_min
Engineer reviewsreview
Surface finishessurface_finishesbasic
The surface roughness levels buyers can choose; the first row is the default.
Price: The time factor multiplies finishing time; a reviewed level sends the line to you.
Typical: Ra 3.2 1.0 / Ra 1.6 1.3 / Ra 0.8 1.8 / Ra 0.4 2.6 reviewed.
Ididyou must set this
Buyer seeslabelyou must set this
What they getnote
Finishing timetime_factoryou must set this
Engineer reviewsreview
Threads a buyer may countmax_threads
The largest number of threaded holes or threads a buyer may enter. 0 hides the option.
Price: Each thread adds the material's tapping time to the cycle and a feature to programming. Threads are never read from the file: the buyer counts them.
Typical: 40 milled, 10 turned.
Stock, cutting, set-ups and labour
Stock allowance per sidestock_allowance_mmbasic
Extra material left on every side of the part's box when the stock is cut.
Price: Adds to the stock you buy and to the volume roughed away.
Typical: 2-3 mm.
Standard plate thicknessesplate_thicknesses_mm
The plate thicknesses you buy. The stock's thinnest side rounds up to the next one; thicker than all of them, it is sawn from block at its own size.
Price: A part 21 mm thick on a 25 mm plate pays for 25 mm of material and the roughing of 4 mm more.
Typical: 5, 6, 8, 10, 12, 15, 20, 25, 30, 40, 50 ... 150 mm.
Reference roughing toolreference_tool_mm
The end mill diameter your roughing rates assume.
Price: Sets how deep a cut counts as deep: the standard reach times this diameter.
Typical: 10-16 mm.
Standard reach (L/D)reach_ratio_standard
How many diameters deep a standard tool cuts at full rate.
Price: Pockets and walls deeper than this rough more slowly.
Typical: 4.
Extended reach (L/D)reach_ratio_extended
How many diameters deep your longest tools reach.
Price: No direct price effect: deeper pockets are sent to review (DFM `deep_pocket`).
Typical: 8.
Deep-cut slowdowndeep_cut_slowdown_pct
Extra roughing time for every multiple of the standard reach a cut goes beyond it.
Price: A pocket twice the standard reach roughs this much slower.
Typical: 40-60 %.
Freeform finishingfreeform_factor
Finishing-time multiplier on sculpted (B-spline) surfaces, machined with a ball mill in fine steps.
Price: Applied to the freeform share of a STEP part's surface.
Typical: 2-4.
Small internal radiussmall_radius_mm
Internal corner radius below which a smaller tool has to rest-machine the corners.
Price: A STEP part with a corner under this pays the rest-machining minutes below.
Typical: 1.5-3 mm.
Rest machiningsmall_radius_extra_min
Machine minutes for rest-machining small internal corners.
Price: Added once per part when the smallest internal radius is under the limit.
Typical: 3-6 min.
Largest drilled holemax_drill_mm
Holes up to this diameter are drilled; larger ones are milled with the rest of the part.
Price: A drilled hole costs its depth over the drilling feed; a milled one is roughed and finished.
Typical: 16-25 mm.
Per drilled holehole_overhead_s
Positioning, approach and retract for one hole.
Price: Added to every drilled hole.
Typical: 4-8 s.
Peck above depth / Øpeck_depth_ratio
Holes deeper than this many diameters are peck-drilled.
Price: Pecked holes take the peck factor longer.
Typical: 3.
Peck-drilling factorpeck_factor
How much longer a pecked hole takes than a straight plunge.
Price: Multiplies the drilling time of deep holes.
Typical: 1.5-2.
Deep hole above depth / Ømax_hole_depth_ratio
Holes deeper than this many diameters need gun drilling.
Price: No direct price effect: they are reported (DFM `deep_hole`).
Typical: 10.
Smallest standard holemin_hole_mm
The smallest hole you drill with standard tooling.
Price: No direct price effect: smaller ones are reported (DFM `tiny_hole`).
Typical: 1 mm.
Undercut toleranceundercut_limit_mm2
Surface area no set-up direction reaches that you still accept as reachable.
Price: Above it the part needs a 5-axis machine or special tools; a 3-axis quote is sent to review (DFM `undercut`).
Typical: 5-20 mm².
Set-ups when unmeasureddefault_setups
Set-ups assumed if a part's accessibility was not measured.
Price: Set-ups drive set-up labour, loading and programming.
Typical: 2.
Tools per set-uptools_per_setup
Tools a typical set-up uses.
Price: Each one is a tool change per part per set-up, at the machine's tool-change time.
Typical: 4-8.
Rapids and air cuttingrapid_overhead_pct
Time moving between cuts, on top of cutting time.
Price: Multiplies the cutting part of the cycle.
Typical: 10-20 %.
Thin plate above length / thicknessmax_plate_aspect
Longest over thinnest extent above which a plate counts as large and thin.
Price: No direct price effect: it is reported (DFM `large_thin_plate`) and adds the large-flat risk allowance.
Typical: 40-60.
Programming: per partprogramming_base_minbasic
CAM programming and checking that every unique part needs, before counting anything.
Price: Charged once per line at the engineer rate, so it is a large share of a one-off and almost nothing of a hundred.
Typical: 20-45 min.
Programming: per set-upprogramming_per_setup_min
Programming minutes for each set-up or operation.
Price: Once per line; parts that need more set-ups cost more to program.
Typical: 10-20 min.
Programming: per featureprogramming_per_feature_min
Programming minutes per hole, pocket, boss and thread recognised in a STEP file or counted by the buyer.
Price: Once per line. A mesh upload has no recognised features, so only its threads count.
Typical: 1-3 min.
Programming: per complexity levelprogramming_per_level_min
Programming minutes per step of the part's complexity level (1 to 5).
Price: Once per line; a sculpted part takes longer to program than a bracket.
Typical: 5-15 min.
Set-up per set-upsetup_minbasic
Fixturing, zeroing and first-part checks for one set-up or operation.
Price: Charged per set-up for every lot at the technician rate; it is why one part costs so much more each than fifty.
Typical: 20-60 min.
Parts per set-uplot_size
How many parts you run on one set-up before the fixture comes off.
Price: Set-ups are charged once per lot, so a larger lot spreads them over more parts.
Typical: 25-100.
Load and unload per partload_unload_min
Clamping a part and taking it out again, per hand-loaded set-up or operation.
Price: Charged for every part at the operator rate.
Typical: 0.5-2 min.
Deburring per partdeburr_base_min
Breaking edges and cleaning a part, whatever its size.
Price: Charged per part at the finisher rate.
Typical: 1-3 min.
Deburring per 100 cm²deburr_min_per_100cm2
Extra deburring for every 100 cm² of surface.
Price: Bigger parts have more edges; charged per part.
Typical: 0.5-2 min.
Inspection per partinspection_min
The standard check of every part, before the tolerance class adds its own minutes.
Price: Charged per part at the inspector rate.
Typical: 1-3 min.