3PL Setup Fees: No Published Figure Found

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

Your quote has a line that says implementation, or onboarding, or setup, and either there is no number beside it or there is a number you have no way to check. Somewhere you have also read a confident dollar range for what 3PL onboarding costs. We went looking for the vendor page that range came from, and in 241 sourced fee rows across 23 fulfillment operations we did not find one.

Do 3PLs charge a setup fee?

Some of them say they do and some of them say they do not, and on the pages we read, none of them says how much. The only row in either CSV whose service_line reads implementation is ShipBob’s, and it carries QUOTE_GATED where the amount would be.

One fee_item in the dataset contains the word setup and carries a real number: ShipCalm’s item bagging setup, $39.50, unit one-time. It is a packaging service, not an account setup fee. We handle it in full below rather than leave it as the obvious objection.

That is the whole finding, and it is worth being precise about what it is not. It is not a claim that setup fees do not exist. It is not a claim that any vendor is withholding anything. It is a claim about the published record: across every pricing page, FAQ and help-centre article we read on the dates listed at the bottom of this page, we could not locate a single dollar amount attached to setting up an account.

That distinction matters more than the finding. “Hidden fee” is the phrase everyone reaches for, and for most of the fees on your invoice it is the wrong one. The pallet charges, ASN penalties and DSKU storage floors people search for as hidden are published, in public, in the vendor’s own words, and we collect them with sources. They are not concealed; they are unread. The setup fee is the genuine exception, and it is the opposite failure: not hidden, just absent from the published record on our sample.

What we looked for, and the rule we used

So you can reproduce it rather than take our word for it, here is the search. Our two CSVs carry 241 sourced fee rows. 214 of those rows carry a dollar figure and 27 record that we looked and found none. Every row has a vendor, a service_line, a fee_item, a unit, an amount_usd, a source_url and the date we read it.

We looked in four places:

  1. service_line = implementation. One row in either CSV carries that service line — ShipBob’s — and it is quote-gated, so 0 implementation rows in either CSV carry a dollar amount. Both counts are registered against predicates in ops/check-figures.py, so the second one fails our own build the day a vendor publishes a figure.
  2. fee_item matching setup, set-up, onboarding or implementation. Returns ShipBob’s implementation fee, Fulfyld’s receiving labor after free onboarding, and ShipCalm’s item bagging setup. Only the last two carry an amount, and neither is an account setup fee — one is a labour rate on receiving, one is a packaging service.
  3. unit = one-time or unit = flat. ShipCalm’s item bagging setup at $39.50; ShipBob’s onboarding/implementation fee and its returns management fee, both quote-gated; and ShipBob’s WMS/software platform fee at $0. That is the entire set in both files.
  4. conditions and notes mentioning setup or onboarding. This is where the word-only answers live, below.

No published dollar amount for account setup came out of any of the four.

The implementation row we do have

ShipBob is the only company in our dataset that gives the category a row of its own. The second line below is not a second implementation row — it is ShipBob’s account-level pricing-model record, included because it is where the fee category is named.

VendorFee item, as the vendor names itUnit as publishedAmountConditions, as recorded
ShipBobonboarding/implementation feeflatQUOTE_GATEDpricing customized per customer
ShipBobpricing modeln/aQUOTE_GATEDpricing page lists standard fee categories (implementation; receiving; warehousing; pick/pack/ship) with no dollar amounts; quote request required

Copy that unit exactly, because it is doing work: flat. ShipBob is telling you the fee is a single charge rather than a rate on units or hours, which is genuinely useful information — it means the number is not going to scale with your SKU count, and it means one question (“how much?”) settles it. It publishes the shape of the fee and not its size. Of ShipBob’s rows in our dataset the only numeric one is a $0 platform fee, which we cover in more detail in our guide to what 3PLs actually publish.

The companies that answer the setup question in words

These are the rows that speak to setup directly without pricing it. Each is useful; none of them is a figure.

eFulfillment Service states “no set-up fees / no minimum order requirements / pay-as-you-go” on its terms page. Our row for it is quote-gated, because the same page discloses no dollar figures at all and directs you to a free quote. So you have an assertion that a fee is zero, on a page with no rate card against which to test what else the account will cost. That is not nothing — a written “no set-up fees” is a sentence you can put in a contract — but it prices exactly one line of an invoice you cannot otherwise see.

