Quotes

Quotes represent a set of jobs that are quoted together.

The Quote object

Properties

  • idstring

    Unique identifier for the object.

  • acceptedDatedate

    The date the quote was accepted.

  • applyVATReverseChargeboolean

    True if the reverse charge applies.

  • archiveboolean

    True if the entity is archived.

  • clientobject

    The client.
  • clientNotestring

    Any notes that are visible to the client.

  • currencyobject

    The currency.
  • discountnumber

    The discount percentage.

  • documentobject

    The document configuration.
  • filenameFormatstring

    The filename format.

  • internalNotesarray

    The notes linked to the entity.

  • isConflictingNumberboolean

    True if the number is conflicting.

  • issueDatedate

    The date the quote was issued.

  • labelsarray

    The labels.
  • linesarray

    The lines.

  • notesstring

    The notes linked to the entity.

  • numberstring

    The quote number.

  • pinnedboolean

    True if the entity is pinned.

  • rappenRoundingboolean

    True if the rounding is in rappen (CHF currency only).

  • sentDatedate

    The date the quote was sent.

  • sentDateStatusobject

    The status of the sent date.
  • statusnumber

    The status of the quote. Valid values are: 1 (draft), 2 (sent), 3 (accepted), 4 (refused).

  • tax1object

    The first tax.
  • tax2object

    The second tax
  • termsstring

    The terms of the quote.

  • totalobject

    The total of the quote.
  • userobject

    The user that created the quote.
  • validityDatedate

    The date the quote is valid until.

  • createdAtdate

    The date and time the entity was created.

  • updatedAtdate

    The date and time the entity was last updated.

quote object

{
  "id": "6728d5531736399b5f80ffaf",
  "applyVATReverseCharge": false,
  "archive": false,
  "client": {
    "id": "6718a1350e27164043ce9e80",
    "name": "Microsoft",
    "address": {
      "name": "Microsoft"
    }
  },
  "currency": {
    "code": "EUR",
    "symbol": "€"
  },
  "discount": 0,
  "document": {
    "id": "6718a0b50e27164043ce915a",
    "name": "English"
  },
  "filename": "001.pdf",
  "filenameFormat": "[number]",
  "internalNotes": [],
  "isConflictingNumber": false,
  "issueDate": "2024-11-04T14:08:19.412Z",
  "labels": [],
  "lines": [
    {
      "job": {
        "id": "671f9ec7fca5590b10414931",
        "name": "Brochure 2024",
        "isFixedPrice": false,
        "minimumFeeApplied": false
      },
      "service": {
        "id": "6718a0f90e27164043ce95c0",
        "name": "Translation"
      },
      "extraCharge": {
        "type": "percentage",
        "percentage": 0,
        "amount": 0
      },
      "quantity": {
        "quantityType": {
          "id": "6718a0f90e27164043ce96a7",
          "name": "Words"
        },
        "value": 2000
      },
      "totalDetails": {
        "extraCharge": {
          "amount": 0,
          "discount": 0,
          "total": 0
        },
        "subtotal": {
          "amount": 280,
          "discount": 0,
          "total": 280
        },
        "total": 280
      },
      "group": {
        "isParent": false,
        "childLines": []
      },
      "deliveryDate": "2024-10-28T15:00:00.000Z",
      "additionalInfo": null,
      "unitCost": 0.14,
      "discount": 0,
      "notIncludeInTaxes": false,
      "lineTotal": 280,
      "matches": [
        {
          "match": {
            "id": "671f9eaafca5590b1041459f",
            "name": "0%"
          },
          "unitCost": 0.14,
          "quantity": 1500,
          "lineTotal": 210,
          "id": "6728d5531736399b5f80ffb2"
        },
        {
          "match": {
            "id": "671f9ea7fca5590b10414546",
            "name": "100%"
          },
          "unitCost": 0.14,
          "quantity": 200,
          "lineTotal": 28,
          "id": "6728d5531736399b5f80ffb4"
        },
        {
          "match": {
            "id": "671f9eaefca5590b104145fa",
            "name": "Fuzzies"
          },
          "unitCost": 0.14,
          "quantity": 300,
          "lineTotal": 42,
          "id": "6728d5531736399b5f80ffb6"
        }
      ],
      "groupMatches": false,
      "id": "6728d5531736399b5f80ffb1"
    }
  ],
  "number": "001",
  "object": "quote",
  "pinned": false,
  "rappenRounding": false,
  "status": 1,
  "tax1": {
    "id": "6718a0fd0e27164043ce97ae",
    "name": "VAT",
    "value": 0.21
  },
  "total": {
    "discount": {
      "amount": 0,
      "value": 0
    },
    "subtotal": 280,
    "subtotalTaxable": 280,
    "subtotalWithoutTaxes": 280,
    "tax1": {
      "id": "6718a0fd0e27164043ce97ae",
      "name": "VAT",
      "amount": 58.8,
      "value": 0.21
    },
    "tax2": null,
    "total": 338.8
  },
  "user": {
    "id": "6718a0b50e27164043ce912e",
    "name": "Cédric Doe"
  },
  "validityDate": "2024-11-14T14:08:19.412Z",
  "createdAt": "2024-11-04T14:08:19.417Z",
  "updatedAt": "2024-11-04T14:08:19.437Z"
}


GET/v2/quotes

List all quotes

This endpoint allows you to retrieve all the quotes.

Request

GET
/v2/quotes
curl -G https://api.lsp.expert/v2/quotes \
  -u {key}: 

Response

