← All guides

Six shippers' pieces are booked onto the same flight, the build-up window opens in the morning, and nobody has decided which pieces go on which unit.

Building a ULD for mixed cargo

Updated August 24, 2026

Anton Gerdes

Anton Gerdes

Senior Software Engineer, MSc Engineering (Computer Science)

Forty-one pieces from six shippers, all on tomorrow morning’s flight. Two crates of machine parts on skids at 780 kg each. A pallet of pharma in temperature packaging that cannot take anything on top. Nine drums. One steel section three metres long that will only sit one way up. The rest is cartons of assorted sizes.

The units are already booked: three PMCs and two AKEs. Nobody has decided which piece goes on which one, and the build-up floor opens at six.

This is not the same question as how much freight the flight can take. That was settled at booking. What is left is a sequence of decisions about a fixed set of units, each one narrowing the next, and the whole sequence has to be finished before anyone puts a piece on a pallet — because the expensive version of this job is the one where you find out at the third unit that the first two were built wrong.

If you need the dimensions, payloads and contour codes themselves rather than the sequence, they are in ULD types and dimensions. This page assumes you have them.

Start with the position, not the pallet

The first mistake is treating a ULD as a box with a published size. It is not. The unit’s capacity is set by the position it flies in, and the same pallet code is rated differently in different places on the same aircraft.

So the constraint you resolve first is the position: it fixes the contour the build must taper to, and it fixes the maximum gross weight, before any cargo has been picked. Everything below this section is decided inside those two numbers.

In Cargo-Planner this is the aircraft setup step. Premade aircraft carry several configurations at once — a main-deck layout, a lower-deck-only layout, one for oversized cargo — and all of them are active by default. You narrow to the one you are actually building for by setting the max quantity of the ULDs you are not using to zero.

Where a specific position differs from the library unit, the difference belongs on the position rather than on the container type. A set records per-position overrides on length, width, height, payload and the maximum height, length and width — saved as diffs, so the container type behind it stays intact. That is the mechanism behind “the same PAG is not the same PAG everywhere”, and it is worth setting up once rather than remembering every time.

What the consignment actually is

Now the cargo. Not the manifest weights and the rounded dimensions from the booking — the real ones, per piece, because at build-up the difference is the build.

The property that decides the most here is which pieces can be a base and which cannot. Four fields carry it:

  • Not stackable — nothing may go on top, though the piece itself can sit on something else.
  • Bottom only — the piece has to be on the floor of the unit, and by default other cargo may still go on top of it.
  • Max load — the weight the piece will carry, which is the honest version of “stackable” for anything that is not a solid crate.
  • Max Layers — how many of the same piece may be stacked on each other.

Add orientations for anything that will only sit one way up, like the steel section. Getting all of that in by hand for forty-one pieces is not realistic against a morning deadline, so import it from the manifest and set the properties on the rows that need them.

One thing this page deliberately does not settle: mixed cargo means mixed densities, and what you are charged for is not always what you are carrying. That is set by the shipping factor and it is a separate calculation from whether the build fits.

Which pieces may share a unit

Some of the constraints on mixing are about permission rather than space, and they have to be settled before you start arranging anything, because they decide how many independent problems you actually have.

Pieces carrying the same Group / Consignment ID load together, and by default pieces with different IDs go into different containers. That default is the right one for most forwarders — one shipper’s freight stays as one shipper’s freight. Where the commercial arrangement is stricter, the load settings can enforce that shipments are never mixed, that a shipment uses at most one unit, or that a shipment goes entirely or not at all.

Named exclusions between specific pieces are custom rules: cannot be loaded with for pairs that may not share a unit, and cannot support or can only support for pieces that may travel together but only in one order.

Dangerous goods are one constraint in this list, not the subject of it. Classes are assigned to cargo and separated through the segregation table; the full treatment is in loading dangerous goods.

What none of that catches is the pairing that is compatible on every document and still wrong on the floor. Nothing is hazardous, the classes do not conflict, the dimensions fit and the weights are inside the limits — and then a heavy crate goes next to a lighter one, the securing tension goes on, and the lighter packaging starts to deform. Or two pieces are stackable by dimension, but the upper one sits on runners that put its whole weight through four narrow points. Or both pieces go exactly where the drawing shows and nobody can now reach the lashing point to tension the strap.

Fit is not the same as loadability. The three questions worth asking of any pairing before it goes on a unit are: where does the weight actually land, where does the securing tension actually pull, and can a person still reach the securing point once the neighbour is in place. A plan that looks unusually clean is usually a plan where nobody asked them.

Building to the contour, not the footprint

The taper is what makes an air build different from every other kind. Lower-deck containers are cut away at the bottom corner to sit against the fuselage; main-deck builds slope in at the top to clear the crown. Base area multiplied by height quietly overbuilds both, and the overbuild is discovered at the point where the unit will not close.

Cargo-Planner describes each of those cuts as a contour: a triangular cut into one corner of the envelope, treated as unusable space. There are up to eight, one per corner, arranged as four faces with a Bottom and a Top group each. Air pallets and containers also load from the floor upwards rather than front to back, which is the app modelling a build as a build rather than as a stuff-the-box exercise. Where stability matters more than the last few centimetres, building in layers rather than towers is a setting rather than a discipline, and the allowed overhang and single cargo support settings decide how much a piece may stand proud of whatever is under it.

