Billing clients is, for most fulfillment operators, a task that takes anywhere from a few hours to several working days per month. Excel, invoices, manual calculations, phone calls to clarify a line item. One operator I spoke with recently told me his admin staff spends 5 hours per day on this — with 20 clients that’s over half an FTE, just on keeping spreadsheets in order.
The problem rarely starts with the tool. It starts with the billing model the operator picked at the very beginning — one that either doesn’t match the client profile, or is too complex to reliably handle in Excel.
For six years I’ve been working with Baselinker — mainly with e-commerce stores, but recently more and more with the fulfillment operators that serve dozens of those stores. From those conversations I’ve noticed recurring patterns. In this article I’ll show five billing models that are actually used in the Polish market, when each one makes sense, and how different pricing units change the structure of your pricing. Plus a few specific traps operators fall into when designing pricing.
TL;DR
- Five billing models: pay-as-you-go, subscription, hybrid, hybrid with logistics minimum, KPI/SLA. In practice, most operators use a hybrid.
- Fulfillment pricing has six components: receiving, storage, pick&pack, returns, courier shipping, value-added services. Each can be billed in a different unit.
- Pricing units matter as much as the model itself. Per pallet location vs. per CBM for clients with many SKUs can reduce storage cost by roughly 40%.
- Every client needs their own pricing structure. An operator with 8-15 clients on different models loses several hours to several working days per month on manual Excel billing.
What a fulfillment pricing structure consists of
Before we get into the models, one thing must be clear. A fulfillment pricing structure almost always has six line items:
- Receiving — unloading deliveries, verification, putting goods on the rack
- Storage — recurring storage of inventory
- Pick & Pack — order picking, packing, label
- Returns — intake, inspection, returning to stock
- Courier shipping — pass-through or with a markup
- Value-added services — co-packing, inserts, labeling, kitting
What changes between operators is how they’ve constructed the entire pricing structure (the billing models) and what units they use for each line item (the pricing units). These are two different things, and they often get conflated at the negotiation stage.
Billing models — five ways to construct pricing
Model 1: Pay-as-you-go (per operation)
The client only pays for activities that actually happened. They received 12 pallets this month — they pay for 12. They shipped 480 orders — they pay for 480. The warehouse holds 28 pallet locations — they pay for 28.
This means converting fixed costs into variable costs on the client’s side. Poland’s largest fulfillment operator, Omnipack, says it plainly: the most beneficial model is pay-for-performance — paying for actual activities performed. For the client this means: when sales drop, costs drop too. When they grow, costs scale proportionally to revenue.
| Pay-as-you-go | |
|---|---|
| Best for | Seasonal client, growth-phase, small starting volume |
| Not suitable for | Client with very stable volume who wants a fixed budget |
| Pros | Flexibility, fair pricing, low entry barrier |
| Cons | Hard to budget for, every operation as a separate invoice line |
In pure form, however, this model is rare. In practice it’s almost always combined with a subscription or a logistics minimum, because the operator needs to cover the fixed cost of servicing the client account even in a slow month. More on this below.
Model 2: Subscription
The client pays a fixed monthly amount for a package of services, regardless of volume (up to a defined cap). Above the cap, variable fees kick in.
| Subscription | |
|---|---|
| Best for | Client with stable volume who wants full predictability |
| Not suitable for | Seasonal client — they overpay during slow months |
| Pros | Easy budgeting, client knows what they’ll pay |
| Cons | No flexibility, in low-volume months the client subsidizes the operator |
Pure subscription is rare in e-commerce fulfillment — most often it’s part of a hybrid model.
Model 3: Hybrid
The most popular model in the real world. A fixed subscription fee plus variable line items for actual operations. The client gets predictability (subscription), the operator covers the fixed cost of servicing the account.
Structure of a typical hybrid:
- Fixed fee: 500-1,500 PLN/month (system access, integrations, basic service)
- Pick&Pack: 4-8 PLN per order (or per order + SKU)
- Storage: variable, depending on unit (pallet, CBM, location)
- Returns: 50-150% of pick&pack rate
- Courier shipping: pass-through from the courier
| Hybrid | |
|---|---|
| Best for | Most mid-sized clients |
| Not suitable for | Very small clients (entry barrier too high) or very large clients (better to negotiate SLA) |
| Pros | Compromise between predictability and flexibility |
| Cons | More complex construction, more line items on the invoice |
Model 4: Hybrid with logistics minimum
A variant of the hybrid, where alongside the fixed fee (or instead of it) the operator enforces a minimum variable amount per month. If the client doesn’t generate that amount from operations, they top up the difference to the threshold.
A logistics minimum is a construct that protects the operator from “phantom clients” — those who signed a contract but don’t actually send orders. Specific amounts are a matter of negotiation and depend on the operator’s scale and client profile — in practice they range from a few hundred to a few thousand zlotys per month.
| With logistics minimum | |
|---|---|
| Best for | Medium-to-large client with guaranteed volume |
| Not suitable for | Small test client — the minimum often multiples their real bill |
| Pros | Safe for the operator, clear rules |
| Cons | A low-volume client effectively pays multiples of the listed rate |
The trap: if a client has 100 orders per month at 5 PLN each (that’s 500 PLN from operations) and the minimum is 1,500 PLN, they’re effectively paying 15 PLN per order, not 5 PLN from the price list. Worth saying this to the client out loud when signing the contract.
Model 5: KPI / SLA-based
A model for advanced partnerships. The operator and client agree on concrete metrics — order fulfillment time, picking accuracy, cutoff time, shipping accuracy. Price (or bonus/penalty) depends on the result.
In Polish e-commerce fulfillment this is rare, because it requires a solid measurement system and a lot of trust between the parties. More common in contract logistics with large B2B clients.
| KPI / SLA | |
|---|---|
| Best for | Client with very high volume (1,000+ orders per day), premium verticals, B2B with delay penalties |
| Not suitable for | Small clients — the cost of measurement exceeds the benefit |
| Pros | The operator has a direct stake in quality |
| Cons | Hard to implement, frequent disputes over metric definitions |
Pricing units — where models end and units begin
After picking the model, the second layer of decisions is what units to use for each line of the pricing. These are decisions made at the level of each line item separately.
Storage — pallet location, CBM, location, unit, fixed fee
Storage is continuous occupation of space, so the unit must reflect that. In the Polish market there are five common approaches:
| Unit | When it makes sense | Typical PL rate |
|---|---|---|
| Per pallet location | Palletizable goods, client stocks in pallets | 50-150 PLN/pallet/month |
| Per CBM (cubic meter) | Mixed SKUs, irregular shapes, pallets often half-empty | ~100 PLN per 2 m³/month |
| Per location (shelf, slot) | Small SKUs, cosmetics, accessories | 3-15 PLN/location/month |
| Per unit / day | Highly varied SKUs, micro-products | 0.01-0.05 PLN/unit/day |
| Fixed fee (m² of rented space) | Contract logistics, dedicated section | 15-40 PLN/m² + shared overhead |
These are the models we support in FulBill:

