Skip to main content

Create a policy from a quote

  • The id of an existing quote. That quote must contain information about the insured property, the policyholder and the insured person. The policyholder email should be validated.

While most partners only need to redirect the client to the Appenin frontend once the quote is completed, the Appenin API allows even more integration for partners with specific needs.

Once a quote is deemed ready, it is used to create a policy object that has a similar structure. While all the fields of a quote can be updated, a policy can only be signed and paid. A policy cannot be updated but a new policy can be created from the same quote.

A policy is initiated at first, and it becomes applicable (i.e. it gains contractual value) once it is signed and paid by the client.

Only the id of a quote is needed to create a new policy from that quote:

curl --header "Content-Type: application/json" \
--header "x-api-key: <your-api-key>" \
--request POST \
--data '{"quote_id": "<the-id-of-an-existing-quote>"}' \

The content of the returned policy is very similar to the quote it is based on:

"id": "DEM978294975",
"code": "demo",
"accept_previous_policy_termination": false,
"external_id": null,
"nb_months_due": 12,
"origin": null,
"paid_at": null,
"payment_frequency": "MONTHLY",
"quote_id": "XRM1DCC",
"signed_at": null,
"special_operation_code": null,
"special_operation_code_applied_at": null,
"start_date": "2023-01-03",
"end_date": null,
"status": "INITIATED",
"subscribed_at": null,
"tacit_renewal": true,
"term_start_date": "2023-01-03",
"term_end_date": "2024-01-02",
"consents": {
"consent_to_send_certificate_to_lessor": false,
"consent_to_send_certificate_to_lessor_updated_at": null,
"consent_to_client_area_tos": false,
"consent_to_client_area_tos_updated_at": null
"customisation": {
"cover_acvol": null,
"deductible": null,
"default_cap": null,
"valuables_cap": null
"insurance": {
"contractual_terms": "",
"currency": "EUR",
"default_cap": 15000,
"default_deductible": 150,
"ipid": "",
"product_code": "APP978",
"product_pricing_code": "APP978_FLAT",
"product_version": "2022-05-09",
"simplified_covers": [
"valuables_cap": 2500
"policyholder": {
"address": "17 rue des Prévoyants de l’Avenir",
"birthdate": "2002-01-01",
"city": "Angers",
"email": "",
"email_validated_at": "2023-01-03T15:38:40.202Z",
"firstname": "John",
"lastname": "Doe",
"phone_number": "+33123456789",
"postal_code": "49000",
"preferred_language": "fr"
"premium": {
"monthly_price": 11.89,
"price": 142.68,
"price_excl_tax": 128.62,
"price_tax": 14.06,
"price_cancelled": null,
"price_cancelled_excl_tax": null,
"price_cancelled_tax": null
"risk": {
"person": {
"firstname": "John",
"lastname": "Doe"
"property": {
"address": "17 rue des Prévoyants de l’Avenir",
"building_flat": null,
"city": "Angers",
"equipments": [],
"occupancy": "TENANT",
"postal_code": "49000",
"room_count": 2,
"type": "FLAT"
"roommates": []
POST /v2/policies

Find more information about the policy creation API endpoint POST /v2/policies in the API reference