ShipBob and ShipHero billing: what is different on the invoice
Comparison3 min read
ShipBob is a fulfillment network that bills you for fulfillment. ShipHero sells warehouse software and also runs warehouses, and which of those you are buying changes what your invoice looks like. Comparing the two on price per order alone will mislead you in both directions.
Where the invoice comes from
| ShipBob | ShipHero | |
|---|---|---|
| Billing data | REST API, invoices with fee lines | GraphQL public API, bills with line items |
| Endpoint | api.shipbob.com/2.0/invoices | public-api.shiphero.com/graphql |
| Line description | Free-text fee name per line | Free-text account name per line item |
| Order reference | Present on activity lines | Present, and denser: line items often per order |
| CSV export | Available from the dashboard | Available, and commonly how brands work with it |
Both give you what you need. Neither gives you subtotals by activity, and neither compares against your contract, so the work you do on top is the same in both cases.
What is structurally different
Line granularity
ShipHero bills tend to be more granular per order, which is good for evidence and bad for volume: a month can run to tens of thousands of line items. ShipBob more often aggregates activity by type within a period. The practical effect is that duplicate detection is easier on ShipHero and rate checking is easier on ShipBob.
Who sets the rate
On ShipBob you are on the network rate card for the fulfillment centers you use. On ShipHero the answer depends on whether you are with ShipHero Fulfillment or with a 3PL running ShipHero software, and in the second case the rate card belongs to that 3PL. Your audit needs the right rate card, and on ShipHero the right rate card is not always obvious.
Multi-warehouse
Both split inventory across locations, and in both cases the invoice can carry different rates per location for the same activity. Auditing a rate without splitting by location produces an average that matches neither rate and hides a real discrepancy in one of them.
Failure modes that skew one way
- Fee name drift is worse on ShipHero. Account names are configurable per 3PL, so the same activity is labelled differently across warehouses in the same bill. Map to canonical types before you group anything.
- Storage reconciliation is harder on ShipBob. Inventory is distributed across fulfillment centers, so your own snapshot has to be split the same way the billing is.
- Sign handling matters on both. Credits, adjustments, and reversals arrive as negative lines mixed into the same list. Classify by sign as well as by name, or a positive line called an adjustment will be silently excluded from four different checks.
Comparing the two on price
If you are actually deciding between them, compare on cost per order excluding postage, using your real order profile: your average items per order, your average weight, your seasonal shape, and your SKU count. Three of those four change the answer, and SKU count changes it more than anything else if bin storage is involved.
A quote comparison on pick and pack rates alone is close to meaningless. Pick and pack is usually the smallest of the three cost centers on a real invoice, behind postage and storage.
We do not advise anyone to switch 3PLs. Switching costs a quarter of operational disruption, and most of the money that gets recovered from a fulfillment relationship is recovered by auditing the one you already have.
Running the same audit against both
The reason this is possible at all is that the differences above are entirely in the shape of the input. Once every line is normalized into the same schema, the checks are identical: duplicates are duplicates, a rate above the contract is a rate above the contract, and a peak surcharge in February is a date comparison in either system.
WareAudit connects to both and runs the same thirteen checks on each. If you are on neither, CSV upload does the same job. Start with the errors that show up most often, or look at a full report.