> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sonderplan.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Quotes

> In Sonderplan, a quote is a detailed proposal that outlines the estimated costs for a project or set of bookings.

Quotes typically include information such as the client, associated bookings, resources, rates, taxes, discounts, and any additional charges or custom details. They are used to provide clients with a clear breakdown of costs before confirming a project, helping ensure transparency and agreement on pricing.

Once approved, quotes can often be converted into invoices or used as a basis for further planning.

<Note>`READ` access to the `SALES` module is required to access this endpoint</Note>



## OpenAPI

````yaml /api-reference/openapi-mintlify.yaml get /v2/quote
openapi: 3.0.0
info:
  title: Sonderplan API
  description: >
    ## Overview

    You can use our REST API to securely access and modify the data within your
    Sonderplan account. This includes all the information within your bookings,
    projects and invoices that you can use to import / export data or create
    integrations with other systems and software that you use


    ### General Notes


    #### Specifying Fields

    The Sonderplan REST API allows you to specify a comma delimited string of
    exactly which fields are returned, using the `fields` parameter. Using this
    parameter has several advantages including:


    1. In future API versions we may change which fields are presented by
    default, so explicitly specifying the fields required overrides the defaults
    and ensure the fields are served

    2. Limiting fields reduces the processing we need to do and allows us to
    send you the data faster

    3. Some search filters only work if the field you are searching is added to
    the `fields` parameter.


    Example:


    ```

    fields=id,name,start,duration_min

    ```


    ### Applying Filters


    The Query Parameters section in each endpoint shows you special options that
    can be added to your request to customise the response we send you.


    Most endpoints offer the following query params:


    | Query Parameter |
    Description                                                    |

    |-----------------|----------------------------------------------------------------|

    | `fields`        | Only send the specified
    fields                                 |

    | `id`            | Specify one or more ids (comma seperated) of records to
    return |

    | `limit`         | The maximum number of records to
    return                        |

    | `page`          | The page number of records to
    return                           |

    | `order_asc` | Specify which field should be used to sort records
    `ascending` |

    | `order_desc` | Specify which field should be used to sort records
    `descending` |


    In addition to the standard `id` param, you can also specify most other
    fields as a query parameter, useful for performing searching and filtering
    of records.


    For example, you can specify `repeat_master_id=<repeat_booking_id>` to
    return all repeat children of that booking.


    #### Other Query Params


    Refer to the specific API endpoint documentation to see which other query
    params can be used.


    For example, some endpoints allow specifying `updated_after=<UNIX
    TIMESTAMP>` which will only send added, edited and even deleted records that
    were modified after the unix timestamp.


    #### Applying multiple filters


    By default, multiple filters are chained together using **OR** (either
    filter can be true and it will be included). You can change this behaviour
    by specifying `filter_operator=AND`, so each filter must be true to be
    included.


    #### Filtering by Custom Field Values


    For modules that include custom fields, you can search by the value of a
    custom field by adding the `custom_field_<field id>` to the URL query
    parameters. You **must** also specify the custom field in the `fields`
    parameter.


    ```

    GET
    https://api.sonderplan.com/v2/booking?fields=id,name,custom_field_238938&custom_field_238938=Offline

    ```


    This will return custom fields that contain the word 'Offline'.
  contact:
    email: info@sonderplan.com
  version: '2.0'
servers:
  - url: https://api.sonderplan.com
    description: Production Server
security: []
tags:
  - name: Booking
    description: Booking related operations
  - name: Project
    description: Project related operations
  - name: Resource
    description: Resource related operations
  - name: Contact
    description: Contact related operations
  - name: Quote
    description: Quote related operations
  - name: Invoice
    description: Invoice related operations
  - name: Invoice Template
    description: Invoice template related operations
  - name: Billable Item
    description: Billable item related operations
  - name: Rate Scheme
    description: Rate scheme related operations
  - name: Tax
    description: Tax related operations
  - name: Workspace
    description: Workspace (formerly Schedule) related operations
  - name: User
    description: User related operations
  - name: Group
    description: Group related operations
  - name: Status
    description: Status related operations
  - name: Custom Field
    description: Custom field related operations
  - name: Calendar Subscription
    description: Calendar Subscription Import related operations
  - name: Time Entry
    description: Time Entry related operations
  - name: Time Activity
    description: Time Activity related operations