Simple Global is the opposite arrangement. It publishes real numbers: small bin storage from $0.90 per bin per month, pallet storage up to $25 per pallet per month, basic work-order labour at “from $38” per hour, complex work orders and inventory audit labour at “from $48” per hour. Our row for it records that its setup fee, packaging, order minimums, kitting flat rate, returns fee and account management fee are the items not on that pricing page. Setup is named as a gap by a vendor that filled in most of the others.

Simpl Fulfillment — a different company from Simple Global, despite the name — is the strongest of them. Its base per-order fee is published as “from $7.00” and its monthly minimum at $750, and the notes on that row record the vendor’s own claim of no setup, onboarding or receiving fees. That is a no-setup-fee assertion sitting beside published rates, which is the only version of the claim that can be checked against anything.

The three states, and why “no row at all” is not “no fee”

When we say a setup fee is not here, we mean one of three specific things. Collapsing them is the error this whole page exists to prevent.

Published. Empty. Thirteen of the 23 publish a dollar figure somewhere in our dataset. Not one of them publishes a dollar amount for setting up an account.

We checked and found nothing published. Eleven of the 23 fulfillment operations we track publish no dollar figure for implementation — on the evidence of a row, meaning either an explicit quote-gated implementation row or no published dollar figure anywhere at all. That number combines two states and is worth splitting. Ten of the 23 publish no dollar figure anywhere at all, for setup or for anything else, and they are listed with their sources in our hidden fees guide and on the benchmark table. ShipBob accounts for the difference between the two figures: it is the only company in the group carrying an explicit, quote-gated implementation row rather than a company-level row recording that we found no dollar figures anywhere on its pages. That is a more useful fact, because it confirms the fee category exists.

No row at all. The rest carry no implementation line in our dataset in either direction: Amazon FBA, Amazon MCF, Walmart WFS, Flexport, Fulfillrite, Fulfyld, Launch Fulfillment, MyFBAPrep, ShipCalm, Shipfusion, Simpl Fulfillment and Simple Global. Several of them publish detailed rate cards running to dozens of lines. This does not mean they charge no setup fee. It means we found no row to record, in either direction, on the pages we read. Simpl Fulfillment and Simple Global are the ones in this group that address setup in words, as above; eFulfillment Service, which also does, belongs to the group above rather than this one. For everyone else here, “no row” means the question is open, and it is the state most likely to be misread as an answer.

Where the dollar range you have already seen comes from

Search the phrase and you will get a range, usually a few hundred dollars, sometimes with a survey average attached to a decimal place. Our dataset contains a record of exactly how that happens.

Red Stag Fulfillment publishes no rates of its own — its get-pricing page is a multi-step lead form — and our row for it records that a separate Red Stag blog post cites third-party industry averages rather than Red Stag’s numbers. That is the mechanism in one company: a vendor with no published rate card publishing somebody else’s averages, which then get quoted onward as though a fulfilment operation had stated a price.

We are deliberately not reprinting those averages here. We have not read the surveys behind them, we cannot put a read date on them, and a figure without a date and a source URL is the thing this desk exists to replace rather than repeat. If you want the number, get it from the survey and cite the survey. What we can tell you is that in our sample it has no vendor-published instance behind it. An average is also the wrong shape for this question even when it is well sourced: your setup cost is driven by your SKU count, your inbound format and whether you need EDI, and none of those is a market average.

The onboarding bill nobody calls onboarding

Here is the practical payoff, and it is the reason this page is worth publishing even though the headline is an absence. The costs a go-live actually generates are published, in detail, by several vendors. They are simply filed under receiving, packaging, kitting and labour rather than under setup. If you are budgeting for onboarding, this is the table to budget from.

