June 29 – July 5, 2026
Quotes
Subsidy line items, quote portal deeplinks, and more forgiving postal code validation.
🧾 Quotes
POST /v1/quotesandGET /v1/quotes/{quoteId}: added a newsubsidyline item type. It carries a negativetotalInclTax(a reduction applied to the quote total) and a requiredincentiveCodesarray, whose codes must match incentive codes declared on the work line items. (Additive)POST /v1/quotesandGET /v1/quotes/{quoteId}: addedlinks.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 example8101xp) are now accepted and normalized to the1234 ABformat. 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
🔔 Events
⚠️ Errors
GET /v1/quotes/{quoteId}andPOST /v1/quotes: thefinancingobject is now always present and richer. Addedphase,method(array ofloan/own_funds/subsidy), andwaitingOn. (Breaking)financing.subStatusis now required and uses atypediscriminator withnone,on_hold, andcanceledarms (the previousextra_info_neededarm was removed). (Breaking)financing.statusvalues changed:financing_completed→completed, andcancelled_by_customerwas split intocanceled_by_consumerandoffer_canceled. Addedadditional_documents_requiredandinvoice_pending. (Breaking)- New
on_holdreasons:installation_blocked,general_question, andunknown. (Additive)
🔔 Events
- The
quote.financing.cancelledwebhook event was renamed toquote.financing.canceled. (Breaking)
⚠️ Errors
- All endpoints now return a standardized error envelope:
{ error: { type, code, message, param?, requestId } }. Themessagefield is unchanged;type,code,param, andrequestIdare new. (Additive)
🧾 Quotes
POST /v1/quotes:lineItems[].incentiveCodesandtermsno longer accept values containing a semicolon (;). Requests that include a semicolon in these fields now fail validation. (Breaking)