Skip to content

Review exact customer and order totals without creating live records

POST
/entry-drafts/{id}/review
curl --request POST \
--url https://example.com/entry-drafts/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/review \
--header 'Content-Type: application/json' \
--cookie __Host-bottle.session_token=<__Host-bottle.session_token> \
--data '{ "version": 1 }'
id
required
string format: uuid
Media typeapplication/json
object
version
required
integer
> 0

Example generated

{
"version": 1
}

Shared draft

Media typeapplication/json
object
id
required
string format: uuid
title
required
string
readyToReview
required
boolean
version
required
integer
status
required
string
Allowed values: draft accepted discarded
proposal
required
object
customer
required
object
tradingName
string
>= 1 characters <= 160 characters
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
invoiceSchedule
One of:
object
mode
required
string
Allowed values: business
legalName
string | null
<= 200 characters
contactName
string | null
<= 200 characters
email
string | null format: email
phone
string | null
/^\+?[\d\s()-]{7,20}$/
notes
string | null
<= 2000 characters
accountNumber
string | null
>= 1 characters <= 30 characters /^[\p{L}\p{N}][\p{L}\p{N} ./-]*$/u/
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
deliveryAddressId

UUID v7

string format: uuid
deliverToName
string | null
<= 200 characters
deliverToAddress
string | null
<= 2000 characters
deliveryOptionId

UUID v7

string format: uuid
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
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
quantity
required
integer
> 0 <= 1000
returnsConfirmed
required
boolean
totalOverridePence
integer
<= 100000000
messages
required
Array<object>
object
role
required
string
Allowed values: user assistant
content
required
string
>= 1 characters <= 8000 characters
review
required
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
customerId
required
string | null format: uuid
orderId
required
string | null format: uuid
createdAt
required
string format: date-time
updatedAt
required
string format: date-time

Example

{
"status": "draft",
"proposal": {
"customer": {
"tradingName": "Camden Lock Grill",
"paymentTerms": "prepaid",
"preferredLocale": "en-GB",
"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",
"accountNumber": "BTL00313",
"address": {
"leaveInstruction": "none"
}
},
"order": {
"customerId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"deliveryAddressId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"deliveryOptionId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"paymentMethod": "on_account",
"billingOwner": "bottle",
"fulfilment": "delivery",
"pricingAudience": "consumer",
"surchargeChoice": "usual",
"lines": [
{
"productId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f"
}
],
"collect": [
{
"productId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f"
}
]
}
},
"messages": [
{
"role": "user"
}
]
}

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"
}