VendorFee, as the vendor names itUnit as publishedAmountWhy a go-live triggers it
ShipCalmitem bagging setupone-time$39.50the only row in either CSV whose unit is one-time
ShipCalmper-shipment receiving (ASN)per shipment$39.50your first inbound is a shipment
ShipCalmspecial handling ASNper shipment$295an inbound needing non-standard handling
ShipCalmpenalty - delivery without ASNper delivery$150a first delivery arriving unannounced
ShipCalmpenalty - delivery without appointmentper delivery$250the same delivery, booked with no slot
Fulfyldreceiving labor after free onboardingper hour$40conditions: first 2 hours of onboarding receiving are free
FulfyldUPC labelingper label$0.40relabelling a catalogue at intake
FlexportSKU dimension measurementper SKU$2measuring a catalogue the vendor has never held
Flexportinventory inspectionper hour$48checking what arrived against what was declared
Flexportrush receive / shippingper hour$48, minimum 4 hoursa go-live date that has already moved once
Flexportcycle countper hour$48the opening count you will want on record
Flexportprep job minimumper job$200a first relabel or bundling job of any size
FlexportEDI connection feeper month per connection$200integration, billed monthly and per connection, not once
Flexportsupplied pallet - grade Bper pallet$16 (conditions: max pallet height 60 in; grade A is $25)pallets bought from the vendor at intake
Simple Global40’ container receivingper container$550a first container inbound
Simple Globalbasic work order laborper hour“from $38”opening work orders; conditions: optional add-on service, ceiling not published
Simple Globalinventory audit and reporting laborper hour“from $48”the opening audit; conditions: optional add-on service, ceiling not published
MyFBAPrepcontainer unload - floor loadedper container$1,000a first floor-loaded container
ShipBobWMS/software platform feeflat$0stated as completely free; ShipBob’s only published number

Read the unit column before the amount column. Several of those lines are labour rates billed by the hour — Fulfyld’s receiving labour, Flexport’s inventory inspection, rush receive and cycle count, and Simple Global’s basic work-order and inventory-audit lines — and an hourly rate is not comparable to a per-unit or per-order fee without an hours assumption you have to supply yourself. The Flexport rows say exactly that in their own conditions. Ask for the hours in writing or the rate tells you nothing.

The EDI connection fee is the other one to read twice, because it is not a one-time cost at all: $200 per month per active connection. Our row records the consequence in its own conditions — a merchant with three connections pays $600 a month, not $200 — and it is charged for as long as the connection is live, from a line that reads like a one-off integration charge.

Also note what the table cannot do. It spans ShipCalm, Fulfyld, Flexport, Simple Global, MyFBAPrep and ShipBob, and no single vendor in our dataset publishes all of these lines. Adding the amount column up would produce a number nobody charges, which is the normalization error this desk exists to stop.

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 →

What a go-live costs at one vendor, on one profile

To keep it addable, here is one vendor. Flexport publishes enough of the relevant lines that a go-live can be priced without leaving its own card.

Illustrative order profile — the 140-SKU brand we use throughout our comparisons. The SKU count and the assumption that each line is triggered once are ours; every rate is Flexport’s, read on the date in Sources.

LineRow and unit as publishedOur arithmeticAmount
Measuring a catalogue the vendor has never heldSKU dimension measurement, per SKU, $2140 × $2$280
One prep job at go-live, whatever its sizeprep job minimum, per job, $200a floor, not a rate$200
The smallest rush receive the card can producerush receive / shipping, per hour, $48, minimum 4 hours4 × $48$192
Six pallets bought at intake, grade Bsupplied pallet - grade B, per pallet, $166 × $16$96
Total before a single order ships$768

Every multiplication in that table is ours; the four rates and the four-hour minimum are Flexport’s. The pallet count is an assumption and the rush receive only applies if you book one. What is not an assumption is the shape of the result: $768 of go-live cost assembled entirely from published rows, without any of them being called a setup fee, at a vendor whose dataset row for setup does not exist. The same brand comparing vendors on a “setup fee” line would have scored every one of those four lines as zero.

That $768 also sits underneath a floor. Flexport’s monthly minimum fulfilment spend rose to $5,000 per month effective 1 January 2026, up from $500. We are not adding the two together: the FAQ we read announces the figure without saying how a shortfall is charged, so we read a minimum spend as a floor you are billed up to rather than a charge on top, and whether go-live lines like a prep job or supplied pallets count toward that spend is a question to put in writing rather than one we can settle from the page. We price the floor itself in the minimums guide.