The per-pallet-location trap: if the client has many SKUs and pallets are often half-empty, they’re paying for space they don’t use. Red Stag, in their guide to 3PL pricing, shows the concrete math — billing per CBM instead of per pallet location can reduce storage cost by around 40% for clients with many SKUs. In the Polish market CBM is increasingly a topic of conversation, especially for clients with bulky items.
Pick & Pack — three sub-models
The logic of “pay per order” looks simple, but in practice has three variants depending on how the operator prices picking labor:
| Sub-model | Logic | When to use |
|---|---|---|
| Per order (flat) | One rate for the entire order, regardless of line count | Homogeneous orders, usually one item per package |
| Per order + SKU | Base rate per order + surcharge for each additional SKU | Multi-line orders where SKUs sit in different locations |
| Per order + SKU + units | Base + SKU surcharge + per-unit surcharge | Highly varied orders, B2B with large baskets |
In FulBill each client can have a different model selected:

This really matters, because a warehouse worker’s effort on an order with 1 SKU (15 units) is different from an order with 5 SKUs (3 units each). A flat per-order rate hurts the operator in the second case.
Receiving — container, pallet, carton, per unit
Receiving is an area where the pricing unit depends on the form in which the goods arrive. A client importing from China → containers. A client stocking from local producers → pallets or cartons. A client with small SKUs → per unit.

In a receiving pricing structure, the concept of homogeneous vs. heterogeneous pallets also appears. A homogeneous pallet is a delivery with a single SKU — the warehouse worker unloads it and places it in the slot, conveyor-style work. A heterogeneous pallet is a mix of SKUs — each unit must be identified, sorted, and placed in the appropriate locations. That’s genuinely different work.
That’s why in FulBill pallets and cartons have two rates: one for a homogeneous unit (flat amount), the other for a heterogeneous one (rate for the first SKU + surcharge for each additional SKU on the same pallet/carton). Containers will soon follow the same model.
Returns — per return or return + SKU
Two variants: a flat rate per return regardless of line count, or a rate per return + surcharge per SKU. Same logic as pick&pack — warehouse work on a return with 1 SKU vs. 5 SKUs is genuinely different.

Courier shipping — pass-through or per-carrier rate
Shipping pricing almost always relies on negotiated courier rates — a fulfillment operator has genuinely cheaper rates than a single e-commerce store, because they aggregate volume from many clients. This is one of the concrete economic arguments for outsourcing.

