Skip to main content
Quotes
Optional municipality on Dutch quote addresses.
🧾 Quotes
  • POST /v1/quotes and GET /v1/quotes/{quoteId}: Dutch address objects accept optional municipality (gemeente), distinct from city. (Additive)
Quotes
Optional intake note on create and get quote.
🧾 Quotes
  • POST /v1/quotes and GET /v1/quotes/{quoteId}: added optional intakeNote — merchant context for Prets at quote handover. (Additive)
Correlation claimsDeprecation
A richer correlation-claims response, with a deprecated field.
🔗 Correlation claims
  • POST /v1/correlation-claims/resolve: a matched response now includes a correlationClaim object with id (the canonical Prets correlation claim identifier) and uuid (its lowercase UUID encoding). (Additive)
  • POST /v1/correlation-claims/resolve: the top-level correlationClaimId field on a matched response is now deprecated in favor of correlationClaim.id. It is still returned for now. (Deprecation)
Correlation claims
A new correlation-claims endpoint for partner intake integrations.
🔗 Correlation claims
  • Added POST /v1/correlation-claims/resolve. It matches a consumer by email and/or install address (postalCode plus houseNumber) and returns { data: { matched: true, correlationClaimId } } when a match is found, or { data: { matched: false } } when none is. The correlationClaimId is a stable identifier for use in partner intake integrations. Returns 401 when unauthenticated and 403 when the calling organization is not permitted to resolve correlation claims. (Additive)
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)
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)
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)