SalesByte
Integration API

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/json

Request 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

FieldTypeRequiredNotes
uuidstringyesMust be the integration uuid in the integrations page
quote_profile_idintegeryesQuote profile ID (e.g., 115)
salesperson_emailstring|nullnoMust belong to a registered user. If omitted or null, profile defaults apply

Customer

FieldTypeRequiredNotes
customer_namestringyes
customer_emailstring|nullconditionalRequired if send_type is email or dual
customer_phonestring|nullconditionalRequired if send_type is phone or dual (format +46NNNNNNNNN)
customer_companystring|nullno

Sending & Messaging

FieldTypeRequiredNotes
send_typestringyesOne of email, sms, dual, auto, none
chat_enabledbooleannoEnable chat on quote
messagestring|nullnoIf omitted/null, default message is used
trigger_created_messages_to_customerboolean|0/1noNotify customer automatically on creation

Quote Options

FieldTypeRequiredNotes
workflows_enabledbooleanyes
allow_customer_document_uploadbooleanyes
signablebooleanyes
signable_untilstring|nullnoYYYY-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.

FieldTypeRequiredNotes
bundle_idintegerconditionalPreferred identifier for the alternative. Takes precedence over skus when both are present
skusarrayconditionalList of SKU codes to compose the alternative when bundle_id is not provided
sort_orderintegernoDisplay ordering (ascending)
titlestringnoOptional 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 provided
  • editableByContact (bool) — if true, the customer can edit the field
  • hideFromContact (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_contentcustom_field_10_content (string|null)
  • tag_1tag_10 (string|null)
  • alternative_1_bundle_id, alternative_1_title
  • alternative_2_bundle_id, alternative_2_title
  • alternative_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

  • uuid must match the specified integration uuid
  • Conditional requirements:
    • send_type in (email, dual) → customer_email is required
    • send_type in (phone, dual) → customer_phone is required
  • trigger_created_messages_to_customer accepts true/false or 1/0
  • custom_fields entries 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 notes
  • trigger_created_messages_to_customer (boolean|0/1) — Notify customer automatically on creation

Access, Workflow & Collaboration

  • chat_enabled (boolean) — Enable/disable chat on the quote
  • workflows_enabled (boolean) — Enable workflow features
  • allow_customer_document_upload (boolean) — Allow customer to upload attachments

Signing

  • signable (boolean) — Mark the quote as signable
  • signable_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_1tag_10 (string|null) — Free-form labels for filtering/reporting

Legacy Custom Field Content (10 slots)

  • custom_field_1_contentcustom_field_10_content (string|null) — Simple text values mapped to conventional slots

Legacy Alternatives (3 slots)

  • alternative_1_bundle_id, alternative_1_title
  • alternative_2_bundle_id, alternative_2_title
  • alternative_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

FieldTypeDescription
idintegerInternal identifier of the created quote
links.editstring (URL)Back-office edit page for the quote
links.customer_viewstring (URL)Public customer view of the quote
links.customer_verificatestring (URL)Customer signature/verification page
links.customer_project_approvalstring (URL)Customer approval view with project_approval=1

Status Codes

Status CodeDescription
201 CreatedQuote created successfully; response body as above
4xx/5xxError responses follow the platform error envelope (code, message, details)

On this page