{
  "items": [{
    "id": "6728d5531736399b5f80ffaf",
    "applyVATReverseCharge": false,
    "archive": false,
    "client": {
      "id": "6718a1350e27164043ce9e80",
      "name": "Microsoft",
      "address": {
        "name": "Microsoft"
      }
    },
    "currency": {
      "code": "EUR",
      "symbol": "€"
    },
    "discount": 0,
    "document": {
      "id": "6718a0b50e27164043ce915a",
      "name": "English"
    },
    "filename": "001.pdf",
    "filenameFormat": "[number]",
    "internalNotes": [],
    "isConflictingNumber": false,
    "issueDate": "2024-11-04T14:08:19.412Z",
    "labels": [],
    "lines": [
      {
        "job": {
          "id": "671f9ec7fca5590b10414931",
          "name": "Brochure 2024",
          "isFixedPrice": false,
          "minimumFeeApplied": false
        },
        "service": {
          "id": "6718a0f90e27164043ce95c0",
          "name": "Translation"
        },
        "extraCharge": {
          "type": "percentage",
          "percentage": 0,
          "amount": 0
        },
        "quantity": {
          "quantityType": {
            "id": "6718a0f90e27164043ce96a7",
            "name": "Words"
          },
          "value": 2000
        },
        "totalDetails": {
          "extraCharge": {
            "amount": 0,
            "discount": 0,
            "total": 0
          },
          "subtotal": {
            "amount": 280,
            "discount": 0,
            "total": 280
          },
          "total": 280
        },
        "group": {
          "isParent": false,
          "childLines": []
        },
        "deliveryDate": "2024-10-28T15:00:00.000Z",
        "additionalInfo": null,
        "unitCost": 0.14,
        "discount": 0,
        "notIncludeInTaxes": false,
        "lineTotal": 280,
        "matches": [
          {
            "match": {
              "id": "671f9eaafca5590b1041459f",
              "name": "0%"
            },
            "unitCost": 0.14,
            "quantity": 1500,
            "lineTotal": 210,
            "id": "6728d5531736399b5f80ffb2"
          },
          {
            "match": {
              "id": "671f9ea7fca5590b10414546",
              "name": "100%"
            },
            "unitCost": 0.14,
            "quantity": 200,
            "lineTotal": 28,
            "id": "6728d5531736399b5f80ffb4"
          },
          {
            "match": {
              "id": "671f9eaefca5590b104145fa",
              "name": "Fuzzies"
            },
            "unitCost": 0.14,
            "quantity": 300,
            "lineTotal": 42,
            "id": "6728d5531736399b5f80ffb6"
          }
        ],
        "groupMatches": false,
        "id": "6728d5531736399b5f80ffb1"
      }
    ],
    "number": "001",
    "object": "quote",
    "pinned": false,
    "rappenRounding": false,
    "status": 1,
    "tax1": {
      "id": "6718a0fd0e27164043ce97ae",
      "name": "VAT",
      "value": 0.21
    },
    "total": {
      "discount": {
        "amount": 0,
        "value": 0
      },
      "subtotal": 280,
      "subtotalTaxable": 280,
      "subtotalWithoutTaxes": 280,
      "tax1": {
        "id": "6718a0fd0e27164043ce97ae",
        "name": "VAT",
        "amount": 58.8,
        "value": 0.21
      },
      "tax2": null,
      "total": 338.8
    },
    "user": {
      "id": "6718a0b50e27164043ce912e",
      "name": "Cédric Doe"
    },
    "validityDate": "2024-11-14T14:08:19.412Z",
    "createdAt": "2024-11-04T14:08:19.417Z",
    "updatedAt": "2024-11-04T14:08:19.437Z"
  },
  {...},
  {...}
],
  "pageSize": 20,
  "page": 1,
  "totalPages": 1,
  "totalItems": 2,
  "hasNextPage": false,
  "hasPreviousPage": false
}

POST/v2/quotes

Create a quote

This endpoint allows you to add a new quote.

Parameters

  • clientstring Required

    The client id.

  • currencystring Required

    The currency code (ISO, e.g., EUR).

Request

POST
/v2/quotes
curl https://api.lsp.expert/v2/quotes \
  -u {key}: \
  -d client="6718a1350e27164043ce9e80" \
  -d currency="EUR"

Response

{
  "id": "6728d9ae1736399b5f810c52",
  "applyVATReverseCharge": false,
  "archive": false,
  "client": {
    "id": "6718a1350e27164043ce9e80",
    "name": "Microsoft",
    "address": {
      "name": "Microsoft"
    }
  },
  "currency": {
    "code": "EUR",
    "symbol": "€"
  },
  "discount": 0,
  "document": {
    "id": "6718a0b50e27164043ce915a",
    "name": "English"
  },
  "filename": "002.pdf",
  "filenameFormat": "[number]",
  "internalNotes": [],
  "isConflictingNumber": false,
  "issueDate": "2024-11-04T14:23:41.604Z",
  "labels": [],
  "lines": [],
  "number": "002",
  "object": "quote",
  "pinned": false,
  "rappenRounding": false,
  "status": 1,
  "tax1": {
    "id": "6718a0fd0e27164043ce97ae",
    "name": "VAT",
    "value": 0.21
  },
  "total": {
    "discount": {
      "amount": 0,
      "value": 0
    },
    "subtotal": 0,
    "subtotalTaxable": 0,
    "subtotalWithoutTaxes": 0,
    "tax1": {
      "id": "6718a0fd0e27164043ce97ae",
      "name": "VAT",
      "amount": 0,
      "value": 0.21
    },
    "tax2": null,
    "total": 0
  },
  "user": {
    "id": "6718a0b50e27164043ce9130",
    "name": "Degallaix Corp."
  },
  "validityDate": "2024-11-14T14:23:41.604Z",
  "createdAt": "2024-11-04T14:23:41.605Z",
  "updatedAt": "2024-11-04T14:23:41.611Z"
}


POST/v2/quotes/multi

Create a quote for jobs

This endpoint allows you to add a new quote and automatically add several lines for jobs.

Parameters

  • jobsarray

    The list of jobs ids.

Request

POST
/v2/quotes/multi
curl https://api.lsp.expert/v2/quotes/multi \
  -u {key}: \
  -d ids=["6718a1ea0e27164043ceb62d", "6719f4f853737267e419408d"] 

Response

