Create Quote
Create a quote with customer details, profile, delivery options, alternatives, and custom fields.
Endpoint
POST /integrations/create_quote
Content-Type: application/json
Accept: application/jsonRequest Example
{
"uuid": "6a52f0ba-4a3a-41e3-92ae-198db8fbc2e0",
"customer_name": "Support",
"customer_email": "[email protected]",
"customer_phone": "+46768741810",
"quote_profile_id": 115,
"send_type": "none",
"chat_enabled": true,
"signable": true,
"workflows_enabled": false,
"trigger_created_messages_to_customer": 1,
"allow_customer_document_upload": true,
"alternatives": [
{ "bundle_id": 7, "sort_order": 2, "title": "We here 1" },
{ "skus": [123, 4343], "sort_order": 1, "title": "We here" }
],
"custom_fields": {
"bank_name": {
"attribute": {
"required": false,
"editableByContact": false,
"hideFromContact": true
},
"value": 5
}
}
}Field Reference
Core
| Field | Type | Required | Notes |
|---|---|---|---|
uuid | string | yes | Must be the integration uuid in the integrations page |
quote_profile_id | integer | yes | Quote profile ID (e.g., 115) |
salesperson_email | string|null | no | Must belong to a registered user. If omitted or null, profile defaults apply |
Customer
| Field | Type | Required | Notes |
|---|---|---|---|
customer_name | string | yes | |
customer_email | string|null | conditional | Required if send_type is email or dual |
customer_phone | string|null | conditional | Required if send_type is phone or dual (format +46NNNNNNNNN) |
customer_company | string|null | no |
Sending & Messaging
| Field | Type | Required | Notes |
|---|---|---|---|
send_type | string | yes | One of email, sms, dual, auto, none |
chat_enabled | boolean | no | Enable chat on quote |
message | string|null | no | If omitted/null, default message is used |
trigger_created_messages_to_customer | boolean|0/1 | no | Notify customer automatically on creation |
Quote Options
| Field | Type | Required | Notes |
|---|---|---|---|
workflows_enabled | boolean | yes | |
allow_customer_document_upload | boolean | yes | |
signable | boolean | yes | |
signable_until | string|null | no | YYYY-MM-DD |
Alternatives
Provide a list of alternative product options offered in the quote. Each item supports either a bundle_id or a set of skus.
| Field | Type | Required | Notes |
|---|---|---|---|
bundle_id | integer | conditional | Preferred identifier for the alternative. Takes precedence over skus when both are present |
skus | array | conditional | List of SKU codes to compose the alternative when bundle_id is not provided |
sort_order | integer | no | Display ordering (ascending) |
title | string | no | Optional label shown to the customer |
Resolution rule: If an item includes both bundle_id and skus, the system uses bundle_id and ignores skus.
Custom Fields
Override quote-level custom fields. Send only the fields you want to override.
"custom_fields": {
"<field_name>": {
"attribute": {
"required": false,
"editableByContact": false,
"hideFromContact": true
},
"value": <any>
}
}Attribute options (all optional):
required(bool) — if true, the field must be providededitableByContact(bool) — if true, the customer can edit the fieldhideFromContact(bool) — if true, the field is not shown to the customer
Value (optional): Prefills/sets the field value for this quote.
You don't need to send all custom fields—only the ones you want to override.
Additional Optional Fields
These can be included when relevant:
custom_field_1_content…custom_field_10_content(string|null)tag_1…tag_10(string|null)alternative_1_bundle_id,alternative_1_titlealternative_2_bundle_id,alternative_2_titlealternative_3_bundle_id,alternative_3_title
Minimal Payload Examples
Email flow
{
"uuid": "6a52f0ba-4a3a-41e3-92ae-198db8fbc2e0",
"quote_profile_id": 115,
"customer_name": "Acme",
"customer_email": "[email protected]",
"send_type": "email"
}Phone flow
{
"uuid": "6a52f0ba-4a3a-41e3-92ae-198db8fbc2e0",
"quote_profile_id": 115,
"customer_name": "Acme",
"customer_phone": "+46123456789",
"send_type": "phone"
}Alternatives & custom fields
{
"uuid": "6a52f0ba-4a3a-41e3-92ae-198db8fbc2e0",
"quote_profile_id": 115,
"customer_name": "Acme",
"send_type": "none",
"alternatives": [
{ "skus": ["01.350000.01.00"], "sort_order": 1, "title": "We here 1" },
{ "bundle_id": 456, "sort_order": 2, "title": "Premium" }
],
"custom_fields": {
"bank_name": { "value": "SEB" },
"internal_note": { "attribute": { "hideFromContact": true }, "value": "High priority" }
}
}Bundle alternatives only
{
"uuid": "6a52f0ba-4a3a-41e3-92ae-198db8fbc2e0",
"quote_profile_id": 115,
"customer_name": "Acme",
"send_type": "none",
"alternatives": [
{ "bundle_id": 123, "sort_order": 1 },
{ "bundle_id": 456, "sort_order": 2, "title": "Premium" }
],
"custom_fields": {
"bank_name": { "value": "SEB" },
"internal_note": { "attribute": { "hideFromContact": true }, "value": "High priority" }
}
}Validation & Behavior
uuidmust match the specified integration uuid- Conditional requirements:
send_typein (email,dual) →customer_emailis requiredsend_typein (phone,dual) →customer_phoneis required
trigger_created_messages_to_customeracceptstrue/falseor1/0custom_fieldsentries override profile defaults for this quote only
Optional & Advanced Fields (Complete List)
The following fields are available to include for additional control. Send only those you need.
Messaging & Notifications
message(string|null) — Quote notestrigger_created_messages_to_customer(boolean|0/1) — Notify customer automatically on creation
Access, Workflow & Collaboration
chat_enabled(boolean) — Enable/disable chat on the quoteworkflows_enabled(boolean) — Enable workflow featuresallow_customer_document_upload(boolean) — Allow customer to upload attachments
Signing
signable(boolean) — Mark the quote as signablesignable_until(string|null, YYYY-MM-DD) — Optional expiration date for signing
Sales & Ownership
salesperson_email(string|null) — Assign salesperson by email (must exist in your tenant)
Tags (up to 10)
tag_1…tag_10(string|null) — Free-form labels for filtering/reporting
Legacy Custom Field Content (10 slots)
custom_field_1_content…custom_field_10_content(string|null) — Simple text values mapped to conventional slots
Legacy Alternatives (3 slots)
alternative_1_bundle_id,alternative_1_titlealternative_2_bundle_id,alternative_2_titlealternative_3_bundle_id,alternative_3_title
For richer alternatives, prefer the structured alternatives array documented above (supports bundle_id or skus, plus sort_order and title).
Full Payload Shape (Reference)
This shape shows all recognized fields and their types. Only required and relevant fields need to be sent.
{
// Core
"uuid": "6a52f0ba-4a3a-41e3-92ae-198db8fbc2e0",
"quote_profile_id": 0,
"salesperson_email": null,
// Customer
"customer_name": "",
"customer_email": null,
"customer_phone": null,
"customer_company": null,
// Sending & Messaging
"send_type": "email|sms|dual|auto|none",
"chat_enabled": true,
"message": null,
"trigger_created_messages_to_customer": false,
// Quote Options
"workflows_enabled": false,
"allow_customer_document_upload": false,
"signable": false,
"signable_until": null,
// Alternatives (structured list)
"alternatives": [
{
"bundle_id": 123,
"sort_order": 1,
"title": "Option A"
},
{
"skus": ["SKU-1", "SKU-2"],
"sort_order": 1,
"title": "Option A"
}
],
// Custom Fields (override specific fields)
"custom_fields": {
"<field_name>": {
"attribute": {
"required": false,
"editableByContact": false,
"hideFromContact": true
},
"value": "any"
}
},
// Tags (10 slots)
"tag_1": null,
"tag_2": null,
"tag_3": null,
"tag_4": null,
"tag_5": null,
"tag_6": null,
"tag_7": null,
"tag_8": null,
"tag_9": null,
"tag_10": null,
// Legacy custom field content (10 slots)
"custom_field_1_content": null,
"custom_field_2_content": null,
"custom_field_3_content": null,
"custom_field_4_content": null,
"custom_field_5_content": null,
"custom_field_6_content": null,
"custom_field_7_content": null,
"custom_field_8_content": null,
"custom_field_9_content": null,
"custom_field_10_content": null,
// Legacy alternatives (3 slots)
"alternative_1_bundle_id": null,
"alternative_1_title": null,
"alternative_2_bundle_id": null,
"alternative_2_title": null,
"alternative_3_bundle_id": null,
"alternative_3_title": null
}Response
Example
{
"id": 950,
"links": {
"edit": "http://localhost/offerter/950/redigera",
"customer_view": "http://localhost/view/hLcblYXo3BJh8Z",
"customer_verificate": "http://localhost/signed/hLcblYXo3BJh8Z",
"customer_project_approval": "http://localhost/view/hLcblYXo3BJh8Z?project_approval=1"
}
}Response Fields
| Field | Type | Description |
|---|---|---|
id | integer | Internal identifier of the created quote |
links.edit | string (URL) | Back-office edit page for the quote |
links.customer_view | string (URL) | Public customer view of the quote |
links.customer_verificate | string (URL) | Customer signature/verification page |
links.customer_project_approval | string (URL) | Customer approval view with project_approval=1 |
Status Codes
| Status Code | Description |
|---|---|
201 Created | Quote created successfully; response body as above |
4xx/5xx | Error responses follow the platform error envelope (code, message, details) |