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.
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.
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.
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.
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.
This operator is developed, published, and supported by Fibric. Third-party names and logos identify the systems an integration connects to; they are the property of their respective owners, who are not affiliated with Fibric and do not sponsor or endorse this listing. Trademark policy