---
title: "Close Deal"
method: POST
path: "/api/sales/leads/{lead_id}/close"
tags: ["Sales"]
---

# Close Deal

`POST /api/sales/leads/{lead_id}/close`

## Request

- Base URL: `https://api.ruzora.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.ruzora.com/api/sales/leads/{lead_id}/close`
- Auth: HTTP bearer

Track B Workflow #3 — close a deal (won or lost).

On close-won: sets `closed_at = NOW()`, optionally `deal_value`,
`closed_lost_reason = NULL`, and moves `deal_stage = 'closedwon'`.

On close-lost: sets `closed_at = NOW()`, `closed_lost_reason`
(REQUIRED — enum from ALLOWED_LOSS_REASONS), and moves
`deal_stage = 'closedlost'`. The mandatory loss reason is the CSO's
monthly histogram — see SALES_PIPELINE_STAGES.md.

Side effects: unenrolls the lead from any active nurture sequence
(we stop sending if they bought OR if they're gone).

## Path parameters

- `lead_id` string, required

## Request body

- DealCloseRequest: Close a deal — won or lost. Lost requires a loss reason.
  - `closed_won` boolean, required
  - `deal_value` integer, nullable
  - `lost_reason` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/ruzora/apis/ruzora-candidate-crm-api.md) · [All operations](https://skmtc.dev/ruzora/apis/ruzora-candidate-crm-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ruzora/apis/ruzora-candidate-crm-api/revisions/f9b8223f3ac4?raw)
