Checkout and payment
How an X3D order is priced, discounted and charged: the cart re-quote before payment, Normal or Priority print, support removal, gift cards, shipping, payment links, and when your card is actually billed.
This page covers everything between the cart and a paid order: how the price is recalculated the moment before you are charged, what a gift card or discount does to the total, and when the money actually leaves your card. Prints are sold by weight, so the number in your cart is not final until the model has been through the slicer.
What you are charged for#
A cart total is goods and shipping, plus four charges that appear only when they apply: the second-AMS fee on a print using five or more colours, the new-filament fee for a colour or filament we buy in for you, Priority print if you choose it, and support removal if you choose it. Any discount comes off after that. There is no handling fee and no tax line.
| Line | How it is worked out |
|---|---|
| Print items | Re-quoted on the server from the stored model — billable grams at the material's per-gram rate, rounded up to the whole gram, $1.00 minimum per part. See /docs/pricing. |
| Store products | The catalogue price for that product and quantity. |
| Shipping (US) | Standard $7, free once goods reach $49.50; or express $15, never free. |
| Shipping (international) | $30 flat, free once goods reach $500. |
| Second-AMS fee | $25 for each cart line printing in five or more colours, once whatever its quantity. |
| New filament | $15 for each different spool we buy for the order: a catalog filament with no stock, a custom colour, or a custom filament. Free when goods come to more than $100. |
| Priority print | $5, or 10% of the items when that is more, once per order, only if you choose it and the cart holds a print. The items are the goods after any volume discount, before postage, discounts and gift cards. Normal print costs nothing. |
| Support removal | $10 once per order, only if you choose it and the cart holds a print. Recommended when a model needs support; leaving it off ships the part with its supports on. |
| First-order discount | 10% of goods only, for an account with no previous order and no paid plan. |
| Gift card | Whatever is spendable on the card, up to what is still owed. |
| Sales tax | Not collected. No tax is added to the Stripe session. |
The cart re-prices before it charges#
A print's price is written into your browser when you add it. That number can go stale — an older price sheet, or a quote made from the volume estimate before the slicer had weighed the model. Opening the cart posts your print items back for a fresh quote.
/api/cart-repriceSigned inRe-quote every print in the cart and report which ones are still unmeasured.
The response carries prices, keyed by cart item id, and measuring, a list of ids whose price is still a volume estimate. While measuring is not empty the Checkout button stays disabled and reads Weighing your print. A project ordered in its own colours whose colour slice is still running is in measuring too. unpriceable lists items that will never be measured, with the reason, such as a project whose colours turned out not to be printable; and secondAmsFees gives the $25 second-AMS fee, keyed by item id, for each print using five or more colours. It is capped at 60 requests an hour per account, and the first 40 items in the cart.
A print that can never be measured is refused with 422 and the reason instead, and a colour order is never swapped for a single-colour one: if a project's colours cannot be printed, the item has to be removed and added again in one colour. A print using five or more colours adds the $25 second-AMS fee as its own Stripe line, once for that cart line however many copies it holds. The fee is not goods, so the first-order discount and promo codes are not taken off it and it does not count toward free shipping, but a gift card can settle it like postage.
One limit worth knowing: the cart quotes each print as a single unit, so the 5-unit and 10-unit bulk tiers are not applied through the cart. They do apply on the Print and Ship button on /print and on API orders, where the quantity reaches the quote.
Normal or Priority print#
Beside the shipping choice, checkout asks how soon the order is printed. The two choices add up: the print speed is how long until the parcel leaves Austin, and the shipping speed is how long it then spends with the carrier.
| Print speed | Price | Ships in |
|---|---|---|
| Normal print | Included | 4–5 business days |
| Priority print | $5, or 10% of the items when that is more, once per order | 1–2 business days |
- It is offered on /print, in the design studio's Print & Ship, and in the cart whenever the cart holds at least one print. Store products are picked off the shelf, so a cart of store products alone, or Buy Now on a product page, has no print speed and is never charged for one.
- Once per order: a cart with three prints and a desk clock pays it once, worked on all four items together.
- Priority print puts the order's prints first in the farm's queue. That is the half of the wait it changes; express shipping changes the other half.
- No discount is taken off it: the first-order discount, X3DMEMBER and a Pro plan's 10% are all worked out without it. It does not count toward free shipping either. A gift card or print credit can pay it, like postage.
- In the cart it is a line of its own at Stripe, named Priority print. Print & Ship folds it into the order's one Stripe line.
- The confirmation email names the print speed you chose, and your order on /orders and its stage emails list Priority print as a row of its own.
- Print API and MCP orders have no print speed to choose and are printed at Normal.
Paying#
Checkout hands off to Stripe Checkout as a one-off payment. Card details are entered on Stripe's page and never reach X3D. Your account email is prefilled, and the delivery address is collected there rather than in the cart.
Choose United States or International before checking out: in the cart, on Print & Ship, and on Buy Now for a single store product. That choice sets both the shipping rate and which countries Stripe will accept an address in: US only for domestic, and AE, AT, AU, BE, CA, CH, DE, DK, ES, FI, FR, GB, IE, IN, IT, JP, MX, NL, NO, NZ, PT, SE, SG for international.
The session does not pin a list of payment methods, so what you are offered on that page comes from Stripe, not from us. A card always works. A gift card is not a payment method here — it is applied as a discount on the session before Stripe asks for anything, which is also how an order fully covered by one can complete at $0.
Discounts, gift cards and promo codes#
First order#
A first order takes 10% off. It is applied as a fixed amount worked out from goods only, so it never comes off postage — a percentage coupon used to take 10% off the shipping line too, which is how the cart once said $10.40 while Stripe charged $9.90. Eligibility is checked on the server: no orders on the account, and no paid plan. If that check errors, the discount is withheld rather than guessed at.
Gift cards#
Enter the code in the cart and press Apply. It is validated before it shows as applied, so a bad code fails there rather than after you have committed to a checkout.
/api/gift-cards/checkSigned inValidate a gift card code and return its spendable balance.
A good card returns valid: true, the tidied-up code, and availableCents — the spendable balance, not the face value, which differ once part of it has been spent. An unknown code, a voided card and an empty card all answer with the same 404, so guessing gets no signal. You get 20 checks an hour.
At checkout the balance is held, not spent. The hold is taken against what is owed after the percentage discount, and only turned into a deduction when Stripe confirms the payment — an abandoned cart never quietly eats somebody's present. If the checkout session fails to open, the hold is released immediately. A card that covers the whole bill leaves nothing to pay; Stripe still collects your delivery address and completes the order at $0.
Promo codes#
X3DMEMBER takes 5% off, once per account. It is printed on the thank-you card in every parcel, so it is a code for your next order rather than your first. Type it into the cart and press Apply: it is checked against your account before it shows as applied, and the summary total moves straight away, so what the cart says is what Stripe is asked for.
/api/promo/checkSigned inValidate a promo code against the signed-in account, without spending it.
Like the first-order discount, the 5% is worked out from goods only and never comes off postage. Checking a code never consumes it — the one use is only held when you start a checkout, and only spent when Stripe confirms the payment, so a cart you abandon gives the code back. You get 20 checks an hour.
Any other code is looked up in Stripe. If it does not match an active code, checkout continues at full price rather than failing. With no code entered, Stripe’s own promotion-code box is enabled on the payment page instead. Both only happen when the session’s single discount slot is free: a gift card or one of our own discounts claims it first.
When your card is charged#
- 1You press Checkout
The cart is re-quoted on the server, a gift card hold is taken if you entered a code, and a work order listing every file and print setting is written for the farm. Nothing has been charged yet.
- 2Stripe takes the payment
You are sent to Stripe Checkout. The charge happens when you confirm it there — not when you added to the cart, and not when you pressed Checkout.
- 3The webhook creates the order
Stripe calls back. This is when the order gets its number, such as 2610019: only a paid order is numbered, so a checkout nobody pays for never takes one and the numbers run without gaps. The order record is written at stage placed, any gift card hold is spent, and the confirmation emails go out. This step is idempotent, so a retried webhook cannot create a second order, a second number or a second email.
- 4You land back on /orders
The success redirect is /orders?checkout=success with the session id attached. The page asks the server to confirm the payment status; that probe is read-only and creates nothing.
What the receipt contains#
- A confirmation email from [email protected], subject Order confirmed - #<order number>, listing the order number, the items, the total charged, the print speed, the delivery service with its transit estimate, and the shipping address.
- Stripe's own receipt for the charge, linked as Receipt beside the payment under Payment History on /orders, whenever Stripe issued one.
- For several orders at once, the Statement / invoice link on /orders builds one statement for a date range, which you can download as a PDF. See /docs/studio/orders.
The customer copy is a plain summary. Signed download links for the model files go only to the operator copy of the email, since you already hold your own files.
Checkouts that skip the cart#
| Path | How it charges |
|---|---|
| Print and Ship on /print | Quotes the model at the quantity you chose, so the bulk tiers apply. Stripe shows the order as one 3D Print Order line, with any second-AMS fee inside it rather than as a line of its own. A Pro plan takes 10% off, any monthly print credit is spent next, and Stripe collects the remainder. An order fully covered by print credit still opens Stripe, discounted to $0: no card is asked for, and the page collects the delivery address before the order is placed. A checkout holding print credit stays open for 35 minutes; ordering the same model again closes the one you left and hands its credit back first. Priority print, if you chose it, is added after the Pro discount and folded into the same line. |
| A single store product | Buying from a product page opens its own Stripe session for that product at its catalogue price, plus postage as its own line from the same table as the cart: $7 standard (free once the goods reach $49.50) or $15 express in the US, and $30 international (free from $500). Stripe accepts a US address only, or one in the 23 international countries when you choose International. A product is picked off the shelf, so there is no print speed to choose. |
| A payment link from us | When we agree an order with you by email, message or phone, we may send a link of the form x3dstudios.com/pay/<id>. The page shows the items, the postage or pickup, any agreed discount or adjustment, and the total, and Pay opens Stripe Checkout for exactly that order. You do not need an account. Stripe asks for a delivery address only when we did not already have one for a parcel. |
A payment link can be paid once. It does not expire: each press of Pay reopens the checkout already started for it, or starts a fresh one, so an old email still works. We can cancel a link before it is paid, and the page then says so; reply to the email it came in for a new one. Paying it is what creates the order, numbered like any other, with the same confirmation and the same email at every stage.
Print and Ship refuses an unweighed model exactly as the cart does, with the same 409. A store product has nothing to weigh, so it never hits that gate. Either way the order is written only once Stripe confirms the checkout, including a $0 checkout that print credit paid in full, and all of them appear on /orders — a single store product redirects you back to /store rather than to the order list, but its order is filed alongside the rest. A payment-link order is filed under the email address we made the link for, so sign in with that address to see it.
API orders are charged at submission#
The developer API works the other way round. There is no checkout page and no cart: the order is submitted and the card saved on your account is charged in the same request.
/api/print/ordersAPI keySubmit a print order and charge the saved card immediately.
curl -X POST https://x3dstudios.com/api/print/orders \
-H "Authorization: Bearer $X3D_API_KEY" \
-F "[email protected]" \
-F "recipientName=Ada Lovelace" \
-F "street1=13359 N Highway 183" \
-F "city=Austin" \
-F "state=TX" \
-F "zip=78750" \
-F "material=pla" \
-F "color=Black" \
-F "quantity=2"A successful charge returns 201 with status RECEIVED, paid true, and charged set to the amount taken. If the card is declined you still get 201 and a real order, but at status PENDING_PAYMENT with a paymentUrl you can send someone to. This is why minting an API key requires a card on file in the first place — and why an order below $0.50 is refused outright. An API order has no print speed to choose and is printed at Normal.
Questions
Is sales tax added at checkout?
No. X3D does not collect sales tax — no tax line is added to any checkout session, so the total on the cart summary is the amount charged.
When is my card actually charged?
When you confirm the payment on Stripe's checkout page. Adding to the cart and pressing Checkout charge nothing. The order itself is created by Stripe's webhook after the payment succeeds.
Why is the Checkout button greyed out?
A print in your cart has not been weighed yet. Prints are sold by billable grams, so checkout stays shut until the slicer has measured every model — usually 10 to 60 seconds.
Can a gift card pay for shipping?
Yes. Shipping is a line item on the Stripe session rather than a separate shipping rate, so a gift card can settle it. The first-order discount cannot — it is worked out from goods only.
What is Priority print?
A choice at checkout, beside the shipping choice, for how soon your order is printed. Normal print is included and ships in 4–5 business days. Priority print is $5, or 10% of the items when that is more, once per order; it puts your prints first in the queue, and ships in 1–2. No discount is taken off it and it does not count toward free shipping, but a gift card or print credit can pay it.
What is support removal?
An optional finishing step at checkout, $10 once per order. We take the print supports off and clean up the marks before it ships; without it, a part that needed supports arrives with them on for you to remove. It is never pre-selected. It is marked Recommended only when the model measures as needing support: more than 3% of its surface overhangs in its best printing position. Like Priority print, it is not discounted and does not count toward free shipping, but a gift card or print credit can pay it.