A quote carries a date it stops being valid. Quote Expiry reads that date on every sent quote and, as it approaches, checks two things that may have moved since the quote went out: the unit cost of each item in the ERP, and the exchange rate between the quote's currency and yours. It also checks whether the customer is still deciding, from the deal's stage and close date.
If nothing moved, it proposes an extension with a new date. If cost or rate moved past the tolerance you set, it proposes a repriced draft beside the original. The rep approves the extension, edits the draft, or lets the quote lapse. Nothing goes to the customer from the operator.
This is a reference listing. It documents what Fibric would read from Quote Expiry 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
Business Central salesQuotes in status Sent, with validUntilDate, sentDate, currencyCode, and acceptedDate once a customer accepts
HubSpot quotes in APPROVED state with hs_expiration_date and hs_quote_amount, and the deal they are associated to
Quotes that already lapsed: Business Central status Expired, or a HubSpot quote past its hs_expiration_date
Item cost movement since the quote was sent: Business Central items with unitCost and lastModifiedDateTime
Exchange rates for the quote's currency from Frankfurter: /v2/rates for a date and as a time series between the sent date and today
Public holidays in the customer's country from the Holidays & FX Reference signal, so a new validity date does not land on one
The deal's dealstage and closedate, to tell a customer still deciding from one who went quiet
Proposed actions
Target capability: propose an extension: a new validUntilDate on the salesQuote through PATCH, or a new hs_expiration_date on the HubSpot quote, with checks beside it
Target capability: propose a repriced quote as a new Draft, lines repriced from current unitCost and the day's rate, leaving the sent quote untouched
Target capability: propose a message to the rep through chat.postMessage with the quote number, the days left, and which lines moved
Target capability: propose a reminder to the customer as a mail draft for the rep to send, naming the date the quote ends
Target capability: propose letting a quote lapse when cost moved past the margin you set, with the reason written for the rep
Proposed actions are target capabilities. Every action runs propose-first and needs a validated deployment and the appropriate permissions.
What you can build
Extend a Business Central quote before it expires
Read validUntilDate on each Sent salesQuote, compare unitCost and the Frankfurter rate with the sent date, and propose a new date when neither moved past your tolerance.
When an item's unitCost changed after the quote's sent date, propose a new Draft with repriced lines and the old and new margin, tied to the same deal.
Quotes with a validity date the API exposes: Business Central validUntilDate or HubSpot hs_expiration_date
An ERP item master whose unitCost carries a lastModifiedDateTime: Business Central, NetSuite, or Acumatica
A rate source for each quote currency: Frankfurter or the Holidays & FX Reference signal
A rule for how many days before expiry to act, and how far cost or rate may move before repricing
Authentication
An ERP API user and a CRM token with quote read and write access, a Slack app with chat:write, and reads against Frankfurter's public instance, which needs no key.
Limits
Frankfurter serves daily mid-market rates blended from central banks and public sources. It is a reference rate, not your bank's dealing rate.
A quote with acceptedDate set is out of scope. Repricing stops the moment a customer accepts.
Cost movement is read from unitCost on the item. A cost held in a spreadsheet outside the ERP is invisible.
An extension or a repriced draft waits for the rep. The customer hears from the rep, never from the operator.
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.
Either an extension or a repriced draft. The proposal shows the quote, its validity date, the days left, each line's cost when sent and now, the exchange rate then and now, and the new total. The rep approves, edits the date or the lines, or lets the quote lapse.
Where do the exchange rates come from?
Frankfurter's public API, which publishes daily mid-market rates by date and as a time series, without a key. The proposal names the rate date it used. Your bank's rate is not read, so a repriced draft is a starting point the rep can adjust.
What record is left?
One entry per quote checked: quote number, validity date, costs and rates on the sent date and the check date, the proposal, the decision, who made it, and when. A repriced draft carries the original quote number so both can be compared later.
Ask about Quote Expiry
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