The question to ask an operator isn’t “how much markup do you add” but “how transparently do you pass on the courier pricing”. Some operators add markup, some pass it 1:1. Both are fine, as long as the client knows in advance.
Per-client pricing — why “one price list for everyone” doesn’t work
One operator I spoke with recently told me something I now hear at least once a week: “as many clients as we have, that’s how many price lists we have”.
That sounds banal but has huge consequences. One client sells supplements (pick&pack per order, storage per location). Another sells furniture (per CBM, hybrid with logistics minimum). A third sells cosmetics in bulk volumes (subscription + variable with SLA). Each needs a different combination.
You can do this in Excel, but every new client means a new template, a new formula, a new field to fill in manually every month. An operator serving 8-15 clients on different models genuinely loses several hours to several working days per month on this. Data entry mistakes are common, discussions with the client about “where does this amount come from” are regular.
That’s why in FulBill each client has their own pricing structure, independent of other clients’ structures. You pick concrete models and units for them (client A: per CBM + pick&pack per order + return per unit; client B: per pallet location + pick&pack per order+SKU + return + SKU), enter the rates, and the system pulls operations daily from Baselinker or another source and prepares billing according to that client’s pricing. Each one has their own.
The most common traps in fulfillment pricing
Regardless of the chosen model, certain construction errors keep coming up in pricing structures. A list from my practice of talking to operators:
1. No returns line in the pricing. The operator picks the order, packs it, ships it — and forgets to charge for the return. In fashion, where returns are 20-40% of sales volume, that gap can absorb the entire margin from the client.
2. No weight tiers for international shipments. The client ships a 12 kg parcel to Germany, the operator charges a standard small-parcel rate. The courier charges more, the operator pays the difference out of pocket.
3. No price indexation. Contract signed 3 years ago, labor cost up 40%, energy cost up 30% — and the client still pays old rates. This bleeds the operator, but many are afraid to “raise the topic”.
4. No transparency on courier rates. The operator’s negotiated rates are genuinely better than what a single store gets — that’s clear and undisputed. The trap is elsewhere: the operator doesn’t show the client what a given label actually costs. The client doesn’t know whether they pay the negotiated rate 1:1 or with an operator markup. The markup itself isn’t the problem — the lack of transparency is.
5. No clear definition of “standard handling”. Every additional action (flyer, label, custom packaging) becomes a new line item on the invoice. The client didn’t know that adding a discount coupon to the parcel costs extra.
6. No long-term storage billing. Goods sit for 4 months, the client still pays the starting rate. The operator subsidizes warehouse space out of pocket. Industry standard is a 1.5-3× surcharge on the standard rate for stock sitting longer than 60-90 days.
How to choose a model for your business
Before signing a contract on a specific model, answer these questions about your clients:
- How diverse are they in terms of vertical and product type?
- Do they have seasonality or stable volume?
- What’s the average shipment size?
- Do you handle a lot of small SKU or a little large SKU?
- What percentage of orders have returns?
- Does the client ask about predictability or about the lowest cost?
Second list — questions worth asking the client before pricing:
- How many orders per month do they ship and what’s the seasonality?
- How many SKUs in their catalog and what’s the rotation?
- What’s the average size and weight of a parcel?
- What percentage of returns do they accept?
- Do they want a predictable budget or the lowest total cost?
- Which countries do they ship to?
After these two lists you have enough data to propose one of the five models — or, most often, a hybrid matched to the profile.
Q&A
Can I change the billing model mid-contract with a client? Yes, but it requires an addendum to the contract. It’s worth writing a clause into the contract about reviewing pricing every 12 months — that way changing the model becomes natural, not a crisis move.
Per pallet location or per CBM — which is cheaper for the client? Depends on the product mix. A client with palletizable goods and homogeneous SKUs — per pallet. A client with mixed SKUs, where pallets are often half-empty — per CBM (up to 40% cheaper according to Red Stag).
What are homogeneous and heterogeneous pallets? Homogeneous pallet — delivery with a single SKU, the warehouse worker unloads it conveyor-style. Heterogeneous pallet — mix of SKUs, each unit must be identified and sorted. That’s a genuinely different amount of work, which is why a good pricing structure uses two different rates.
Which model fits a small store (up to 300 orders per month)? Pay-as-you-go with a low subscription, or no subscription at all. A small store doesn’t need predictability, it needs a low entry barrier. A logistics minimum at this stage is a trap.
Which model fits a large B2B client with 5,000+ orders per month? Hybrid with a strong SLA component. The fixed fee covers a dedicated team, variable line items scale with volume, and KPIs guarantee quality.
Should every client have a different pricing structure? Yes, if their sales profiles differ. Out of 10 clients you usually have 3-4 archetypes (small fast-rotating, medium palletizable, large with bulky goods) and each archetype gets its own templated pricing structure.
Wrap-up
Five billing models, six pricing components, a dozen pricing units. Sounds complicated, but in practice most operators use a combination of two or three of these elements. The key isn’t inventing a complex pricing structure — it’s matching the model to the client type and applying it consistently.
If you run a fulfillment operation and feel your current client billing takes too much time or doesn’t feel reliable — write to support@fulbill.pl. I’d be happy to see if FulBill can make it easier.
More about the tool itself — fulbill.com.
About the author: Norbert Sobala. For six years I’ve been working with Baselinker — mainly with e-commerce stores, recently more and more with fulfillment operators. FulBill is my billing system for operators who want to get out of Excel.