3PL Pricing Calculator: AI Quotes Storage, Pick and Pack Rates

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for 3PL Pricing Calculator: AI Quotes Storage, Pick and Pack Rates.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for 3PL Pricing Calculator: AI Quotes Storage, Pick and Pack Rates.

A 3PL can build a pricing calculator by working out its own cost per pallet position, per order and per unit, adding a target margin to each line, then letting AI turn each client enquiry into the profile fields the spreadsheet multiplies out. The sheet does the sums; AI reads the enquiry and drafts the quote.

Here you sit on the operator's side of the table: you run the warehouse and need a rate card that wins work without losing money. If you are the brand comparing quotes, read how to compare 3PL quotes line by line instead. The key discipline here is to price from your own costs first and look at the market second, not the other way round.

Follow me on Instagram@sagnikteaches

Why quoting from the market average loses money quietly

Most small 3PLs set rates by looking at what other providers publish and shaving a little. That works until a client's profile is unusual: lots of tiny SKUs, heavy items, a high return rate, or orders that average four lines instead of one. The rate card was built for the typical client, and the unusual one is quoted on the same numbers and quietly loses money on pick labour.

Connect on LinkedInSagnik Bhattacharya

Published ranges still help as a sanity check. Red Stag Fulfillment's pricing guide, which cites the Warehousing and Fulfillment 2025 cost survey, gives typical dollar ranges: one-off account set-up of about $250 to $1,000 or more, receiving of about $5 to $15 a pallet, pallet storage of about $15 to $40 a month, and pick and pack from about $0.20 to $2.00 or more an order, often plus a per-item fee, with e-commerce averages of $3.25 or more an order. Those figures come from a 3PL's own marketing page, so treat them as a rough frame for your own numbers, not as a target.

Subscribe on YouTube@sagnikteaches

The inputs: what a calculator needs from you, and from the client

Two sets of numbers feed the sheet. The first set belongs to you and changes slowly. The second belongs to the client and changes with every quote.

Your cost inputs

  • Space cost per billable position. Rent, utilities, insurance, racking depreciation and a share of software, divided by the positions you can actually bill at your target occupancy, not the positions you own.
  • Loaded labour cost per hour. Wages plus employer costs and paid breaks, divided by productive hours.
  • Handling times. Measured seconds for receiving a pallet, picking the first item, picking each extra item, packing, and processing a return. Time these on the floor; do not take them from a brochure.
  • Overhead per order. Supervisor time, handheld scanners, label printers and the WMS, divided by monthly orders.
  • Materials cost. Mailers, boxes, tape and void fill, per order.
The Complete Excel Course with AI Integration thumbnail

The Complete Excel Course with AI Integration

From formulas and pivot tables to Power Query, DAX, VBA and AI with Copilot, ChatGPT and Claude — hands-on from the first lesson.

By Sagnik Bhattacharya and Virginia Thorn, Primetime Emmy Award winner

Buy now

The client profile

  • Average pallets or bins held, and how many pallets arrive each month.
  • Orders a month and average units per order.
  • Product size and weight bands, fragile or hazardous status.
  • Return rate and what returns need (inspect, restock, dispose).
  • Seasonal peaks, and any special handling such as kitting, labels or inserts.

Clients rarely hand over this list neatly. They send an email saying "about 1,200 orders a month, mostly one item, two pallets a month inbound, around 6 per cent returns". That is where AI earns its place, and where I would start building.

Working out the unit costs: a small 3PL, illustrative numbers

Say a small 3PL has 600 pallet positions and plans to run at 80 per cent occupancy, so 480 billable positions. Monthly space-related costs are $7,000 rent and utilities, $1,000 insurance and racking depreciation, and $300 as a share of software. That is $8,300, so the cost per billable pallet position is $8,300 / 480 = $17.29 a month.

Loaded labour is $26 an hour, or about $0.43 a minute. A floor time study of picking and packing gives 90 seconds for the first item of an order and 25 seconds for each extra item. First-item labour is 1.5 minutes x $0.433 = $0.65. Each extra item costs about $0.18. Fixed handling overhead of $3,500 a month spread across 4,000 orders adds $0.88 an order. So a one-item order costs $0.65 + $0.88 = $1.53 before materials.

