3PL Kitting Fees: Every Published Rate

By Wayan Sunnasy Published 2026-08-17 Data last verified 2026-08-04 9 sources How we verify →

Your quote has a line called “kitting” with a number next to it, and the number means nothing until you know what it is charged against. We maintain a dataset of 241 sourced fee rows across 23 fulfillment operations, every row carrying its source URL and the date we read it, and kitting is the line where that dataset is least able to give you an average — because the companies that publish a kitting price are not pricing the same object.

MyFBAPrep, Launch Fulfillment, Fulfyld, Simple Global and Flexport each publish a figure for assembly-type work. Between them, no two of those companies charge in the same unit. That is the finding, and it is the reason a kitting quote is the easiest line on a rate card to compare wrongly.

What does a 3PL charge for kitting and assembly?

The smallest published figure is $0.40 per label and the largest is $200 per job, and they are not two ends of one range — they are prices attached to different objects. Kitting is charged per bundle, per kit, per label, per man-hour, per hour or per job depending on the vendor, so the honest answer to “what does kitting cost” is a unit first and an amount second.

Every one of those units answers a different question. A per-bundle or per-kit rate prices the finished thing, so a kit that takes ten seconds and a kit that takes four minutes cost the same. A per-label rate prices one physical action inside the job and says nothing about the rest of it. A per-hour or per-man-hour rate prices the labour and moves all the risk of how long the work takes onto you. A per-job minimum prices nothing at all — it sets a floor and leaves the rate above the floor unpublished.

Two vendors even write the hourly unit differently. Simple Global’s rows read per hour; Fulfyld’s reads per man-hour. For a job staffed by one person those are the same thing; for a job staffed by three they differ by a factor of three, and nothing on either page tells you which the vendor means when the crew is bigger. We keep both strings as printed rather than smoothing them into one, because the difference is a normalisation problem and not a typo.

Every published kitting rate we could source

Ordered by the unit string, reproduced exactly as our dataset records it. The last column is the row’s own conditions and notes and nothing else; where a row carries neither, it reads .

CompanyFee item, as recordedUnit, verbatimAmountConditions and notes, from the row
MyFBAPrepbundle fee up to 2 itemsper bundle$0.50
MyFBAPrepbundle fee 3-5 itemsper bundle$0.75
Simple Globalbasic work order laborper hour“from $38”optional add-on service
Simple Globalcomplex work order laborper hour“from $48”optional add-on service
Flexportprep job minimumper job$200minimum charge per prep job
Launch Fulfillmentkitting feeper kit$1.50–$3.00vendor labels as sample/illustrative rate, not a guaranteed quote
FulfyldUPC labelingper label$0.40
Fulfyldspecial projects laborper man-hour$40
ShipBobkitting/bundling serviceper unitQUOTE_GATEDavailable at additional cost; no public numbers published

Sources, in order of first appearance: MyFBAPrep FAQ; Simple Global pricing; Flexport Omni-Channel Fulfillment Pricing Overview; Launch Fulfillment ecommerce fulfillment pricing; Fulfyld 3PL fulfillment pricing; ShipBob pricing. Dates are in the Sources section at the foot of this page.

Read the third column down as far as the Fulfyld man-hour row and you have every unit in which somebody currently publishes a kitting price. The last row is the unit without a price attached, and it is in the table on purpose: ShipBob’s unit is recorded and its amount is not, because “we looked and found no published figure” is a different statement from “we did not look”.

Three things that column cannot tell you, and they matter. MyFBAPrep’s step from a two-item bundle to a three-item one is $0.50 to $0.75 — half again as much for one extra component, and the tier is defined by item count rather than by time. Simple Global’s “complex” tier is not defined on the page we read, so the $10 gap between its two hourly rates has no published trigger. And our Flexport rows hold no per-kit or per-unit prep rate to sit beside the $200 job minimum, which is why that minimum ends up doing the whole job of pricing prep work.

One mechanical note: Flexport’s prep job minimum appears twice in our dataset, once in each file, tagged with the same fee_uid and collapsed here to a single row. It is one fee, not two.

Why per bundle, per kit and per hour are not the same charge

Run one job through every published rate and the spread stops being a price spread. The order profile below is illustrative: 1,000 finished bundles, two items in each, assembled once. Every rate applied to it is published.

Published rate, as printedWhat 1,000 two-item bundles costsWhat you still have to supply
MyFBAPrep $0.50 per bundle, up to 2 items$500.00nothing — the unit matches the job
Launch Fulfillment $1.50–$3.00 per kit$1,500.00–$3,000.00a commitment; the vendor labels the figure sample/illustrative
Fulfyld $0.40 per label$400.00, but only if the job is exactly one UPC label per bundlethe cost of the assembly itself — a label is not a kit
Fulfyld $40 per man-hournot computablebundles per man-hour, and how many people are on the line
Simple Global “from $38” per hournot computablebundles per hour, and the ceiling above the floor
Flexport $200 per jobat least $200.00the rate the minimum attaches to, which our Flexport rows do not hold