[
  {
    "id": "6728d9ae1736399b5f810c52",
    "applyVATReverseCharge": false,
    "archive": false,
    "client": {
      "id": "6718a1350e27164043ce9e80",
      "name": "Microsoft",
      "address": {
        "name": "Microsoft"
      }
    },
    "currency": {
      "code": "EUR",
      "symbol": "€"
    },
    "discount": 0,
    "document": {
      "id": "6718a0b50e27164043ce915a",
      "name": "English"
    },
    "filename": "001.pdf",
    "filenameFormat": "[number]",
    "internalNotes": [],
    "isConflictingNumber": false,
    "issueDate": "2024-11-04T14:26:54.768Z",
    "labels": [],
    "lines": [
      {
        "job": {
          "id": "6718a1ea0e27164043ceb62d",
          "groupId": "671f9cd7fca5590b104135a6",
          "name": "Third job",
          "isFixedPrice": false,
          "minimumFeeApplied": false
        },
        "service": {
          "id": "6718a0f90e27164043ce95c0",
          "name": "Translation"
        },
        "deliveryDate": "2024-10-25T08:00:00.000Z",
        "additionalInfo": null,
        "unitCost": 0.14,
        "discount": 0,
        "extraCharge": {
          "type": "percentage",
          "percentage": 0,
          "amount": 0
        },
        "quantity": {
          "value": 1000,
          "quantityType": {
            "id": "6718a0f90e27164043ce96a7",
            "name": "Words"
          }
        },
        "totalDetails": {
          "extraCharge": {
            "amount": 0,
            "discount": 0,
            "total": 0
          },
          "subtotal": {
            "amount": 140,
            "discount": 0,
            "total": 140
          },
          "total": 140
        },
        "notIncludeInTaxes": false,
        "lineTotal": 140,
        "matches": [],
        "groupMatches": false,
        "group": {
          "isParent": false,
          "childLines": []
        },
        "id": "6728d9ae1736399b5f810c5c"
      },
      {
        "job": {
          "id": "6719f4f853737267e419408d",
          "groupId": "671f9cd7fca5590b104135a6",
          "name": "Fourth job",
          "isFixedPrice": false,
          "minimumFeeApplied": false
        },
        "service": {
          "id": "6718a0f90e27164043ce95c0",
          "name": "Translation"
        },
        "deliveryDate": "2024-10-25T08:00:00.000Z",
        "additionalInfo": null,
        "unitCost": 0.14,
        "discount": 0,
        "extraCharge": {
          "type": "percentage",
          "percentage": 0,
          "amount": 0
        },
        "quantity": {
          "value": 1000,
          "quantityType": {
            "id": "6718a0f90e27164043ce96a7",
            "name": "Words"
          }
        },
        "totalDetails": {
          "extraCharge": {
            "amount": 0,
            "discount": 0,
            "total": 0
          },
          "subtotal": {
            "amount": 140,
            "discount": 0,
            "total": 140
          },
          "total": 140
        },
        "notIncludeInTaxes": false,
        "lineTotal": 140,
        "matches": [],
        "groupMatches": false,
        "group": {
          "isParent": false,
          "childLines": []
        },
        "id": "6728d9ae1736399b5f810c66"
      }
    ],
    "number": "001",
    "object": "quote",
    "pinned": false,
    "rappenRounding": false,
    "status": 1,
    "tax1": {
      "id": "6718a0fd0e27164043ce97ae",
      "name": "VAT",
      "value": 0.21
    },
    "total": {
      "discount": {
        "amount": 0,
        "value": 0
      },
      "subtotal": 280,
      "subtotalTaxable": 280,
      "subtotalWithoutTaxes": 280,
      "tax1": {
        "id": "6718a0fd0e27164043ce97ae",
        "name": "VAT",
        "amount": 58.8,
        "value": 0.21
      },
      "tax2": null,
      "total": 338.8
    },
    "user": {
      "id": "6718a0b50e27164043ce912e",
      "name": "Cédric Doe"
    },
    "validityDate": "2024-11-14T14:26:54.768Z",
    "createdAt": "2024-11-04T14:26:54.769Z",
    "updatedAt": "2024-11-04T14:26:54.795Z"
  }
]


GET/v2/quotes/:id

Retrieve a quote

This endpoint allows you to retrieve a quote by providing their id.

Request

GET
/v2/quotes/:id
curl https://api.lsp.expert/v2/quotes/6728d9ae1736399b5f810c52 \
  -u {key}:

Response

{
  "id": "6728d9ae1736399b5f810c52",
  "applyVATReverseCharge": false,
  "archive": false,
  "client": {
    "id": "6718a1350e27164043ce9e80",
    "name": "Microsoft",
    "address": {
      "name": "Microsoft"
    }
  },
  "currency": {
    "code": "EUR",
    "symbol": "€"
  },
  "discount": 0,
  "document": {
    "id": "6718a0b50e27164043ce915a",
    "name": "English"
  },
  "filename": "002.pdf",
  "filenameFormat": "[number]",
  "internalNotes": [],
  "isConflictingNumber": false,
  "issueDate": "2024-11-04T14:23:41.604Z",
  "labels": [],
  "lines": [],
  "number": "002",
  "object": "quote",
  "pinned": false,
  "rappenRounding": false,
  "status": 1,
  "tax1": {
    "id": "6718a0fd0e27164043ce97ae",
    "name": "VAT",
    "value": 0.21
  },
  "total": {
    "discount": {
      "amount": 0,
      "value": 0
    },
    "subtotal": 0,
    "subtotalTaxable": 0,
    "subtotalWithoutTaxes": 0,
    "tax1": {
      "id": "6718a0fd0e27164043ce97ae",
      "name": "VAT",
      "amount": 0,
      "value": 0.21
    },
    "tax2": null,
    "total": 0
  },
  "user": {
    "id": "6718a0b50e27164043ce9130",
    "name": "Degallaix Corp."
  },
  "validityDate": "2024-11-14T14:23:41.604Z",
  "createdAt": "2024-11-04T14:23:41.605Z",
  "updatedAt": "2024-11-04T14:23:41.611Z"
}


GET/v2/quotes/generate

Retrieve a quote as PDF

This endpoint allows you to retrieve a PDF for one or multiple quotes.

Request

GET
/v2/quotes/generate
curl https://api.lsp.expert/v2/quotes/generate/ids=6728d9ae1736399b5f810c52 \
  -u {key}:

PUT/v2/quotes/:id

Update a quote

This endpoint allows you to perform an update on a quote. Any parameters not provided will be left unchanged.

