Resultify logo Fortnox app for HubSpot

Get started with Fortnox to HubSpot sync app

This describes the process of how to set up and install the app.

Setup in HubSpot

Note that you also need to buy the Fortnox app on HubSpot marketplace to have the full integration working.

  • Search for the Fortnox app in HubSpot Marketplace or click here
  • Click on the installation button.
  • Select the account you want to use for installing the Fortnox app and click on Choose account.

Choose HubSpot account

  • Click on Connect app to give the app permission to install the Fortnox app in your account.

Connect HubSpot app

  • You will then be redirected to the authentication window for Fortnox.

Setup in Fortnox

  • Enter the username for the Fortnox account to use.

Enter the username for Fortnox

  • Enter the password for the Fortnox account to use.

Enter the password for Fortnox

  • Click on Godkänn behörighet to give the app permission to install the Fortnox app in your account.

Connect Fortnox app

Finish setup

  • You have now installed the Fortnox app in your HubSpot account and added it to your Fortnox account.
  • A sync will be made within the next 2 hours for the Customer registry from Fortnox into HubSpot Company entities. If it is activated in the App settings

Companies in HubSpot

Syncing

Here are the information that are synced for the different entities.

Fortnox to HubSpot

Syncing companies

  • Once every second (2) hour a sync is being made for Companies from Fortnox to HubSpot. It includes both creating and updating Companies.
  • The check-up for if a Customer exists is the following order name, fortnox_id and then last domain
  • To reduce the risk of duplicated companies, make sure your customers are properly named in HubSpot.
Field HubSpot Direction Field Fortnox Description
Company: fortnox_id <- CustomerNumber Field created by the Fortnox app to keep track of which customer it is related to
Company: organization_number_from_fortnox <- OrganisationNumber Field created by the Fortnox app. Swedish organisation number, or for international companies: DUNS number or EU VAT number
Company: name <- Name
Company: address <- Address1
Company: address2 <- Address2
Company: city <- City
Company: zip <- ZipCode
Company: phone <- Phone
Company: billing_email <- EmailInvoice (fallback to Email) Custom field created by the app for storing a single billing email address. Synced from Fortnox customer's EmailInvoice field (or Email field if EmailInvoice is not available). Used when creating invoices in Fortnox from HubSpot deals.
Company: fortnox_cost_center <- CostCenter Cost center code. Synced from Fortnox. Used when creating customers and invoices in Fortnox. Input is normalized to uppercase.

Syncing products

  • Once every 30 minutes a sync is being made for Products from Fortnox to HubSpot. It includes both creating and updating Products.
  • The check-up for if a Products exists is the by checking the SKU (hs_sku)
Field HubSpot Direction Field Fortnox
Product: SKU (hs_sku) <- ArticleNumber
Product: name <- Description
Product: description <- Description
Product: price <- SalesPrice
Product: Cost of goods sold (hs_cost_of_goods_sold) <- PurchasePrice
Product: tax <- VAT
Product: Status (hs_status) <- Active, Expired

Product Status: The HubSpot Status property (hs_status) uses internal values "active" and "inactive". It is derived from Fortnox article flags: when Active is true and Expired is false, the product is set to active. Otherwise it is set to inactive.

Syncing invoices to deals

This feature lets you import invoices from Fortnox and to deals in HubSpot.

First time setup:

If you enable this feature, a new sales pipeline named "Fortnox Invoices" will be created in HubSpot specifically for these invoices.

This pipeline will have four stages: Unpaid, Paid in Full, Unpaid Overdue, and Credited.

Important:
Invoices can only be imported if these conditions are met:
  • The "Fortnox Invoices" pipeline and its stages created during first time setup must exist in HubSpot.
  • The currency used on the invoice must be part of the current effective currency codes for the HubSpot portal.
  • The company listed on the invoice must already be imported as a company in HubSpot.
Mappings:
Field HubSpot Direction Field Fortnox
Deal: invoice_number_in_fortnox <- DocumentNumber
Deal: final_pay_date_in_fortnox <- FinalPayDate
Deal: amount <- Calculation: TotalToPay - (TotalVAT + RoundOff)
Deal: deal_currency_code <- Currency
Deal: closedate <- DueDate
Deal: createdate <- InvoiceDate
Deal: name <- InvoiceType DocumentNumber - CustomerName
Deal: description <- Comments
Deal: order_number <- YourOrderNumber
Line items: hs_sku <- InvoiceRow ArticleNumber
Line items: name <- InvoiceRow Description
Line items: quantity <- InvoiceRow DeliveredQuantity

