Create a Fortnox Order from a HubSpot Order
Enable HubSpot order to Fortnox order in App settings, then either use the Fortnox order app card on the HubSpot Order record (or on a linked Deal) — see Order — Fortnox order and Deal — Fortnox order — or trigger via workflow when Create order in Fortnox is set to Yes — see Automations in HubSpot.
When a Fortnox order is created, the app maps order line items and the associated company to Fortnox (same row logic as deal → invoice and quote → offer). The Fortnox order number is written to the HubSpot order for idempotency. When the order is linked to exactly one deal, that number is also copied to the deal (for optional invoice from existing Fortnox order).
Line items on HubSpot Orders
HubSpot does not allow adding line items to orders created manually in the Orders UI; line items can only be set when an order is created via integration/API or rolled up from a Deal. To make this flow usable for manually created orders, the integration falls back to the order's associated Deal: if the order has no line items but is associated with exactly one Deal, the app uses that Deal's line items (and its company, if the order has none associated). If 0 or more than 1 Deals are associated, the run fails with “Order has no line items.”
Typical requirements
- App setting: HubSpot order to Fortnox order is enabled.
- Order: Has line items or is associated to exactly one Deal that has line items; currencies consistent; no recurring billing on line items.
- Company: Order's associated company (or, via the deal-fallback, the Deal's company) has Fortnox ID (
fortnox_id) set. - Idempotency: If
order_number_in_fortnoxis already set on the Order, a second Fortnox order is not created. That later run still attaches a signed quote PDF when the file is not already on the Fortnox order.
Signed quote PDF
After the Fortnox order exists, the app looks at quotes associated with the HubSpot order. When e-signature is completed, it downloads that quote PDF (hs_pdf_download_link) and attaches it to the Fortnox order. A published quote that is not signed is left off. The PDF goes from HubSpot to Fortnox only.
E-signature is completed when HubSpot reports a required signer count greater than zero and at least that many signatures are completed. The same quote file is not uploaded again.
This uses the Fortnox archive scope. Existing installations need to re-authenticate the Fortnox connection once under Connection. Until the token includes archive, Connection lists it under missing scopes, the PDF step is skipped, and the order is still created. A failed download or upload also leaves the order in place.
See Release notes (October 6, 2026).
Mappings:
| Field HubSpot | Direction | Field Fortnox | Notes |
|---|---|---|---|
| Order: hs_currency_code | -> | Currency | Must exist in Fortnox |
| Company: fortnox_id | -> | CustomerNumber | From the Order's associated primary company (or the fallback Deal's company) |
| Order: description | -> | Remarks | Optional |
| Contact: firstname lastname | -> | YourReference | Default; first associated contact. Overridden by Order: fortnox_your_reference when set. |
| Order: hubspot_owner_id (firstname lastname) | -> | OurReference | |
| Company: fortnox_cost_center | -> | CostCenter | Stripped when the Fortnox token lacks the costcenter scope |
| Order: fortnox_invoice_email (else Company: billing_email) | -> | EmailInformation.EmailAddressTo | Subject defaults to Order {no} bifogas. Skipped if neither is set or value is not a valid email. |
| Order: fortnox_terms_of_payment | -> | TermsOfPayment | Optional (Betalningsvillkor) |
| Order: fortnox_your_order_number | -> | YourOrderNumber | Optional (PO Number) |
| Order: fortnox_way_of_delivery | -> | WayOfDelivery | Optional (Leveranssätt) |
| Order: fortnox_terms_of_delivery | -> | TermsOfDelivery | Optional (Leveransvillkor) |
| Order: fortnox_delivery_date | -> | DeliveryDate | Optional (Leveransdatum, YYYY-MM-DD) |
| Order: fortnox_billing_address_street / city / postal_code / country (else Company: address / city / zip / country) | -> | Address1 / City / ZipCode / Country | Faktureringsadress. ISO codes and common names are converted to Fortnox register names (e.g. SE → Sverige). Unrecognised values and empty fields are omitted so Fortnox copies from the customer record. |
| Order: hs_shipping_address_street / city / postal_code / country | -> | DeliveryAddress1 / DeliveryCity / DeliveryZipCode / DeliveryCountry | Leveransadress. Empty fields are omitted. |
| Line item: hs_sku | -> | OrderRows[].ArticleNumber | |
| Line item: name | -> | OrderRows[].Description | |
| Line item: quantity | -> | OrderRows[].DeliveredQuantity | |
| Line item: price | -> | OrderRows[].Price | |
| Line item: discount or hs_discount_percentage | -> | OrderRows[].Discount + DiscountType | |
| Line item: tax | -> | OrderRows[].VAT | Falls back to the Fortnox article's VAT when missing on the line item |
| Order: order_number_in_fortnox | <- | Order.DocumentNumber | Written on the HubSpot Order after Fortnox returns the created order |
| Deal: order_number_in_fortnox | <- | Order.DocumentNumber | When the HubSpot order is associated with exactly one deal — used by optional invoice from existing Fortnox order |