Create and track orders with the FRED API
From your customer's accepted price to a tracked parcel.
Published by FRED
Create the order
POST /v1/storefront/orders accepts either quote_id or product_id.
The recipient's full address is required. The origin address is the manufacturing workshop's; no brand shipping address needs to be configured. Add external_ref to find your
order number in FRED and metadata for your application references.
By default, FRED selects the recommended manufacturer. An option_id lets you
retain an explicit choice made from a quote. max_total_cents is an
optional limit for a quote and is required when ordering a product directly.
Amounts are expressed in euro cents.
Each quote option exposes shipping_options (code, carrier, service, price and lead time when known). To recalculate with the full address and select a service, call POST /v1/storefront/quotes/{quote_id}/shipping with shipping_address, supplier_id and shipping_service_code. You can then send shipping_service_code in the order. FRED rechecks the rate for the final address and rejects any amount exceeding max_total_cents.
In Settings → Order approval, the brand chooses how its
next orders are handled: automatic without a delay, 1-hour delay, 2-hour
delay, or wait for manual approval with no time limit. Include
brand_id in the order (or use a product belonging to that brand).
approval_mode | Behaviour |
|---|---|
Omitted or null | Follows the brand settings; without a brand, the account settings |
auto | Follows the brand's delay and respects any manual approval configured for it |
manual | Adds a wait for manual approval to this order |
During the delay, no payment or submission to the manufacturer takes place. The accepted price remains valid during the scheduled review. At the deadline, FRED checks availability and payment before starting manufacturing. An availability or payment issue leaves the order requiring attention in the dashboard. A prolonged manual hold may require a price update.
You can also choose Approve now on an order's page. Changing the brand settings does not change orders already received.
An API key does not automatically enable payment for your account. Limits,
the payment card and any model approvals must be ready. While
ordering_enabled is false, the quote helps prepare the integration; creation
returns 503 ordering_unavailable.
Read the result
201 means order created, not already printed or necessarily paid.
The response provides id, status, payment_status, total_cents, shipments and
dashboard_url. If a check or bank authentication is required,
open the order in the dashboard.
A 202 with object: "order_request" means the quote is still being calculated,
with no order created. Wait for poll_url, then repeat exactly the same request
with the same idempotency key.
Track from your website
curl https://api.fredpod.com/v1/storefront/orders/ord_abc123 \
-H "X-API-Key: $FRED_API_KEY"| Current status | Meaning for your store |
|---|---|
pending_review | Approval is still required |
payment_required | No saved card: add a card in Billing, then pay for the order. No charge attempted. |
payment_failed | Payment needs attention in the dashboard |
confirmed | Order confirmed, awaiting acceptance |
in_production | Manufacturing accepted or in progress |
printed | Manufacturing complete, before dispatch |
shipped | Parcel handed to the carrier |
delivered | Delivery reported by the carrier |
failed | Manufacturing needs to be retried; contact FRED |
cancelled | Order cancelled |
Events may arrive late or more than once. Use
webhooks to trigger an update, then this GET to
read the current state. Tracking numbers and links are in shipments.
Expired price, availability or changed address
An offer may become unavailable between display and payment. FRED rechecks availability and funding; no request is sent to the manufacturer before the charge is confirmed.
destination_changed: request a new shipping price.option_unavailable: reload the quote, check the reason or recalculate it.price_limit_exceeded: obtain acceptance of a new limit before placing the order again.preview_approval_required: display the relevant model and obtain approval.
After a network error, repeat the request with the same Idempotency-Key and
parameters. After an intentional price, model or address change,
use a new quote and a new key. A replayed creation keeps its
initial result; the order's GET returns its latest status.
Your brand
Configure identity, documents and inserts in the dashboard. Use
X-Brand-Id for the store context and, if needed, brand_id on the
order. Storefront APIs handle sales; account preparation remains
in the dashboard.