🧾 Quotes
POST /v1/quotesandGET /v1/quotes/{quoteId}: Dutchaddressobjects accept optionalmunicipality(gemeente), distinct from city. (Additive)
🧾 Quotes
POST /v1/quotesandGET /v1/quotes/{quoteId}: added optionalintakeNote— merchant context for Prets at quote handover. (Additive)
🔗 Correlation claims
POST /v1/correlation-claims/resolve: a matched response now includes acorrelationClaimobject withid(the canonical Prets correlation claim identifier) anduuid(its lowercase UUID encoding). (Additive)POST /v1/correlation-claims/resolve: the top-levelcorrelationClaimIdfield on a matched response is now deprecated in favor ofcorrelationClaim.id. It is still returned for now. (Deprecation)
🔗 Correlation claims
- Added
POST /v1/correlation-claims/resolve. It matches a consumer byemailand/or install address (postalCodeplushouseNumber) and returns{ data: { matched: true, correlationClaimId } }when a match is found, or{ data: { matched: false } }when none is. ThecorrelationClaimIdis a stable identifier for use in partner intake integrations. Returns401when unauthenticated and403when the calling organization is not permitted to resolve correlation claims. (Additive)
🧾 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)
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)