The fair question about all of this is how close a triangle is to a curve, and whether the answer means you should hold a margin back under the crown.

We build every container in the library from the published specification, as close a representation as we can get, and we have a spoken motto for it: if it fits in Cargo-Planner, it should fit in reality. But it is a trade-off, and the trade-off is where to put the safety margin. Overstate the container’s capacity and the customer’s cargo does not fit. Understate it and they under-use equipment they have paid for. It is a case-by-case judgement and we are aware of it.

On curves against straight lines specifically: capacity-wise this is almost never the major factor, because there are larger sources of granularity in the same calculation — the margin of error on the cargo dimensions is a bigger one. So the advice this page will not give you is to keep a blanket margin under the crown to compensate for how the contour is modelled. If you are going to carry a margin, carry it where the uncertainty actually is, on the piece dimensions, where there is an error margin setting for exactly that.

Curves themselves are a hard problem: modelling them drastically increases the compute needed to optimise, to the point where our reading is that it is not feasible for anyone, and we think the trade-off is sound. Where the shape of a specific unit genuinely is the deciding factor, users are almost always aware of it — and what we see is that they model it themselves. That is a large part of why the product is built to be customised: you can build your own containers and sets to encode your own instincts about the overstate-versus-understate problem, and then read the results against judgement calls you made yourself. It is a more resilient workflow than trusting a number you did not set.

Raising the build off the net edge

The nets that secure a pallet build attach at the edge of the base. That means the bottom of the build has to stay inside the attachment points, while everything above them can use the full width and length of the unit. The bottom layer is the narrow one.

A spacer changes the shape of that problem. Put dunnage down first and the cargo sits above the rails and the net attachment points, so it can overhang the base: you lose some height capacity and gain width and length.

This feature is the best example I have of how the product learns from its users. Load-planning professionals like to play gotcha with us — “surely your software can’t take this into account” — and we enjoy it, because sometimes we get to prove them wrong and sometimes they are right and it sends us to the drawing board. Here, a user told us flat out that this was how they actually work: they sometimes load a bottom spacer first, deliberately, to use width and length better. The emphasis is on sometimes. They do it when their instinct and their expert knowledge call for it.

The way we model it is nothing different from how Cargo-Planner already handles container selection. One cargo selection, two container variants — one with a bottom spacer and one without. Which performs better? Go with that one.

In the equipment itself the two behaviours are separate fields on the bottom spacer group: an auto height, where the load plan decides whether to insert a spacer, and a fixed height, where the container always raises its floor by that amount. Set one or the other, never both. Fixed is for a unit that is always built on dunnage; auto is for the decision above.

The value splits by who you are. The professionals already had the knowledge to make that call — their win is that the judgement is now represented accurately in the plan rather than living only in their head. For someone new to build-up, the win is larger and more basic: they stop discovering the answer by loading the unit, taking it apart and loading it again.

Checking the built unit against the position it flies on

Two of the units are now full and one is close. This is the point to check them against the position rather than against the pallet, because it is the last point where a fix is free.

The published maximum gross weight is the weight of the loaded unit, so the ULD’s own tare comes off before any cargo does — the payload figures in the ULD reference are already net of it. If the position you are flying carries a lower payload than the unit’s rating, that is a per-position override rather than a note in the file.

Then look at the build. The interactive view is where a plan stops being a result and becomes something you have worked on: select a piece, move it, measure the gap, put the heavy crate where you would actually have put it. We put a lot of weight on this deliberately. The person planning the build is the one who knows the real-world constraints on it, and the tool’s job is to make them the advocate for those constraints rather than the recipient of a number.

An offload at the ramp costs the rebuild, the position and usually the flight. Everything above is cheaper than that.

When the units also have to fit an aircraft

Sometimes the units are the whole job and sometimes they are half of it. If you are planning the aircraft as well as the builds, the same cargo list can be loaded into a full aircraft and reviewed in the Overview tab, and aircraft models are sets of named bays, so Load in sets applies to them the same way it applies to a road combination.

How many units a given consignment needs is a different question from this one, with a different answer shape, and this page is not it. Here the units were booked before the first decision was made.

What the build-up floor receives

The last step is turning the plan into something a crew can build to without asking questions. A custom layout puts a section per unit into the output, with the blocks that matter on the floor — the 3D view, the item table, the loading instructions — and drops the ones that do not. It goes out as PDF or Excel, and if the build is being done by a handler who is not a Cargo-Planner user, the plan can be shared as a link they open without an account.

When this is not the job you have

  • If what you need is the numbers rather than the sequence — dimensions, payloads, contour codes, how to read a ULD code — start at ULD types and dimensions.
  • If the hard part is what may travel with what rather than whether it fits, see loading dangerous goods.
  • If the plan keeps arriving on the floor in a form nobody can follow, that is its own discipline: why loading instructions matter.
  • If you are earlier than all of this and want the concept rather than the job, start with what a load plan is.