If you are running two providers in parallel while you migrate, you are paying a version of this twice — our switching-cost guide prices the overlap.

What to ask for in writing before you sign

  1. Ask for the setup fee as a number, and get the answer in the contract rather than the email. ShipBob, the only company in our dataset that gives the fee a row of its own, describes its unit as flat, and a flat fee has exactly one number in it — which makes this the easiest question in the whole exercise to get a firm answer to. Three other companies name setup in words with no figure attached: eFulfillment Service, Simpl Fulfillment and Simple Global, above.
  2. Ask what is billed between signature and first order shipped, itemised. Not “is there a setup fee” — that question gets a truthful no while receiving labour, SKU measurement, pallets, a prep job minimum and a monthly EDI charge all bill anyway.
  3. Ask for the free-hours clause in writing. Fulfyld publishes one: the first 2 hours of onboarding receiving are free, $40 an hour after. If a vendor offers something similar verbally, the number of free hours and the rate after them both belong in the contract.
  4. Ask whether integration is one-time or recurring. Flexport’s EDI fee is $200 per month per active connection. Get the unit before the amount.
  5. Ask which onboarding lines are hourly, and ask for an estimate of hours in writing. Six of the lines in the table above are labour rates — Fulfyld’s, Flexport’s three, and Simple Global’s two — and an hourly rate with no hours attached is not a price. Our contract red-flags guide covers the clause language that leaves them open.
  6. If a vendor tells you it charges no setup fee, ask them to write that down too. eFulfillment Service and Simpl Fulfillment both publish the claim. A published claim is worth more than a verbal one, and a contracted one is worth more than both.

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.

The central claim on this page is an absence, and an absence is the hardest thing to state honestly. We are claiming that we could not locate a published setup, onboarding or implementation amount on the pages recorded in our dataset, on the dates recorded against them. We are not claiming no such figure exists anywhere, that no vendor charges one, or that any vendor is concealing one. A pricing page we have not read, a PDF behind a lead form, or a page that changed after our read date would all sit outside what we checked. Our methodology states how the sample was assembled.

The absence is also load-bearing in one direction only. If a vendor publishes a setup figure tomorrow, this page is wrong the day it happens, so the zero is registered rather than merely written: ops/check-figures.py recomputes it from the CSVs on every run and fails if it ever stops being zero. That only covers a figure that reaches a row with service_line = implementation. A setup amount published under some other label would still have to be caught by a reader.

Our dataset was collected 2026-08-04. Five Flexport rows cited above were read directly in-browser on 2026-08-12 and carry that date: SKU dimension measurement, inventory inspection, rush receive, cycle count and the supplied grade-B pallet. So does the duplicate EDI record whose conditions carry the three-connection figure, rates-midmarket.csv:57. Flexport’s prep job minimum is not among them — rates-platforms.csv:94 carries 2026-08-04 — and neither is any other row cited on this page. None of those has been individually re-read since. The first full re-verification cycle completes 2026-11-04.

The $280, $200, $192, $96 and $768 figures, the 140-SKU count, the pallet count and the assumption that each line triggers once are ours. Every rate underneath them is the vendor’s.

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.

Every figure below is quoted from the vendor’s own page on the date given and matched to a row in our dataset, with the unit copied as published rather than paraphrased. Where we do arithmetic on a published figure we label it as ours. Where a vendor publishes nothing, we say we could not find it rather than saying there is nothing.

Sources

The providers named above, fee by fee

This guide spans more than one fee category, so rather than a partial list: here is every provider it names that publishes enough of a rate card to have a page, with every figure sourced and dated.

  • Flexport 75 published fees across 13 categories
  • ShipCalm 35 published fees across 7 categories
  • Amazon MCF 31 published fees across 2 categories
  • Walmart WFS 26 published fees across 5 categories
  • Fulfyld 12 published fees across 5 categories
  • MyFBAPrep 8 published fees across 3 categories
  • Simple Global 8 published fees across 5 categories

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.