Skip to content

Send a payment link

POST
/orders/{id}/payment-link
curl --request POST \
--url https://example.com/orders/019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f/payment-link \
--cookie bottle.session_token=<bottle.session_token>

A hosted page on the business’s own Stripe account, for the amount including VAT. The customer is emailed it straight away, and the order says it is awaiting payment until Stripe says it was paid. Call again to send it again. An order paid by link is not planned onto a round until it is paid.

id
required

UUID v7

string format: uuid
Example
019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f

UUID v7

Sent

Media typeapplication/json
object
id
required

UUID v7

string format: uuid
customerId
required

UUID v7

string | null format: uuid
customerName
required
string | null
deliveryAddressId
required

UUID v7

string | null format: uuid
deliverToName
required
string | null
deliverToAddress
required
string | null
location
required
object
latitude
required
number
>= -90 <= 90
longitude
required
number
>= -180 <= 180
roundId
required

UUID v7

string | null format: uuid
status
required
string
Allowed values: placed delivered cancelled
fulfilment
required

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
source
required
string
externalRef
required
string | null
trackingRef
required
string
leaveInstruction
required
string | null
Allowed values: none neighbour safe_place
leaveDetail
required
string | null
deliveryOptionId
required

UUID v7

string | null format: uuid
deliveryOptionName
required
string | null
expectedFrom
required
string | null format: date
expectedTo
required
string | null format: date
deliveryChargePence
required
integer
paymentMethod
required

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
wantedOn
required
string | null format: date
notes
required
string | null
lines
required
Array<object>
object
id
required

UUID v7

string format: uuid
productId
required

UUID v7

string format: uuid
productName
required
string
quantity
required
integer
> 0
unitPrice
required

Pence, excluding VAT.

integer
total
required
integer
deliveredQuantity
required
integer
cancelledQuantity
required
integer
collect
required
Array<object>
object
productId
required

UUID v7

string format: uuid
productName
required
string
quantity
required
integer
> 0
total
required
integer
refundDue
required
integer
refundSettledAt
required
string | null format: date-time
paidAt
required
string | null format: date-time
paidVia
required
string | null
Allowed values: stripe office shop cash
paymentLink
required
string | null format: uri
invoice
required
object
id
required

UUID v7

string format: uuid
number
required
string
status
required
string
Allowed values: sent paid void
canEmailPaymentLink
required
boolean
paymentRequestedAt
required
string | null format: date-time
deliveredAt
required
string | null format: date-time
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
Example
{
"id": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"customerId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"deliveryAddressId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"roundId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"status": "placed",
"fulfilment": "delivery",
"source": "office",
"trackingRef": "7K3M9QWXZ2",
"leaveInstruction": "none",
"deliveryOptionId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"paymentMethod": "on_account",
"lines": [
{
"id": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"productId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"productName": "19kg propane"
}
],
"collect": [
{
"productId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"productName": "19kg propane"
}
],
"paidVia": "stripe",
"invoice": {
"id": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"number": "INV-BTL00042",
"status": "sent"
}
}

Not signed in

Media typeapplication/json
object
error
required
string
message
required
string
Example
{
"error": "not_found",
"message": "Customer not found"
}

Not a member, or without the permission this needs

Media typeapplication/json
object
error
required
string
message
required
string
Example
{
"error": "not_found",
"message": "Customer not found"
}

Not found

Media typeapplication/json
object
error
required
string
message
required
string
Example
{
"error": "not_found",
"message": "Customer not found"
}

Already paid, or the business cannot take payment yet

Media typeapplication/json
object
error
required
string
message
required
string
Example
{
"error": "not_found",
"message": "Customer not found"
}

Validation failed, or a line names something not sold

Media typeapplication/json
object
error
required
string
Allowed values: validation
message
required
string
issues
required
Array<object>
object
path
required
string
message
required
string
Example
{
"error": "validation",
"issues": [
{
"path": "email",
"message": "Invalid email"
}
]
}

Payments are not configured on this installation

Media typeapplication/json
object
error
required
string
message
required
string
Example
{
"error": "not_found",
"message": "Customer not found"
}