Parameters

  • acceptedDatestring,

    The date the quote was accepted.

  • applyVATReverseChargeboolean

    True if the reverse charge applies.

  • clientAddressCitystring,

    The city of the client address.

  • clientAddressCountrystring,

    The country of the client address (ISO code).

  • clientAddressLine1string,

    The first line of the client address.

  • clientAddressLine2string,

    The second line of the client address.

  • clientAddressNamestring,

    The name of the client address.

  • clientAddressPostalCodestring,

    The postal code of the client address.

  • clientAddressStatestring,

    The state of the client address.

  • clientDetailsstring,

    Any details about the client.

  • clientNationalIdentificationNumberstring,

    The national identification number of the client.

  • clientVatNumberstring,

    The VAT number of the client.

  • discountnumber

    The discount in percentage.

  • documentstring

    The document id.

  • filenameFormatstring

    The filename format.

  • issueDatestring

    The date the quote was issued.

  • notesstring,

    The notes linked to the entity.

  • numberstring

    The number of the quote.

  • pinnedboolean

    True if the entity is pinned.

  • rappenRoundingboolean

    True if the rounding is in rappen (CHF only).

  • sentDatestring,

    The date the quote was sent.

  • statusnumber

    One of the following value: 1, 2, 3, 4.

  • tax1string,

    The first tax id.

  • tax2string,

    The second tax id.

  • termsstring,

    The terms of the quote.

  • validityDatestring,

    the date the quote is valid until.

Request

PUT
/v2/quotes/:id
curl -X PUT https://api.lsp.expert/v2/quotes/6728d9ae1736399b5f810c52 \
  -u {key}: \
  -d status=2

Response

{
"id": "6728d9ae1736399b5f810c52",
"applyVATReverseCharge": false,
"archive": false,
"client": {
  "id": "6718a1350e27164043ce9e80",
  "name": "Microsoft",
  "address": {
    "name": "Microsoft"
  }
},
"currency": {
  "code": "EUR",
  "symbol": "€"
},
"discount": 0,
"document": {
  "id": "6718a0b50e27164043ce915a",
  "name": "English"
},
"filename": "001.pdf",
"filenameFormat": "[number]",
"internalNotes": [],
"isConflictingNumber": false,
"issueDate": "2024-11-04T14:26:54.768Z",
"labels": [],
"lines": [
  //...
],
"number": "001",
"object": "quote",
"pinned": false,
"rappenRounding": false,
"sentDate": "2024-11-04T14:33:40.741Z",
"status": 2,
"tax1": {
  "id": "6718a0fd0e27164043ce97ae",
  "name": "VAT",
  "value": 0.21
},
"total": {
  "discount": {
    "amount": 0,
    "value": 0
  },
  "subtotal": 280,
  "subtotalTaxable": 280,
  "subtotalWithoutTaxes": 280,
  "tax1": {
    "id": "6718a0fd0e27164043ce97ae",
    "name": "VAT",
    "amount": 58.8,
    "value": 0.21
  },
  "tax2": null,
  "total": 338.8
},
"user": {
  "id": "6718a0b50e27164043ce912e",
  "name": "Cédric Doe"
},
"validityDate": "2024-11-14T14:26:54.768Z",
"createdAt": "2024-11-04T14:26:54.769Z",
"updatedAt": "2024-11-04T14:33:40.749Z"
}

PUT/v2/quotes/:id/sync-client

Sync quote with client info

This endpoint allows you to sync the quote with the latest client info.

Parameters

Request

PUT
/v2/quotes/:id/sync-client
curl -X PUT https://api.lsp.expert/v2/quotes/6728d9ae1736399b5f810c52/sync-client \
  -u {key}: 

Response

{
  "id": "6728d9ae1736399b5f810c52",
  "applyVATReverseCharge": false,
  "archive": false,
  "client": {
    "id": "6718a1350e27164043ce9e80",
    "name": "Microsoft",
    "address": {
      "name": "Microsoft"
    }
  },
  "currency": {
    "code": "EUR",
    "symbol": "€"
  },
  "discount": 0,
  "document": {
    "id": "6718a0b50e27164043ce915a",
    "name": "English"
  },
  "filename": "001.pdf",
  "filenameFormat": "[number]",
  "internalNotes": [],
  "isConflictingNumber": false,
  "issueDate": "2024-11-04T14:26:54.768Z",
  "labels": [],
  "lines": [
    //...
  ],
  "number": "001",
  "object": "quote",
  "pinned": false,
  "rappenRounding": false,
  "sentDate": "2024-11-04T14:33:40.741Z",
  "status": 2,
  "tax1": {
    "id": "6718a0fd0e27164043ce97ae",
    "name": "VAT",
    "value": 0.21
  },
  "total": {
    "discount": {
      "amount": 0,
      "value": 0
    },
    "subtotal": 280,
    "subtotalTaxable": 280,
    "subtotalWithoutTaxes": 280,
    "tax1": {
      "id": "6718a0fd0e27164043ce97ae",
      "name": "VAT",
      "amount": 58.8,
      "value": 0.21
    },
    "tax2": null,
    "total": 338.8
  },
  "user": {
    "id": "6718a0b50e27164043ce912e",
    "name": "Cédric Doe"
  },
  "validityDate": "2024-11-14T14:26:54.768Z",
  "createdAt": "2024-11-04T14:26:54.769Z",
  "updatedAt": "2024-11-04T14:33:40.749Z"
}

DELETE/v2/quotes/:id

Delete a quote

This endpoint allows you to delete a quote.

Request

DELETE
/v2/quotes/:id
curl -X DELETE https://api.lsp.expert/v2/quotes/6728d9ae1736399b5f810c52 \
  -u {key}:

POST/v2/quotes/email

Send via email

This endpoint allows you to send a quote via email.

Parameters

  • ccarray

    The list of contact ids to cc (if not provided, use the default cc contacts of the client).

  • contentstring

    The content of the email (if not provided, use the default content of the document configuration for the client).

  • documentSettingsstring

    The document id to use for the email (if not provided, use the default document of the client).

  • isReminderboolean Required

    True if the email is a reminder.

  • subjectstring

    The subject of the email (if not provided, use the default subject of the document configuration for the client).

  • toarray

    The list of contact ids to send the emails to (if not provided, use the default to contacts of the client).

Request

POST
/v2/quotes/:id
curl https://api.lsp.expert/v2/quotes/6728d9ae1736399b5f810c52 \
  -u {key}: 

Response

