Release Notes
Stay up to date with the latest improvements, features, and bug fixes
Quick Navigation
- April 8, 2026 - Bookkeep after create & credit invoices from deals
- March 30, 2026 - Fortnox PaymentWay on deals
- March 20, 2026 - HubSpot Quotes ↔ Fortnox Orders (two-way) & CRM webhooks
- March 13, 2026 - Cost Center Uppercase Normalization
- March 10, 2026 - Amounts Include VAT (Deal property)
- March 3, 2026 - Invoice vs Delivery Note & Cash Invoice (Deal controls)
- February 4, 2026 - Product Status Sync from Fortnox
- January 20, 2026 - Order Number Mapping and Price Handling Improvements
- November 19, 2025 - VAT Support for Line Items
- November 3, 2025 - Remarks Field Enhancements
- November 3, 2025 - Order Number Sync to Fortnox Invoices
- October 23, 2025 - Billing Email for Fortnox Invoices
- October 20, 2025 - Enhanced Line Item Description Mapping
- October 17, 2025 - Deal Owner Information in Fortnox Invoices
Bookkeep after create & credit invoices (deal properties) New Feature Fix
From a HubSpot deal you can optionally bookkeep a newly created Fortnox invoice, or create a kreditfaktura by crediting an existing debit invoice—without building line items for the credit path.
- Fortnox bookkeep after invoice create (
fortnox_bookkeep_after_create) — When Yes, after a successful new invoice create from the deal, the app calls Fortnox to book that invoice. When No, the document is left unbooked (same as before). - Fortnox kreditfaktura (
fortnox_kreditfaktura, values NEJ / JA) — NEJ: create a normal invoice from deal line items. JA: create a credit invoice in Fortnox by crediting the debit document given in the reference field (deal line items are not used for this flow). Values are matched case-insensitively. - Fortnox document to credit (invoice number) (
fortnox_credit_invoice_reference) — Fortnox document number of the debit invoice to credit. Required when kreditfaktura is JA. The resulting document number is written to Invoice number in Fortnox (invoice_number_in_fortnox) after success.
- New invoice:
POST /3/invoicesas today; optionalPUT …/invoices/{id}/bookkeepwhen bookkeep after create is enabled. - Credit invoice:
PUT …/invoices/{debitDocumentNumber}/credit— Fortnox creates the credit document from the referenced debit invoice.
Fortnox may return error 1000031 if bookkeep or credit requests omit a JSON content type. The app now sends Content-Type: application/json (with an empty JSON body) for those PUT calls.
- Use Bookkeep after create only when you want the new invoice booked automatically in Fortnox.
- For credits, set Fortnox kreditfaktura to JA and fill Fortnox document to credit (invoice number) with the debit document number; use the same Create invoice in Fortnox / CRM flow as for a normal invoice run.
- See Get Started — Create an Invoice for full behavior and CRM card notes.
Fortnox PaymentWay (deal property) New Feature
Control which payment method Fortnox uses when creating an invoice—directly from HubSpot deals.
- Fortnox betalsätt (PaymentWay) (
fortnox_payment_way) — Kontant (CASH), Kort (CARD), or Autogiro (AUTOGIRO) sets FortnoxPaymentWay. Use Kort for card (e.g. Diners) instead of default cash. Default/unset omitsPaymentWay.
- Set Fortnox betalsätt to Kort on deals where Fortnox should use card instead of cash.
HubSpot Quotes ↔ Fortnox Orders (two-way) & CRM webhook compatibility New Feature
End-to-end flow between HubSpot Quotes, Fortnox Orders, and HubSpot Order records: create a Fortnox order from a Quote, store the document number on the Quote, embed the Deal id in Fortnox Remarks for traceability, then optionally sync Fortnox orders back into HubSpot Orders and associate them to the Deal. CRM property webhooks are aligned with HubSpot’s current object.propertyChange payload shape.
- App setting: Enable HubSpot quote to Fortnox order so queued jobs are allowed to run.
- Quote properties:
create_order_in_fortnox(trigger) andfortnox_order_document_number(filled after a successful create). - Trigger: A CRM subscription to
POST /hubspot_event_subscriptionswhencreate_order_in_fortnoxbecomes Yes (same endpoint as for companies and deals). - Data: The app loads the Quote with line items, resolves the linked Deal and primary Company (
fortnox_id), and builds a Fortnox Order (rows mirror the invoice-from-deal logic: article, quantity, price, discount, VAT, etc.). - Remarks: Fortnox Order Remarks include
HUBSPOT_DEAL_ID:<dealId>so the return path can link the Fortnox order to the right HubSpot Deal.
- App setting: Enable Fortnox orders to HubSpot orders so background jobs may create or update HubSpot Order records from Fortnox.
- Scheduled fetch: Optional env
REPEATABLE_JOB_ORDERS_TO_HUBSPOT_PATTERNregisters a repeatable job (same pattern as otherREPEATABLE_JOB_*cron variables) to list orders from Fortnox. - Matching: For each Fortnox order, the app looks up or creates a HubSpot Order by
hs_external_order_id(Fortnox document number) and sets name, currency, total, etc. - Association: If Remarks contain
HUBSPOT_DEAL_ID:<id>(as set when the order was created from a Quote), the HubSpot Order is associated to that Deal and related records; otherwise the HubSpot Order is still synced but not linked to a Deal.
object.propertyChange & property values- HubSpot often sends
subscriptionType: "object.propertyChange"withobjectTypeId(e.g.0-14for Quotes) instead of legacyquote.propertyChange/deal.propertyChange/company.propertyChange. The app now accepts both normalized event keys (e.g.objectPropertyChangeCreateOrderInFortnoxalongsidequotePropertyChangeCreateOrderInFortnox). - Deals & companies: The same compatibility applies to
objectPropertyChangeCreateInvoiceInFortnoxandobjectPropertyChangeCreateCustomerInFortnox. - Property values:
propertyValuemay be JSON booleantrueor string"true"for checkbox-style properties.
- Re-authenticate status page: The checklist now includes quotes (e.g. Create order in Fortnox, Fortnox order document number), not only companies and deals.
- Post-install property creation: Missing HubSpot custom properties can be created for quotes together with companies and deals where applicable.
- Keep a single webhook URL:
POST …/hubspot_event_subscriptions— no URL change required. - Deploy this version so
object.propertyChangepayloads and two-way order flows behave as described. - Grant HubSpot scopes for quotes and orders if not already (re-authenticate when scopes change).
- Read the field mappings in Create a Fortnox Order from a Quote and Syncing Fortnox Orders to HubSpot Orders, plus CRM subscriptions & webhooks.
📚 Get Started — CRM webhooks · Quote → Fortnox Order · Fortnox Orders → HubSpot Orders
Cost Center Uppercase Normalization Enhancement
The Fortnox Cost Center field now automatically normalizes input to uppercase for Fortnox compatibility, preventing errors when cost center codes are entered in lowercase.
- The "Fortnox Cost Center" company property (
fortnox_cost_center) – input is now normalized to uppercase when creating customers and invoices in Fortnox. - Case-insensitive input: You can enter values in any case (e.g. "avd1", "Avd1", "AVD1") – the app converts them to uppercase before sending to Fortnox.
- Fortnox expects cost center codes in uppercase; previously, lowercase could cause errors (e.g. "Kunde inte hämta/hitta valuta" or similar).
- On the HubSpot company, set Fortnox Cost Center to any cost center code (e.g. "avd1" or "AVD1").
- When creating a customer or invoice in Fortnox, the app automatically converts the value to uppercase (e.g. "AVD1").
- This applies to both customer creation and invoice creation from deals.
- No more errors from case-sensitive cost center codes in Fortnox.
- Flexible input – users can type in any case.
- Works automatically – no configuration needed.
📚 See Get Started Guide for cost center field mappings.
Amounts Include VAT (Deal property) Enhancement
Opt in to treat HubSpot deal amounts as VAT-inclusive when creating Fortnox invoices, preventing double VAT when your amounts already include VAT.
- A new HubSpot deal property "Amounts include VAT" (
amounts_include_vat) is created and managed by the app. - Default behavior is unchanged – the app does not send
VATIncluded, so Fortnox uses its default (amounts treated as VAT-exclusive, VAT added on top). - When your HubSpot amounts are VAT-inclusive, set the property to Yes – the app will send
VATIncluded: trueso Fortnox does not add VAT on top, preventing double VAT.
- On the HubSpot deal, set Amounts include VAT to:
- No or empty (default) – Original behavior. The app does not send
VATIncluded; Fortnox treats amounts as VAT-exclusive and adds VAT. - Yes – HubSpot amounts include VAT. The app sends
VATIncluded: trueso Fortnox does not add VAT on top.
- No or empty (default) – Original behavior. The app does not send
- When an invoice is created in Fortnox from the deal, the app only sends
VATIncluded: truewhen you explicitly set the property to Yes.
- No breaking change – default behavior is preserved.
- Opt in to prevent double VAT when HubSpot amounts already include VAT.
- Per-deal control for VAT-inclusive amounts.
📚 See Get Started Guide for field mappings between deals and Fortnox invoices.
Invoice vs Delivery Note & Cash Invoice (Deal controls) New Feature
Control whether Fortnox creates a regular invoice, a delivery note, or a cash invoice (kontantfaktura) directly from the HubSpot deal.
- A new HubSpot deal property "Fortnox document type (print template)" (
fortnox_print_template) is created and managed by the app. - The property lets you choose between Faktura and Följesedel when creating a Fortnox document from a deal.
- The property is optional – if you leave it empty, Fortnox uses its own default template (normally invoice).
- A second HubSpot deal property "Fortnox invoice type" (
fortnox_invoice_type) lets you explicitly request a cash invoice (kontantfaktura) when needed.
- On the HubSpot deal, set Fortnox document type to:
- Faktura (value:
st) – standard invoice. - Följesedel (value:
ps) – delivery note.
- Faktura (value:
- Optionally, set Fortnox invoice type:
- Standard invoice (Fortnox default) (value:
INVOICE) – normal invoice type, handled as today. - Kontantfaktura (cash invoice) (value:
CASHINVOICE) – Fortnox creates a cash invoice instead of a standard invoice.
- Standard invoice (Fortnox default) (value:
- When an invoice is created in Fortnox from the deal:
- If the value is
ps, the app sets Invoice.PrintTemplate = "ps" so Fortnox creates a delivery note. - For any other value (including empty), the app does not send
PrintTemplateat all – Fortnox then applies its own default template (normally invoice). - If
fortnox_invoice_typeis set toCASHINVOICE, the app sets Invoice.InvoiceType = "CASHINVOICE" so Fortnox creates a cash invoice. - For
INVOICEor when the field is empty, the app does not sendInvoiceType– Fortnox uses its own default (standard invoice).
- If the value is
- Simple, explicit control over invoice vs delivery note vs cash invoice per deal.
- Respects Fortnox defaults when you do not override template or invoice type.
- Fully compatible with the existing "Create invoice in Fortnox" flow and app settings.
📚 See Get Started Guide for field mappings between deals and Fortnox invoices.
Product Status Sync from Fortnox New Feature
HubSpot product Status (Active/Inactive) is now automatically synced from the Fortnox product registry
- Product Status Mapping: The HubSpot product Status property (
hs_status, values: active/inactive) is now synced from Fortnox articles during product sync - Fortnox Fields: Uses the Active and Expired flags from Fortnox article details
- Automatic Sync: Works with the existing 30-minute product sync - no configuration needed
- Active products in Fortnox appear as Active in HubSpot; inactive or expired articles appear as Inactive
The app maps Fortnox article status to HubSpot's product Status property (hs_status):
- Active in HubSpot: When Fortnox article has
Active = trueandExpired = false - Inactive in HubSpot: When Fortnox article has
Active = falseorExpired = true
This ensures that product availability is consistent between Fortnox and HubSpot. Inactive products in Fortnox will no longer appear as available when creating line items in HubSpot.
- Accurate product availability across both systems
- Inactive or discontinued products are correctly marked in HubSpot
- Works automatically with existing product sync - no setup required
📚 See Get Started Guide for product sync field mappings
Order Number Mapping and Price Handling Improvements New Feature Enhancement
Enhanced invoice and product sync with order number mapping from Fortnox invoices and improved null price handling
- Order Number Mapping: Customer order numbers from Fortnox invoices are now automatically synced to HubSpot deals in the order_number field
- Null Price Handling: Products with null or missing sales prices from Fortnox now default to 0 instead of undefined
- Pipeline Recovery: Improved error handling when creating HubSpot pipelines - automatically recovers from duplicate pipeline errors
When Fortnox invoices are synced to HubSpot deals, the YourOrderNumber field from Fortnox is now automatically mapped to the order_number property on the HubSpot deal.
- During automatic invoice sync, the app reads the YourOrderNumber field from each Fortnox invoice
- This value is stored in the order_number field on the corresponding HubSpot deal
- Perfect for tracking customer purchase orders or reference numbers
- Works seamlessly with existing invoice sync - no configuration needed
Fortnox Invoice:
- DocumentNumber: "1234"
- YourOrderNumber: "PO-2026-001"
- CustomerName: "Acme Corp"
Result in HubSpot Deal:
- invoice_number_in_fortnox: "1234"
- order_number: "PO-2026-001"
- Deal name: "INVOICE 1234 - Acme Corp"
Product sync from Fortnox now handles missing or null sales prices more gracefully by defaulting them to 0.
- Before: If a Fortnox article had a null SalesPrice, the HubSpot product price was set to null/undefined
- Now: Null or missing SalesPrice values automatically default to 0
- Prevents undefined price values in HubSpot
- Ensures consistent data structure
- Works automatically during product sync
Fortnox Article:
- ArticleNumber: "PROD-001"
- Description: "Test Product"
- SalesPrice: null
Result in HubSpot Product:
- hs_sku: "PROD-001"
- name: "Test Product"
- price: 0 ← Defaults to 0 instead of null
- All features work automatically with existing sync processes
- No manual configuration or re-authorization required
- Price defaulting only affects null/missing values - existing prices remain unchanged
- Better order tracking with customer reference numbers flowing from Fortnox to HubSpot
- More reliable product data with consistent price values
- Enhanced data integrity across both systems
📚 See Get Started Guide for more details on invoice and product sync
VAT Support for Line Items New Feature
Automatically include VAT codes for line items when creating Fortnox invoices from HubSpot deals, with automatic enrichment from Fortnox articles
- VAT codes from HubSpot line items are now automatically included in Fortnox invoice rows
- Automatic enrichment: If a line item doesn't have a VAT code, the app automatically fetches it from the Fortnox article (when the line item has a SKU)
- The app uses the tax property on line items, which contains the VAT code synced from Fortnox articles
- VAT is only included when present - if a line item doesn't have a VAT code and the Fortnox article also doesn't have one, the invoice row is created without VAT
- VAT values are automatically trimmed of whitespace for clean data
- When products are synced from Fortnox to HubSpot, the VAT code from the Fortnox article is stored in the product's tax property
- When you add a product to a deal, the VAT code is available on the line item's tax property
- When creating an invoice in Fortnox from a HubSpot deal, the app checks each line item for a VAT code
- If the line item has a tax property: It uses that VAT code directly
- If the line item doesn't have a tax property but has an SKU: The app automatically fetches the Fortnox article and uses its VAT code
- If a VAT code is present (and not empty/null), it's automatically included in the invoice row
- The VAT code is set directly on the invoice row in Fortnox
- VAT codes are automatically synced from Fortnox articles to HubSpot products during product sync (every 30 minutes)
- When you add products to a deal, the VAT code is automatically available on the line items
- If a line item is missing a VAT code, it's automatically enriched from the Fortnox article when creating the invoice
- No manual configuration needed - it works automatically!
- VAT codes are synced from Fortnox articles during the regular product sync (every 30 minutes)
- If a line item doesn't have a VAT code (empty or missing), the app automatically tries to get it from the Fortnox article
- If both the line item and Fortnox article don't have VAT codes, the invoice row is created without VAT - this is normal behavior
- VAT values are automatically trimmed of whitespace to ensure clean data
- This feature works seamlessly with existing invoice creation - no changes to your workflow needed
- VAT codes must match valid VAT codes in your Fortnox system
- Custom line items (without SKU) won't be enriched - they need to have the tax property set manually if VAT is needed
Line item with SKU: "PROD-001"
Line item tax property: "25"
Result in Fortnox Invoice Row:
ArticleNumber: "PROD-001"
VAT: "25"
Price: 199
Quantity: 1
Line item with SKU: "PROD-002"
Line item tax property: (missing)
Fortnox article VAT: "12"
Result: App automatically enriches line item with VAT "12" from Fortnox article
Result in Fortnox Invoice Row:
ArticleNumber: "PROD-002"
VAT: "12"
Price: 299
Quantity: 1
Line item 1: VAT code "25" on line item → Included in invoice
Line item 2: No VAT on line item, but Fortnox article has "12" → Enriched and included
Line item 3: No VAT on line item, Fortnox article has null VAT → Invoice row created without VAT
All line items are handled correctly!
- Accurate VAT handling - VAT codes are automatically preserved from Fortnox articles
- No manual entry required - VAT codes flow automatically from products to invoices
- Automatic fallback - Missing VAT codes are automatically fetched from Fortnox when possible
- Consistent data - VAT codes match what's configured in Fortnox
- Flexible - works with or without VAT codes on line items
📚 See Get Started Guide for more details on invoice creation and field mappings
Remarks Field Enhancements New Feature
Enhanced Fortnox invoice Remarks field with agreement dates, featuring automatic localization based on deal currency
- Agreement Dates: Two new custom properties added to all HubSpot deals: "Agreement Start date" and "Agreement End date"
- Agreement dates are automatically formatted and added to the Remarks field in Fortnox invoices
- Localized formatting: Agreement dates are automatically localized based on the deal's currency code
- Swedish (SEK): "Avtalsstartdatum {date} och slutdatum {date}" - Dates formatted as YYYY-MM-DD
- English (other currencies): "Agreement start date {date} and end date {date}" - Dates formatted as MM/DD/YYYY
- Smart ordering: The Remarks field is built in this order: Agreement Dates → Description
- All fields are automatically created when the app is installed or updated
- Agreement Dates: Add agreement start and/or end dates to any HubSpot deal using the new custom properties
- The system automatically determines the locale based on the deal's currency code
- When you create an invoice in Fortnox from that deal, the content is formatted and included in the Remarks field
- If both start and end dates are provided, they appear together in one text string
- If only one date is provided, only that date is included
- Agreement dates appear before the deal description in the Remarks field
- Open any deal in HubSpot
- Find the new custom properties in the Deal Information section:
- "Agreement Start date" and/or "Agreement End date" - Enter agreement dates
- When you create an invoice from this deal, the content will automatically appear in the Fortnox invoice Remarks field
- The text will be in Swedish if the deal currency is SEK, or English for other currencies
- All fields are optional - invoices work perfectly fine without them
- You can provide just the start date, just the end date, or both agreement dates
- If both agreement dates are missing, no agreement text is added to the Remarks
- Dates are formatted according to the locale (Swedish: YYYY-MM-DD, English: MM/DD/YYYY)
- The fields are automatically created during app installation/update
- All content is synced one-way from HubSpot to Fortnox
- Agreement dates appear before the deal description in the Remarks field when both are present
Deal description: "Monthly subscription"
Agreement Start date: 2025-01-01
Agreement End date: 2025-12-31
Result in Fortnox Remarks:
Avtalsstartdatum 2025-01-01 och slutdatum 2025-12-31
Monthly subscription
Deal description: "Annual service agreement"
Agreement Start date: 2025-01-01
Agreement End date: 2025-12-31
Result in Fortnox Remarks:
Agreement start date 1/1/2025 and end date 12/31/2025
Annual service agreement
The Remarks field is always built in this order: Agreement Dates → Description. Each section is separated by a blank line (double newline) for clear readability. This ensures consistent formatting across all invoices, regardless of which fields are populated.
📚 See Get Started Guide for more details on invoice creation and Remarks field structure
Order Number Sync to Fortnox Invoices New Feature
Sync order numbers from HubSpot deals to Fortnox invoices for better order tracking and reference management
- A new "Order number" custom property has been added to all HubSpot deals
- Order numbers from HubSpot deals are automatically synced to the YourOrderNumber field in Fortnox invoices
- The field is automatically created when the app is installed or updated
- Perfect for maintaining order references between HubSpot and Fortnox
- Add an order number to any HubSpot deal using the new "Order number" custom property
- When you create an invoice in Fortnox from that deal, the order number is automatically included
- The order number appears in the YourOrderNumber field in Fortnox
- Open any deal in HubSpot
- Find the "Order number" field in the Deal Information section
- Enter the order number (e.g., "ORD-12345", "PO-2024-001")
- When you create an invoice from this deal, the order number will automatically sync to Fortnox
- The order number field is optional - invoices work perfectly fine without it
- If the order number is empty or whitespace-only, it won't be included in the invoice
- The field is automatically created during app installation/update
- Order numbers are synced one-way from HubSpot to Fortnox
📚 See Get Started Guide for more details on invoice creation
Billing Email for Fortnox Invoices New Feature
Automatically set billing email addresses on invoices created in Fortnox from HubSpot deals, with automatic sync from Fortnox customers
- A new "Fortnox Billing Email" field has been added to all HubSpot companies
- Automatic sync: Billing email is now automatically synced from Fortnox customers to HubSpot companies every 2 hours
- The app prioritizes the EmailInvoice field from Fortnox, falling back to the Email field if EmailInvoice is not available
- Billing email from the company is automatically included when creating invoices
- Email is set directly on each invoice - perfect for ensuring the right person receives it
- Email syncs automatically during the regular company sync (every 2 hours)
- Uses EmailInvoice field first, then falls back to Email
- Email addresses are automatically trimmed of whitespace
- If both fields are empty in Fortnox, the field won't be set in HubSpot
- You can also manually add/edit the email in HubSpot
- Manual entries work alongside synced values
- Manual changes will be overwritten on next sync (if Fortnox has a value)
- Automatic: Ensure your Fortnox customers have EmailInvoice or Email set - it will sync automatically
- Manual: Open any company in HubSpot, find the "Fortnox Billing Email" field (in Company Information section), and add the customer's billing email address
- When you create an invoice from a deal with that company, the email is automatically set on the invoice
- Only one email address per company is supported
- The field is optional - if left empty, invoices are created as normal
- The app validates the email format to ensure it's valid
- Invalid emails don't prevent invoice creation (logged as warning)
- Email sync runs automatically with company sync every 2 hours
Enhanced Line Item Description Mapping Enhancement Superseded
Major enhancement to improve invoice creation with richer line item descriptions
⚠️ Update: This Feature Has Been Simplified
Line item descriptions have been simplified to use only the product name for cleaner, more consistent invoices.
This release introduced the ability to combine both name and description fields in line items. The feature was later simplified to use only product names for cleaner, more consistent invoices.
During this period, the app combined both name and description fields to create rich, contextual descriptions.
Example: "Premium Hosting - High-performance hosting with 24/7 support"
Intelligent Handling:
- Both fields exist and differ → Combined with " - "
- Only name exists → Uses name only
- Only description exists → Uses description only
- Name equals description → Uses name only (no duplication)
- Both missing → No description field sent
Based on user feedback and to align with standard invoice practices, the feature was simplified in December 2025 to use only product names. This provides cleaner, more readable invoices with consistent formatting.
📚 See Get Started Guide for more details on invoice creation
Deal Owner Information in Fortnox Invoices New Feature
Automatically include HubSpot Deal Owner information in Fortnox invoices for better tracking
The HubSpot Deal Owner's name is now automatically included in the "Our Reference" field when creating invoices in Fortnox. This makes it easier to track which team member is responsible for each deal.
- When a deal is converted to a Fortnox invoice, the system looks up the deal owner in HubSpot
- The owner's full name (First Name + Last Name) is added to the invoice's "Our Reference" field
- If there's no deal owner assigned, the invoice is created normally without the reference
⚠️ Important: New Permission Required
To use this feature, existing users need to re-authorize the app because we've added a new permission scope.
- Re-install the app in your HubSpot portal to grant the new permission
- The new permission is
crm.objects.owners.read(read-only access to owner information) - Once re-authorized, the feature works automatically for all new invoices
- Better invoice tracking and accountability
- Automatic owner information without manual entry
- Seamless integration between HubSpot and Fortnox
- No disruption to existing functionality
- Gracefully handles missing deal owners (continues working normally)
- If the new permission isn't available, invoices are created without the owner reference
- All existing functionality remains unchanged
Need Help?
Have questions about these features or need assistance?
Get Started Guide Contact Support