This is v2.2-draft — a working draft of the v2.2 standards, published for review and not yet ratified. It MUST NOT be used as the basis for a production implementation. For the current standards, switch to v2.1 using the version selector. See the v2.1 → v2.2-draft changelog for every change in this version.
Insurance Quotation — Requirements v2.2-draft12 min read
The validation rules that apply to Insurance Quotation. The Validated by column on each table indicates where each rule is enforced. Insurance Quotation does not use a per-customer consent — TPPs authenticate with the Client Credentials Grant and act as themselves throughout the quote lifecycle. Read alongside the API Guide and User Journeys.
All requests require an active Trust Framework application with the ISP role, a valid transport certificate presented on every request via mTLS, an active signing key for JWT signing, and a client credentials access token with the insurance scope.
Create a Quote
/{type}-insurance-quotesemployment, health, home, life, motor, renters, or travel. The Hub returns 404 for any other value before the request reaches the LFI.QuoteTypeNew, Renewal, or Switch. See Quote Types for the per-type field requirements (Renewal references the prior policy; Switch references the incumbent insurer).insurance scope. Customer consent tokens (Authorization Code Grant) MUST NOT be used.application/jwt Request JWT signed with the TPP's signing key, per the FAPI security profile. Unsigned requests are rejected with 400.x-fapi-interaction-id201QuoteId the TPP uses for retrieval, acceptance, and policy creation. The TPP MUST persist the QuoteId alongside the customer context.204Retrieve a Quote
/{type}-insurance-quotes/{QuoteId}QuoteIdQuoteId the TPP previously received from this LFI's POST /{type}-insurance-quotes response, in the matching sector. An unknown or cross-sector ID returns 404.404 rather than 403 if the QuoteId belongs to a different TPP, to prevent leakage of quote existence.Accept a Quote (and Subscribe to Events)
/{type}-insurance-quotes/{QuoteId}DataSubscription.Webhook.UrlUrl to an HTTPS endpoint the TPP controls. The URL MUST match ^https://.+. The Hub will POST status events to this URL for the lifetime of the quote (see API Guide). If omitted, the TPP must poll via GET /{type}-insurance-quotes/{QuoteId}.Subscription.Webhook.IsActiveSubscription is present. true activates webhook delivery; false pauses it without removing the registered URL. The TPP can PATCH later with IsActive: false to disable webhooks mid-lifecycle without altering the quote.application/jwt signed with the TPP's signing key.200 (TPP-Led)data.PolicyIssuanceAllowed declaring which steps the TPP may perform: CustomerVerification, Payment, PolicyDocuments. The TPP MUST honour these flags — only perform the steps the LFI has explicitly allowed.204 (LFI-Led)ApplicationPending → PolicyIssued → Completed event sequence (via webhook or polling).Submit KYC (TPP-Led only)
/{type}-insurance-quotes/{QuoteId}PolicyIssuanceAllowed.CustomerVerification: true). Calling it for an LFI-Led quote results in 409.Event Subscription and Handling
QuoteStatus rather than counting events. Tracking by QuoteId + QuoteStatus + event timestamp is sufficient.ApplicationPending, ApplicationApproved, PaymentRequired, PolicyIssued), completed (Completed), or terminal (Expired, Rejected, CustomerCancelled, LFICancelled). The TPP MUST handle all three.BrokerInstructions.UrlApplicationApproved or PaymentRequired, this is the LFI-hosted URL the TPP MUST redirect the customer to in order to complete payment. The URL is single-use and time-bound. The TPP MUST NOT scrape, modify, or replay it.DocumentsPolicyIssued in TPP-Led mode, the TPP MUST verify each document's SHA-256 Hash against the decoded Content, then make the documents available to the customer (download, email, in-app viewer). The TPP becomes the policy document delivery channel.GET /{type}-insurance-quotes/{QuoteId} at a reasonable cadence (no more than once per minute under normal load). The Hub may rate-limit aggressive polling.Create a Policy
/{type}-insurance-policiesQuoteIdQuoteId the TPP previously accepted at this LFI, in the matching sector. A mismatched sector or unknown QuoteId returns 404.QuoteId.application/jwt signed with the TPP's signing key.QuoteId after a successful response, the LFI MUST return the same policy reference rather than minting a duplicate. The TPP SHOULD use the x-fapi-interaction-id to correlate retries.201PolicyIssued → Completed event sequence (or polls). The final InsurancePolicyId and the Documents arrive via the quote-log events, not in this response body.