{
  "id": "6728d9ae1736399b5f810c52",
  "applyVATReverseCharge": false,
  "archive": false,
  "client": {
    "id": "6718a1350e27164043ce9e80",
    "name": "Microsoft",
    "address": {
      "name": "Microsoft"
    }
  },
  "currency": {
    "code": "EUR",
    "symbol": "€"
  },
  "discount": 0,
  "document": {
    "id": "6718a0b50e27164043ce915a",
    "name": "English"
  },
  "filename": "001.pdf",
  "filenameFormat": "[number]",
  "internalNotes": [],
  "isConflictingNumber": false,
  "issueDate": "2024-11-04T14:26:54.768Z",
  "labels": [],
  "lines": [
    //...
  ],
  "number": "001",
  "object": "quote",
  "pinned": false,
  "rappenRounding": false,
  "sentDate": "2024-11-04T14:33:40.741Z",
  "status": 2,
  "tax1": {
    "id": "6718a0fd0e27164043ce97ae",
    "name": "VAT",
    "value": 0.21
  },
  "total": {
    "discount": {
      "amount": 0,
      "value": 0
    },
    "subtotal": 280,
    "subtotalTaxable": 280,
    "subtotalWithoutTaxes": 280,
    "tax1": {
      "id": "6718a0fd0e27164043ce97ae",
      "name": "VAT",
      "amount": 58.8,
      "value": 0.21
    },
    "tax2": null,
    "total": 338.8
  },
  "user": {
    "id": "6718a0b50e27164043ce912e",
    "name": "Cédric Doe"
  },
  "validityDate": "2024-11-14T14:26:54.768Z",
  "createdAt": "2024-11-04T14:26:54.769Z",
  "updatedAt": "2024-11-04T14:33:40.749Z"
}

POST/v2/quotes/:id/lines

Add line

This endpoint allows you to add a line on the quote.

Parameters

  • namestring Required

    The name of the line.

  • additionalInfostring

    Any additional info.

  • deliveryDatestring

    The delivery date.

  • discountnumber

    The discount applied on the line (percentage).

  • extraChargeAmountnumber

    The extra charge amount.

  • extraChargeDescriptionstring,null

    The extra charge description.

  • extraChargePercentagenumber

    The extra charge percentage.

  • extraChargeTypestring

    One of the following value: amount, percentage.

  • projectManagerstring

    The project manager id.

  • purchaseOrderstring

    The purchase order.

  • quantitynumber Required

    The quantity.

  • quantityTypestring

    The quantity type id.

  • unitCostnumber Required

    The cost per unit.

Request

POST
/v2/quotes/:id/lines
curl https://api.lsp.expert/v2/quotes/671f9a64186d40de4869f3c4/lines \
  -u {key}: \
  -d name="DHL fee" \
  -d quantity=1 \
  -d unitCost=13

Response

{
  "id": "6728d9ae1736399b5f810c52",
  "applyVATReverseCharge": false,
  "archive": false,
  "client": {
    "id": "6718a1350e27164043ce9e80",
    "name": "Microsoft",
    "address": {
      "name": "Microsoft"
    }
  },
  "currency": {
    "code": "EUR",
    "symbol": "€"
  },
  "discount": 0,
  "document": {
    "id": "6718a0b50e27164043ce915a",
    "name": "English"
  },
  "filename": "001.pdf",
  "filenameFormat": "[number]",
  "internalNotes": [],
  "isConflictingNumber": false,
  "issueDate": "2024-11-04T14:26:54.768Z",
  "labels": [],
  "lines": [
    {
      "job": {
        "name": "DHL fee",
        "isFixedPrice": false,
        "minimumFeeApplied": false
      },
      "unitCost": 13,
      "discount": 0,
      "extraCharge": {
        "type": "percentage",
        "percentage": 0,
        "amount": 0,
        "description": null
      },
      "quantity": {
        "value": 1
      },
      "totalDetails": {
        "extraCharge": {
          "amount": 0,
          "discount": 0,
          "total": 0
        },
        "subtotal": {
          "amount": 13,
          "discount": 0,
          "total": 13
        },
        "total": 13
      },
      "notIncludeInTaxes": false,
      "lineTotal": 13,
      "matches": [],
      "groupMatches": false,
      "group": {
        "isParent": false,
        "childLines": []
      },
      "id": "6728dd291736399b5f810f92"
    }
  ],
  "number": "001",
  "object": "quote",
  "pinned": false,
  "rappenRounding": false,
  "sentDate": "2024-11-04T14:33:40.741Z",
  "status": 2,
  "tax1": {
    "id": "6718a0fd0e27164043ce97ae",
    "name": "VAT",
    "value": 0.21
  },
  "total": {
    "discount": {
      "amount": 0,
      "value": 0
    },
    "subtotal": 13,
    "subtotalTaxable": 13,
    "subtotalWithoutTaxes": 13,
    "tax1": {
      "id": "6718a0fd0e27164043ce97ae",
      "name": "VAT",
      "amount": 2.73,
      "value": 0.21
    },
    "tax2": null,
    "total": 15.73
  },
  "user": {
    "id": "6718a0b50e27164043ce912e",
    "name": "Cédric Doe"
  },
  "validityDate": "2024-11-14T14:26:54.768Z",
  "createdAt": "2024-11-04T14:26:54.769Z",
  "updatedAt": "2024-11-04T14:41:45.261Z"
}


POST/v2/quotes/:id/lines/job

Add line for a job

This endpoint allows you to add a line on the quote for a job.

Parameters

  • jobIdstring Required

    The job id.

Request

POST
/v2/quotes/:id/lines/job
curl https://api.lsp.expert/v2/quotes/6728d9ae1736399b5f810c52/lines/job \
  -u {key}: \
  -d jobId="671f9ec7fca5590b10414931"

Response