Receiving a pallet takes a forklift operator about 21 minutes including checking against the delivery note and put-away, or 0.35 hours x $26 = $9.10, plus $1.50 for equipment and system time, so $10.60. A return takes about 4 minutes to inspect and restock, $1.73 of labour, plus $0.50 of overhead, so $2.23.

Now apply a 30 per cent target margin, where price = cost / (1 - 0.30):

LineCostPrice at 30% marginRate card priceMargin at rate card
Storage, per pallet a month$17.29$24.70$25.0030.8%
Receiving, per pallet$10.60$15.14$15.0029.3%
Pick and pack, first item$1.53$2.19$2.2030.5%
Pick and pack, each extra item$0.18$0.26$0.3040.0%
Returns, per return$2.23$3.19$3.2030.3%
Packaging, per order$0.55$0.79$0.66 (cost plus 20%)16.7%

Packaging is deliberately priced below the 30 per cent line, because clients compare materials charges directly against what a mailer costs on a shop website. The sheet makes that choice visible instead of letting it happen by accident, which is the real value of building the calculator.

The worked quote: a skincare brand's first month

A client enquiry arrives by email. Run through the sheet, the profile reads: 24 pallets stored on average, 2 pallets arriving each month, 1,200 orders a month averaging 1.4 units, and a 6 per cent return rate. That means 480 extra units beyond the first item of each order (1,680 units less 1,200) and 72 returns.

LineQuantityRateMonthly priceYour cost
Receiving2 pallets$15.00$30.00$21.20
Storage24 pallets$25.00$600.00$414.96
Pick and pack, first item1,200 orders$2.20$2,640.00$1,836.00
Pick and pack, extra items480 units$0.30$144.00$86.40
Packaging1,200 orders$0.66$792.00$660.00
Returns72 returns$3.20$230.40$160.56
Total$4,436.40$3,179.12

The blended margin is ($4,436.40 - $3,179.12) / $4,436.40 = 28.3 per cent, above a 25 per cent floor. A one-off onboarding fee of $400 sits on top, covering about six hours of set-up and integration work. Carrier postage is outside this quote; it passes through at the carrier's invoiced rate, as covered later.

The quote works out to $3.70 of revenue per order against $2.65 of cost, all figures illustrative. Those two numbers are the ones I would put at the top of the sheet, because they let a salesperson answer a discount request in seconds.

Where AI fits: turning the enquiry into a profile

The sheet is simple. The slow part is the enquiry: emails, attached spreadsheets of order history, a call summary. Use AI to extract the profile into fixed fields, and ask it to flag what is missing instead of guessing.

Extract a 3PL quote profile from the client message below. Return a table
with these fields exactly: pallets_stored_avg, pallets_inbound_per_month,
orders_per_month, units_per_order_avg, return_rate_percent, product_size_band
(small / medium / bulky), special_handling, peak_months.
For any field the message does not state, write MISSING. Do not estimate.
After the table, list up to five questions I should ask the client to fill
the MISSING fields. Quote the client's own words for each value you extract.

MESSAGE:
[paste the enquiry]

Illustrative output for the skincare enquiry:

pallets_stored_avg: MISSING (client says "a couple of dozen" - "about 24 pallets"?)
pallets_inbound_per_month: 2 ("two pallets a month inbound")
orders_per_month: 1,200 ("about 1,200 orders a month")
units_per_order_avg: MISSING (client says "mostly one item")
return_rate_percent: 6 ("around 6 per cent returns")
product_size_band: small
special_handling: MISSING
peak_months: MISSING

Questions: How many pallets do you hold today? What share of orders have
two or more items? Any glass, aerosols or batch-dated stock? When are your
busiest weeks?

What you would fix: the model correctly refused to turn "mostly one item" into a number and left "about 24 pallets" as a flagged guess. A good fix is to send the questions back, then enter 1.4 units per order only once the client confirms it or you have seen the order history. Never let a hopeful estimate enter the sheet as if it were a fact.

Letting AI write the sheet formulas, then checking them