Syncing Fortnox Orders to HubSpot Orders

When Fortnox orders to HubSpot orders is enabled in App settings, the app can create or update HubSpot Order records from Fortnox orders discovered via the scheduled fetch job (optional env REPEATABLE_JOB_ORDERS_TO_HUBSPOT_PATTERN). An order is only processed if the Fortnox order Remarks contain HUBSPOT_DEAL_ID:<dealId> (this marker is added when an order is created from a HubSpot Quote). After the HubSpot Order is created or updated, the app links it to that Deal and adds the same Contact, Company, and Line item associations as the Deal (so the Order mirrors the Deal’s CRM relationships).

Mappings:
Field HubSpot (Order) Direction Field Fortnox Notes
Order: hs_order_name <- DocumentNumber Format: Fortnox order {DocumentNumber}
Order: hs_currency_code <- Currency Defaults to SEK if missing
Order: hs_external_order_id <- DocumentNumber Used to find or upsert the HubSpot order
Order: hs_total_price <- Total Set when Total is present on the Fortnox order
Association: Order ↔ Deal <- Remarks Deal id parsed from HUBSPOT_DEAL_ID:<id> in Remarks
Associations: Order ↔ Contacts, Companies, Line items <- (via Deal) Same records associated to the Deal are associated to the Order

HubSpot to Fortnox

Create an Invoice

When an Invoice is created in Fortnox based on a HubSpot Deal, following fields are mapped. Only a few Fortnox fields are populated to use Fortnox default handling of invoices.

Field HubSpot Direction Field Fortnox
Deal: deal_currency_code -> Currency
Company: fortnox_id -> CustomerNumber
Contact: firstname lastname -> YourReference
Deal: hubspot_owner_id (firstname lastname) -> OurReference
Deal: agreement_start_date, agreement_end_date -> Remarks (appended before description, localized based on currency)
Deal: description -> Remarks (appended after agreement dates if they exist)
Line item: hs_sku -> ArticleNumber
Line item: name -> Description
Line item: quantity -> DeliveredQuantity
Line item: price -> Price
Line item: discount or hs_discount_percentage -> Discount
Line item: calculated (hs_total_discount or hs_discount_percentage) -> DiscountType ('AMOUNT' or 'PERCENT')
Line item: tax -> VAT
Company: billing_email -> EmailInformation.EmailAddressTo
Company: fortnox_cost_center -> CostCenter
Deal: order_number -> YourOrderNumber
Deal: fortnox_print_template -> PrintTemplate (only when set to delivery note)
Deal: fortnox_invoice_type -> InvoiceType (only when set to CASHINVOICE)
Deal: amounts_include_vat -> VATIncluded (only when Yes: true; default: omitted)

Create a Company

The Fortnox to HubSpot sync app allows you to create a company in Fortnox based on a HubSpot company. This feature can be enabled or disabled from the app settings in HubSpot.

Field HubSpot Direction Field Fortnox Description
Company: address -> Address1
Company: address2 -> Address2
Company: city -> City
Company: fortnox_id -> CustomerNumber Field created by the Fortnox app to keep track of which customer it is related to
Company: name -> Name
Company: organization_number_from_fortnox -> OrganisationNumber Field created by the Fortnox app for getting the Organization Number for easier identification
Company: phone -> Phone1
Company: zip -> ZipCode
Company: fortnox_cost_center -> CostCenter Cost center code. Normalized to uppercase. Created in Fortnox if it does not exist. Requires costcenter scope.

Create a Fortnox Order from a Quote

When a Fortnox order is created from a HubSpot Quote, 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 order in App settings, and use the Quote properties Create order in Fortnox (create_order_in_fortnox) and Fortnox order document number (fortnox_order_document_number) after a successful create.

Triggering is done via a CRM subscription to POST /hubspot_event_subscriptions when create_order_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 Order)
Field HubSpot Direction Field Fortnox Notes
Company: fortnox_id -> Order.CustomerNumber Primary company on the associated Deal
Quote: hs_currency -> Order.Currency
Deal: amounts_include_vat -> Order.VATIncluded Sent as true only when set to Yes/true; otherwise omitted
(Deal id) -> Order.Remarks Prefix HUBSPOT_DEAL_ID:<dealId> (required for Fortnox → HubSpot Order sync)
Quote or Deal: description -> Order.Remarks Appended after the deal-id line when present (Quote description preferred)
Contact (from Deal) -> Order.YourReference First associated contact name when available
Deal owner -> Order.OurReference From hubspot_owner_id
Company: fortnox_cost_center -> Order.CostCenter Uppercased; requires costcenter Fortnox scope
Line item: hs_sku -> OrderRow.ArticleNumber When set; article must exist in Fortnox when SKU is used
Line item: name -> OrderRow.Description Product name only (same as invoice rows)
Line item: quantity -> OrderRow.DeliveredQuantity
Line item: price, discount, hs_discount_percentage, hs_total_discount -> OrderRow.Price, Discount, DiscountType Same rules as invoice rows (amount vs percent discount)
Line item: tax -> OrderRow.VAT VAT percentage; may be enriched from Fortnox article when missing
Quote: fortnox_order_document_number <- Order.DocumentNumber Written on the Quote after Fortnox returns the created order
Typical requirements
  • App setting: HubSpot quote to Fortnox order 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 (March 20, 2026).