{
  "id": "6728d9ae1736399b5f810c52",
  "applyVATReverseCharge": false,
  "archive": false,
  "client": {
    "id": "6718a1350e27164043ce9e80",
    "name": "Microsoft",
    "address": {
      "name": "Microsoft"
    }
  },
  "currency": {
    "code": "EUR",
    "symbol": "€"
  },
  "discount": 0,
  "document": {
    "id": "6718a0b50e27164043ce915a",
    "name": "English"
  },
  "filename": "001.pdf",
  "filenameFormat": "[number]",
  "internalNotes": [],
  "isConflictingNumber": false,
  "issueDate": "2024-11-04T14:26:54.768Z",
  "labels": [],
  "lines": [
    {
      "job": {
        "name": "DHL fee",
        "isFixedPrice": false,
        "minimumFeeApplied": false
      },
      "extraCharge": {
        "type": "percentage",
        "percentage": 0,
        "amount": 0,
        "description": null
      },
      "quantity": {
        "value": 1
      },
      "totalDetails": {
        "extraCharge": {
          "amount": 0,
          "discount": 0,
          "total": 0
        },
        "subtotal": {
          "amount": 13,
          "discount": 0,
          "total": 13
        },
        "total": 13
      },
      "group": {
        "isParent": false,
        "childLines": []
      },
      "unitCost": 13,
      "discount": 0,
      "notIncludeInTaxes": false,
      "lineTotal": 13,
      "matches": [],
      "groupMatches": false,
      "id": "6728dd291736399b5f810f92"
    },
    {
      "job": {
        "id": "671f9ec7fca5590b10414931",
        "name": "Brochure 2024",
        "isFixedPrice": false,
        "minimumFeeApplied": false
      },
      "service": {
        "id": "6718a0f90e27164043ce95c0",
        "name": "Translation"
      },
      "deliveryDate": "2024-10-28T15:00:00.000Z",
      "additionalInfo": null,
      "unitCost": 0.14,
      "discount": 0.1,
      "extraCharge": {
        "type": "percentage",
        "percentage": 0,
        "amount": 0
      },
      "quantity": {
        "value": 2000,
        "quantityType": {
          "id": "6718a0f90e27164043ce96a7",
          "name": "Words"
        }
      },
      "totalDetails": {
        "extraCharge": {
          "amount": 0,
          "discount": 0,
          "total": 0
        },
        "subtotal": {
          "amount": 280,
          "discount": 28,
          "total": 252
        },
        "total": 252
      },
      "notIncludeInTaxes": false,
      "lineTotal": 252,
      "matches": [
        {
          "match": {
            "id": "671f9eaafca5590b1041459f",
            "name": "0%"
          },
          "unitCost": 0.14,
          "quantity": 1500,
          "lineTotal": 189,
          "id": "6728dd791736399b5f81106b"
        },
        {
          "match": {
            "id": "671f9ea7fca5590b10414546",
            "name": "100%"
          },
          "unitCost": 0.14,
          "quantity": 200,
          "lineTotal": 25.2,
          "id": "6728dd791736399b5f81106d"
        },
        {
          "match": {
            "id": "671f9eaefca5590b104145fa",
            "name": "Fuzzies"
          },
          "unitCost": 0.14,
          "quantity": 300,
          "lineTotal": 37.8,
          "id": "6728dd791736399b5f81106f"
        }
      ],
      "groupMatches": false,
      "group": {
        "isParent": false,
        "childLines": []
      },
      "id": "6728dd791736399b5f81106a"
    }
  ],
  "number": "001",
  "object": "quote",
  "pinned": false,
  "rappenRounding": false,
  "sentDate": "2024-11-04T14:33:40.741Z",
  "status": 2,
  "tax1": {
    "id": "6718a0fd0e27164043ce97ae",
    "name": "VAT",
    "value": 0.21
  },
  "total": {
    "discount": {
      "amount": 0,
      "value": 0
    },
    "subtotal": 265,
    "subtotalTaxable": 265,
    "subtotalWithoutTaxes": 265,
    "tax1": {
      "id": "6718a0fd0e27164043ce97ae",
      "name": "VAT",
      "amount": 55.65,
      "value": 0.21
    },
    "tax2": null,
    "total": 320.65
  },
  "user": {
    "id": "6718a0b50e27164043ce912e",
    "name": "Cédric Doe"
  },
  "validityDate": "2024-11-14T14:26:54.768Z",
  "createdAt": "2024-11-04T14:26:54.769Z",
  "updatedAt": "2024-11-04T14:43:05.884Z"
}


PUT/v2/quotes/:id/lines/:line-id

Update a quote line

This endpoint allows you to perform an update on a quote line. Any parameters not provided will be left unchanged.

Parameters

  • namestring

    The name of the line.

  • additionalInfostring,null

    Any additional info.

  • deliveryDatestring,null

    The delivery date.

  • discountnumber

    The discount applied on the line (percentage).

  • extraChargeAmountnumber

    The extra charge amount.

  • extraChargeDescriptionstring,null

    The extra charge description.

  • extraChargePercentagenumber

    The extra charge percentage.

  • extraChargeTypestring

    One of the following value: amount, percentage.

  • groupMatchesboolean

    True if the matches are grouped on the line.

  • notIncludeInTaxesboolean

    True if the line should not be included in the taxes.

  • projectManagerstring,null

    The project manager id.

  • quantitynumber

    The quantity.

  • quantityTypestring,null

    The quantity type id.

  • unitCostnumber

    The cost per unit.

Request

PUT
/v2/quotes/:id/lines/:line-id
curl -X PUT https://api.lsp.expert/v2/quotes/6728d9ae1736399b5f810c52/lines/6728dd791736399b5f81106a \
  -u {key}: \
  -d name="Brochure 2024 (edit)"

Response