AI is useful for building the spreadsheet itself. Lay out two sheets: "Costs" holding your unit costs and target margins, and "Quote" holding the client profile, quantities, rates and totals. Ask your assistant to write formulas from a description of the layout, then test each against a hand calculation.

On the Quote sheet, column B holds quantities and column C holds rates.
Price = B*C. Cost = B * the matching unit cost on the Costs sheet.
Write formulas for: line price, line cost, line margin %, total price,
total cost, blended margin %, and a flag that says "BELOW FLOOR" if a line
margin is under 15% or the blended margin is under 25%.

A typical result is =IF(F2<0.15,"BELOW FLOOR","OK") per line and =(D8-E8)/D8 for the blended margin. Check the blended formula uses the totals row, not an average of line margins, which is a common error and gives a wrong answer whenever the lines are different sizes. Then re-enter the worked quote above and confirm the sheet returns $4,436.40, $3,179.12 and 28.3 per cent. If it does not, the formula is wrong, and you want to know now.

If you would like help picking between Excel, Google Sheets and a WMS billing module for this, AI tools for warehousing: which suit a small warehouse or 3PL covers the options.

A bulky-goods client who breaks the card

A second enquiry: a furniture seller with 6 pallets of flat-packed items stored, 150 orders a month, each a single 25 kg box needing two-person handling. The standard card does not fit, and this is where cost-based pricing shows its worth. Pick time is 5 minutes with two people, so labour is 5 x $0.433 x 2 = $4.33 before overhead, and the card's $2.20 would lose money on every order.

Add a bulky band to the Costs sheet with its own pick time: $4.33 + $0.88 overhead = $5.21 cost, and $5.21 divided by 0.7 gives a price of $7.44 at the 30 per cent target. Say the sales team judges $7.44 too high for the market and tries $6.80 instead, a margin of (6.80 - 5.21) / 6.80 = 23.4 per cent. That is below the 30 per cent line target but above the 15 per cent floor, and the sheet flags it as a conscious exception for the manager to approve. The calculator did not make the decision; it made the decision visible.

A volume ladder that protects margin

Clients ask for volume discounts. Decide the ladder before they ask. Use the sheet to test each step so a discount does not push the blended margin under the floor.

Monthly ordersFirst-item pick feeMargin on that line
Up to 1,500$2.2030.5%
1,501 to 3,000$2.0525.4%
Over 3,000$1.9521.5%

Each margin is (fee - $1.53) / fee. A discount is sound only if higher volume lowers your cost per order, by spreading the $3,500 of fixed overhead across more orders or by cutting walking time. If it does not, the ladder is giving margin away. Review the ladder against real overhead after a quarter of data, using the billing checks from reconciling storage and pick fees against WMS data with AI.

Peak season: pricing the weeks that cost more

A flat rate card hides a seasonal problem. In peak weeks you pay overtime or agency labour, and picking slows because aisles are crowded. Add a peak-month column to the Costs sheet with a higher loaded labour rate, say $34 an hour in place of $26, and let the quote sheet apply it to the months the client names. With $34 an hour, first-item labour becomes 1.5 x ($34 / 60) = $0.85, so the one-item cost rises from $1.53 to $1.73, and a 30 per cent margin needs $2.47. You can then choose between a seasonal surcharge of about $0.27 an order or a higher base rate.

Most clients accept a clearly stated peak surcharge more readily than a surprise one, so state the months and the amount in the quote. The extraction prompt already asks for peak months, and when that field comes back MISSING it is worth the extra question to the client.

Fees that stay outside the unit costs

Some charges should not be folded into the pick rate, because they vary by client and are easy to under-recover.

  • Postage and carrier surcharges. Pass them through at the invoiced amount, with an agreed handling percentage if you apply one. Carrier surcharges for residential delivery, remote areas and oversize parcels are revised regularly, so check the carrier's current schedule before you quote.
  • Value-added work such as kitting, labelling, inserts and relabelling: quote per unit or per labour hour, with a minimum charge.
  • Long-term storage on stock that has not moved in an agreed period, and special storage such as temperature control.
  • Account minimum. A monthly minimum covers the fixed cost of simply having an account. Set it so the client is profitable at the minimum.
  • Onboarding. Cover the real hours of integration, SKU set-up and the first inbound check. An AI-drafted onboarding checklist, SOPs and SLAs shorten those hours with each new client, so recheck the fee once you have run a few.

