Reference · built on requestOperator by FibricSales, quotes & revenue

Discount Approval

Prices each discounted quote against unit cost and your margin floor and proposes approve, counter, or decline for the approver.

About

A discount request usually reaches an approver as a number with no cost behind it. Discount Approval catches a quote the moment it enters an approval state, reads each discounted line, and looks up the item's unit cost in the ERP. It computes the margin after discount, line by line, and compares it with the floor you set for that item category, customer, or quote size.

It then proposes one outcome: approve, counter with a smaller discount, or decline with a reason for the rep. The approver picks. The quote does not move to approved, rejected, or back to the rep until they do.

This is a reference listing. It documents what Fibric would read from Discount Approval and what it could propose, based on the vendor's published interfaces. Fibric builds it under a managed deployment when you request it; selecting it here installs nothing.

Inputs

  • HubSpot quotes entering PENDING_APPROVAL, with hs_quote_amount and hs_expiration_date, and the deal and line items associated to them
  • Discounts attached to a HubSpot quote, each with hs_type set to FIXED or PERCENT
  • Business Central salesQuotes held in Draft, with discountAmount, totalAmountExcludingTax, and each salesQuoteLine
  • Unit cost per item from the ERP: Business Central items with unitCost, unitPrice, and itemCategoryCode
  • Your margin floor by item category, customer, or quote size, and the approver named for each
  • Prior quotes to the same customer and their status, Sent, Accepted, or Expired, so a counter reflects what the customer already saw

Proposed actions

  • Target capability: propose approve: the HubSpot quote moves to APPROVED, with the margin computed against unitCost printed beside each discount
  • Target capability: propose a counter: a smaller discount or a changed line, shown with its margin, for the approver to accept first
  • Target capability: propose decline: the HubSpot quote returns to REJECTED for editing, with the reason written for the rep
  • Target capability: propose escalation to a second approver when the margin falls below the floor that person owns
  • Target capability: propose a message to the approver through chat.postMessage or a Teams chat message with the quote number, the discount, and the margin

Proposed actions are target capabilities. Every action runs propose-first and needs a validated deployment and the appropriate permissions.

What you can build

  • Approve HubSpot discounts against Business Central cost

    When a quote enters PENDING_APPROVAL, read each line item and its discount, look up unitCost by item number, and post the margin and a proposed outcome to the approver in Slack.

    With HubSpot, Microsoft Dynamics 365 Business Central, Slack

  • Hold a Business Central quote below the floor

    Read the Draft salesQuote's discountAmount and each line's item unitCost, and propose approve, counter, or decline as a Teams chat message the approver answers.

    With Microsoft Dynamics 365 Business Central, Microsoft Teams

  • Route a deep discount to a second approver

    When the margin falls below the floor a director owns, propose escalation with the line-by-line margin, and hold the quote in PENDING_APPROVAL until that person answers.

    With HubSpot, Slack

  • Counter with the last accepted price

    Read the customer's prior salesQuotes with acceptedDate set and propose a counter at the discount they last accepted, with both margins shown.

    With Microsoft Dynamics 365 Business Central, HubSpot

Requirements

  • Quotes that pass through an approval state: HubSpot quotes in PENDING_APPROVAL, or Business Central salesQuotes held in Draft
  • An ERP item master with a unit cost on each item: Business Central, NetSuite, or Acumatica
  • A margin floor you write down, per item category, customer, or quote size, with a named approver for each
  • Slack or Microsoft Teams for the approver's message
Authentication
A CRM OAuth app or private-app token with quote read and write scopes, an ERP API user with item read access, and a Slack app with chat:write or Microsoft Graph with ChannelMessage.Send.

Limits

  • Margin is computed from the ERP's unitCost. An item with no cost recorded is flagged, and the quote waits for a person.
  • A HubSpot quote created in APPROVAL_NOT_NEEDED publishes without passing through approval and is not checked.
  • It reads item cost, not freight, commission, or payment terms. Put those in the floor you set.
  • Every outcome is a proposal. No quote changes state until the approver acts.

Access and pricing

Reference listing. Fibric builds the operator under a managed deployment when you request it. Your quote covers the build, capabilities, usage, and support.

Request Discount Approval ↗

Questions and answers

What does the approver see and approve?
One proposal per quote: approve, counter, or decline. It shows each discounted line, its unitCost, the margin after discount, the floor that applies, and the prior quotes to the customer. The approver picks an outcome or edits the counter. The rep sees nothing until then.
Can it change a price on its own?
No. A counter is a proposal shown to the approver. Only after approval does the quote's state or discount change, and the rep is told what changed and why. A quote left in PENDING_APPROVAL stays there.
What record is left?
One entry per quote: quote number, each line's price, cost, and margin, the floor applied, the outcome, who approved, and when. A HubSpot quote returned to REJECTED can be edited and resubmitted, and the entry links the two passes.
Ask about Discount Approval

Ask about the capabilities and requirements in this listing.

For project-specific requirements, contact Fibric.