{
  "id": "6728d9ae1736399b5f810c52",
  "applyVATReverseCharge": false,
  "archive": false,
  "client": {
    "id": "6718a1350e27164043ce9e80",
    "name": "Microsoft",
    "address": {
      "name": "Microsoft"
    }
  },
  "currency": {
    "code": "EUR",
    "symbol": "€"
  },
  "discount": 0,
  "document": {
    "id": "6718a0b50e27164043ce915a",
    "name": "English"
  },
  "filename": "001.pdf",
  "filenameFormat": "[number]",
  "internalNotes": [],
  "isConflictingNumber": false,
  "issueDate": "2024-11-04T14:26:54.768Z",
  "labels": [],
  "lines": [
    {
      "job": {
        "id": "671f9ec7fca5590b10414931",
        "name": "Brochure 2024 (edit)",
        "isFixedPrice": false,
        "minimumFeeApplied": false
      },
      "service": {
        "id": "6718a0f90e27164043ce95c0",
        "name": "Translation"
      },
      "extraCharge": {
        "type": "percentage",
        "percentage": 0,
        "amount": 0
      },
      "quantity": {
        "quantityType": {
          "id": "6718a0f90e27164043ce96a7",
          "name": "Words"
        },
        "value": 2000
      },
      "totalDetails": {
        "extraCharge": {
          "amount": 0,
          "discount": 0,
          "total": 0
        },
        "subtotal": {
          "amount": 280,
          "discount": 28,
          "total": 252
        },
        "total": 252
      },
      "group": {
        "isParent": false,
        "childLines": []
      },
      "deliveryDate": "2024-10-27T23:00:00.000Z",
      "unitCost": 0.14,
      "discount": 0.1,
      "notIncludeInTaxes": false,
      "lineTotal": 252,
      "matches": [
        {
          "match": {
            "id": "671f9eaafca5590b1041459f",
            "name": "0%"
          },
          "unitCost": 0.14,
          "quantity": 1500,
          "lineTotal": 189,
          "id": "6728dd791736399b5f81106b"
        },
        {
          "match": {
            "id": "671f9ea7fca5590b10414546",
            "name": "100%"
          },
          "unitCost": 0.14,
          "quantity": 200,
          "lineTotal": 25.2,
          "id": "6728dd791736399b5f81106d"
        },
        {
          "match": {
            "id": "671f9eaefca5590b104145fa",
            "name": "Fuzzies"
          },
          "unitCost": 0.14,
          "quantity": 300,
          "lineTotal": 37.8,
          "id": "6728dd791736399b5f81106f"
        }
      ],
      "groupMatches": false,
      "id": "6728dd791736399b5f81106a"
    }
  ],
  "number": "001",
  "object": "quote",
  "pinned": false,
  "rappenRounding": false,
  "sentDate": "2024-11-04T14:33:40.741Z",
  "status": 2,
  "tax1": {
    "id": "6718a0fd0e27164043ce97ae",
    "name": "VAT",
    "value": 0.21
  },
  "total": {
    "discount": {
      "amount": 0,
      "value": 0
    },
    "subtotal": 252,
    "subtotalTaxable": 252,
    "subtotalWithoutTaxes": 252,
    "tax1": {
      "id": "6718a0fd0e27164043ce97ae",
      "name": "VAT",
      "amount": 52.92,
      "value": 0.21
    },
    "tax2": null,
    "total": 304.92
  },
  "user": {
    "id": "6718a0b50e27164043ce912e",
    "name": "Cédric Doe"
  },
  "validityDate": "2024-11-14T14:26:54.768Z",
  "createdAt": "2024-11-04T14:26:54.769Z",
  "updatedAt": "2024-11-04T14:46:54.704Z"
}

PUT/v2/quotes/:id/lines/:line-id/sync

Sync a quote line with the job

This endpoint allows you to sync a line with the related job (quantity, unit cost, etc.).

Parameters

Request

PUT
/v2/quotes/:id/lines/:line-id/sync
curl -X PUT https://api.lsp.expert/v2/quotes/6728d9ae1736399b5f810c52/lines/6728dd791736399b5f81106a/sync \
  -u {key}: 

Response

{
  "id": "6728d9ae1736399b5f810c52",
  "applyVATReverseCharge": false,
  "archive": false,
  "client": {
    "id": "6718a1350e27164043ce9e80",
    "name": "Microsoft",
    "address": {
      "name": "Microsoft"
    }
  },
  "currency": {
    "code": "EUR",
    "symbol": "€"
  },
  "discount": 0,
  "document": {
    "id": "6718a0b50e27164043ce915a",
    "name": "English"
  },
  "filename": "001.pdf",
  "filenameFormat": "[number]",
  "internalNotes": [],
  "isConflictingNumber": false,
  "issueDate": "2024-11-04T14:26:54.768Z",
  "labels": [],
  "lines": [
    {
      "job": {
        "id": "671f9ec7fca5590b10414931",
        "name": "Brochure 2024 (edit)",
        "isFixedPrice": false,
        "minimumFeeApplied": false
      },
      "service": {
        "id": "6718a0f90e27164043ce95c0",
        "name": "Translation"
      },
      "extraCharge": {
        "type": "percentage",
        "percentage": 0,
        "amount": 0
      },
      "quantity": {
        "quantityType": {
          "id": "6718a0f90e27164043ce96a7",
          "name": "Words"
        },
        "value": 2000
      },
      "totalDetails": {
        "extraCharge": {
          "amount": 0,
          "discount": 0,
          "total": 0
        },
        "subtotal": {
          "amount": 280,
          "discount": 28,
          "total": 252
        },
        "total": 252
      },
      "group": {
        "isParent": false,
        "childLines": []
      },
      "deliveryDate": "2024-10-27T23:00:00.000Z",
      "unitCost": 0.14,
      "discount": 0.1,
      "notIncludeInTaxes": false,
      "lineTotal": 252,
      "matches": [
        {
          "match": {
            "id": "671f9eaafca5590b1041459f",
            "name": "0%"
          },
          "unitCost": 0.14,
          "quantity": 1500,
          "lineTotal": 189,
          "id": "6728dd791736399b5f81106b"
        },
        {
          "match": {
            "id": "671f9ea7fca5590b10414546",
            "name": "100%"
          },
          "unitCost": 0.14,
          "quantity": 200,
          "lineTotal": 25.2,
          "id": "6728dd791736399b5f81106d"
        },
        {
          "match": {
            "id": "671f9eaefca5590b104145fa",
            "name": "Fuzzies"
          },
          "unitCost": 0.14,
          "quantity": 300,
          "lineTotal": 37.8,
          "id": "6728dd791736399b5f81106f"
        }
      ],
      "groupMatches": false,
      "id": "6728dd791736399b5f81106a"
    }
  ],
  "number": "001",
  "object": "quote",
  "pinned": false,
  "rappenRounding": false,
  "sentDate": "2024-11-04T14:33:40.741Z",
  "status": 2,
  "tax1": {
    "id": "6718a0fd0e27164043ce97ae",
    "name": "VAT",
    "value": 0.21
  },
  "total": {
    "discount": {
      "amount": 0,
      "value": 0
    },
    "subtotal": 252,
    "subtotalTaxable": 252,
    "subtotalWithoutTaxes": 252,
    "tax1": {
      "id": "6718a0fd0e27164043ce97ae",
      "name": "VAT",
      "amount": 52.92,
      "value": 0.21
    },
    "tax2": null,
    "total": 304.92
  },
  "user": {
    "id": "6718a0b50e27164043ce912e",
    "name": "Cédric Doe"
  },
  "validityDate": "2024-11-14T14:26:54.768Z",
  "createdAt": "2024-11-04T14:26:54.769Z",
  "updatedAt": "2024-11-04T14:46:54.704Z"
}

