Skip to content

Quote

A Quote is a priced proposal of one or more Offers to one buyer, valid until a date, accepted into an Order.

A Quote is a priced proposal of one or more Offers to one buyer, valid until a date. Once accepted, its one-time lines become an Order and its recurring lines a Subscription.

Properties

PropertyTypeRequiredDescription
totalmoneyrequiredThe quoted total.
validUntildaterequiredThe last day it may be accepted.
statusstringrequiredOne of draft, sent, accepted, declined, expired, or superseded; an expired or superseded Quote never converts.
linesjsonrequiredOne line per Offer: quantity, list Price, discount percent, net amount, term, and start, one line per ramp year.
concessionsstring[]Concessions granted, each from the Startup’s fixed concession list, such as a 60-day termination for convenience.
paymentTermsjsonThe collection, terms and purchaseOrder every Invoice from the accepted Quote carries.

Object

JSON
{
  "$id": "https://api.sb/quietcopy.com/quotes/quote_1",
  "$type": "Quote",
  "total": {
    "amount": 39,
    "currency": "USD"
  },
  "validUntil": "2026-10-22",
  "status": "draft",
  "lines": {},
  "concessions": [
    "60-day termination for convenience"
  ],
  "paymentTerms": {}
}

Relationships

  • A Quote is accepted as one Order: the Order the Quote becomes when the buyer accepts it before it expires. acceptedAs, inverse quote.
  • A Quote is issued in one Deal: a Deal sends Quotes, each a priced proposal valid until a date. issuedIn, inverse issues.
  • A Quote proposes many Offers: a Quote prices one or more Offers for one buyer. proposes, inverse quotedIn.
  • A Quote starts subscription one Subscription: the Subscription for a Quote’s recurring lines, started when the Customer accepts it. startsSubscription, inverse quote.

Lifecycle

Quote lifecycle: draft, sent, accepted (ends), declined (ends), expired (ends), superseded (ends)draft → sent: Quote.sendsent → accepted: Quote.acceptsent → declined: Quote.declinesent → expired: Quote.expiresent → superseded: Quote.supersededraftsentaccepteddeclinedexpiredsuperseded
StateMeaningMoves to
draft (first)Its lines and terms can still change, and the buyer has not seen it.sent by Quote.send
sentPresented to the buyer with its lines, total and payment terms frozen.accepted by Quote.accept; declined by Quote.decline; expired by Quote.expire; superseded by Quote.supersede
acceptedIts one-time lines became an Order and its recurring lines a Subscription.None: it ends here.
declinedThe buyer refused it, with the reason in their words.None: it ends here.
expiredIt reached its validUntil date unaccepted and never converts.None: it ends here.
supersededA newer Quote on the same Deal replaced it; only the newest can be accepted.None: it ends here.

Verbs

  1. createCreates a Quote.
    POST /{namespace}/quotesdoQuote.created
  2. getReturns one Quote by id.
    GET /{namespace}/quotes/{id}readNo Event
  3. listReturns Quotes, newest first, one page at a time.
    GET /{namespace}/quotesreadNo Event
  4. updateChanges the given properties of a Quote.
    PATCH /{namespace}/quotes/{id}doQuote.updated
  5. deleteDeletes a Quote; its history is kept.
    DELETE /{namespace}/quotes/{id}doQuote.deleted
  6. acceptAccept takes a sent Quote before it expires, turning one-time lines into an Order and recurring lines into a Subscription.
    POST /{namespace}/quotes/{quote}/acceptdoQuote.accepted
  7. declineDecline records the buyer’s refusal of a sent Quote, with the reason in their words.
    POST /{namespace}/quotes/{quote}/declinedoQuote.declined
  8. expireExpire closes a sent Quote that reached its validUntil date unaccepted; it never converts afterward.
    POST /{namespace}/quotes/{quote}/expiredoQuote.expired
  9. requestRequest asks a Startup for terms on one or more Offers, with the volume, term or scope wanted.
    POST /{namespace}/quotes/requestdoQuote.requested
  10. sendSend presents a drafted Quote to its buyer and freezes its lines, total and payment terms.
    POST /{namespace}/quotes/{quote}/senddoQuote.sent
  11. supersedeSupersede replaces a sent Quote with a newer one on the same Deal; only the newest Quote can be accepted.
    POST /{namespace}/quotes/{quote}/supersededoQuote.superseded

Permissions

Which Access level may call each Verb. One-way Verbs wait their delay window.

Operationowneradminmemberviewer
Quote.createYesYesYesNo
Quote.getYesYesYesYes
Quote.listYesYesYesYes
Quote.updateYesYesYesNo
Quote.deleteYesYesYesNo
Quote.acceptYesNoNoNo
Quote.declineYesYesYesNo
Quote.expireYesYesYesNo
Quote.requestYesYesYesNo
Quote.sendYesNoNoNo
Quote.supersedeYesYesYesNo

Call it

Text
Accept the latest quote with a party.

Example

A Quote offers a county planning firm the $900-a-month permit-records Offer at 10% off for a year, plus a $3,000 backfill. It is valid for 14 days. The firm accepts: the backfill becomes an Order, and the records Offer becomes a Subscription that keeps the 10% for the term.