---
title: "Convert sale to under contract (V2)"
method: PUT
path: "/api/v2/files/sales/{saleGuid}/convert/under-contract"
tags: ["V2 Sales"]
---

# Convert sale to under contract (V2)

`PUT /api/v2/files/sales/{saleGuid}/convert/under-contract`

Converts a pre-contract sale to under-contract status, using V2 managed fields.

### Validation & Requirements
#### Required Parameters
- `saleGuid` (path, string, format=guid)
- `form` (body, object)

#### Required JSON Body Fields
- `agentGuid` (format=guid, minLength=1)

#### Validations
- Invalid GUID values in `*Guid`/`*Guids` fields return `422 Unprocessable Entity`.
- Invalid date values in `*date*` fields return `422 Unprocessable Entity`.
- Missing required request body returns `422 Unprocessable Entity` with `Missing request body.`.
- Additional business-rule validation may return `422` with details in the `errors` array.

## Path parameters

- `saleGuid` string, guid, required

## Request body

- ConvertSaleForm
  - `mlsNumber` string, nullable
  - `agentGuid` string, guid, required — The agent that this sale is created for.
  - `contractAcceptanceDate` string, date-time, nullable
  - `escrowNumber` string, nullable
  - `escrowClosingDate` string, date-time, nullable
  - `actualClosingDate` string, date-time, nullable
  - `sourceId` integer, nullable — SourceId can be retrieved from the AllowableSelections list.
  - `otherSource` string, nullable — Required only for certain SourceId fields
  - `salePrice` number, nullable
  - `isOfficeLead` boolean, nullable
  - `fileId` string, nullable
  - `apn` string, nullable
  - `property` PropertyDto
    - `streetNumber` string, required
    - `streetAddress` string, required
    - `unit` string, nullable
    - `direction` string, nullable
    - `city` string, required
    - `county` string, nullable
    - `state` string, required
    - `zip` string, required
    - `yearBuilt` integer, nullable
    - `realPropertyTypeId` integer, nullable
    - `realPropertySubtypeId` integer, nullable
  - `customFields` CreateSaleCustomFieldsDto
    - `isConcierge` string, nullable
    - `conciergeProjectNumber` string, nullable
    - `serviceType` string, nullable
  - `commercialLease` CommercialLeaseDto
    - `commencementDate` string, date-time, nullable
    - `endingDate` string, date-time, nullable
    - `renewalOption` boolean, nullable
    - `purchaseOption` boolean, nullable
    - `sizeType` string, nullable
    - `size` number, nullable

## Response `200`

- LinkedResponseOfConvertSaleResponse
  - `value` ConvertSaleResponse
  - `warnings` string[], nullable
  - `links` Link[], nullable
    - `href` string, nullable
    - `rel` string, nullable
    - `method` string, nullable

## Other responses

- `404`
- `422`

---

[API](https://skmtc.net/skyslope/apis/skyslope-api.md) · [All operations](https://skmtc.net/skyslope/apis/skyslope-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/skyslope/skyslope-api/revisions/bad0d2db9b7a/schema)