PUT/v2/quotes/:id/lines/:line-id/move/:new-position

Move a quote line

This endpoint allows you to move a line to a new position.

Parameters

Request

PUT
/v2/quotes/:id/lines/:line-id/move/:new-position
curl -X PUT https://api.lsp.expert/v2/quotes/6728d9ae1736399b5f810c52/lines/6728dd791736399b5f81106a/move/1 \
  -u {key}: 

Response

{
  "id": "6728d9ae1736399b5f810c52",
  "applyVATReverseCharge": false,
  "archive": false,
  "client": {
    "id": "6718a1350e27164043ce9e80",
    "name": "Microsoft",
    "address": {
      "name": "Microsoft"
    }
  },
  "currency": {
    "code": "EUR",
    "symbol": "€"
  },
  "discount": 0,
  "document": {
    "id": "6718a0b50e27164043ce915a",
    "name": "English"
  },
  "filename": "001.pdf",
  "filenameFormat": "[number]",
  "internalNotes": [],
  "isConflictingNumber": false,
  "issueDate": "2024-11-04T14:26:54.768Z",
  "labels": [],
  "lines": [
    {
      "job": {
        "id": "671f9ec7fca5590b10414931",
        "name": "Brochure 2024 (edit)",
        "isFixedPrice": false,
        "minimumFeeApplied": false
      },
      "service": {
        "id": "6718a0f90e27164043ce95c0",
        "name": "Translation"
      },
      "extraCharge": {
        "type": "percentage",
        "percentage": 0,
        "amount": 0
      },
      "quantity": {
        "quantityType": {
          "id": "6718a0f90e27164043ce96a7",
          "name": "Words"
        },
        "value": 2000
      },
      "totalDetails": {
        "extraCharge": {
          "amount": 0,
          "discount": 0,
          "total": 0
        },
        "subtotal": {
          "amount": 280,
          "discount": 28,
          "total": 252
        },
        "total": 252
      },
      "group": {
        "isParent": false,
        "childLines": []
      },
      "deliveryDate": "2024-10-27T23:00:00.000Z",
      "unitCost": 0.14,
      "discount": 0.1,
      "notIncludeInTaxes": false,
      "lineTotal": 252,
      "matches": [
        {
          "match": {
            "id": "671f9eaafca5590b1041459f",
            "name": "0%"
          },
          "unitCost": 0.14,
          "quantity": 1500,
          "lineTotal": 189,
          "id": "6728dd791736399b5f81106b"
        },
        {
          "match": {
            "id": "671f9ea7fca5590b10414546",
            "name": "100%"
          },
          "unitCost": 0.14,
          "quantity": 200,
          "lineTotal": 25.2,
          "id": "6728dd791736399b5f81106d"
        },
        {
          "match": {
            "id": "671f9eaefca5590b104145fa",
            "name": "Fuzzies"
          },
          "unitCost": 0.14,
          "quantity": 300,
          "lineTotal": 37.8,
          "id": "6728dd791736399b5f81106f"
        }
      ],
      "groupMatches": false,
      "id": "6728dd791736399b5f81106a"
    }
  ],
  "number": "001",
  "object": "quote",
  "pinned": false,
  "rappenRounding": false,
  "sentDate": "2024-11-04T14:33:40.741Z",
  "status": 2,
  "tax1": {
    "id": "6718a0fd0e27164043ce97ae",
    "name": "VAT",
    "value": 0.21
  },
  "total": {
    "discount": {
      "amount": 0,
      "value": 0
    },
    "subtotal": 252,
    "subtotalTaxable": 252,
    "subtotalWithoutTaxes": 252,
    "tax1": {
      "id": "6718a0fd0e27164043ce97ae",
      "name": "VAT",
      "amount": 52.92,
      "value": 0.21
    },
    "tax2": null,
    "total": 304.92
  },
  "user": {
    "id": "6718a0b50e27164043ce912e",
    "name": "Cédric Doe"
  },
  "validityDate": "2024-11-14T14:26:54.768Z",
  "createdAt": "2024-11-04T14:26:54.769Z",
  "updatedAt": "2024-11-04T14:46:54.704Z"
}

DELETE/v2/quotes/:id/lines/:line-id

Delete a quote line

This endpoint allows you to delete a quote line.

Request

DELETE
/v2/quotes/:id/lines/:line-id
curl -X DELETE https://api.lsp.expert/v2/quotes/6728d9ae1736399b5f810c52/lines/6728dd791736399b5f81106a \
  -u {key}:

Response

{
  "id": "6728d9ae1736399b5f810c52",
  "applyVATReverseCharge": false,
  "archive": false,
  "client": {
    "id": "6718a1350e27164043ce9e80",
    "name": "Microsoft",
    "address": {
      "name": "Microsoft"
    }
  },
  "currency": {
    "code": "EUR",
    "symbol": "€"
  },
  "discount": 0,
  "document": {
    "id": "6718a0b50e27164043ce915a",
    "name": "English"
  },
  "filename": "001.pdf",
  "filenameFormat": "[number]",
  "internalNotes": [],
  "isConflictingNumber": false,
  "issueDate": "2024-11-04T14:26:54.768Z",
  "labels": [],
  "lines": [],
  "number": "001",
  "object": "quote",
  "pinned": false,
  "rappenRounding": false,
  "sentDate": "2024-11-04T14:33:40.741Z",
  "status": 2,
  "tax1": {
    "id": "6718a0fd0e27164043ce97ae",
    "name": "VAT",
    "value": 0.21
  },
  "total": {
    "discount": {
      "amount": 0,
      "value": 0
    },
    "subtotal": 0,
    "subtotalTaxable": 0,
    "subtotalWithoutTaxes": 0,
    "tax1": {
      "id": "6718a0fd0e27164043ce97ae",
      "name": "VAT",
      "amount": 0,
      "value": 0.21
    },
    "tax2": null,
    "total": 0
  },
  "user": {
    "id": "6718a0b50e27164043ce912e",
    "name": "Cédric Doe"
  },
  "validityDate": "2024-11-14T14:26:54.768Z",
  "createdAt": "2024-11-04T14:26:54.769Z",
  "updatedAt": "2024-11-04T14:49:54.701Z"
}