On-demand fabrication
Card on file
Save a card once; each order is charged when it arrives.
On-demand orders are charged to a card you save once. Nothing is charged until an order is placed, and every charge is for one order.
Check
GET
/api/intake/billing{ "card_on_file": false, "brand": null, "last4": null, "setup_at": null, "next": "POST /api/intake/billing and open the returned url" }
Save a card
POST
/api/intake/billingReturns a hosted Stripe page. Open it in a browser and enter the card. Optional body: { "return_url": "https://your-site/…" }.
{ "url": "https://checkout.stripe.com/c/pay/cs_…", "expires_at": "2026-10-13T21:15:55.000Z", "note": "Open this URL in a browser to save a card. It is valid once and expires." }
The page belongs to Stripe. We never see the card number; we keep only a token, the brand, and the last four digits. When the page completes, GET /api/intake/billing shows card_on_file: true.
{ "card_on_file": true, "brand": "visa", "last4": "4242", "setup_at": "2026-10-12T21:16:40.000+00:00", "next": "place_orders" }
Replace a card
Call POST /api/intake/billing again and complete the new page. The new card replaces the old one for future orders.
Charges, declines, refunds
- Each order is charged for its total, parts plus shipping, when you place it. The response tells you whether the charge succeeded.
- A declined card returns
402and the order is recorded aspayment_failed. Fix the card and place the order again; nothing was built. - Cancelling a paid order before production refunds it in full to the same card.
503if billing is not configured on our side;502if the setup page could not be created. Retry later.- Receipts come from Stripe to the email on your customer account.