---
title: "Create contract"
method: POST
path: "/v3/contracts"
tags: ["Contracts"]
---

# Create contract

`POST /v3/contracts`

## Request body

- CreateContractV3Dto
  - `name` string, required — Name of the Contract
  - `customerId` string, required — customer identifier(UUID)
  - `externalId` ExternalIdDto
    - `externalId` string — The external identifier
    - `sourceType` 'QUICKBOOKS' | 'NETSUITE' | 'RILLET' | 'SAGE_INTACCT' | 'SALESFORCE' | 'HUBSPOT' | 'AVALARA' | 'ANROK' | 'STRIPE'
    - `metadata` object — Additional metadata for the external identifier
  - `shouldProcess` boolean — Deprecated: has no effect. Use shouldProcess query param on the file upload endpoint instead.
  - `closeDate` string — Close date of the contract

## Response `201`

Created contract

- ContractsV3Dto
  - `id` string, required — Unique identifier for the contract
  - `fileName` string, required — Name of the contract file
  - `name` string, required — Display name of the contract
  - `status` string, required — Current status of the contract
  - `customerId` string, required — Identifier of the customer associated with this contract
  - `customerName` string — Name of the customer associated with this contract
  - `createdAt` string, date-time — Timestamp when the contract was created
  - `closeDate` string — Close date of the contract
  - `lastUpdatedAt` string — Timestamp when the contract was last updated
  - `deletedAt` string, date-time — Timestamp when the contract was deleted. Null for live contracts; populated on the deleted-contracts endpoint.
  - `externalIds` ExternalIdDto[] — External IDs and external source types of the contract
    - `externalId` string — The external identifier
    - `sourceType` 'QUICKBOOKS' | 'NETSUITE' | 'RILLET' | 'SAGE_INTACCT' | 'SALESFORCE' | 'HUBSPOT' | 'AVALARA' | 'ANROK' | 'STRIPE'
    - `metadata` object — Additional metadata for the external identifier
  - `source` 'CRM' | 'EMAIL' | 'UPLOAD' | 'API' | 'ERP' | 'INTERNAL' — The source of the contract
  - `jobId` string — The workflow job ID for the contract processing

## Other responses

- `400` — Invalid request body
- `500` — Internal server error

---

[API](https://skmtc.net/tabsplatform/apis/tabs-external-api.md) · [All operations](https://skmtc.net/tabsplatform/apis/tabs-external-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tabsplatform/tabs-external-api/versions/7e8885517814/schema)
