Quotes · v1
convertQuoteToOrder
MockMock. This operation is part of the approved contract but its module is not built yet. Run Core with N1_API_MODE=mock N1_DEV_AUTH=stub to get deterministic demo-shop data from it. The real server answers NOT_IMPLEMENTED until it ships; the schema and examples here will not change when it does.
Turn a quote into one order, linked both ways
Make one order from a quote, with a QUEUED job card, and link them both ways (Quote.orderId, Order.quoteId). Owner, admin and supervisor. Returns the quote; open the order with order(id: orderId). QUOTE_NOT_FOUND for an unknown id; QUOTE_ALREADY_CONVERTED if it already has an order.
/graphqlapp audienceWho can call this. Owner, admin, supervisor.
Headers
Bearer <token>, issued for this endpoint's audience. The token decides the shop and roles; nothing in the request body can change them.Example:
Bearer eyJhbGciOiJFZERTQSJ9…Always
application/json. Only POST is accepted.Example:
application/jsonA key you generate once per user action (a UUID). Retrying with the same key never applies the change twice.
Example:
0192f0c1-9b2a-7d40-8c3e-1f5a6b7c8d9eYour id for this request (8–128 characters of A–Z a–z 0–9 . _ : -). Echoed back in the response header and in every error, so you can quote it when reporting a problem. Core makes one if you send none.
Example:
app-7f3c2a9e-checkout
Arguments
The quote id.
Example:
"0192f0c1-0000-7000-8000-000000b00001"The PO number and due date the order needs.
Example:
{"poNumber":"PO-DEMO-6001","dueDate":"2026-11-20","priority":"HIGH"}Show children
Promised delivery date, YYYY-MM-DD.
The customer’s PO number.
Default NORMAL.
Returns
Make one order from a quote, with a QUEUED job card, and link them both ways (
Quote.orderId,Order.quoteId). Owner, admin and supervisor. Returns the quote; open the order withorder(id: orderId).QUOTE_NOT_FOUNDfor an unknown id;QUOTE_ALREADY_CONVERTEDif it already has an order.Show children
UTC time the quote was made.
The customer (see
customer).The customer’s name, so a list needs no second call.
The GST percentage asked for. The rate applied is
totals.gstRate.Stable id (UUIDv7).
Example:
"0192f0c1-0000-7000-8000-000000b00001"The priced operations, in the order given.
Show children
Integer paise: (quantity × minutesPerPiece + setupMinutes) × ratePerMinute, rounded half up to a whole paisa. Computed by the server.
Free text for the customer; empty when none was given.
Stable id (UUIDv7).
Machine minutes for one piece.
The operation priced, such as Turning.
Paise per machine minute.
One-off machine minutes to set up, charged once per line.
Material to use.
The quote number, such as
QTN/26-27/0001. Assigned by the server.Example:
"QTN/26-27/0001"The order made from this quote; null until converted (see
order).Example:
"0192f0c1-0000-7000-8000-e00000000001"Part name or number.
Pieces quoted.
DRAFT or SENT. Whether it became an order is
orderId.Example:
"SENT"DRAFTBeing prepared; it can still be edited.SENTSent to the customer; no longer editable.
Subtotal, GST and total, all in paise, worked out by the server.
Show children
Central GST; 0 unless
supplyis INTRA.The discount applied. Never more than the subtotal.
Total GST: cgst + sgst + igst.
The GST percentage applied; 0 when
supplyis NONE.Integrated GST; 0 unless
supplyis INTER.State GST; 0 unless
supplyis INTRA.Sum of the line amounts.
Whether CGST + SGST or IGST applies.
INTERDifferent states: IGST.INTRAShop and customer are in the same state: CGST + SGST.NONEThe shop has no GSTIN, so no GST is charged.
Subtotal less discount.
Taxable plus GST.
UTC time of the last change.
Example:
"2026-10-12T04:30:00.000Z"
Errors
| Code | HTTP | When |
|---|---|---|
QUOTE_NOT_FOUND | 404 | The id is unknown in this shop (another shop's quote answers the same). |
QUOTE_ALREADY_CONVERTED | 409 | convertQuoteToOrder on a quote that already has an order. A quote makes exactly one order. |
FORBIDDEN | 403 | Signed in, but the role or tenant does not allow the action. |
Every error has the same body. See Errors.
Rate limit tier
Tier: per user. Over the limit you get RATE_LIMITED (HTTP 429) with a Retry-After header. See Response handling.