Create a Fortnox Offer from a Quote
Trigger from a quote (workflow when Create offer in Fortnox becomes Yes) or from the Fortnox offer app card on the linked deal — see Deal — Fortnox offer.
The app maps quote line items and related deal/company data to Fortnox (same line-row logic as Create an Invoice from a deal). Enable HubSpot quote to Fortnox offer in App settings. After a successful create, the Fortnox offer number is stored on the quote.
Fortnox Offers
Your Fortnox account must allow offers (offert). The Fortnox integration uses the Offers API (offer OAuth scope).
Triggering is done via a CRM subscription to POST /hubspot_event_subscriptions when create_offer_in_fortnox becomes Yes (see CRM subscriptions & webhooks). HubSpot may send subscriptionType: "object.propertyChange" with objectTypeId 0-14 for Quotes — the app supports that format as well as legacy quote.propertyChange.
Field mappings (HubSpot → Fortnox Offer)
| Field HubSpot | Direction | Field Fortnox | Notes |
|---|---|---|---|
| Company: fortnox_id | -> | Offer.CustomerNumber | Primary company on the associated Deal |
| Quote: hs_currency | -> | Offer.Currency | |
| Quote: hs_expiration_date | -> | Offer.OfferDate | YYYY-MM-DD; if missing or invalid, today’s date is used |
| Deal: amounts_include_vat | -> | Offer.VATIncluded | Sent as true only when set to Yes/true; otherwise omitted |
| (Deal id) | -> | Offer.Remarks | Prefix HUBSPOT_DEAL_ID:<dealId> (traceability for Fortnox order → HubSpot Order sync) |
| Quote or Deal: description | -> | Offer.Remarks | Appended after the deal-id line when present (Quote description preferred) |
| Contact (from Deal) | -> | Offer.YourReference | First associated contact name when available |
| Deal owner | -> | Offer.OurReference | From hubspot_owner_id |
| Company: fortnox_cost_center | -> | Offer.CostCenter | Uppercased; requires costcenter Fortnox scope |
| Line item: hs_sku | -> | OfferRow.ArticleNumber | When set; article must exist in Fortnox when SKU is used |
| Line item: name | -> | OfferRow.Description | Product name only (same as invoice rows) |
| Line item: quantity | -> | OfferRow.Quantity | |
| Line item: price, discount, hs_discount_percentage, hs_total_discount | -> | OfferRow.Price, Discount, DiscountType | Same rules as invoice rows (amount vs percent discount) |
| Line item: tax | -> | OfferRow.VAT | VAT percentage; may be enriched from Fortnox article when missing |
| Quote: fortnox_offer_document_number | <- | Offer.DocumentNumber | Written on the Quote after Fortnox returns the created offer |
Typical requirements
- App setting: HubSpot quote to Fortnox offer is enabled.
- Quote: Associated to exactly one Deal; has line items; currencies consistent; no recurring billing on line items (where applicable).
- Company: Associated company has Fortnox ID (
fortnox_id) set. - Optional: Import Fortnox orders into HubSpot Order records is a separate toggle; scheduled polling uses
REPEATABLE_JOB_ORDERS_TO_HUBSPOT_PATTERN— see Release notes (April 22, 2026 — overview) and Release notes (March 20, 2026 — webhooks).