Quote Templates
Manage quote templates via the REST API
Quote templates are reusable starting points for creating new quotes. They store line items, pricing, discounts, deposits, tax rates, messages, and payment instructions so you can quickly generate consistent quotes without re-entering the same information each time.
List Quote Templates
Retrieve a paginated list of quote templates.
GET /api/v1/quote-templatesRequired Scope: quote-templates:read
Query Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number |
per_page | integer | 25 | Results per page (1-100) |
search | string | Search by template name | |
sort_by | string | Field to sort by: id, template_name, total, created_at, modified_at | |
sort_direction | string | desc | Sort direction (asc or desc) |
curl https://app.bluesuite.com/api/v1/quote-templates \
-H "Authorization: Bearer wk_YOUR_API_KEY"{
"success": true,
"data": [
{
"id": 1,
"template_name": "Standard Lawn Care",
"name": "Lawn Care Service",
"description": "Weekly lawn maintenance package",
"message": "Thank you for choosing us!",
"payment_instructions": null,
"line_items": [
{ "_type": "lineItem", "id": "a1b2c3d4-...", "name": "Lawn Mowing", "description": null, "quantity": 1, "unitPrice": 75.00 },
{ "_type": "lineItem", "id": "e5f6a7b8-...", "name": "Edging", "description": null, "quantity": 1, "unitPrice": 25.00 }
],
"discount": 0,
"discount_unit": "%",
"deposit": 0,
"deposit_unit": "%",
"tax_rate": 6,
"total": 106.00,
"tax_rate_obj": {
"id": 1,
"name": "Maryland Sales Tax",
"rate": 6
},
"created_by": {
"id": "uuid",
"first_name": "Jane",
"last_name": "Doe"
},
"created_at": "2025-03-01T10:00:00.000Z"
}
],
"pagination": {
"page": 1,
"per_page": 25,
"total_pages": 1
}
}Create Quote Template
Create a new quote template.
POST /api/v1/quote-templatesRequired Scope: quote-templates:write
Request Body:
| Field | Type | Required | Description |
|---|---|---|---|
template_name | string | Yes | Internal label for the template |
name | string | No | Default quote name/title when using this template |
description | string | No | Template description |
message | string | No | Default message to client |
payment_instructions | string | No | Default payment instructions |
line_items | array | No | Array of line item objects (see Quotes - Line Items) |
discount | number | No | Discount amount. Defaults to 0 |
discount_unit | string | No | Discount unit: % or $. Defaults to % |
deposit | number | No | Deposit amount. Defaults to 0 |
deposit_unit | string | No | Deposit unit: % or $. Defaults to % |
tax_rate | number | No | Tax rate percentage. Defaults to 0 |
tax_rate_id | integer | No | ID of a saved tax rate |
total | number | No | Template total. Defaults to 0 |
curl -X POST https://app.bluesuite.com/api/v1/quote-templates \
-H "Authorization: Bearer wk_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"template_name": "Standard Lawn Care",
"name": "Lawn Care Service",
"message": "Thank you for choosing us!",
"line_items": [
{ "name": "Lawn Mowing", "quantity": 1, "unitPrice": 75.00 },
{ "name": "Edging", "quantity": 1, "unitPrice": 25.00 }
],
"tax_rate": 6,
"tax_rate_id": 1,
"total": 106.00
}'{
"success": true,
"data": {
"id": 1,
"template_name": "Standard Lawn Care",
"name": "Lawn Care Service",
"description": null,
"message": "Thank you for choosing us!",
"payment_instructions": null,
"line_items": [
{ "_type": "lineItem", "id": "a1b2c3d4-...", "name": "Lawn Mowing", "description": null, "quantity": 1, "unitPrice": 75.00 },
{ "_type": "lineItem", "id": "e5f6a7b8-...", "name": "Edging", "description": null, "quantity": 1, "unitPrice": 25.00 }
],
"discount": 0,
"discount_unit": "%",
"deposit": 0,
"deposit_unit": "%",
"tax_rate": 6,
"tax_rate_id": 1,
"total": 106.00,
"workspace_id": 123,
"created_at": "2025-03-15T12:00:00.000Z"
}
}Get Quote Template
Retrieve a single quote template by ID with expanded details including tax rate and creator.
GET /api/v1/quote-templates/:idRequired Scope: quote-templates:read
curl https://app.bluesuite.com/api/v1/quote-templates/1 \
-H "Authorization: Bearer wk_YOUR_API_KEY"{
"success": true,
"data": {
"id": 1,
"template_name": "Standard Lawn Care",
"name": "Lawn Care Service",
"description": null,
"message": "Thank you for choosing us!",
"payment_instructions": null,
"line_items": [
{ "_type": "lineItem", "id": "a1b2c3d4-...", "name": "Lawn Mowing", "description": null, "quantity": 1, "unitPrice": 75.00 },
{ "_type": "lineItem", "id": "e5f6a7b8-...", "name": "Edging", "description": null, "quantity": 1, "unitPrice": 25.00 }
],
"discount": 0,
"discount_unit": "%",
"deposit": 0,
"deposit_unit": "%",
"tax_rate": 6,
"total": 106.00,
"tax_rate_obj": {
"id": 1,
"name": "Maryland Sales Tax",
"rate": 6
},
"created_by": {
"id": "uuid",
"first_name": "Jane",
"last_name": "Doe"
},
"workspace_id": 123,
"created_at": "2025-03-15T12:00:00.000Z"
}
}Update Quote Template
Update an existing quote template. All fields are optional -- only include the fields you want to change. Modifying a template does not affect quotes that were already created from it.
PUT /api/v1/quote-templates/:idRequired Scope: quote-templates:write
Request Body: Same fields as Create Quote Template. All fields are optional.
curl -X PUT https://app.bluesuite.com/api/v1/quote-templates/1 \
-H "Authorization: Bearer wk_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"total": 120.00,
"line_items": [
{ "name": "Lawn Mowing", "quantity": 1, "unitPrice": 85.00 },
{ "name": "Edging", "quantity": 1, "unitPrice": 25.00 },
{ "name": "Leaf Blowing", "quantity": 1, "unitPrice": 10.00 }
]
}'{
"success": true,
"data": {
"id": 1,
"template_name": "Standard Lawn Care",
"name": "Lawn Care Service",
"total": 120.00,
"workspace_id": 123,
"created_at": "2025-03-15T12:00:00.000Z"
}
}Delete Quote Template
Delete a quote template by ID. Deleting a template does not affect quotes that were already created from it.
DELETE /api/v1/quote-templates/:idRequired Scope: quote-templates:write
curl -X DELETE https://app.bluesuite.com/api/v1/quote-templates/1 \
-H "Authorization: Bearer wk_YOUR_API_KEY"{
"success": true,
"data": {
"deleted": true
}
}Create Quote from Template
Create a new draft quote from an existing template. The new quote inherits the template's line items, pricing, discounts, deposits, tax rate, message, and payment instructions. A quote number is auto-generated.
POST /api/v1/quote-templates/:id/create-quoteRequired Scope: quotes:write
curl -X POST https://app.bluesuite.com/api/v1/quote-templates/1/create-quote \
-H "Authorization: Bearer wk_YOUR_API_KEY"{
"success": true,
"data": {
"id": 5,
"number": 2005,
"name": "Lawn Care Service",
"status": "draft",
"template_id": 1,
"message": "Thank you for choosing us!",
"line_items": [
{ "_type": "lineItem", "id": "f1e2d3c4-...", "name": "Lawn Mowing", "description": null, "quantity": 1, "unitPrice": 75.00 },
{ "_type": "lineItem", "id": "b5a6c7d8-...", "name": "Edging", "description": null, "quantity": 1, "unitPrice": 25.00 }
],
"discount": 0,
"discount_unit": "%",
"deposit": 0,
"deposit_unit": "%",
"tax_rate": 6,
"total": 106.00,
"workspace_id": 123,
"created_at": "2025-03-20T09:00:00.000Z"
}
}After creating the quote, you can update it to assign a contact, property, or change any other fields using the Update Quote endpoint.