App settings

Within HubSpot there is a few options related to the App.

App settings in HubSpot

Sync Companies
Toggle if the sync of companies should be active. This is synced every second (2) hour.
Sync Products
Toggle if the sync of products should be active. This is synced every 30 minutes.
Fortnox invoice to Deal pipeline
Toggle if the scheduled import of Fortnox invoices to HubSpot deals should be active.
HubSpot deal to Fortnox invoice
Toggle to allow/disallow Fortnox invoices to be created based on HubSpot deal.
HubSpot company to Fortnox customer
Toggle to allow/disallow Fortnox customers to be created based on HubSpot company.
HubSpot quote to Fortnox order
Toggle to allow Fortnox orders to be created from HubSpot quotes when quote property Create order in Fortnox is set to Yes. Requires a CRM subscription to /hubspot_event_subscriptions; see Create a Fortnox Order from a Quote.
Fortnox orders to HubSpot orders
Toggle to sync Fortnox orders into HubSpot Order records (and associate to deals when Remarks contain the deal reference). See Syncing Fortnox Orders to HubSpot Orders. Optional scheduled polling uses REPEATABLE_JOB_ORDERS_TO_HUBSPOT_PATTERN; see also Release notes.
Re-authenticate HubSpot and Fortnox
Option to re-authenticate HubSpot and Fortnox option if e.g. scopes have changed. Opens a popup with a button that opens the authentication process in a new window. The status view lists custom properties for companies, deals, and quotes. Once finished the popup can be closed.

Toogle syncs

CRM subscriptions & webhooks

Property-based automations use HubSpot CRM subscriptions with a single target URL on this app:

POST https://<your-app-domain>/hubspot_event_subscriptions

Subscribe to property changes for:

  • Companycreate_customer_in_fortnox
  • Dealcreate_invoice_in_fortnox
  • Quotecreate_order_in_fortnox

HubSpot’s payload may use "subscriptionType": "object.propertyChange" and "objectTypeId" (e.g. 0-14 for quotes) instead of older types like quote.propertyChange. The integration accepts both. Responses: 204 when a job was queued, 200 with { "message": "No event was triggered." } when nothing matched (e.g. wrong property or value not Yes).

Release notes (March 20, 2026) describe this in detail.

In the right sidebar of company records, there's a CRM card showing the "Organization number from Fortnox" and "Fortnox ID" for the connected Fortnox customer.

App settings in HubSpot

If the company isn't linked to a Fortnox customer, you can create one by clicking the "Create as customer in Fortnox" button, provided following conditions are met.

1. App Setting
2. Company Information
  • The "Organization number from Fortnox" field for the HubSpot company is known.
  • The "Fortnox ID" field for the HubSpot company must be unknown.
  • There should be no existing customer in Fortnox with the same organization number.

On the right sidebar of deal records, there's a CRM card showing the "Invoice number in Fortnox" for the connected Fortnox invoice.

App settings in HubSpot

If the deal isn't linked to a Fortnox invoice, you can create one by clicking the "Create as invoice in Fortnox" button, provided following conditions are met.

1. App Setting
2. Deal Information
  • The "Invoice number in Fortnox" field for the HubSpot deal must be unknown.
  • The deal's currency must exist in Fortnox.
  • The deal must be associated with a company.
3. Company Information
  • The associated company's "Organization number from Fortnox" is known.
4. Line Items
  • The deal must have at least one line item.
  • All line items must use the same currency.
  • None of the line items can have recurring billing frequency.
  • Line items with SKUs must correspond to articles existing in Fortnox.
  • Allowed characters for SKUs include letters, underscores, hyphens, and slashes.
  • If line items have VAT (tax property), the VAT percentage must match a configured VAT rate in Fortnox (see VAT Configuration Requirement below).