SfSkills Domains Docs GitHub

Home / admin / quote-to-cash-requirements

quote-to-cash-requirements

Use when designing or validating the end-to-end quote-to-cash process on standard Salesforce: Opportunity to Quote to Synced Quote to Approval Process to Quote PDF to Order creation. Trigger keywords: quote approval, discount policy, quote PDF limits, order from quote, quote sync, quote template. NOT for CPQ pricing rules or discount schedules — use admin/cpq-pricing-rules. NOT for building the quote template itself — use admin/quotes-and-quote-templates.

Open the skill folder on GitHub


Quote-to-Cash Requirements

Use this skill when mapping, designing, or auditing the standard Salesforce quote-to-cash process — from Opportunity through Quote, approval, PDF generation, and Order handoff. It is grounded in standard Sales Cloud objects and does not cover CPQ/Revenue Cloud.


Before Starting

Gather this context before working on anything in this domain:


Core Concepts

1. The Standard Quote-to-Cash Object Chain

The canonical flow on standard Sales Cloud objects is:

Opportunity -> Quote (+ QuoteLineItem) -> Synced Quote -> Approval Process -> Quote Status = Accepted -> Order (+ OrderItem)

Key platform rules:

2. Approval Processes on Quotes

Salesforce Approval Processes can be triggered on the Quote object with entry criteria based on:

Critical constraints:

3. Quote Templates and PDF Generation

Quote Templates define the layout of the generated PDF document. Platform limits:

4. Order Creation and Handoff

Orders created from Quotes:


Common Patterns

Pattern: Tiered Discount Approval (Single Approval Process, Multiple Steps)

When to use: Business requires manager approval above 10% discount and director approval above 25% discount.

How it works:

  1. Create one Approval Process on the Quote object.
  2. Set entry criteria: Quote.Discount >= 10 (or formula combining discount + deal size).
  3. Step 1: Route to Quote.Opportunity.Owner.Manager with step-entry criteria Quote.Discount < 25. Mark step as "Go to Next Step" on approval.
  4. Step 2: Route to a named Director user (or queue) with no additional step-entry criteria (catches >= 25%).
  5. On Final Approval action: set Quote.Status = Approved.
  6. On Rejection action: set Quote.Status = Denied and send email alert to rep.

Why not two separate processes: Salesforce only processes one approval at a time per record. A second process would not trigger if the first is already satisfied or would cause unpredictable behavior.

Pattern: Auto-Create Order on Quote Acceptance via Flow

When to use: Business wants an Order automatically generated when a rep sets Quote Status to Accepted — without requiring a manual button click.

How it works:

  1. Create a Record-Triggered Flow on Quote, fired on Update, with entry criteria Status changed to Accepted.
  2. Use a Create Records element to create an Order: set AccountId, Pricebook2Id, QuoteId, Status = Draft, EffectiveDate = TODAY().
  3. Loop over QuoteLineItems related to the Quote and create OrderItem records for each: OrderId, Product2Id, UnitPrice, Quantity, PricebookEntryId.
  4. Optionally set Quote ContractId if contract generation is also required.

Why not a Process Builder trigger: Process Builder is legacy. Flow is the current standard and gives more control over the OrderItem loop.


Decision Guidance

SituationRecommended ApproachReason
Single discount threshold for approvalOne-step Approval Process on Quote with entry criteria on Discount fieldSimplest; native; no code required
Two or more discount tiers require different approversSingle Approval Process with multiple steps, each with step-entry criteriaSalesforce only runs one approval process at a time on a record
Auto-create Order on quote acceptanceRecord-Triggered Flow on Quote (Status = Accepted)Approval Process Final Actions cannot create related child records; Flow can
Quote PDF needs custom branding per customer segmentMultiple Quote Templates assigned by Record Type or Flow logicQuote Templates are per-template; not dynamic — use multiple templates
More than 100 line items on a single quoteSplit quote into multiple quotes or upgrade to CPQStandard Quote Template limit is 100 line items rendered
Bundle products with configuration logicEvaluate CPQ/Revenue CloudStandard Quote Line Items have no bundle hierarchy or attribute logic
Multi-currency quotesEnsure Quote references the correct Pricebook with currency-specific PricebookEntriesQuote Line Items inherit currency from the Quote Pricebook — mismatch causes errors

Step-by-step instructions for an AI agent or practitioner working on this task:

  1. Confirm standard vs. CPQ scope — Verify Quotes are enabled in Setup > Quotes Settings and that the org is not running CPQ/Revenue Cloud. If CPQ is active, route to the CPQ skill.
  2. Map the approval policy — Document discount thresholds, approver hierarchy, and what happens on rejection (Status change, rep notification). Confirm whether a single-level or multi-level approval is needed.
  3. Assess Quote Template requirements — Gather layout specs: logo placement, line item grouping, conditional sections, legal text. Flag if more than 100 products are expected on a single quote (hard platform limit).
  4. Design the object and field model — Identify custom fields needed on Quote or QuoteLineItem (e.g., custom discount %, override justification). Confirm Pricebook alignment with Opportunity.
  5. Build the Approval Process — Configure entry criteria, steps, approver sources, lock behavior, and final approval/rejection actions. Test with a sandbox quote at each discount tier.
  6. Implement Order creation automation — Build a Record-Triggered Flow on Quote to auto-create Order and OrderItems on Status = Accepted. Validate that OrderItem PricebookEntry references are correct.
  7. Validate end-to-end in sandbox — Walk through: create Opportunity -> add Products -> create Quote -> sync Quote -> submit for approval -> approve -> verify Order created -> preview PDF against template limits.

Review Checklist

Run through these before marking work in this area complete:


Salesforce-Specific Gotchas

Non-obvious platform behaviors that cause real production problems:

  1. Syncing a second Quote removes the first sync — When you sync a new Quote to an Opportunity, all Opportunity Products (OpportunityLineItem records) are replaced with the new Quote's line items. Any Products manually added to the Opportunity are lost. This surprises reps who juggle multiple quote versions.
  2. Quote is locked during approval including line items — The entire Quote record and its related QuoteLineItems are locked when an approval is pending. Reps cannot add, remove, or reprice products until the quote is recalled or a final decision is made.
  3. Approval Process Final Actions cannot create child records — Final Approval/Rejection actions on an Approval Process support field updates, email alerts, tasks, and outbound messages — but not record creation. A Flow triggered by the resulting field update is required for Order creation.
  4. Quote Template PDF limit: 30 pages and 100 line items — These are hard platform limits. Quotes exceeding 100 line items will silently truncate the PDF. There is no warning to the user.
  5. Quote currency is set at creation and cannot be changed — The currency on a Quote is locked at creation time. If the Opportunity currency or Pricebook changes, the Quote must be deleted and recreated.

Output Artifacts

ArtifactDescription
Quote-to-cash process mapSwimlane diagram showing stages, owners, object transitions, and approval handoffs
Approval process design documentEntry criteria, step definitions, approver sources, lock behavior, final actions
Quote Template specificationLayout sections, fields, conditional blocks, line item grouping, PDF output expectations
Order creation requirementsTrigger condition, field mapping from Quote to Order and QuoteLineItem to OrderItem
CPQ gap analysisList of requirements that cannot be met by standard Quote objects, requiring CPQ evaluation


Official Sources Used

Dependencies

Package files