Skip to content

Calculate live order prices without saving an order or conversation

POST
/entry-drafts/order-quote
curl --request POST \
--url https://example.com/entry-drafts/order-quote \
--header 'Content-Type: application/json' \
--cookie __Host-bottle.session_token=<__Host-bottle.session_token> \
--data '{ "customer": { "tradingName": "Camden Lock Grill", "paymentTerms": "prepaid", "preferredLocale": "en-GB", "paymentTermsDays": 1, "kind": "commercial", "hireBillingPeriod": "weekly", "cylinderCharge": "deposit", "rateSetId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f", "invoiceSchedule": { "mode": "business" }, "legalName": "Camden Lock Grill Ltd", "contactName": "Priya Shah", "email": "orders@camdenlockgrill.co.uk", "phone": "07700 900123", "notes": "example", "accountNumber": "BTL00313", "address": { "name": "example", "line1": "example", "line2": "example", "city": "example", "postcode": "example", "notes": "example", "leaveInstruction": "none", "leaveDetail": "example", "placeToken": "example" } }, "order": { "customerId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f", "deliveryAddressId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f", "deliverToName": "example", "deliverToAddress": "example", "deliveryOptionId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f", "paymentMethod": "on_account", "billingOwner": "bottle", "fulfilment": "delivery", "pricesIncludeVat": true, "pricingAudience": "consumer", "includeSurcharge": true, "surchargeChoice": "usual", "wantedOn": "2026-04-15", "notes": "example", "customerReference": "example", "lines": [ { "productId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f", "quantity": 1, "unitPrice": 1, "priceIncludesVat": true, "faultySwap": true } ], "cylinderChargesReviewed": true, "collect": [ { "productId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f", "quantity": 1 } ] }, "returnsConfirmed": true, "totalOverridePence": 1 }'
Media typeapplication/json
object
customer
required
object
tradingName
string
>= 1 characters <= 160 characters

Example

Camden Lock Grill
paymentTerms
string
Allowed values: prepaid on_account cash_on_delivery
preferredLocale

A language: en-GB English, ar Arabic, ur Urdu, pa Punjabi (Gurmukhi), hi Hindi, bn Bengali, gu Gujarati, zh-Hans Chinese (Simplified), pl Polish, ro Romanian, es Spanish, fr French, de German.

string | null
Allowed values: en-GB ar ur pa hi bn gu zh-Hans pl ro es fr de
paymentTermsDays
integer | null
<= 120
kind
string
Allowed values: commercial domestic
hireBillingPeriod
string | null
Allowed values: weekly monthly quarterly
cylinderCharge

Deposit: paid once with the cylinder and refunded on return. rent: charged while they keep it, no deposit.

string | null
Allowed values: deposit rent both
rateSetId

UUID v7

string | null format: uuid

Example

019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f
invoiceSchedule
One of:
object
mode
required
string
Allowed values: business
legalName
string | null
<= 200 characters

Example

Camden Lock Grill Ltd
contactName
string | null
<= 200 characters

Example

Priya Shah
email
string | null format: email

Example

orders@camdenlockgrill.co.uk
phone
string | null
/^\+?[\d\s()-]{7,20}$/

Example

07700 900123
notes
string | null
<= 2000 characters
accountNumber
string | null
>= 1 characters <= 30 characters /^[\p{L}\p{N}][\p{L}\p{N} ./-]*$/u/

Example

BTL00313
address
object
name
string | null
<= 80 characters
line1
required
string
>= 1 characters <= 200 characters
line2
string | null
<= 200 characters
city
string | null
<= 120 characters
postcode
string | null
<= 12 characters
notes
string | null
<= 2000 characters
leaveInstruction
string | null
Allowed values: none neighbour safe_place
leaveDetail
string | null
<= 500 characters
placeToken
string
<= 2000 characters
order
required
object
customerId

UUID v7

string format: uuid

Example

019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f
deliveryAddressId

UUID v7

string format: uuid

Example

019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f
deliverToName
string | null
<= 200 characters
deliverToAddress
string | null
<= 2000 characters
deliveryOptionId