Where the middle column says not computable, that is the correct output rather than a gap. We will not multiply an hourly rate by an invented throughput to produce a per-kit number, because the throughput assumption would be doing all the work and it would be ours, not the vendor’s. The same rule governs our methodology: a figure that requires us to invent its denominator is not a benchmark, it is a guess with a citation attached.

Notice also what the top two rows do to a “cheap” quote. MyFBAPrep at $0.50 a bundle and Launch Fulfillment at the top of its $1.50–$3.00 band (a figure the vendor’s own page labels sample/illustrative) differ by six times on the same job — $500 against $3,000. Those two are the closest thing in the table to a like-for-like pair, because both price the finished assembled thing rather than an action or an hour. Even there the unit strings are not the same, per bundle against per kit; MyFBAPrep’s rate is scoped to bundles of up to two items where the Launch row records no item count at all; and the Launch figure is labelled by the vendor as a sample rather than a guaranteed quote. Pricing the same object is a precondition for comparison, not the end of it.

Stop normalizing quotes by hand. The 3PL Quote Normalizer Kit takes your order profile plus up to 5 competing rate cards and returns true all-in cost per order, a 12-month projection, and breakeven volumes — plus the RFP template and 40-point contract red-flag checklist. Get the Kit →

The job minimum, and what $200 does to a small run

The only Flexport row carrying the kitting service line in our dataset is a $200 prep job minimum, charged per job. We hold no Flexport per-kit or per-unit prep rate to sit beside it, so on the evidence we have, the minimum is the whole of the published price for prep work: a floor with nothing above it.

Divide it and the effect on small runs is arithmetic, not opinion. On an illustrative 50-unit run, $200 ÷ 50 = $4.00 a unit before any labour rate is applied. On 200 units it is $1.00 a unit; on 1,000 units, $0.20. The published number never changes — what changes is the run size it gets divided by, and no kitting row in our dataset records a run size.

This is the same shape as Flexport’s $5,000 minimum monthly fulfillment spend, effective 1 January 2026, up from $500, read 2026-08-04 — one of the fees an operator meets late rather than at quote time. A flat floor is not a neutral term: it prices the small account and is invisible to the large one. If you assemble seasonal gift sets in batches of fifty, a per-job minimum is your actual kitting rate, and it is four dollars a unit.

Flexport does publish labour by the hour elsewhere on the same card — $48 per hour for inventory inspection, rush receive/shipping, cycle counts and restocking after a cancellation, with a four-hour minimum on the rush row, all read 2026-08-12. Those sit under receiving, account management and pick and pack, not kitting, and we are not moving them across. We mention them because they show the card is perfectly capable of pricing labour by the hour. Why no per-kit rate appears alongside is not something the page explains, and we are not asserting a reason.

Is kitting a hidden fee?

No — for MyFBAPrep, Launch Fulfillment, Fulfyld, Simple Global and Flexport it is printed on a public page you can read right now, and we have linked every one of them above. The problem is not concealment. The problem is that a published price in an incomparable unit behaves exactly like a hidden one at quote time, because you cannot set it beside the next quote without doing a conversion the vendor has not given you the inputs for.

That distinction matters when you are on the phone. “You’re hiding your kitting fee” is a claim you cannot support and a vendor can rebut in one click. “Your kitting rate is per man-hour and theirs is per bundle — how many bundles is a man-hour on our SKU?” is a question that gets you a number. The second sentence is the one that changes your invoice.

Where it genuinely is not published, we say so as its own state. ShipBob has a kitting row recorded as quote-gated: our row logs the service as “available at additional cost”, with the unit captured and no figure to put in it. Atomix Logistics lists kitting among its fee categories alongside receiving, storage, pick and pack, shipping and software, prices none of them, and directs you to book a meeting. Both were read 2026-08-04. A named service with no number is still information — it tells you the comparison will have to be built from quotes you extract yourself.

Eleven of the 23 companies we track publish no dollar figure for kitting, on the evidence of a row: either a kitting row explicitly marked quote-gated, or no published dollar figure anywhere on their pages. Ten of those publish no dollar figure anywhere; the remaining one is ShipBob, whose kitting/bundling row is recorded and explicitly quote-gated. ShipBob is on the publishing side of that line by one number and one only: of its eleven rows in our dataset, ten are quote-gated and the single numeric one is a $0 platform fee. That leaves a third group which is not silence and must not be read as it — Amazon FBA, Amazon MCF, Fulfillrite, ShipCalm, Shipfusion, Simpl Fulfillment and Walmart WFS have no kitting row in our dataset at all, which means either they do not sell the service or we did not find one to record.

Simple Global is worth one sentence on its own, because it sits in two states at once. Its hourly work-order rates are published, and we hold a second row recording that its pricing page does not print a kitting flat rate alongside them — only the hourly figures. A vendor can publish a real number for a line and still leave the shape of that line unpublished.

Prep tiers are not kitting, and the difference is the unit

The nearest neighbour to a kitting fee on most cards is a prep fee, and the two get quoted interchangeably. They are not the same charge and MyFBAPrep is the clearest illustration, because it publishes both.

