Skip to main content
June 29 – July 5, 2026
Quotes
Subsidy line items, quote portal deeplinks, and more forgiving postal code validation.
🧾 Quotes
  • POST /v1/quotes and GET /v1/quotes/{quoteId}: added a new subsidy line item type. It carries a negative totalInclTax (a reduction applied to the quote total) and a required incentiveCodes array, whose codes must match incentive codes declared on the work line items. (Additive)
  • POST /v1/quotes and GET /v1/quotes/{quoteId}: added links.portalQuote, a deeplink to the quote in the merchant portal. Present only for organization API keys. (Additive)
  • POST /v1/quotes: Dutch postal codes with a lowercase letter suffix (for example 8101xp) are now accepted and normalized to the 1234 AB format. Requests that previously failed validation now succeed. (Additive)
June 22–28, 2026
QuotesEventsBreaking
A richer quote financing contract, a renamed financing webhook event, and a standardized error format.
🧾 Quotes
  • GET /v1/quotes/{quoteId} and POST /v1/quotes: the financing object is now always present and richer. Added phase, method (array of loan / own_funds / subsidy), and waitingOn. (Breaking)
  • financing.subStatus is now required and uses a type discriminator with none, on_hold, and canceled arms (the previous extra_info_needed arm was removed). (Breaking)
  • financing.status values changed: financing_completedcompleted, and cancelled_by_customer was split into canceled_by_consumer and offer_canceled. Added additional_documents_required and invoice_pending. (Breaking)
  • New on_hold reasons: installation_blocked, general_question, and unknown. (Additive)

🔔 Events
  • The quote.financing.cancelled webhook event was renamed to quote.financing.canceled. (Breaking)

⚠️ Errors
  • All endpoints now return a standardized error envelope: { error: { type, code, message, param?, requestId } }. The message field is unchanged; type, code, param, and requestId are new. (Additive)
June 15–21, 2026
QuotesBreaking
Stricter validation for quote incentive codes and terms.
🧾 Quotes
  • POST /v1/quotes: lineItems[].incentiveCodes and terms no longer accept values containing a semicolon (;). Requests that include a semicolon in these fields now fail validation. (Breaking)