User guide

Quoting

Looking for what it does rather than how to use it? Read the Quoting overview .

What it is

Quoting produces a priced, versioned document you send to a client, and tracks it from draft through to acceptance and conversion into an invoice. The client reads and decides on the quote inside their own portal — there is no emailed accept link and no anonymous acceptance page.

Concepts

TermWhat it is
QuoteA priced offer belonging to one client organization. Carries a status, a version, and line items.
Line itemA description, quantity and unit price. May be marked optional, which lets the client toggle it.
Optional lineA line the client can include or exclude before accepting. Excluded lines drop out of the total.
VersionRevising a quote creates a new version and supersedes the previous one, preserving both.
Quote templateA reusable set of line items an MSP keeps to start new quotes from.
validUntilThe expiry date. A scheduled job moves quotes past it to EXPIRED.

Lifecycle

DRAFT ──submit──▶ PENDING_APPROVAL ──approve──▶ APPROVED ──send──▶ SENT
                          │                                          │
                          └──reject──▶ DRAFT                    (client opens)

                                                                  VIEWED
                                                        ┌────────────┼────────────┐
                                                   accept        decline       expire
                                                        ▼            ▼            ▼
                                                   ACCEPTED     DECLINED      EXPIRED

                                                   convert

                                                   CONVERTED

A quote can be cancelled from most pre-acceptance states, duplicated at any time, and revised after sending — revision creates a new version.

Accept and decline are only possible from VIEWED. The client must open the quote first; opening it is what flips SENT → VIEWED. Both actions live in the client’s portal.

Roles and permissions

Actionplatform administratorMSP administratorMSP technicianorganization administratorpower userCUSTOMER
Read quotes (staff view)
Create / edit / delete quote
Submit / approve / reject
Send, cancel, duplicate, revise
Convert to invoice
View own org’s quotes (portal)
Accept / decline
Manage quote templates

Staff reads are unfloored but tenant-scoped; every mutation on the staff router requires MSP technician or above. The portal router has no role floor by design — it pins each request to the caller’s own organization instead, so a client contact can act on their own quotes without being granted a staff role.

Quote templates are floored at organization administrator rather than the staff floor, because org admins build quotes and need templates. Platform-global templates — the ones every tenant can read — can only be written by a platform administrator.

Walkthroughs

Create and send a quote

  1. Quotes → New quote (/msp/quotes/new).
  2. Pick the client organization. An MSP can quote for any client account it services, not just its own.
  3. Add line items. Mark any line optional if you want the client to be able to drop it.
  4. Save as draft, then Submit for approval if your process requires it, or send directly.
  5. Send delivers the quote to the organization’s primary billing contact and moves it to SENT.

Revise a quote after sending

Open the quote and choose Revise. This creates a new version, leaves the previous version intact and linked, and returns you to a draft you can edit. Revising a quote that is already CONVERTED is refused — the invoice already exists.

Client accepts a quote

  1. The client opens Quotes in their portal (/org/quotes or /user/quotes) and selects the quote. Opening it moves SENT → VIEWED.
  2. If the quote has optional lines, the client toggles the ones they want. The total updates.
  3. Accept or Decline. Both are refused once the quote has expired.

The native mobile companion is deliberately narrower than the web portal. Mobile may decline any actionable quote, but it can change optional lines and accept/sign only when every material line is classified as one-time physical hardware delivered physically. Software, licenses, subscriptions, services, recurring charges, mixed delivery and unclassified lines make the complete quote review-only in mobile. Dedicated toggle-mobile and accept-mobile routes enforce that boundary on the server; it is not a hidden-button rule.

Convert to an invoice

From an ACCEPTED quote, choose Convert. This creates the invoice inside one transaction, carrying over the quote’s currency, per-line taxability and account, allocating a per-tenant invoice number, and applying any discount as proportionally split negative lines so the line sum always matches the invoice subtotal. Convert is available once; afterwards the button becomes a link to the invoice.

Manage quote templates

Settings → Quote templates (/msp/settings/quote-templates). Templates you create belong to your account. Templates published platform-wide are visible to everyone and editable only by Solidlio.

Configuration

SettingWhereEffect if unset
validUntilPer quoteThe quote never expires and keeps counting as open pipeline.
Optional linesPer line itemEvery line is mandatory.
Terms and conditionsPer quoteOmitted from the PDF.

Plan tiers

Quoting carries no plan gate. It is available on every tier, including Free.

Troubleshooting

“Sell price cannot be…” / margin warnings on a quote — quote lines take the unit price you enter; margin is evaluated after the fact against the product cost basis where a line is linked to a product, and raises an alert rather than blocking.

Accept or decline returns an error — the quote is not in VIEWED. The client must open it first. If it is past validUntil, both actions are refused.

Convert is unavailable — the quote is not ACCEPTED, or it has already been converted, in which case the control links to the existing invoice.

Revise fails on a converted quote — deliberate. Duplicate it instead.

A client cannot see a quote you sent — the portal only lists quotes from SENT onward. Drafts and quotes pending approval are invisible to the client.

Limits and known behaviour

  • There is no approval policy engine. Submit, approve and reject exist and are reachable, but any MSP technician or above can approve any quote, including one they raised themselves. There are no approval thresholds, no designated approvers, and /submit notifies nobody. Treat the approval states as a status workflow, not a control.
  • The send dialog sends to one recipient. A to override is honoured. There is no CC field and no free-text covering message — the transport has no CC parameter and the template has no slot for a message, so those inputs were removed rather than silently discarded.
  • The quote-sent email is written for subscription quotes. It refers to the recipient’s interest in a subscription and labels the quote title “Plan”. This is a known customer-facing wording defect in the shared email template and is not corrected in this release.
  • Quote line pricing is manual. The pricing-rule, pricing-bundle and margin-configuration engines do not participate in quoting; a line’s unit price is what you type.
  • There is no anonymous acceptance link. A client must be able to sign into the portal to accept. There is no public token route.
  • Quote-linked tickets are one-to-one. A quote may reference at most one ticket; revising moves that reference to the new version rather than duplicating it.

Questions this guide did not answer?

Ask us. You will get a reply from someone who uses the product every day.

Book a demo Contact us

A 30-minute walkthrough against your own workflow. No slides.