Presenting the quote so clients can follow it

Once the sheet returns the numbers, use AI for the covering email and a plain-language assumptions list. Paste the finished table, never the cost columns, and ask for a draft that states each assumption the price depends on. A client who sees "priced on 1,200 orders a month averaging 1.4 units; storage billed per pallet position" can challenge the assumptions, not the whole price.

Keep the cost columns away from the model and the client alike. They show your margin, and the model needs only the price columns to write the email. Add one line to the template: "rates reviewed quarterly; changes notified 30 days ahead", or whatever notice you can honour. Have someone senior read the final text for promises the contract does not support, such as accuracy percentages or dock-to-stock times, before it goes out.

A mistake that surfaces three months in

A realistic failure: the operator measures pick time on the quietest afternoon of the month, with the fastest picker and the best-organised aisle. The rate card looks healthy. After three months, the billing reconciliation shows the actual labour hours on this client at 40 per cent above the card's assumption, because new stock was slotted far from the packing bench.

The fix is in two places. First, time a sample of at least 30 orders across shifts and pickers, and use the median plus a margin for the slow tail. Second, put a quarterly review in the diary: compare billed pick revenue with actual labour hours from the WMS or timesheets, line by line, per client. If actual labour per order drifts more than 10 per cent from the sheet's assumption, update the Costs sheet and re-quote at renewal. A 3PL that skips this review is pricing on last year's building.

Testing the calculator before the first real quote

Run five tests, and do them before any quote goes to a client.

  1. Re-enter two past clients with known invoices. The calculator should land within a few per cent of what you actually billed and what the work actually cost.
  2. Set every quantity to zero. The total should be the account minimum, not zero or an error.
  3. Double the order volume and confirm the pick revenue doubles while storage does not.
  4. Change one cost input, such as the labour rate, and watch every dependent line move.
  5. Ask a colleague to quote a client from the email alone, without you, and compare results. If you disagree, the profile fields are ambiguous.

Once the calculator holds up, other jobs follow: weekly client reports built from WMS exports (3PL client KPI reports) and forecasting labour from order volumes. For a ranking of what to automate first across the whole operation, see AI for a small 3PL: six jobs ranked by payback. If you would rather map your own pricing with someone, that is what my AI implementation consultation covers, and you can reach me here.

Rate-card questions from 3PL operators

Should the AI calculate the quote or the spreadsheet?

The spreadsheet. Let AI read the client's enquiry, fill the profile fields and draft the covering letter, but do the multiplication in cells you can audit. Language models make arithmetic slips that look convincing, and a quote is a contract-shaped document.

Is pallet or cubic-foot storage pricing better for a small 3PL?

Pallet pricing is simpler to explain and bill. Cubic-foot or bin pricing is fairer for clients with many small SKUs on part-filled pallets. Many operators offer pallet rates for bulk stock and a per-bin rate for slow-moving small items, and say clearly which applies to which stock.

How do I stop a rate card going out of date?

Recalculate unit costs every quarter from rent, labour and software actuals, and review immediately when labour rates or carrier surcharges change. Keep the cost inputs on one sheet with a last-updated date so every quote traces back to them.

What margin should I aim for?

That depends on your cost base and market, so set your own. A common approach is a target margin per line and a blended floor for the whole quote, so a thin line such as packaging can be carried by healthier ones. The example here uses 30 per cent per line and a 25 per cent blended floor, purely as an illustration.

Further reads

Sources: fee ranges from Red Stag Fulfillment's 3PL pricing guide (2026 edition), which cites the Warehousing and Fulfillment 2025 warehouse costs and pricing survey; all unit costs and the client in the worked quote are illustrative.

Want your rate card and quotes built into one sheet?

On a 1:1 call we'll go through how you price storage, pick and pack today, decide which parts AI should draft, and set up a calculator your sales team can run.

Book a 1:1 call with me