Packfit
Cartonization API · v1

Stop paying
to ship air.

Carriers bill by volume. One oversized carton overcharges you on every single parcel, forever. Packfit returns the cheapest carton, the exact packing plan and the billable weight — in one API call, in milliseconds.

No credit card · 500 test packs/month free · REST + JS, Python, PHP SDKs

Live engine output · carton Mfill 64%
400 mm
Items placed
12
Actual weight
6.69 kg
Billable (dim)
7.0 kg
Fingerprint
0mbc4f1y
The maths nobody runs

THE BOX YOU GRABBED

40 × 30 × 25 cm

6.0 kg billable

1 kg of goods, 30 000 cm³ of mostly air. The carrier bills the volume.

THE BOX THAT FITS

24 × 18 × 12 cm

1.1 kg billable

Same order, packed tight. Same carrier, same contract, different invoice.

COMPOUNDED

Every parcel

10–30 % saved

Plus less void fill, fewer parcels per order and fewer damages in transit.

Integration

Three minutes, one endpoint.

Post the items and your carton range. Get back which box, how the goods sit inside it, the billable weight and the reason for every decision. Wire it into checkout for live rates, or into pick-and-pack for the warehouse instruction.

  • Deterministic. Same input, same plan — every time. Integer millimetre geometry, no float drift.
  • Auditable. Every result ships a trace and an input fingerprint you can cache and diff.
  • Tested. Golden test suite asserts no overlap, no floating items, no exceeded payload.
POST /v1/pack
curl https://api.packfit.dev/v1/pack \
  -H "Authorization: Bearer $PACKFIT_KEY" \
  -d '{
    "items": [
      { "sku": "MUG",  "lengthMm": 120, "widthMm": 100,
        "heightMm": 110, "weightG": 380, "quantity": 4 },
      { "sku": "PAN",  "lengthMm": 260, "widthMm": 260,
        "heightMm": 60,  "weightG": 1450, "nonStackable": true }
    ],
    "cartons": [ { "id": "M", "innerLengthMm": 400, "innerWidthMm": 300,
                   "innerHeightMm": 260, "maxPayloadG": 20000 } ],
    "dimWeight": { "divisorCm3PerKg": 5000 }
  }'
Where generic packers give up

Real freight has rules.

Cold chain

Chilled, frozen and ambient goods never share a carton. Coolant volume counts against capacity.

Hazmat

ADR incompatibility groups enforced per carton — and the response tells you which rule fired.

Stacking physics

Non-stackable items stay clear on top, this-side-up limits rotation, crush limits cap the load above.

Multi-warehouse

Split shipments across locations and compare the total landed cost, not just the box count.

Pricing

Test traffic is free. Production is what meters.

Free

€0

500 test packs / mo · no live keys

  • Full engine, all constraints
  • Integrate and test without limits
  • No card required
Get started

Starter

€29

per month · 1 000 live packs

  • Live keys
  • Carrier rate arbitrage
  • Multi-warehouse
  • Email support
Start on Starter

Growth

popular

€199

per month · 50 000 live packs

  • Everything in Starter
  • Higher rate limits
  • 99.9 % SLA
  • Priority support
Start free trial

Scale

€499+

per month · 500 000 live packs

  • Priority latency
  • Savings audit reports
  • Carton range advisory
  • Slack channel
Get started
Questions engineers ask

Frequently asked

What is cartonization?

Choosing which carton an order should ship in and how the items are arranged inside it. It is a 3D bin-packing problem: the goal is the lowest total shipping cost, not merely a box the goods fit into.

Why does the carton size change what I pay?

Carriers bill by dimensional weight: the parcel's volume divided by a carrier divisor, commonly 5000 cm³ per kg. If that number exceeds the actual weight, you are billed for volume — so an oversized carton means paying to ship air on every parcel.

How much can this actually save?

Typically 10 to 30 percent of box and shipping cost, plus less void fill and fewer transit damages. The honest answer for your catalogue comes from the savings audit: we repack a month of your real orders and show the delta before you integrate anything.

Is the output deterministic?

Yes. Geometry is computed in integer millimetres, units are sorted deterministically, and identical input always produces an identical plan regardless of the order in which items are sent. Every response carries an input fingerprint you can use as a cache key.

Can it handle dangerous goods and cold chain?

Yes. Goods with incompatible ADR hazmat classes are never placed in the same carton, and ambient, chilled and frozen items are separated. The response names the rule that caused a separation, so a compliance owner can audit the decision. It is not a substitute for compliance advice — carrier terms and transport regulations take precedence.

What about fragile items and stacking?

Items can be marked non-stackable, restricted to an upright orientation, or given a crush limit that caps the weight allowed to rest above them. Nothing floats: every item sits on the floor or on at least 75 percent solid surface.

Do you store my product data?

No. The endpoint is stateless — dimensions, SKUs and carton data are computed in memory and discarded with the response. We persist only a monthly request counter for quota enforcement.

What happens if something does not fit?

It is reported in the unpacked array with a reason, rather than silently dropped or forced into a carton that does not exist. The packer only ever chooses from the cartons you send.

See what you are overpaying.

Upload a month of historical orders. We repack them against your carton range and hand you the delta — before you write a line of integration code.

Run the savings audit