Quotation API
Description | Method | URL |
---|---|---|
Get all quotations | GET | /api/v1/quotations/ |
Get one quotation | GET | /api/v1/quotations/{id} |
Delete quotation | DELETE | /api/v1/quotations/{id} |
Update quotation | PUT | /api/v1/quotations/{id} |
All attributes used for quotations
Attribute | Type | Note |
---|---|---|
idread only | integer | Unique quotation id |
actionrequired | string(6) | Define the action what we should do with your request. 'send': send the quotation 'save': save the quotation as a draft |
sendmethod | string(11) | How to send the quotation to the receiver. Required when you use the action 'send' 'mail': print the quotation yourself. We'll send you the quotation id so you can execute a command to retrieve the PDF if you need so. 'email': send quotations through e-mail. It will be sent immediately. 'printcenter': send quotation through the printcenter. |
savename | string(40) | Unique name for the quotation for your own references. |
overwrite_if_exist | boolean | If a savename already exists, it will not be overwritten unless this attribute is set to 'true'. Default is 'false'. |
quotationreference | string(40) | A unique public reference for the quotation, will be placed on the PDF |
reference | object | Contains reference lines on the quotation. 'line1', 'line2', 'line3'. All are strings. |
lines | array | All quotation lines on the quotation Per line: 'amount' 'amount_desc' 'description' 'tax_rate' 'price' 'discount_pct' (discount percentage) 'tax_country' (boolean, input only)* 'linetotal' (read only) if you want to use a foreign tax for this line, set this to true. Read more To use text lines on an quotation, only supply 'description' and do not use the other fields. Check the example below for more info. |
profile | id | The ID of the used profile. Default is default profile. |
profile_nameread only | string | The name of the used profile |
category | id | The ID of the category. Use the categories api to retrieve a list of categories. |
category_nameread only | string | The name of the used category |
discounttype | string(10) | The type of discount: 'amount' or 'percentage' |
discount | float | If 'discounttype' is amount, then this is the amount of discount set on the quotation. If 'discounttype' is set to 'percentage', this is the discount percentage set. |
paymentcondition | string | The payment condition set on the quotation. Default is the payment condition set in the application. |
quotationperiod | integer | Term of payment in days. Default is the payment period set in your settings |
showtotals | boolean | If you want to show the totals of all the quotation lines including tax on the PDF. |
date | date | The date the quotation is sent or saved |
datedueread only | date | The due date. This is the quotation send date + the quotation period |
notes | string | An internal note for this quotation |
totalintaxread only | float | The total of the quotation including the tax |
convert_prices_to_euro | boolean | When this option is set to 'true' we will convert all the given prices on the quotation to euro, based on the currency set in the selected client and the quotation date (to retrieve the current exchange rate). |
sentread only | boolean | False = quotation not sent to customer, True = quotation sent to customer |
customstatus | string | If there is a custom status set. Possible values are: 'progress', 'completed', 'billable', 'declined', 'clear'. Clear will remove the custom status. Only available for sent quotations. |
approved | array | Contains information when a quotation is approved. These items are set when the quotation is approved: 'name', 'date', 'ip', 'comments'. Only available for sent quotations. |
clientnrrequired | integer | Client number |
contactread only | string(50) | |
companyread only | string(50) | |
addressread only | string(50) | |
zipcoderead only | string(7) | |
cityread only | string(50) | |
countryread only | integer or string | Country id. You can get a list of country id's with the function api/v1/countrylist. When creating or updating a client, you can supply a country id or a country name. We'll then try to find the id of the country you supplied. |
phoneread only | string(13) | |
mobileread only | string(13) | |
emailread only | ||
sign_urlread only | url | The url where the client can sign the quotation |
Examples
Example 1 - create a new quotation
Create a new quotation and save a concept, so it is not sent to the recipient yet.
POST /api/v1/quotations/
{
"clientnr": 1234,
"reference": {
"line1": "Soundboard Setup",
"line2": "Thank you for the inquiry",
"line3": "Please contact us if you have any questions."
},
"lines": [
{
"amount": 50,
"amount_desc": "panels",
"description": "Sound buttons",
"tax_rate": 21,
"price": 5.952
},
{
"amount": 1,
"amount_desc": "",
"description": "Wooden case",
"tax_rate": 21,
"discount_pct": 25,
"price": 500
},
{
"amount": 10,
"amount_desc": "hours",
"description": "Support",
"tax_rate": 9,
"price": 62.5
},
{
"description": "Everything is still in stock."
}
],
"discount": 10,
"discounttype": "percentage",
"quotationperiod": "30",
"notes": "Pete, make sure you handle this quotation with priority. VIP client.",
"action": "save",
"savename": "SoundBoard 1234",
"overwrite_if_exist": true
}
If you don't want to save, but send it immediately, use these parameters instead of action "save".
"action": "send",
"sendmethod": "email" // or mail or printcenter
Example 2 - send a quotation that is already saved as a concept
It is possible to send a quotation that is is not sent yet.
Possible sendmethods are: email
, mail
, or printcenter
.
The quotation will receive a new ID after the PUT command. Read the new ID in the response.
PUT /api/v1/quotations/{id}
{
"action": "send",
"sendmethod": "email"
}
Example 3 - mark a quotation as approved
In this example, we will mark a sent quotation as approved. (This is not needed when the client had signed the quotation through the sign url.). You cannot approve a quotation that isn't sent yet.
PUT /api/v1/quotations/{id}
{
"approved": {
"name": "Johnny Bravo",
"date": "2020-12-06",
"comments": "Quotation looks okay. Make sure the wooden case is painted purple."
}
}
You can also remove an approval.
PUT /api/v1/quotations/{id}
{
"approved": false
}
Example 4 - change the status of a quotation
There are a few custom statusses a quotation can have. To provide one, this is how you do it.
PUT /api/v1/quotations/{id}
{
"customstatus": "declined"
}
Example 5 - delete a quotation
DELETE /api/v1/quotations/{id}