Billing

Storage in detail

9 min read 1 Oct 2026 Cargoflow Team

Overview

Storage is the charge for the days a client’s goods occupy the warehouse. It is billed per pallet per day and has two modes: at shipment, which bills in one go the days of what leaves, and daily accrual, which every night bills what is on the floor. A client uses one or the other, never both: the system keeps track so each pallet-day is billed only once.

Before you start

  • Billing and Inventory modules enabled in the warehouse. Without Inventory there is nothing to count.
  • An active storage service in the catalog (the one with code storage), with the Per Pallet / Day basis, a base price and free days.
  • Pallet packaging on every product. It is the point that causes the most errors: see From pieces to pallets.
  • The client’s rate if they negotiated a different price, free days, minimum or mode. Unlike handling, storage is billed even if the client doesn’t have it on their rate card, at the base price.

Which mode each client uses

  1. The client’s storage row wins. On their Pricing tab, Auto charge column: Charge at shipment, Daily (accrual) or Do NOT charge storage. On the new Rate card: Storage days, charged when shipping, Storage days, accrued daily or Do not charge (excluded).
  2. If the client didn’t choose, the catalog decides: if the storage service has “When is it charged?” set to Daily storage accrual, it is daily; with any other value, it is at shipment.
Important: the help text on that rate card column says an empty value means daily accrual as the catalog default. That is not accurate: empty means “whatever the catalog says”, and the catalog the system ships with bills at shipment. If you want daily accrual for a client, choose it explicitly.

The daily and do-not-charge options only appear when the storage row uses the per-pallet-per-day basis.

Storage at shipment

When a supervisor marks a shipment as shipped, the system takes what was actually picked and, for each picked line:

  1. Looks up the arrival date of the exact lot that was taken (the same one the oldest-first pick list uses), not an average.
  2. Counts calendar days from the arrival day to the shipment’s Actual ship-out date.
  3. Subtracts the rate’s free days. If the result is 0 or less, those goods pay nothing.
  4. Groups by product and billable days, converts pieces to pallets (rounding up) and multiplies pallets × days.

One charge is created per client and shipment, with a quantity in pallet-days, travelling on the same invoice as shipping handling. If everything left within free days, there is no charge.

Tip: the Actual ship-out date is entered when closing the shipment and defaults to today. If the truck left yesterday and you close it today, change it: the field’s help says so, “storage days are billed up to this date”.

Daily accrual

Every day at 2:00 a.m. (system time), for each warehouse with Billing and each client with goods:

  1. If the client is not on daily mode, it is skipped.
  2. It takes their stock with quantity, outside the cross-dock staging location, whose arrival date is already older than their free days.
  3. It adds up pieces per product and converts them to pallets (rounding up per product).
  4. It creates a storage charge for that day, with the number of pallets.
  • A day is never billed twice: if the process runs again, it sees that client already has that day’s storage.
  • It only accrues per pallet per day rates. If the client’s storage uses another basis, daily accrual bills nothing.
  • With no price anywhere, no charge is created.
  • Daily charges are grouped by client and day; a monthly client gets all of them together on their monthly invoice.

From pieces to pallets

Stock is kept in pieces. To bill per pallet, each product needs to state how many pieces a pallet holds. Storage uses the Pallet level of the product’s packaging, whatever its code (PLT, pallet, SKID).

Important: if a product has no pallet level, each piece counts as a pallet. A client with 1,410 pieces on the floor would pay 1,410 pallet-days instead of 15. Tick Stacked on every product charged per pallet.

Rounding is up, per product: 130 pieces at 60 per pallet are 3 pallets, even if the third is half full.

Which arrival date counts

  • Receipt — the Actual arrival date entered when confirming (it can be before the confirmation).
  • Transfer within the warehouse — keeps the original arrival date: moving a pallet to another location doesn’t reset its clock.
  • Transfer between warehouses — at the destination warehouse the clock starts on the day it arrives.
  • Adjustment that creates new stock — starts on the adjustment day.
  • Migrated stock with no date — the date it was created in the system is used.