UUID v7

string format: uuid

Example

019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f
paymentMethod

On_account: billed later, nothing to collect. link: a payment link raised in the accounting system. cash: the driver takes it at the door.

string
Allowed values: on_account link cash
billingOwner

Bottle: Bottle invoices and takes payment as usual. elsewhere: already invoiced or paid outside Bottle. Bottle sends no invoice or payment link, drivers collect nothing, and the payment method is kept as on_account.

string
Allowed values: bottle elsewhere
fulfilment

Delivery: goes on a round. collection: the customer picks it up from the yard; never planned onto a van, and comes off stock when marked collected.

string
Allowed values: delivery collection
pricesIncludeVat
boolean
pricingAudience

Consumer: use consumer list prices. trade: use trade prices where set. Agreed rates, customer price lists and price rules still take priority.

string
Allowed values: consumer trade
includeSurcharge
boolean
surchargeChoice
string
Allowed values: usual add remove
wantedOn
string | null format: date
notes
string | null
<= 2000 characters
customerReference
string | null
<= 100 characters
lines
Array<object>
<= 200 items
object
productId
required

UUID v7

string format: uuid

Example

019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f
quantity
required
integer
> 0 <= 1000
unitPrice
integer
priceIncludesVat
boolean
faultySwap
boolean
cylinderChargesReviewed
boolean
collect
Array<object>
<= 200 items
object
productId
required

UUID v7

string format: uuid

Example

019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f
quantity
required
integer
> 0 <= 1000
returnsConfirmed
required
boolean
totalOverridePence
integer
<= 100000000

Current calculated order prices

Media typeapplication/json
object
customerName
required
string
customerDetails
required
Array<string>
address
required
string | null
paymentMethod
required
string | null
fulfilment
required
string | null
wantedOn
required
string | null
notes
required
string | null
customerReference
required
string | null
lines
required
Array<object>
object
productId
required
string format: uuid
productName
required
string
quantity
required
integer
unitPrice
required
integer
priceIncludesVat
required
boolean
grossPence
required
integer
collect
required
Array<object>
object
productId
required
string format: uuid
productName
required
string
quantity
required
integer
netPence
required
integer
vatPence
required
integer
grossPence
required
integer
deliveryChargePence
required
integer
surchargePence
required
integer
calculatedGrossPence
integer

Example generated

{
"customerName": "example",
"customerDetails": [
"example"
],
"address": "example",
"paymentMethod": "example",
"fulfilment": "example",
"wantedOn": "example",
"notes": "example",
"customerReference": "example",
"lines": [
{
"productId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"productName": "example",
"quantity": 1,
"unitPrice": 1,
"priceIncludesVat": true,
"grossPence": 1
}
],
"collect": [
{
"productId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"productName": "example",
"quantity": 1
}
],
"netPence": 1,
"vatPence": 1,
"grossPence": 1,
"deliveryChargePence": 1,
"surchargePence": 1,
"calculatedGrossPence": 1
}

Draft request refused

Media typeapplication/json
object
error
required
string
message
required
string

Example

{
"error": "not_found",
"message": "Customer not found"
}

Draft request refused

Media typeapplication/json
object
error
required
string
message
required
string

Example

{
"error": "not_found",
"message": "Customer not found"
}

Draft request refused

Media typeapplication/json
object
error
required
string
message
required
string

Example

{
"error": "not_found",
"message": "Customer not found"
}

Draft request refused

Media typeapplication/json
object
error
required
string
message
required
string

Example

{
"error": "not_found",
"message": "Customer not found"
}

Draft request refused

Media typeapplication/json
object
error
required
string
message
required
string

Example

{
"error": "not_found",
"message": "Customer not found"
}

Draft request refused

Media typeapplication/json
object
error
required
string
message
required
string

Example

{
"error": "not_found",
"message": "Customer not found"
}

Draft request refused

Media typeapplication/json
object
error
required
string
message
required
string

Example

{
"error": "not_found",
"message": "Customer not found"
}