# How X3D works

> The full path from a model to a parcel: validation, a real OrcaSlicer measurement, checkout, the operator queue, printing, cooldown, packing and tracking.

Source: https://x3dstudios.com/docs/how-it-works  ·  Updated: 2026-10-20

This page follows one part all the way through: from the file you upload to the parcel that arrives. Read it if you want to know where a number in your quote came from, what happens after you pay, or which steps are software and which are a person standing in front of a printer.

Everything below happens in the same order for a model you generated at /design and a file you uploaded at /print. The only difference is where the mesh came from.

## The pipeline

1. **1. Upload or generate** — An uploaded file goes straight from your browser to storage through a signed URL, because a 100MB model cannot fit in a normal request body. A generated model is written to the same place. Either way, what you end up with is one stored model tied to your account, or, for an upload made while signed out, to your browser until you sign in to order it.

2. **2. Validate the mesh** — The server reads the bytes back and works out what it has: triangle count, bounding box, volume. A file it cannot read a printable mesh from is rejected here with a 422, and a model whose largest three dimensions do not fit 340 x 320 x 340mm is rejected with a message naming its actual size. Rejecting now costs you a minute; rejecting three hours into a print costs a plate.

3. **3. Slice it for real** — The model is sent to our slicer service, which runs OrcaSlicer against Bambu's own machine, process and filament presets. It comes back with the filament volume in cm3, the print time in seconds, the layer count and the number of filament changes. That measurement is cached against the model so it is only paid for once.

4. **4. Quote from the measurement** — Filament volume times the material density gives grams. Grams times the all-in rate for that material, times 1.75 if you chose premium 0.1mm layers, gives the price. Weight rounds up to the whole gram and there is a $1.00 minimum per part.

5. **5. Check out** — You choose how fast it is printed (Normal, or Priority print to go first in the queue: $5, or 10% of the items when that is more) and how fast it is posted (standard or express in the US). Stripe collects the card and the address. The price is recomputed on the server from the stored model at this moment — the number your browser was showing is never trusted. Shipping is added as its own line so a gift card can settle it.

6. **6. The order and the work order** — Stripe confirming payment is what creates the order and gives it its number, such as 2610019; an unpaid checkout never takes one. You get a confirmation email; the operator gets the same summary plus a work order carrying a signed download link to your file, valid for seven days, and every setting the print needs.

7. **7. Queue it onto a machine** — The operator picks a printer and, for a multi-colour plate, the AMS trays. The server then slices the model again, this time for that specific printer, nozzle and plastic, and puts the finished plate in the queue. A multi-plate colour project is queued as one job per plate. The tray the operator picked is fingerprinted as TYPE:#HEX so that if the spool is swapped before the job starts, the dialog reopens and says so.

8. **8. Print, then cool** — A finished print is not a collectable print. Parts release from a PEI plate when the bed contracts, so after the last layer the machine runs its fans and the job is held until the bed is at a removal temperature: 35C for PLA, PETG and TPU, 45C plus a chamber under 40C for ABS and ASA. It releases anyway after 45 minutes and says the part may still be warm. When the last plate of your order has finished, the order moves to printed and you get that email.

9. **9. Inspect, pack, label, ship** — A person takes the part off the plate, looks at it, packs it and buys a label. The tracking number and carrier are recorded against your order, and the shipped email carries the number as a link.

10. **10. Delivered** — A nightly job asks the carrier about every shipped order that has a tracking number. When the carrier says delivered, the order moves to delivered and you get the last email.

---

## Why the quote comes from a slice

This is the part of the system worth understanding, because it is where most print services differ from us. You are billed per gram. The question is how the grams are worked out before the part exists.

A volume estimate takes the mesh volume, assumes some fraction of it is solid wall and the rest is infill, and multiplies by density. It is fast, it needs no infrastructure, and it is wrong in a specific direction: it cannot see supports, it cannot see the brim, it cannot see the purge a filament change throws away, and it does not know how the slicer will actually lay down walls on a thin part. Thin parts are where it fails worst — a plate that estimated at 12.9g came off the printer at 21g.

A slicer does not estimate any of that. It generates the actual toolpath and reports the filament it will consume, which already includes the supports, the brim, the skirt, the prime line and every purge. A multi-colour plate is the extreme case: four colours on the same mesh can burn 120g where one colour burns 40g, and can turn 30 minutes into 20 hours, because the printer spends most of its time swapping and purging. No function of geometry can predict that. A slicer just measures it, which is why every colour price, for a plate you sliced, a project we slice in its own colours, or a generated model, comes from a real slice.

|  | Volume estimate | Real slice |
| --- | --- | --- |
| Where it comes from | Mesh volume and an infill assumption | OrcaSlicer with Bambu's presets |
| Sees supports and brim | No | Yes — they are in the filament total |
| Sees multi-colour purge | No — and no purge is charged for on an estimate | Yes, per filament |
| Knows the real print time | No — derived from a throughput constant | Yes |
| Time to produce | Instant | Roughly 10 to 60 seconds |
| Used for | The first price the page shows | The price you are charged |

*Both exist. The estimate is a placeholder; the slice is the quote.*

> **Checkout refuses an unmeasured print** — If the slicer has not finished when you press Checkout, the cart holds the button closed and the server answers 409 rather than charging you. Slicing usually takes 10 to 60 seconds. The alternative — charging the estimate — means selling below the rate we advertise, so the cart waits instead.

