---
title: "Create a new Estimate"
method: POST
path: "/v2/estimates"
tags: ["Estimates"]
---

# Create a new Estimate

`POST /v2/estimates`

## Request

- Base URL: `https://api.workiz.com/crm/api`
- URL: `https://api.workiz.com/crm/api/v2/estimates`
- Auth: none declared. Required headers: `Authorization`
- TypeScript: <https://skmtc.dev/workiz/apis/developer-api/docs/v2/estimates/post.ts> (a function with typed inputs; its response is checked against the schema)

> **Beta:** Breaking changes may occur without notice.

Creates a new Estimate for a client. When `jobId` is provided, the estimate is attached to that job or lead (which must belong to the client) and numbered after it; otherwise a standalone estimate is created for the client. The estimate starts with no line items and the account default tax, deposit and template settings.

## Headers

- `Authorization` string, required

## Request body

- CreateEstimateV2Dto
  - `clientId` string, required: The ID of the client the estimate is created for (prefix `CL-`).
  - `jobId` string: The ID of the job or lead to attach the estimate to (prefix `JOB-` or `LD-`). It must belong to the given client. When omitted, a standalone estimate is created for the client.
  - `name` string: The name of the estimate.
  - `description` string: The description of the estimate.
  - `createdDate` string, date-time: The date and time when the estimate record was created, in the account timezone. If not provided, defaults to the current timestamp.

## Response `201`

The created Estimate.

- ResponseOneEstimateV2Dto
  - `id` string: The ID of the estimate (prefix `ES-`).
  - `status` string: The status of the estimate.
  - `serialId` string: The interval of the estimate.
  - `name` string: The name of the estimate.
  - `description` string: The description of the estimate.
  - `notes` string: The estimate note.
  - `imageUrl` string: The image URL of the estimate.
  - `clientId` string: The ID of the associated client (prefix `CL-`).
  - `jobId` string: The ID of the associated job or lead (prefix `JOB-` or `LD-`).
  - `discountAmount` number: The estimate discount amount.
  - `taxPercent` number: The estimate tax percent.
  - `taxableAmount` number: The estimate taxable amount.
  - `taxAmount` number: The estimate tax amount.
  - `isDepositPercentage` boolean: The estimate deposit percentage or amount.
  - `deposit` number: The deposit amount or percentage needed.
  - `subTotal` number: The estimate subtotal before tax and discounts.
  - `total` number: The total amount of the estimate.
  - `declineReason` string: The decline reason of the estimate.
  - `lineItems` ResponseEstimateLineItemV2Dto[]: A list of estimate line items.
    - `id` string: The ID of the estimate line item (prefix `ELI-`).
    - `productId` number: The product ID of the item from which this line item was created.
    - `name` string: The name of the line item.
    - `description` string: The description of the line item.
    - `price` number: The price of the line item.
    - `quantity` number: The quantity of the line item.
    - `total` number: The total of the line item.
    - `cost` number: The cost of the line item.
    - `taxable` boolean: Whether the line item is taxable.
    - `discountable` boolean: Whether the line item is discountable.
    - `inventoryManaged` boolean: Whether the line item is managed by inventory.
    - `inventorySync` boolean: Whether the line item is synced to inventory.
    - `optionalConverted` boolean: Whether the line item was an optional item.
  - `payments` ResponsePaymentV2Dto[]: The payments of the estimate.
    - `id` string: The ID of the payment (prefix `PAY-`).
    - `date` string, date-time: The date and time the payment was collected.
    - `amount` number: The amount the client was charged. Reported for a failed payment too, so check `status` before counting it as money collected.
    - `tipAmount` number: The tip amount included in the payment.
    - `type` 'charge' | 'cash' | 'credit' | 'check' | 'refund' | 'refund_offline' | 'bank_transfer' | 'bank_transfer_offline' | 'cash_app' | 'consumer_financing' | 'venmo' | 'zelle' | 'debit_offline' | 'installments' | 'interac' | 'check_deposit': The type of the payment.
    - `status` 'pending' | 'failed' | 'succeeded': The status of the payment.
    - `estimateId` string, nullable: The ID of the estimate the payment was collected against (prefix `ES-`), or null when the payment is not tied to an estimate.
    - `confirmationCode` string: The confirmation code of the payment.
    - `collectedById` string, nullable: The ID of the user who collected the payment (prefix `USR-`), or null when the payment was not collected by a user.
  - `attachments` ResponseGenericAttachmentV2Dto[]: The attachments of the estimate.
    - `id` string: The ID of the attachment (prefix `FLE-`).
    - `name` string: The name of the attachment.
    - `fileUrl` string: The URL of the attachment.
  - `signatureImage` ResponseGenericSignatureV2Dto
    - `id` string: The ID of the signature image (prefix `IMG-`).
    - `signedByName` string: The name of the person who signed.
    - `imageUrl` string: The URL of the signature image.
  - `sentDate` string, date-time: The sent date of the estimate.
  - `estimateDate` string, date-time: The date of the estimate.
  - `lastViewedDate` string, date-time: The last viewed date of the estimate.
  - `statusUpdatedAt` string, date-time: The date and time the status was last updated.
  - `updated` string, date-time: The date and time the estimate was last updated.
  - `created` string, date-time: The date and time the estimate was created.

## Other responses

- `400`: Validation error, or the job/lead does not belong to the given client.
- `401`: Missing or invalid authentication token.
- `403`: The API key does not have permission to access this resource.
- `404`: The client, job or lead was not found.
- `422`: The account has no estimate template to create the estimate from.
- `429`: Rate limit exceeded.

## Changes

- **2026-10-29** `dc78e9d01e33`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/workiz/apis/developer-api/changes/v2/estimates/post.md)

---

[API](https://skmtc.dev/workiz/apis/developer-api.md) - [All operations](https://skmtc.dev/workiz/apis/developer-api/llms.txt) - [OpenAPI document](https://skmtc.dev/workiz/apis/developer-api/revisions/fb557783146c?raw)