paths:
  /v2/quote:
    get:
      tags:
        - Quote
      summary: Get Quotes
      description: >-
        In Sonderplan, a quote is a detailed proposal that outlines the
        estimated costs for a project or set of bookings.


        Quotes typically include information such as the client, associated
        bookings, resources, rates, taxes, discounts, and any additional charges
        or custom details. They are used to provide clients with a clear
        breakdown of costs before confirming a project, helping ensure
        transparency and agreement on pricing.


        Once approved, quotes can often be converted into invoices or used as a
        basis for further planning.


        <Note>`READ` access to the `SALES` module is required to access this
        endpoint</Note>
      operationId: 55f4f57e3365627b5c2a85d7798234c6
      parameters:
        - name: id
          in: query
          description: One or more (comma seperated) IDs of quotes to retrieve
          schema:
            type: string
        - name: prefix
          in: query
          description: Perform a partial match text search for the quote prefix
          schema:
            type: string
        - name: number
          in: query
          description: One or more (comma seperated) quote numbers to retrieve
          schema:
            type: integer
        - name: status_id
          in: query
          description: >-
            Perform an exact match for the quote status_id. 1 = Draft, 2 = Sent,
            3 = Accepted, 4 = Invoiced, 5 = Declined
          schema:
            type: integer
        - name: project_id
          in: query
          description: Perform an exact match for the quote project_id
          schema:
            type: integer
        - name: from_time
          in: query
          description: Return quotes with created date greater than this UNIX timestamp
          schema:
            type: integer
        - name: to_time
          in: query
          description: Return quotes with created date less than this UNIX timestamp
          schema:
            type: integer
        - name: created_sp_flag
          in: query
          description: >-
            If true, return quotes created in Sonderplan. If false, return
            quotes created in FoxOMS
          schema:
            type: boolean
        - name: template_id
          in: query
          description: Return quotes using the specified template_id
          schema:
            type: integer
        - name: currency
          in: query
          description: Return quotes using the specified currency shortcode
          schema:
            type: string
          example: AUD
        - $ref: '#/components/parameters/updated_after'
        - $ref: '#/components/parameters/fields'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/order_asc'
        - $ref: '#/components/parameters/order_desc'
        - $ref: '#/components/parameters/filter_operator'
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/QuoteModel'
                  meta:
                    $ref: '#/components/schemas/pagination'
                type: object
        '401':
          description: Authorization information is missing or invalid
      security:
        - bearer: []