The estimate is still used in two places. It is the number the page shows in the first seconds after upload, before the slice lands. And it is used when a slice would not be representative: above 35% requested infill the slicer runs at its profile default, so its answer stops matching what you asked for and the estimate takes over. If the slicer is unreachable, quotes fall back to the estimate everywhere except checkout, which blocks.

> **Slice it yourself and we use your numbers** — Upload a .gcode.3mf plate you exported from Bambu Studio or OrcaSlicer (a bare .gcode is not accepted at /print) and there is nothing for us to measure — its own filament weight and print time become the quote, and its plate is printed exactly as you arranged it. A file you sliced already contains every purge and tool change, so nothing is added on top of its own numbers — the only thing that can bill separately is measured hours far past what its weight implies.

## What the price is made of

For an ordinary part there is one line: weight times rate. Machine time is only billed separately in one case: a file you sliced yourself whose measured hours run far past what its weight implies, which is what tool changes on a plate you painted yourself look like in the numbers. The one fixed charge is for colour: a print using five to eight colours adds a $25 second-AMS fee once per order line.

| Line | How it is worked out |
| --- | --- |
| Billable grams | Sliced filament volume x material density, rounded up to the whole gram |
| Per-gram rate | $0.12 PLA, PETG and ABS; $0.14 ASA; $0.25 TPU. A colour we do not stock is $0.20/g (TPU keeps its $0.25/g) |
| Quality | Standard 0.2mm layers x1. Premium 0.1mm layers x1.75 |
| Minimum | $1.00 per part |
| Bulk | 5% off at 5 or more of a part, 10% off at 10 or more |
| Shipping | US standard $7, free over $49.50; US express $15. International $30 flat, free over $500 |
| Priority print | $5, or 10% of the items when that is more, once per order if you choose it; Normal print is included |

*Full detail, including the excess-hours surcharge on a file you sliced yourself, is on the pricing page.*

## What is automated and what is a person

Docs that blur this line are how customers end up expecting a robot to catch something only a human was ever going to catch. So, plainly:

| Step | Who does it |
| --- | --- |
| Mesh validation and build-volume check | Automatic, on upload |
| Slicing and quoting | Automatic |
| Re-quoting at checkout | Automatic, server-side |
| Safety check on the plate | Automatic — dangerous G-code commands, temperature ceilings, wrong printer model |
| Choosing the printer and the spools | Operator, in front of the fleet |
| Cooldown before the part is collectable | Automatic, watching the bed temperature |
| Looking at the finished part | A person. There is no vision model and no automated pass/fail record |
| Advancing to queued, packed and shipped | Operator, by hand |
| Advancing to printed | Automatic when the order's last plate finishes on the farm's queue, or by hand |
| Setting delivered | Automatic, from the carrier, nightly |

> **One honest limit** — The printer's own detectors do run — every job we send carries first-layer inspection turned on, and Bambu's spaghetti detector watches through the chamber camera throughout. What is missing is on our side: we do not read those verdicts back or gate anything on them, and nothing records a pass or a fail against your order. The judgement that a finished part is good enough to ship is a person looking at it. This is a known gap.

## Following it afterwards

Your orders live at /orders. An order moves through six stages plus cancelled, and every move after the first emails you: queued, printed, packed, shipped and delivered. Placed does not, because the confirmation email already went out at checkout. An order you collect from us instead ends Ready for pickup, then Picked up.

| Stage | Meaning | Emails you |
| --- | --- | --- |
| placed | Paid, waiting for a printer | No |
| queued | In the print queue | Yes |
| printed | Off the printer and cooling | Yes |
| packed | Boxed, waiting for pickup | Yes |
| shipped | Handed to the carrier, tracking recorded | Yes |
| delivered | Carrier confirmed delivery | Yes |
| cancelled | Cancelled, any payment refunded | No |

The clickable tracking link is in the shipped email, with the carrier name on it. The /orders page shows the same tracking number as plain text without a link — a known gap, not a missing number.

---

- [Pricing model](https://x3dstudios.com/docs/pricing) — Every line of the quote, the excess-hours surcharge, and how bulk and minimums interact.
- [Printability checks](https://x3dstudios.com/docs/studio/printability) — What the mesh review actually measures, and what it deliberately does not.
- [Capacity and lead times](https://x3dstudios.com/docs/farm/capacity) — How the live lead-time figure on /farm is computed from real throughput.
- [Quality and inspection](https://x3dstudios.com/docs/farm/quality) — The safety checks on a plate, the cooldown gate, and what a person still does by eye.

[Upload a model and see the quote](https://x3dstudios.com/print)

## Frequently asked

**Why does X3D slice my model before quoting it?**

Because weight is what you are billed for, and geometry alone cannot predict weight. A slicer knows the walls, the infill, the supports, the brim and the purge, and it reports the grams that actually leave the nozzle. A volume estimate misses all of that and undercounts thin parts badly, so we measure instead of guessing.

**What happens between paying and the part being printed?**

Payment creates the order and sends the operator a work order with your file and every setting on it. The operator queues the item onto a specific printer and specific AMS trays, the server slices it for that machine and that plastic, and the plate goes into the queue. Nothing starts on a printer until a person has picked the machine and the spools.

**Is any of the order pipeline automated?**

Parts of it. Slicing, the safety checks on the plate, the cooldown gate and the delivery sweep are automatic. Moving an order to queued, packed and shipped is done by hand by the operator, because it describes a physical object nothing in software can see. Printed is set by itself once the last plate of the order finishes on the farm's queue, and delivered by a nightly job that asks the carrier.
