---
title: "Create Preliminary Checkout"
method: POST
path: "/api/v1/preliminary/checkout"
tags: ["preliminary"]
---

# Create Preliminary Checkout

`POST /api/v1/preliminary/checkout`

## Request

- Base URL: `https://api.casaintelligence.com.au` (the document declares no server; this is the origin it was published from)
- URL: `https://api.casaintelligence.com.au/api/v1/preliminary/checkout`
- Auth: none declared

Create a $199 Stripe one-time checkout for a preliminary planning report.

Pre-inserts a pending ci_reports row (carrying the dev intent in report_data
so fulfilment can compose), then creates the Stripe session. Mirrors the
working consumer report-checkout flow.

## Request body

- PreliminaryCheckoutRequest
  - `email` string, email, required
  - `property_id` string, nullable: UUID of ci_properties row, if already resolved
  - `address` string, nullable: SEQ address — resolved server-side if property_id absent
  - `dev_type` string
  - `unit_count` integer
  - `works_intent` string, nullable
  - `address_label` string, nullable
  - `user_id` string, nullable
  - `org_id` string, nullable
  - `success_url` string, nullable
  - `cancel_url` string, nullable
  - `utm` object, nullable: Marketing attribution pairs (utm_source/utm_medium/utm_campaign/utm_term/utm_content/referrer). Sanitized server-side.
  - `free_check_id` string, nullable: ci_free_checks id this purchase originated from, for conversion linkage
  - `ga_client_id` string, nullable: GA4 client id from the buyer's _ga cookie, for server-side purchase events
  - `phone` string, nullable: Optional, and it stays optional. Baymard measured 14 per cent of shoppers refusing to give a phone number to an online store, so a required field costs buyers and returns junk from some who stay. Travels to the desk so a person can call about the property when the buyer wants that.
  - `neighbour_property_ids` string[], nullable: Adjoining lot UUIDs to amalgamate with the subject into one combined-site report. Validated (contiguous + uniform controls) before charging; mixed-control selections are blocked at checkout.

## Response `200`

Successful Response

- AppApiV1PreliminaryCheckoutResponse
  - `checkout_url` string, required
  - `session_id` string, required
  - `report_id` string, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/casaintelligence/apis/casa-intelligence-engine.md) · [All operations](https://skmtc.dev/casaintelligence/apis/casa-intelligence-engine/llms.txt) · [OpenAPI document](https://skmtc.dev/casaintelligence/apis/casa-intelligence-engine/revisions/71d711039de0?raw)