Fee itemUnit, verbatimAmountConditions
standard tier per-unit prep feeper unit$1.005,000 units/month minimum
pro tier per-unit prep feeper unit$0.5050,000 units/month minimum
fragile/bubble wrap handlingper unit$0.50additional charge on top of prep fee
oversized/overweight handlingper unit$0.50additional charge on top of prep fee
bundle fee up to 2 itemsper bundle$0.50
bundle fee 3-5 itemsper bundle$0.75

Prep is per unit; bundling is per bundle. On a two-item kit those denominators differ by two, so a job that is $0.50 as a bundle is $2.00 as two units at the standard prep tier — and the two rates sit on the same vendor’s pages, one on the pricing overview and one on the FAQ. The prep rows also carry a volume condition the bundle rows do not: $1.00 per unit is quoted at a 5,000 units/month minimum and $0.50 at 50,000. Quote the pro-tier $0.50 without carrying its 50,000 units/month condition across and you have turned a volume price into a headline price, which is a different number.

One disclosure on that table: MyFBAPrep’s own pricing overview shows the standard tier at $1.00 per unit in the tier description and $0.95 per unit in its feature comparison matrix, at the same 5,000 units/month minimum. We read the tier description 2026-08-04 and the matrix 2026-08-10, record the $1.00 as primary, and note the disagreement rather than resolving it silently.

What to send a vendor so a kitting quote means something

A kitting quote becomes comparable when four things are written down, and none of them is the price.

  1. The unit, in the vendor’s own words. Per kit, per bundle, per unit, per label, per man-hour, per hour, per job. Ask them to write the string, not to describe it.
  2. What is inside the unit. If it is per kit, how many components does one kit hold before the rate steps up? MyFBAPrep publishes that step openly — $0.50 up to 2 items, $0.75 for 3 to 5 — and it is the only card among our kitting rows that prices the step at all.
  3. Who starts and stops the clock, if there is a clock. For an hourly line: is a man-hour one person for one hour, is there a minimum increment, and does setup and teardown bill? Flexport’s rush-receive row publishes a four-hour minimum on its labour; a kitting line with an undisclosed minimum behaves the same way.
  4. The minimum per job, separately from the rate. A rate and a floor are two different numbers and only one of them answers “what does a kit cost”. On a 50-unit run the floor was $4.00 a unit in the arithmetic above.

Then hold the answers in the same shape you hold every other line, which is what our apples-to-apples method does across the whole card, and what the kitting section of the full benchmark table publishes row by row with every source URL attached.

What to do next

  1. Write down the unit before the amount for every kitting line you have been quoted. If two quotes do not share a unit, you do not yet have two prices.
  2. Ask for the per-job minimum in writing, separately from the rate. A $200 floor is a $4.00-a-unit rate on 50 units and a $0.20 rate on 1,000.
  3. For any hourly kitting line, get bundles-per-hour from the vendor, not from yourself. If they will not commit to a throughput, the hourly rate is not a price and should be bracketed, not averaged.
  4. Check whether a “kitting” line is actually a prep line. Per unit and per bundle differ by the number of components in the kit, every time.
  5. Re-read the source page before you sign. Every figure here carries the date we read it, and vendors change pages without notice.

Our own limitations, stated

This is 23 fulfillment operations, not the market, and three of them (Amazon FBA, Amazon MCF and Walmart WFS) are marketplace programs rather than 3PLs. It is US-focused.

We publish no average kitting rate and no midpoint, here or anywhere. An average across per bundle, per kit, per label, per man-hour, per hour and per job would be a number with no denominator, and the fact that we could compute one is not a reason to.

Launch Fulfillment’s $1.50–$3.00 is labelled by the vendor as a sample or illustrative rate rather than a guaranteed quote, and it carries that label everywhere it appears on this page. It belongs in the table because knowing a vendor sits in that neighbourhood is worth something; treating it as a committed rate is worth less than nothing.

Every kitting row on this page was read 2026-08-04 and has not been individually re-read since, except where a later date is printed beside the figure. The first full re-verification cycle completes 2026-11-04.

If you find a figure of ours that no longer matches its source, email data@ratecardlab.com. We publish corrections at ratecardlab.com/corrections/ and buyers of the workbook get the corrected file.

Figures are quoted from the vendor’s own page on the date given and cross-checked against our dataset. The unit column is reproduced verbatim, including where a vendor’s unit is less specific than we would like. Where we do arithmetic on a published figure rather than reporting it, the sentence says so.

Sources

Who publishes kitting rates

4 of the 7 providers whose rate cards we hold publish kitting rates outright. Each page below lists every fee that provider publishes, with the source URL and the date we read it.

  • Fulfyld 2 published kitting rates · 12 fees in total
  • MyFBAPrep 2 published kitting rates · 8 fees in total
  • Simple Global 2 published kitting rates · 8 fees in total
  • Flexport 1 published kitting rate · 75 fees in total

All published fees by vendor · What a 3PL costs in 2026

When a figure on this page changes

We re-check these rates against the vendor's own page and publish every correction. Leave an address and you get an email when a number in this guide moves or a company is added — nothing else, and nothing on a schedule. To come off, email data@ratecardlab.com and we delete the record.