components:
  parameters:
    updated_after:
      name: updated_after
      in: query
      description: >-
        Return results that were added, edited or deleted since this UNIX
        timestamp
      schema:
        type: integer
        format: int32
    fields:
      name: fields
      in: query
      description: Comma seperated list of fields you wish to return
      schema:
        type: string
      example: id,name
    page:
      name: page
      in: query
      description: Specify the page of results you wish to return
      schema:
        type: integer
    limit:
      name: limit
      in: query
      description: The number of results returned per page. Default if not specified is 10
      schema:
        type: integer
    order_asc:
      name: order_asc
      in: query
      description: >-
        Specify the field (with type of string or integer) you wish to order
        (ascending) the response with
      schema:
        type: string
    order_desc:
      name: order_desc
      in: query
      description: >-
        Specify the field (with type of string or integer) you wish to order
        (descending) the response with
      schema:
        type: string
    filter_operator:
      name: filter_operator
      in: query
      description: Specify if multiple filters should be combined with OR or AND logic
      schema:
        type: string
        default: OR
        enum:
          - OR
          - AND
  schemas:
    QuoteModel:
      title: Quote Model
      description: Standard quote model that returns most properties by default
      type: object
      allOf:
        - properties:
            id:
              description: Automatically generated unique quote id
              type: integer
              example: 1
            prefix:
              description: Prefix to the quote number
              type: string
              example: INV-
            number:
              description: Number of the quote
              type: integer
              example: 892
            date:
              description: Unix time of the quote date
              type: integer
              example: 1547501100
            date_time_iso:
              description: ISO-8601 formatted result of the quote date
              type: string
              example: '2022-02-22T09:00:00+11:00'
            expiry_date:
              description: Unix time of the quote expiry date
              type: integer
              example: 1547501100
            expiry_date_time_iso:
              description: ISO-8601 formatted result of the quote expiry date
              type: string
              example: '2022-02-22T09:00:00+11:00'
            items:
              type: array
              items:
                $ref: '#/components/schemas/InvoiceItem'
            groups:
              type: array
              items:
                $ref: '#/components/schemas/InvoiceItemGroups'
            status:
              type: array
              items:
                $ref: '#/components/schemas/QuoteStatus'
            project:
              type: array
              items:
                $ref: '#/components/schemas/ProjectSummary'
            client:
              type: array
              items:
                $ref: '#/components/schemas/Client'
            custom_fields:
              type: array
              items:
                $ref: '#/components/schemas/CustomFieldOnObject'
            terms:
              description: Specific terms for this quote
              type: string
              example: Expires in 30 days, subject to stock confirmation etc
            template_id:
              description: >-
                The template id selected for this quote, 0 = Default or no
                template
              type: integer
              example: 213
            cloned_id:
              description: The id of the quote or invoice that this was duplicated from
              type: integer
              example: 545647
            reference:
              description: Text reference to a quote, invoice or purchase order
              type: string
              example: QU-9893
            currency:
              description: Currency code (three character format) that this quote is in
              type: string
              example: AUD
            sub_total:
              description: Total of all quote items before tax and discounts are applied
              type: integer
              format: float
              readOnly: true
              example: '1289.29'
            discount_total:
              description: Total amount discounted from the quote
              type: integer
              format: float
              readOnly: true
              example: '872.98'
            net_total:
              description: Subtotal minus any discounts
              type: integer
              format: float
              readOnly: true
              example: '416.31'
            tax_total:
              description: The amount of tax charged on the quote
              type: integer
              format: float
              readOnly: true
              example: '129.87'
            total:
              description: The grand total (net + tax) of the quote
              type: integer
              format: float
              readOnly: true
              example: '546.18'
            buy_total:
              description: The buy_total of the quote
              type: integer
              format: float
              readOnly: true
              example: '256.00'
            created_sp_flag:
              description: True if this quote was created in Sonderplan
              type: boolean
              example: 'true'
          type: object
        - $ref: '#/components/schemas/extendedModelMeta'
    pagination:
      title: Pagination Meta Model
      properties:
        pagination:
          $ref: '#/components/schemas/meta'
      type: object
    InvoiceItem:
      title: Invoice Item Model
      description: Standard invoice item model that returns all properties by default
      properties:
        id:
          description: Automatically generated unique item id
          type: integer
          example: 982342
        item_text:
          description: Item title text
          type: string
          example: Edit Suite 1 Grading
        item_uuid:
          description: >-
            The unique ID of the item in string format, with `r` prefix for
            resource, `b` prefix for billable item and `s` for service
          type: string
          example: r2394
        ratescheme_id:
          description: Unique ID of the rate scheme that populated this invoice item
          type: integer
          example: 989234
        description:
          description: Item description text
          type: string
          example: Session booked between 10th Jan -> 12th Jan 2023
        quantity:
          description: The amount of items billed for
          type: number
          format: float
          example: '2.4'
        unit:
          description: The unit that this item is charging by
          type: string
          example: hourly
        unit_amount:
          description: Individual unit cost charged to the client for this item
          type: number
          format: float
          example: '20.65'
        unit_buy_amount:
          description: Individual unit cost payed by this business for this item
          type: number
          format: float
          example: '10.15'
        tax:
          description: >-
            Legacy option showing if the tax defined within the invoice was
            applied to this invoice
          type: boolean
          deprecated: true
        taxes:
          type: array
          items:
            $ref: '#/components/schemas/InvoiceItemTaxes'
        discount:
          description: >-
            Discount amount that applies to this item. Suffix with a % symbol to
            make this a percentage discount
          type: string
          example: 20.00%
        total:
          description: Total amount after discount
          type: number
          format: float
          readOnly: true
          example: '495.00'
        buy_total:
          description: Total buy amount
          type: number
          format: float
          example: '200.00'
        buy_total_fixed:
          description: Is the buy_total a fixed amount
          type: boolean
          example: false
        order:
          description: Zero indexed order integer
          type: integer
          example: 2
        parent_group_id:
          description: Id of the group that this item is within
          type: integer
          example: 234842
      type: object
    InvoiceItemGroups:
      title: Invoice Item Groups
      description: >-
        Standard invoice item groups model that returns all properties by
        default
      properties:
        id:
          description: Automatically generated unique item id
          type: integer
          example: 23425
        name:
          description: Name given to the item group
          type: string
          example: Video Editing Services
        description:
          description: Description given to the item group
          type: string
          example: Includes all editing services
        order:
          description: >-
            Zero indexed order integer of relative position amongst other items
            and groups
          type: integer
          example: 2
        hide_items:
          description: >-
            If true, items within this group will not be shown on Print and PDF
            exports
          type: boolean
      type: object
    QuoteStatus:
      title: Quote Status Model
      description: Quote specific status model
      properties:
        id:
          description: 1 = Draft, 2 = Sent, 3 = Accepted, 4 = Invoiced, 5 = Declined
          type: integer
          example: 2
        name:
          description: The name of the status
          type: string
          readOnly: true
          example: Sent
      type: object
    ProjectSummary:
      title: Project Summary Model
      description: Simplified project model containing only a subset of fields
      properties:
        id:
          description: Automatically generated Project ID
          type: integer
          example: 2342354
        name:
          description: Title of the project
          type: string
          readOnly: true
          example: Andor S1 EP7 Annoucement
        code:
          description: Short code used to identify the project
          type: string
          readOnly: true
          example: AND-S1-EP7
        description:
          description: A short description or synopsis of the project
          type: string
          readOnly: true
          example: >-
            Colonel Yularen announces that the ISB has gained more surveillance
            and punitive authority, while Meero is challenged by Blevin for
            breaking protocol by accessing Imperial data without authorization.
        start:
          description: Unix Timestamp of the project start time frame.
          type: integer
          example: 1547501100
        end:
          description: Unix timestamp of the project end time frame.
          type: integer
          example: 1547538900
        parent_id:
          description: Project Parent ID
          type: integer
          readOnly: true
          example: 9348
        status_id:
          description: Project Status ID
          type: integer
          readOnly: true
          example: 1
      type: object
    Client:
      title: Client model
      description: Client model with some fields
      properties:
        id:
          type: integer
          readOnly: true
          example: 4
        uuid:
          type: string
          example: p4
        name:
          type: string
          readOnly: true
          example: Jane Someone
        type:
          type: string
          enum:
            - person
            - organization
          readOnly: true
          example: person
        email:
          description: The primary email for this contact
          type: string
          readOnly: true
          example: test@example.com
        contact_person:
          description: >-
            Contact person at the client. This property is only valid if the
            client is of type **organization**, and the contact must be a valid
            client
          properties:
            id:
              type: integer
              example: 2837
            name:
              type: string
              readOnly: true
              example: Fred Flintstone
          type: object
      type: object
    CustomFieldOnObject:
      title: Custom Field Module Value
      description: Used to show the values of custom fields on linked modules
      properties:
        id:
          description: The ID of the custom field
          type: integer
          example: 7823
        name:
          description: The name of the custom field
          type: string
          example: Type
        value:
          description: The text value of the custom field, null if not defined
          type: string
          example: Video Editing
        value_id:
          description: >-
            The ID of the selected option, (applied only if the custom field is
            of type `select`)
          type: integer
          example: 8973
        update_key:
          description: The update key to pass back when updating this field
          type: string
          example: '2_1_7823'
          deprecated: true
      type: object
    extendedModelMeta:
      title: Extended Meta Model
      properties:
        created_id:
          description: The unique ID of the person (user) who created this record
          type: integer
          readOnly: true
          example: 3
        created:
          description: The UNIX time value of the creation time
          type: integer
          readOnly: true
          example: 1388552400
        created_name:
          description: The full name of the person (user) who created this record
          type: string
          readOnly: true
          example: John Smith
        updated_id:
          description: The unique ID of the person (user) who last updated this record
          type: integer
          readOnly: true
          example: 3
        updated:
          description: The UNIX time value of the last update
          type: integer
          readOnly: true
          example: 1388552400
        updated_name:
          description: The full name of the person (user) who last updated this record
          type: string
          readOnly: true
          example: John Smith
      type: object
    meta:
      title: Page Meta Model
      properties:
        total:
          type: integer
          example: 1
        count:
          type: integer
          example: 1
        per_page:
          type: integer
          example: 1
        current_page:
          type: integer
          example: 1
      type: object
    InvoiceItemTaxes:
      title: Invoice Item Taxes
      description: Standard invoice item taxes model that returns tax information
      properties:
        id:
          description: Unique id of the tax applied
          type: integer
          example: 3247
        name:
          description: Name of the tax
          type: string
          example: GST
        rate:
          description: Rate of the tax
          type: string
          example: '10.00'
        total:
          description: Total amount of tax
          type: string
          format: float
          example: '151.00'
      type: object
  securitySchemes:
    bearer:
      type: http
      scheme: bearer

````