Reference · built on requestOperator by FibricSales, quotes & revenue

Quote Expiry

Watches quote validity dates and proposes an extension or a repriced quote when costs or exchange rates moved before the customer decided.

About

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.

    With Microsoft Dynamics 365 Business Central, Frankfurter

  • Reprice a HubSpot quote after a cost change

    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.

    With HubSpot, Microsoft Dynamics 365 Business Central

  • Keep a new validity date off a holiday

    Before proposing an extension, read the customer country's public holidays and shift the date to the next working day, showing the holiday it avoided.

    With Microsoft Dynamics 365 Business Central, Holidays & FX Reference

  • Warn the rep

    Post each quote in its last days to the rep in Slack with the days left, the lines that moved, and the proposal waiting for them.

    With Slack

Requirements

  • 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.

Request Quote Expiry ↗

Questions and answers

What does the rep approve?
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.

For project-specific requirements, contact Fibric.