Every night at 1:30, before storage, the system cleans up empty stock rows with no movement for more than 7 days. Rows emptied more recently keep their date in case the goods come back.

Storage minimums and maximums

  • At shipment: minimum and maximum apply on each invoice to that operation’s storage.
  • Daily: they are understood as monthly and only apply to clients with Monthly payment terms, on the month’s storage. For a client invoiced per transaction, the daily storage minimum is not applied.

Switching modes mid-stay

If a client was accruing daily and you move them to billing at shipment, the system remembers the last day already accrued. At shipment it only counts from that day and discounts the free days already used before, so no pallet-day is billed twice.

The other way round —from at shipment to daily—, accrual starts billing that night on everything past its free days; what leaves afterwards no longer creates storage at shipment. Make the switch at the start of a period so the client understands their invoices.

Other storage: per day and oversized

  • Trailer yard storage (Per Day basis): doesn’t depend on pallets. If the client has it set to charge at shipment, it is created automatically with quantity = calendar days from the earliest arrival of what was picked to the departure, minus its free days. If that cannot be calculated, it shows on the invoice as a charge to capture with that suggestion. See Services charged automatically.
  • Oversized pallet storage and any other per-pallet-per-day service besides the main storage: never billed on their own. They are added by hand on the invoice.

What never bills storage

  • Goods in a cross-dock staging location, in both modes: they cross the dock, they are not stored.
  • Clients with the do not charge storage option.
  • What leaves within its free days.
  • Warehouses without the Billing module.

How it looks on the invoice

The storage line carries a breakdown of where the quantity came from:

  • At shipment: “50 pcs × 12 days (arrived 02 Sep 2026) + 20 pcs × 5 days (arrived 09 Sep 2026) · 3 free days”. Pieces that left within free days don’t appear.
  • Daily: “Storage for 14 Sep 2026 · 3 free days”.

That breakdown also shows on the charge detail and on the PDF, if the invoice format includes it.

Full example

Central Warehousing has storage at shipment at 0.80 per pallet per day with 5 free days. Its product holds 40 pieces per pallet.

  • A lot of 400 pieces (10 pallets) arrives on September 1.
  • On September 12 a 120-piece shipment leaves. Days: 1st to 12th = 11; minus 5 free = 6. Pallets: 120 ÷ 40 = 3. Charge: 3 × 6 = 18 pallet-days × 0.80 = 14.40.
  • On September 3 another 40 pieces left: 2 days, within free days, no charge.

If the same client were on daily accrual, from September 6 to 12 every night the pallets on the floor would be billed (10, then 9 after the departure on the 3rd, and so on), one charge per day.

Best practices

  • Check that every product has its pallet level before billing storage.
  • Choose the mode per client explicitly on their rate card; don’t rely on the catalog value.
  • Enter the actual arrival and ship-out dates.
  • If a client needs a monthly storage minimum, put them on Monthly payment terms.
  • Review each new client’s first invoice with storage against what they have on the floor.

Troubleshooting

Storage came out with thousands of pallet-days.

  • Some product has no pallet level and each piece counted as a pallet. Fix the product and the line on the invoice (quantity).

A client has no storage even though they have goods from months ago.

  • They are on at-shipment mode: it is billed when the goods leave.
  • They have the do-not-charge option.
  • They are on daily but their rate is not per pallet per day.

The shipment left and there was no storage.

  • Everything picked was within free days, or it left from a cross-dock staging location.

The days don’t add up.

  • Check the shipment’s actual ship-out date and the arrival date of the picked lot (in the stock history). A transfer between warehouses resets the clock.

The storage minimum was not applied.

  • With daily accrual the minimum only applies to monthly clients.

FAQ

Which mode is better?

At shipment bills exactly what left and how long it stayed, and travels with the shipment’s invoice: it is the easiest to explain to the client. Daily gives steady revenue even when goods don’t move, and fits monthly clients and monthly minimums better.

Is the arrival day billed?

At shipment, calendar days between arrival and departure are counted: what arrives and leaves the same day has 0 days. On daily, goods start billing the night they have used up their free days.

Need help?

If something did not work as expected, our support team can help you.

Was this article helpful?

Share: