Quotes and sales orders
AI agents: read /llms.txt; add .md to any page URL. This page as Markdown: /how-yoprint-works/quotes-and-sales-orders.md. Index of every page and the rules for every call: /llms.txt. Guides and concepts in one file: /llms-full.txt. OpenAPI: /openapi.json.
A quote prices work for a customer. A sales order is work the shop has agreed to do: it’s what the shop makes, ships, bills and gets paid for. In YoPrint they’re one kind of record with a type, so a quote becomes a sales order without being copied. In the web app they’re Quotes and Sales Orders.
From quote to sales order
Section titled “From quote to sales order”- Draft quoteBuilt in private: customer, lines, prices and dates
- QuoteSent to the customer, who approves it
- Sales orderMade, shipped, invoiced and paid
When a customer orders without a quote, the shop skips it:
- Draft sales orderBuilt in private
- Sales orderMade, shipped, invoiced and paid
- The type is the order’s
object_type:quoteorsales_order. - Converting works both ways: a sales order can go back to being a quote, which releases the stock held for it. Orders synced from Shopify, or made for a customer synced from Shopify, can’t be converted.
- A quote can have invoices and shipments too, but shipping labels can only be bought on a sales order.
- Quotes and sales orders share one sequence of document numbers, such as
SO1001for a quote andSO1002for the next sales order. - Deleting an order deletes its jobs, invoices and shipments, and moves a published order’s payments to the customer’s store credit. A deleted order can be restored. See What a write also does.
Draft or published
Section titled “Draft or published”Every order starts as a draft, and publishing it is a one-way step: in the web app, the Publish button.
| Draft | Published | |
|---|---|---|
| Customer | Can be changed | Fixed |
| Lines, prices and dates | Change freely, with no history | Change, and each change is recorded in the order’s history |
| Comments, approvals and payments | Not yet | Yes |
| GoShippo labels | Not yet (a label bought elsewhere can be recorded) | Yes, on a sales order |
| Stock | Not held | Held for its lines, on a sales order |
| Webhooks | None | order.created or quote.created fires when it’s published |
Publishing checks the order first. It needs a customer, at least one line, lines whose products can still be sold, and a pricing group that hasn’t been removed. When a check fails, nothing is published and the answer says which check failed.
Statuses
Section titled “Statuses”A status is a stage the team names itself, such as “Pending approval” or “In production”. It sits alongside draft and published, not instead of them: every order has a status, even a draft.
| Draft or published | Status | |
|---|---|---|
| Who sets it | YoPrint, when the order is published | The team, from its own list |
| How often | Once | Whenever the work moves on |
| What it controls | What can be done to the order | Not what the order allows: it tells people where the work is. A few status changes have effects, such as a shipment’s fulfilling a Shopify order |
| Webhook | order.created or quote.created |
sales_order.status_changed or quote.status_changed |
Quotes, sales orders, jobs, shipments, purchase orders and message threads each have their own list, and tasks use their task preset’s. Each status has a type: start, pre_production, in_progress or end. Here are the sales order statuses a new team starts with:
- startPending
- in_progressPending approval, Good to go, Waiting goods, Pending production, In production, Pending payment
- endCompleted
An order’s dates
Section titled “An order’s dates”- Issue date
issue_date: when the order was issued - Production
start_datetodue_date: when the shop makes it - Ship due
ship_due_date: when it must ship - In hands
cust_due_date: when the customer needs it
Two more dates say when the customer pays: deposit_due and full_amount_due, set by the order’s payment terms. See Invoices and payments.
Approvals and the Customer Portal
Section titled “Approvals and the Customer Portal”The Customer Portal is the website where a shop’s customers see their quotes and orders, approve them, send messages and pay. An approval asks the customer to agree to something:
| Approval | What the customer approves | Webhook when they answer |
|---|---|---|
| Quote or order approval | The quote or order itself, with notes, terms and a signature | order_approval.approved or order_approval.change_requested |
| Artwork approval | A job’s mockups, one by one | job_approval.approved or job_approval.change_requested |
- PendingCreated, not sent yet
- Sent to customerEmailed with a link to the Customer Portal
- Viewed by customerThe customer opened it
- Approved, or changes requestedThe customer’s answer:
completedorneed-changes
What else an order carries
Section titled “What else an order carries”| What it is | |
|---|---|
| Customer and addresses | Who it’s for, with billing and shipping addresses. New orders take the customer’s defaults. |
| Pricing group | The markups that price its lines. See Products and pricing. |
| Payment terms | The deposit and when payment is due. |
| Rush | A flag on the order. Each job has its own too. |
| Tags and assignees | Labels for finding orders, and the team members responsible. |
| Comments | Notes for the team. The customer never sees them. |
| Messages | Emails and texts with the customer and other recipients. |
| Files | Artwork and attachments on the order. |
| History | Who changed what, once it’s published. |
Cloning an order makes a new draft with a new number, from the same customer and lines.
