API reference
Invoicing
35 requests. Each shows the permission a key needs, what to send and what comes back.
On this page
A client's billing: how often, on what basis, when its next period starts, and its dated fixed amounts
GET/v1/clients/{id}/billing
- Permission
invoice.view- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Response object
clientIduuidrequiredbillingFrequencyenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"billingBasisenumrequiredcan be nullOne of
"bookings","fixed"effectiveFrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"effectiveBasisenumrequiredOne of
"bookings","fixed"nextPeriodStartdaterequiredcan be nullYYYY-MM-DD
billingCycleEnddaterequiredcan be nullYYYY-MM-DD
nextPeriodobjectrequiredcan be nullstartdaterequiredYYYY-MM-DD
enddaterequiredYYYY-MM-DD
fixedAmountsarray of objectrequirediduuidrequiredeffectiveFromdaterequiredYYYY-MM-DD
amountPenceintegerrequired-9007199254740991 to 9007199254740991
notestringrequiredcan be nullcreatedAtstringrequired
listCoveredVisitsbooleanrequired
curl "https://app.workscope.co.uk/v1/clients/ID/billing" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"billingFrequency": "weekly",
"billingBasis": "bookings",
"effectiveFrequency": "weekly",
"effectiveBasis": "bookings",
"nextPeriodStart": "2026-11-06",
"billingCycleEnd": "2026-11-06",
"nextPeriod": {
"start": "2026-11-06",
"end": "2026-11-06"
},
"fixedAmounts": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"effectiveFrom": "2026-11-06",
"amountPence": 4500,
"note": "Side gate code is on the key safe.",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"listCoveredVisits": false
}Change how a client is billed (null: the company's) and when its next period starts
PATCH/v1/clients/{id}/billing
- Permission
invoice.manage- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
billingFrequencyenumoptionalcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"billingBasisenumoptionalcan be nullOne of
"bookings","fixed"nextPeriodStartdateoptionalcan be nullYYYY-MM-DD
billingCycleEnddateoptionalcan be nullYYYY-MM-DD
listCoveredVisitsbooleanoptional
Response object
clientIduuidrequiredbillingFrequencyenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"billingBasisenumrequiredcan be nullOne of
"bookings","fixed"effectiveFrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"effectiveBasisenumrequiredOne of
"bookings","fixed"nextPeriodStartdaterequiredcan be nullYYYY-MM-DD
billingCycleEnddaterequiredcan be nullYYYY-MM-DD
nextPeriodobjectrequiredcan be nullstartdaterequiredYYYY-MM-DD
enddaterequiredYYYY-MM-DD
fixedAmountsarray of objectrequirediduuidrequiredeffectiveFromdaterequiredYYYY-MM-DD
amountPenceintegerrequired-9007199254740991 to 9007199254740991
notestringrequiredcan be nullcreatedAtstringrequired
listCoveredVisitsbooleanrequired
curl -X PATCH "https://app.workscope.co.uk/v1/clients/ID/billing" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"billingFrequency": "weekly",
"billingBasis": "bookings",
"nextPeriodStart": "2026-11-06",
"billingCycleEnd": "2026-11-06",
"listCoveredVisits": false
}'Example response
{
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"billingFrequency": "weekly",
"billingBasis": "bookings",
"effectiveFrequency": "weekly",
"effectiveBasis": "bookings",
"nextPeriodStart": "2026-11-06",
"billingCycleEnd": "2026-11-06",
"nextPeriod": {
"start": "2026-11-06",
"end": "2026-11-06"
},
"fixedAmounts": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"effectiveFrom": "2026-11-06",
"amountPence": 4500,
"note": "Side gate code is on the key safe.",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"listCoveredVisits": false
}Add a fixed amount a period from a day (replacing one from the same day)
POST/v1/clients/{id}/billing/amounts
- Permission
invoice.manage- Module
invoicing- Answers
201
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
effectiveFromdaterequiredYYYY-MM-DD
amountPenceintegerrequired0 to 100000000
notestringoptionalcan be nullUp to 500 characters
Response object
clientIduuidrequiredbillingFrequencyenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"billingBasisenumrequiredcan be nullOne of
"bookings","fixed"effectiveFrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"effectiveBasisenumrequiredOne of
"bookings","fixed"nextPeriodStartdaterequiredcan be nullYYYY-MM-DD
billingCycleEnddaterequiredcan be nullYYYY-MM-DD
nextPeriodobjectrequiredcan be nullstartdaterequiredYYYY-MM-DD
enddaterequiredYYYY-MM-DD
fixedAmountsarray of objectrequirediduuidrequiredeffectiveFromdaterequiredYYYY-MM-DD
amountPenceintegerrequired-9007199254740991 to 9007199254740991
notestringrequiredcan be nullcreatedAtstringrequired
listCoveredVisitsbooleanrequired
curl -X POST "https://app.workscope.co.uk/v1/clients/ID/billing/amounts" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"effectiveFrom": "2026-11-06",
"amountPence": 4500,
"note": "Side gate code is on the key safe."
}'Example response
{
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"billingFrequency": "weekly",
"billingBasis": "bookings",
"effectiveFrequency": "weekly",
"effectiveBasis": "bookings",
"nextPeriodStart": "2026-11-06",
"billingCycleEnd": "2026-11-06",
"nextPeriod": {
"start": "2026-11-06",
"end": "2026-11-06"
},
"fixedAmounts": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"effectiveFrom": "2026-11-06",
"amountPence": 4500,
"note": "Side gate code is on the key safe.",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"listCoveredVisits": false
}Remove a fixed amount (issued invoices keep what they were)
DELETE/v1/clients/{id}/billing/amounts/{amountId}
- Permission
invoice.manage- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired | |
amountId | path | uuidrequired |
Response object
clientIduuidrequiredbillingFrequencyenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"billingBasisenumrequiredcan be nullOne of
"bookings","fixed"effectiveFrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"effectiveBasisenumrequiredOne of
"bookings","fixed"nextPeriodStartdaterequiredcan be nullYYYY-MM-DD
billingCycleEnddaterequiredcan be nullYYYY-MM-DD
nextPeriodobjectrequiredcan be nullstartdaterequiredYYYY-MM-DD
enddaterequiredYYYY-MM-DD
fixedAmountsarray of objectrequirediduuidrequiredeffectiveFromdaterequiredYYYY-MM-DD
amountPenceintegerrequired-9007199254740991 to 9007199254740991
notestringrequiredcan be nullcreatedAtstringrequired
listCoveredVisitsbooleanrequired
curl -X DELETE "https://app.workscope.co.uk/v1/clients/ID/billing/amounts/ID" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"billingFrequency": "weekly",
"billingBasis": "bookings",
"effectiveFrequency": "weekly",
"effectiveBasis": "bookings",
"nextPeriodStart": "2026-11-06",
"billingCycleEnd": "2026-11-06",
"nextPeriod": {
"start": "2026-11-06",
"end": "2026-11-06"
},
"fixedAmounts": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"effectiveFrom": "2026-11-06",
"amountPence": 4500,
"note": "Side gate code is on the key safe.",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"listCoveredVisits": false
}Invoices, newest first
GET/v1/invoices
- Permission
invoice.view- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
status | query | enum | One of draft, issued, paid, void |
clientId | query | uuid | |
frequency | query | enum | One of weekly, fortnightly, four_weekly, monthly, quarterly, ad_hoc |
from | query | date | |
to | query | date |
Response array of object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","paid","void"clientIduuidrequiredclientNamestringrequiredfrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"basisenumrequiredOne of
"bookings","fixed"periodStartdaterequiredYYYY-MM-DD
periodEnddaterequiredYYYY-MM-DD
manualbooleanrequiredDefault
falseprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullDefault
nullissueDatedaterequiredcan be nullYYYY-MM-DD
dueDatedaterequiredcan be nullYYYY-MM-DD
paidOndaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricesintegerrequired-9007199254740991 to 9007199254740991
bookingsintegerrequired-9007199254740991 to 9007199254740991
coveredBookingsintegerrequired-9007199254740991 to 9007199254740991
lateBookingsintegerrequired-9007199254740991 to 9007199254740991
bookedPenceintegerrequired-9007199254740991 to 9007199254740991
fixedPenceintegerrequired-9007199254740991 to 9007199254740991
manualPenceintegerrequired-9007199254740991 to 9007199254740991
missingAcceptedbooleanrequirednotesstringrequiredcan be nullvoidReasonstringrequiredcan be nullcreditedPenceintegerrequired-9007199254740991 to 9007199254740991
amountDuePenceintegerrequired-9007199254740991 to 9007199254740991
calculatedAtstringrequiredcan be nullcreatedAtstringrequired
curl "https://app.workscope.co.uk/v1/invoices" \
-H "Authorization: Bearer wsk_your_key_here"Example response
[
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"frequency": "weekly",
"basis": "bookings",
"periodStart": "2026-11-06",
"periodEnd": "2026-11-06",
"manual": false,
"projectId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"projectName": "1 Harbour Road",
"issueDate": "2026-11-06",
"dueDate": "2026-11-06",
"paidOn": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"missingPrices": -9007199254740991,
"bookings": -9007199254740991,
"coveredBookings": -9007199254740991,
"lateBookings": 51.4545,
"bookedPence": 4500,
"fixedPence": 4500,
"manualPence": 4500,
"missingAccepted": false,
"notes": "Side gate code is on the key safe.",
"voidReason": "text",
"creditedPence": 4500,
"amountDuePence": 4500,
"calculatedAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z"
}
]Start an invoice for a client and period (a draft, worked out straight away)
POST/v1/invoices
- Permission
invoice.manage- Module
invoicing- Answers
201
Request body JSON
clientIduuidrequiredperiodStartdaterequiredYYYY-MM-DD
periodEnddateoptionalYYYY-MM-DD
notesstringoptionalcan be nullUp to 2000 characters
chargeIdsarray of uuidoptionalUp to 500 items · Default
[]manualbooleanoptionalDefault
falsebookingIdsarray of uuidoptionalUp to 500 items · Default
[]projectIduuidoptionalcan be null
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","paid","void"clientIduuidrequiredclientNamestringrequiredfrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"basisenumrequiredOne of
"bookings","fixed"periodStartdaterequiredYYYY-MM-DD
periodEnddaterequiredYYYY-MM-DD
manualbooleanrequiredDefault
falseprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullDefault
nullissueDatedaterequiredcan be nullYYYY-MM-DD
dueDatedaterequiredcan be nullYYYY-MM-DD
paidOndaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricesintegerrequired-9007199254740991 to 9007199254740991
bookingsintegerrequired-9007199254740991 to 9007199254740991
coveredBookingsintegerrequired-9007199254740991 to 9007199254740991
lateBookingsintegerrequired-9007199254740991 to 9007199254740991
bookedPenceintegerrequired-9007199254740991 to 9007199254740991
fixedPenceintegerrequired-9007199254740991 to 9007199254740991
manualPenceintegerrequired-9007199254740991 to 9007199254740991
missingAcceptedbooleanrequirednotesstringrequiredcan be nullvoidReasonstringrequiredcan be nullcreditedPenceintegerrequired-9007199254740991 to 9007199254740991
amountDuePenceintegerrequired-9007199254740991 to 9007199254740991
calculatedAtstringrequiredcan be nullcreatedAtstringrequiredlinesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"booking","fixed","manual","product"descriptionstringrequireddatedaterequiredcan be nullYYYY-MM-DD
projectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullquantitynumberrequiredunitPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatRateBpintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricebooleanrequiredlatebooleanrequiredcoveredbooleanrequiredbookingIduuidrequiredcan be nullchargeIduuidoptionalcan be nullchargePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
vatRateOverrideBpintegerrequiredcan be null-9007199254740991 to 9007199254740991
photoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0hiddenPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0unsignedPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0
historyarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","issued","paid","voided","line_added","line_changed","line_removed","missing_accepted","notes","credit_raised","credit_issued","credit_voided","credit_deleted","refunded","refund_removed"byNamestringrequiredcan be nullatstringrequiredreasonstringrequiredcan be nullsummarystringrequiredcan be null
issueBlockerstringrequiredcan be nullunsignedBookingsintegerrequired-9007199254740991 to 9007199254740991 · Default
0listCoveredVisitsbooleanrequiredDefault
truefromobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be nullwebsitestringrequiredcan be nullcompanyNumberstringrequiredcan be nullvatNumberstringrequiredcan be nullpaymentDetailsstringrequiredcan be nullhasLogobooleanrequired
toobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be null
vatRegisteredbooleanrequiredtermsstringrequiredcan be nullincludePhotosbooleanrequiredDefault
falsephotosarray of objectrequiredDefault
[]bookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullnamestringrequiredprojectNamestringrequiredcan be nullteamMemberNamestringrequiredcan be nullphotosarray of objectrequirediduuidrequiredcaptionstringrequiredcan be nullwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
creditsarray of objectrequirediduuidrequiredinvoiceIduuidrequiredinvoiceReferencestringrequiredcan be nullclientIduuidrequiredclientNamestringrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","void"kindenumrequiredOne of
"whole","lines","amount"reasonstringrequiredissueDatedaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
uninvoiceBookingsbooleanrequiredvoidReasonstringrequiredcan be nullcreatedAtstringrequired
refundsarray of objectrequirediduuidrequiredamountPenceintegerrequired-9007199254740991 to 9007199254740991
refundedOndaterequiredYYYY-MM-DD
methodstringrequiredcan be nullnotestringrequiredcan be nullbyNamestringrequiredcan be nullcreatedAtstringrequired
refundedPenceintegerrequired-9007199254740991 to 9007199254740991
refundDuePenceintegerrequired-9007199254740991 to 9007199254740991
creditLeftPenceintegerrequired-9007199254740991 to 9007199254740991
creditableLinesarray of objectrequiredinvoiceLineIduuidrequireddescriptionstringrequiredvatRateBpintegerrequired-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
remainingNetPenceintegerrequired-9007199254740991 to 9007199254740991
remainingVatPenceintegerrequired-9007199254740991 to 9007199254740991
curl -X POST "https://app.workscope.co.uk/v1/invoices" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"periodStart": "2026-11-06",
"periodEnd": "2026-11-06",
"notes": "Side gate code is on the key safe.",
"chargeIds": [
"8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f"
],
"manual": false,
"bookingIds": [
"b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918"
],
"projectId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"frequency": "weekly",
"basis": "bookings",
"periodStart": "2026-11-06",
"periodEnd": "2026-11-06",
"manual": false,
"projectId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"projectName": "1 Harbour Road",
"issueDate": "2026-11-06",
"dueDate": "2026-11-06",
"paidOn": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"missingPrices": -9007199254740991,
"bookings": -9007199254740991,
"coveredBookings": -9007199254740991,
"lateBookings": 51.4545,
"bookedPence": 4500,
"fixedPence": 4500,
"manualPence": 4500,
"missingAccepted": false,
"notes": "Side gate code is on the key safe.",
"voidReason": "text",
"creditedPence": 4500,
"amountDuePence": 4500,
"calculatedAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "booking",
"description": "Side gate code is on the key safe.",
"date": "2026-11-06",
"projectId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"projectName": "1 Harbour Road",
"quantity": 1,
"unitPence": 4500,
"netPence": 4500,
"vatRateBp": 1207,
"vatPence": 4500,
"missingPrice": false,
"late": false,
"covered": false,
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"chargeId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"chargePence": 4500,
"vatRateOverrideBp": 1207,
"photoCount": 0,
"hiddenPhotoCount": 0,
"unsignedPhotoCount": 0
}
],
"history": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"byName": "Harbourside Dental",
"at": "2026-11-06T09:30:00.000Z",
"reason": "text",
"summary": "text"
}
],
"issueBlocker": "text",
"unsignedBookings": 0,
"listCoveredVisits": true,
"from": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"website": "https://example.co.uk",
"companyNumber": "text",
"vatNumber": "text",
"paymentDetails": "Side gate code is on the key safe.",
"hasLogo": false
},
"to": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123"
},
"vatRegistered": false,
"terms": "text",
"includePhotos": false,
"photos": [
{
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"name": "Harbourside Dental",
"projectName": "1 Harbour Road",
"teamMemberName": "Sam Hart",
"photos": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"caption": "text",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
]
}
],
"credits": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"invoiceId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"invoiceReference": "INV-0042",
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"clientName": "Harbourside Dental",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"kind": "whole",
"reason": "text",
"issueDate": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"uninvoiceBookings": false,
"voidReason": "text",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refunds": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"amountPence": 4500,
"refundedOn": "2026-11-06",
"method": "text",
"note": "Side gate code is on the key safe.",
"byName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refundedPence": 4500,
"refundDuePence": 4500,
"creditLeftPence": 4500,
"creditableLines": [
{
"invoiceLineId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"description": "Side gate code is on the key safe.",
"vatRateBp": 1207,
"netPence": 4500,
"vatPence": 4500,
"remainingNetPence": 4500,
"remainingVatPence": 4500
}
]
}One invoice: its lines, totals, history, and who it is from and to
GET/v1/invoices/{id}
- Permission
invoice.view- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","paid","void"clientIduuidrequiredclientNamestringrequiredfrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"basisenumrequiredOne of
"bookings","fixed"periodStartdaterequiredYYYY-MM-DD
periodEnddaterequiredYYYY-MM-DD
manualbooleanrequiredDefault
falseprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullDefault
nullissueDatedaterequiredcan be nullYYYY-MM-DD
dueDatedaterequiredcan be nullYYYY-MM-DD
paidOndaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricesintegerrequired-9007199254740991 to 9007199254740991
bookingsintegerrequired-9007199254740991 to 9007199254740991
coveredBookingsintegerrequired-9007199254740991 to 9007199254740991
lateBookingsintegerrequired-9007199254740991 to 9007199254740991
bookedPenceintegerrequired-9007199254740991 to 9007199254740991
fixedPenceintegerrequired-9007199254740991 to 9007199254740991
manualPenceintegerrequired-9007199254740991 to 9007199254740991
missingAcceptedbooleanrequirednotesstringrequiredcan be nullvoidReasonstringrequiredcan be nullcreditedPenceintegerrequired-9007199254740991 to 9007199254740991
amountDuePenceintegerrequired-9007199254740991 to 9007199254740991
calculatedAtstringrequiredcan be nullcreatedAtstringrequiredlinesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"booking","fixed","manual","product"descriptionstringrequireddatedaterequiredcan be nullYYYY-MM-DD
projectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullquantitynumberrequiredunitPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatRateBpintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricebooleanrequiredlatebooleanrequiredcoveredbooleanrequiredbookingIduuidrequiredcan be nullchargeIduuidoptionalcan be nullchargePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
vatRateOverrideBpintegerrequiredcan be null-9007199254740991 to 9007199254740991
photoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0hiddenPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0unsignedPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0
historyarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","issued","paid","voided","line_added","line_changed","line_removed","missing_accepted","notes","credit_raised","credit_issued","credit_voided","credit_deleted","refunded","refund_removed"byNamestringrequiredcan be nullatstringrequiredreasonstringrequiredcan be nullsummarystringrequiredcan be null
issueBlockerstringrequiredcan be nullunsignedBookingsintegerrequired-9007199254740991 to 9007199254740991 · Default
0listCoveredVisitsbooleanrequiredDefault
truefromobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be nullwebsitestringrequiredcan be nullcompanyNumberstringrequiredcan be nullvatNumberstringrequiredcan be nullpaymentDetailsstringrequiredcan be nullhasLogobooleanrequired
toobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be null
vatRegisteredbooleanrequiredtermsstringrequiredcan be nullincludePhotosbooleanrequiredDefault
falsephotosarray of objectrequiredDefault
[]bookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullnamestringrequiredprojectNamestringrequiredcan be nullteamMemberNamestringrequiredcan be nullphotosarray of objectrequirediduuidrequiredcaptionstringrequiredcan be nullwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
creditsarray of objectrequirediduuidrequiredinvoiceIduuidrequiredinvoiceReferencestringrequiredcan be nullclientIduuidrequiredclientNamestringrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","void"kindenumrequiredOne of
"whole","lines","amount"reasonstringrequiredissueDatedaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
uninvoiceBookingsbooleanrequiredvoidReasonstringrequiredcan be nullcreatedAtstringrequired
refundsarray of objectrequirediduuidrequiredamountPenceintegerrequired-9007199254740991 to 9007199254740991
refundedOndaterequiredYYYY-MM-DD
methodstringrequiredcan be nullnotestringrequiredcan be nullbyNamestringrequiredcan be nullcreatedAtstringrequired
refundedPenceintegerrequired-9007199254740991 to 9007199254740991
refundDuePenceintegerrequired-9007199254740991 to 9007199254740991
creditLeftPenceintegerrequired-9007199254740991 to 9007199254740991
creditableLinesarray of objectrequiredinvoiceLineIduuidrequireddescriptionstringrequiredvatRateBpintegerrequired-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
remainingNetPenceintegerrequired-9007199254740991 to 9007199254740991
remainingVatPenceintegerrequired-9007199254740991 to 9007199254740991
curl "https://app.workscope.co.uk/v1/invoices/ID" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"frequency": "weekly",
"basis": "bookings",
"periodStart": "2026-11-06",
"periodEnd": "2026-11-06",
"manual": false,
"projectId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"projectName": "1 Harbour Road",
"issueDate": "2026-11-06",
"dueDate": "2026-11-06",
"paidOn": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"missingPrices": -9007199254740991,
"bookings": -9007199254740991,
"coveredBookings": -9007199254740991,
"lateBookings": 51.4545,
"bookedPence": 4500,
"fixedPence": 4500,
"manualPence": 4500,
"missingAccepted": false,
"notes": "Side gate code is on the key safe.",
"voidReason": "text",
"creditedPence": 4500,
"amountDuePence": 4500,
"calculatedAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "booking",
"description": "Side gate code is on the key safe.",
"date": "2026-11-06",
"projectId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"projectName": "1 Harbour Road",
"quantity": 1,
"unitPence": 4500,
"netPence": 4500,
"vatRateBp": 1207,
"vatPence": 4500,
"missingPrice": false,
"late": false,
"covered": false,
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"chargeId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"chargePence": 4500,
"vatRateOverrideBp": 1207,
"photoCount": 0,
"hiddenPhotoCount": 0,
"unsignedPhotoCount": 0
}
],
"history": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"byName": "Harbourside Dental",
"at": "2026-11-06T09:30:00.000Z",
"reason": "text",
"summary": "text"
}
],
"issueBlocker": "text",
"unsignedBookings": 0,
"listCoveredVisits": true,
"from": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"website": "https://example.co.uk",
"companyNumber": "text",
"vatNumber": "text",
"paymentDetails": "Side gate code is on the key safe.",
"hasLogo": false
},
"to": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123"
},
"vatRegistered": false,
"terms": "text",
"includePhotos": false,
"photos": [
{
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"name": "Harbourside Dental",
"projectName": "1 Harbour Road",
"teamMemberName": "Sam Hart",
"photos": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"caption": "text",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
]
}
],
"credits": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"invoiceId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"invoiceReference": "INV-0042",
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"clientName": "Harbourside Dental",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"kind": "whole",
"reason": "text",
"issueDate": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"uninvoiceBookings": false,
"voidReason": "text",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refunds": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"amountPence": 4500,
"refundedOn": "2026-11-06",
"method": "text",
"note": "Side gate code is on the key safe.",
"byName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refundedPence": 4500,
"refundDuePence": 4500,
"creditLeftPence": 4500,
"creditableLines": [
{
"invoiceLineId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"description": "Side gate code is on the key safe.",
"vatRateBp": 1207,
"netPence": 4500,
"vatPence": 4500,
"remainingNetPence": 4500,
"remainingVatPence": 4500
}
]
}Change an invoice's notes
PATCH/v1/invoices/{id}
- Permission
invoice.manage- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
notesstringoptionalcan be nullUp to 2000 characters
termsstringoptionalcan be nullUp to 5000 characters
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","paid","void"clientIduuidrequiredclientNamestringrequiredfrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"basisenumrequiredOne of
"bookings","fixed"periodStartdaterequiredYYYY-MM-DD
periodEnddaterequiredYYYY-MM-DD
manualbooleanrequiredDefault
falseprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullDefault
nullissueDatedaterequiredcan be nullYYYY-MM-DD
dueDatedaterequiredcan be nullYYYY-MM-DD
paidOndaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricesintegerrequired-9007199254740991 to 9007199254740991
bookingsintegerrequired-9007199254740991 to 9007199254740991
coveredBookingsintegerrequired-9007199254740991 to 9007199254740991
lateBookingsintegerrequired-9007199254740991 to 9007199254740991
bookedPenceintegerrequired-9007199254740991 to 9007199254740991
fixedPenceintegerrequired-9007199254740991 to 9007199254740991
manualPenceintegerrequired-9007199254740991 to 9007199254740991
missingAcceptedbooleanrequirednotesstringrequiredcan be nullvoidReasonstringrequiredcan be nullcreditedPenceintegerrequired-9007199254740991 to 9007199254740991
amountDuePenceintegerrequired-9007199254740991 to 9007199254740991
calculatedAtstringrequiredcan be nullcreatedAtstringrequiredlinesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"booking","fixed","manual","product"descriptionstringrequireddatedaterequiredcan be nullYYYY-MM-DD
projectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullquantitynumberrequiredunitPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatRateBpintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricebooleanrequiredlatebooleanrequiredcoveredbooleanrequiredbookingIduuidrequiredcan be nullchargeIduuidoptionalcan be nullchargePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
vatRateOverrideBpintegerrequiredcan be null-9007199254740991 to 9007199254740991
photoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0hiddenPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0unsignedPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0
historyarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","issued","paid","voided","line_added","line_changed","line_removed","missing_accepted","notes","credit_raised","credit_issued","credit_voided","credit_deleted","refunded","refund_removed"byNamestringrequiredcan be nullatstringrequiredreasonstringrequiredcan be nullsummarystringrequiredcan be null
issueBlockerstringrequiredcan be nullunsignedBookingsintegerrequired-9007199254740991 to 9007199254740991 · Default
0listCoveredVisitsbooleanrequiredDefault
truefromobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be nullwebsitestringrequiredcan be nullcompanyNumberstringrequiredcan be nullvatNumberstringrequiredcan be nullpaymentDetailsstringrequiredcan be nullhasLogobooleanrequired
toobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be null
vatRegisteredbooleanrequiredtermsstringrequiredcan be nullincludePhotosbooleanrequiredDefault
falsephotosarray of objectrequiredDefault
[]bookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullnamestringrequiredprojectNamestringrequiredcan be nullteamMemberNamestringrequiredcan be nullphotosarray of objectrequirediduuidrequiredcaptionstringrequiredcan be nullwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
creditsarray of objectrequirediduuidrequiredinvoiceIduuidrequiredinvoiceReferencestringrequiredcan be nullclientIduuidrequiredclientNamestringrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","void"kindenumrequiredOne of
"whole","lines","amount"reasonstringrequiredissueDatedaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
uninvoiceBookingsbooleanrequiredvoidReasonstringrequiredcan be nullcreatedAtstringrequired
refundsarray of objectrequirediduuidrequiredamountPenceintegerrequired-9007199254740991 to 9007199254740991
refundedOndaterequiredYYYY-MM-DD
methodstringrequiredcan be nullnotestringrequiredcan be nullbyNamestringrequiredcan be nullcreatedAtstringrequired
refundedPenceintegerrequired-9007199254740991 to 9007199254740991
refundDuePenceintegerrequired-9007199254740991 to 9007199254740991
creditLeftPenceintegerrequired-9007199254740991 to 9007199254740991
creditableLinesarray of objectrequiredinvoiceLineIduuidrequireddescriptionstringrequiredvatRateBpintegerrequired-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
remainingNetPenceintegerrequired-9007199254740991 to 9007199254740991
remainingVatPenceintegerrequired-9007199254740991 to 9007199254740991
curl -X PATCH "https://app.workscope.co.uk/v1/invoices/ID" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"notes": "Side gate code is on the key safe.",
"terms": "text"
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"frequency": "weekly",
"basis": "bookings",
"periodStart": "2026-11-06",
"periodEnd": "2026-11-06",
"manual": false,
"projectId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"projectName": "1 Harbour Road",
"issueDate": "2026-11-06",
"dueDate": "2026-11-06",
"paidOn": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"missingPrices": -9007199254740991,
"bookings": -9007199254740991,
"coveredBookings": -9007199254740991,
"lateBookings": 51.4545,
"bookedPence": 4500,
"fixedPence": 4500,
"manualPence": 4500,
"missingAccepted": false,
"notes": "Side gate code is on the key safe.",
"voidReason": "text",
"creditedPence": 4500,
"amountDuePence": 4500,
"calculatedAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "booking",
"description": "Side gate code is on the key safe.",
"date": "2026-11-06",
"projectId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"projectName": "1 Harbour Road",
"quantity": 1,
"unitPence": 4500,
"netPence": 4500,
"vatRateBp": 1207,
"vatPence": 4500,
"missingPrice": false,
"late": false,
"covered": false,
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"chargeId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"chargePence": 4500,
"vatRateOverrideBp": 1207,
"photoCount": 0,
"hiddenPhotoCount": 0,
"unsignedPhotoCount": 0
}
],
"history": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"byName": "Harbourside Dental",
"at": "2026-11-06T09:30:00.000Z",
"reason": "text",
"summary": "text"
}
],
"issueBlocker": "text",
"unsignedBookings": 0,
"listCoveredVisits": true,
"from": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"website": "https://example.co.uk",
"companyNumber": "text",
"vatNumber": "text",
"paymentDetails": "Side gate code is on the key safe.",
"hasLogo": false
},
"to": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123"
},
"vatRegistered": false,
"terms": "text",
"includePhotos": false,
"photos": [
{
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"name": "Harbourside Dental",
"projectName": "1 Harbour Road",
"teamMemberName": "Sam Hart",
"photos": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"caption": "text",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
]
}
],
"credits": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"invoiceId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"invoiceReference": "INV-0042",
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"clientName": "Harbourside Dental",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"kind": "whole",
"reason": "text",
"issueDate": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"uninvoiceBookings": false,
"voidReason": "text",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refunds": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"amountPence": 4500,
"refundedOn": "2026-11-06",
"method": "text",
"note": "Side gate code is on the key safe.",
"byName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refundedPence": 4500,
"refundDuePence": 4500,
"creditLeftPence": 4500,
"creditableLines": [
{
"invoiceLineId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"description": "Side gate code is on the key safe.",
"vatRateBp": 1207,
"netPence": 4500,
"vatPence": 4500,
"remainingNetPence": 4500,
"remainingVatPence": 4500
}
]
}Delete a draft invoice (its bookings are free again)
DELETE/v1/invoices/{id}
- Permission
invoice.manage- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Response object
okconstantrequiredAlways
true
curl -X DELETE "https://app.workscope.co.uk/v1/invoices/ID" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"ok": true
}Accept lines with no price as they are (or take that back), so the invoice can be issued
POST/v1/invoices/{id}/accept-missing
- Permission
invoice.manage- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
acceptedbooleanrequired
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","paid","void"clientIduuidrequiredclientNamestringrequiredfrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"basisenumrequiredOne of
"bookings","fixed"periodStartdaterequiredYYYY-MM-DD
periodEnddaterequiredYYYY-MM-DD
manualbooleanrequiredDefault
falseprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullDefault
nullissueDatedaterequiredcan be nullYYYY-MM-DD
dueDatedaterequiredcan be nullYYYY-MM-DD
paidOndaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricesintegerrequired-9007199254740991 to 9007199254740991
bookingsintegerrequired-9007199254740991 to 9007199254740991
coveredBookingsintegerrequired-9007199254740991 to 9007199254740991
lateBookingsintegerrequired-9007199254740991 to 9007199254740991
bookedPenceintegerrequired-9007199254740991 to 9007199254740991
fixedPenceintegerrequired-9007199254740991 to 9007199254740991
manualPenceintegerrequired-9007199254740991 to 9007199254740991
missingAcceptedbooleanrequirednotesstringrequiredcan be nullvoidReasonstringrequiredcan be nullcreditedPenceintegerrequired-9007199254740991 to 9007199254740991
amountDuePenceintegerrequired-9007199254740991 to 9007199254740991
calculatedAtstringrequiredcan be nullcreatedAtstringrequiredlinesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"booking","fixed","manual","product"descriptionstringrequireddatedaterequiredcan be nullYYYY-MM-DD
projectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullquantitynumberrequiredunitPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatRateBpintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricebooleanrequiredlatebooleanrequiredcoveredbooleanrequiredbookingIduuidrequiredcan be nullchargeIduuidoptionalcan be nullchargePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
vatRateOverrideBpintegerrequiredcan be null-9007199254740991 to 9007199254740991
photoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0hiddenPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0unsignedPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0
historyarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","issued","paid","voided","line_added","line_changed","line_removed","missing_accepted","notes","credit_raised","credit_issued","credit_voided","credit_deleted","refunded","refund_removed"byNamestringrequiredcan be nullatstringrequiredreasonstringrequiredcan be nullsummarystringrequiredcan be null
issueBlockerstringrequiredcan be nullunsignedBookingsintegerrequired-9007199254740991 to 9007199254740991 · Default
0listCoveredVisitsbooleanrequiredDefault
truefromobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be nullwebsitestringrequiredcan be nullcompanyNumberstringrequiredcan be nullvatNumberstringrequiredcan be nullpaymentDetailsstringrequiredcan be nullhasLogobooleanrequired
toobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be null
vatRegisteredbooleanrequiredtermsstringrequiredcan be nullincludePhotosbooleanrequiredDefault
falsephotosarray of objectrequiredDefault
[]bookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullnamestringrequiredprojectNamestringrequiredcan be nullteamMemberNamestringrequiredcan be nullphotosarray of objectrequirediduuidrequiredcaptionstringrequiredcan be nullwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
creditsarray of objectrequirediduuidrequiredinvoiceIduuidrequiredinvoiceReferencestringrequiredcan be nullclientIduuidrequiredclientNamestringrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","void"kindenumrequiredOne of
"whole","lines","amount"reasonstringrequiredissueDatedaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
uninvoiceBookingsbooleanrequiredvoidReasonstringrequiredcan be nullcreatedAtstringrequired
refundsarray of objectrequirediduuidrequiredamountPenceintegerrequired-9007199254740991 to 9007199254740991
refundedOndaterequiredYYYY-MM-DD
methodstringrequiredcan be nullnotestringrequiredcan be nullbyNamestringrequiredcan be nullcreatedAtstringrequired
refundedPenceintegerrequired-9007199254740991 to 9007199254740991
refundDuePenceintegerrequired-9007199254740991 to 9007199254740991
creditLeftPenceintegerrequired-9007199254740991 to 9007199254740991
creditableLinesarray of objectrequiredinvoiceLineIduuidrequireddescriptionstringrequiredvatRateBpintegerrequired-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
remainingNetPenceintegerrequired-9007199254740991 to 9007199254740991
remainingVatPenceintegerrequired-9007199254740991 to 9007199254740991
curl -X POST "https://app.workscope.co.uk/v1/invoices/ID/accept-missing" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"accepted": false
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"frequency": "weekly",
"basis": "bookings",
"periodStart": "2026-11-06",
"periodEnd": "2026-11-06",
"manual": false,
"projectId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"projectName": "1 Harbour Road",
"issueDate": "2026-11-06",
"dueDate": "2026-11-06",
"paidOn": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"missingPrices": -9007199254740991,
"bookings": -9007199254740991,
"coveredBookings": -9007199254740991,
"lateBookings": 51.4545,
"bookedPence": 4500,
"fixedPence": 4500,
"manualPence": 4500,
"missingAccepted": false,
"notes": "Side gate code is on the key safe.",
"voidReason": "text",
"creditedPence": 4500,
"amountDuePence": 4500,
"calculatedAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "booking",
"description": "Side gate code is on the key safe.",
"date": "2026-11-06",
"projectId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"projectName": "1 Harbour Road",
"quantity": 1,
"unitPence": 4500,
"netPence": 4500,
"vatRateBp": 1207,
"vatPence": 4500,
"missingPrice": false,
"late": false,
"covered": false,
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"chargeId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"chargePence": 4500,
"vatRateOverrideBp": 1207,
"photoCount": 0,
"hiddenPhotoCount": 0,
"unsignedPhotoCount": 0
}
],
"history": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"byName": "Harbourside Dental",
"at": "2026-11-06T09:30:00.000Z",
"reason": "text",
"summary": "text"
}
],
"issueBlocker": "text",
"unsignedBookings": 0,
"listCoveredVisits": true,
"from": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"website": "https://example.co.uk",
"companyNumber": "text",
"vatNumber": "text",
"paymentDetails": "Side gate code is on the key safe.",
"hasLogo": false
},
"to": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123"
},
"vatRegistered": false,
"terms": "text",
"includePhotos": false,
"photos": [
{
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"name": "Harbourside Dental",
"projectName": "1 Harbour Road",
"teamMemberName": "Sam Hart",
"photos": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"caption": "text",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
]
}
],
"credits": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"invoiceId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"invoiceReference": "INV-0042",
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"clientName": "Harbourside Dental",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"kind": "whole",
"reason": "text",
"issueDate": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"uninvoiceBookings": false,
"voidReason": "text",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refunds": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"amountPence": 4500,
"refundedOn": "2026-11-06",
"method": "text",
"note": "Side gate code is on the key safe.",
"byName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refundedPence": 4500,
"refundDuePence": 4500,
"creditLeftPence": 4500,
"creditableLines": [
{
"invoiceLineId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"description": "Side gate code is on the key safe.",
"vatRateBp": 1207,
"netPence": 4500,
"vatPence": 4500,
"remainingNetPence": 4500,
"remainingVatPence": 4500
}
]
}Put some of the client's finished bookings on a one-off draft (take one off by removing its line)
POST/v1/invoices/{id}/bookings
- Permission
invoice.manage- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
bookingIdsarray of uuidrequired1–500 items
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","paid","void"clientIduuidrequiredclientNamestringrequiredfrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"basisenumrequiredOne of
"bookings","fixed"periodStartdaterequiredYYYY-MM-DD
periodEnddaterequiredYYYY-MM-DD
manualbooleanrequiredDefault
falseprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullDefault
nullissueDatedaterequiredcan be nullYYYY-MM-DD
dueDatedaterequiredcan be nullYYYY-MM-DD
paidOndaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricesintegerrequired-9007199254740991 to 9007199254740991
bookingsintegerrequired-9007199254740991 to 9007199254740991
coveredBookingsintegerrequired-9007199254740991 to 9007199254740991
lateBookingsintegerrequired-9007199254740991 to 9007199254740991
bookedPenceintegerrequired-9007199254740991 to 9007199254740991
fixedPenceintegerrequired-9007199254740991 to 9007199254740991
manualPenceintegerrequired-9007199254740991 to 9007199254740991
missingAcceptedbooleanrequirednotesstringrequiredcan be nullvoidReasonstringrequiredcan be nullcreditedPenceintegerrequired-9007199254740991 to 9007199254740991
amountDuePenceintegerrequired-9007199254740991 to 9007199254740991
calculatedAtstringrequiredcan be nullcreatedAtstringrequiredlinesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"booking","fixed","manual","product"descriptionstringrequireddatedaterequiredcan be nullYYYY-MM-DD
projectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullquantitynumberrequiredunitPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatRateBpintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricebooleanrequiredlatebooleanrequiredcoveredbooleanrequiredbookingIduuidrequiredcan be nullchargeIduuidoptionalcan be nullchargePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
vatRateOverrideBpintegerrequiredcan be null-9007199254740991 to 9007199254740991
photoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0hiddenPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0unsignedPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0
historyarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","issued","paid","voided","line_added","line_changed","line_removed","missing_accepted","notes","credit_raised","credit_issued","credit_voided","credit_deleted","refunded","refund_removed"byNamestringrequiredcan be nullatstringrequiredreasonstringrequiredcan be nullsummarystringrequiredcan be null
issueBlockerstringrequiredcan be nullunsignedBookingsintegerrequired-9007199254740991 to 9007199254740991 · Default
0listCoveredVisitsbooleanrequiredDefault
truefromobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be nullwebsitestringrequiredcan be nullcompanyNumberstringrequiredcan be nullvatNumberstringrequiredcan be nullpaymentDetailsstringrequiredcan be nullhasLogobooleanrequired
toobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be null
vatRegisteredbooleanrequiredtermsstringrequiredcan be nullincludePhotosbooleanrequiredDefault
falsephotosarray of objectrequiredDefault
[]bookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullnamestringrequiredprojectNamestringrequiredcan be nullteamMemberNamestringrequiredcan be nullphotosarray of objectrequirediduuidrequiredcaptionstringrequiredcan be nullwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
creditsarray of objectrequirediduuidrequiredinvoiceIduuidrequiredinvoiceReferencestringrequiredcan be nullclientIduuidrequiredclientNamestringrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","void"kindenumrequiredOne of
"whole","lines","amount"reasonstringrequiredissueDatedaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
uninvoiceBookingsbooleanrequiredvoidReasonstringrequiredcan be nullcreatedAtstringrequired
refundsarray of objectrequirediduuidrequiredamountPenceintegerrequired-9007199254740991 to 9007199254740991
refundedOndaterequiredYYYY-MM-DD
methodstringrequiredcan be nullnotestringrequiredcan be nullbyNamestringrequiredcan be nullcreatedAtstringrequired
refundedPenceintegerrequired-9007199254740991 to 9007199254740991
refundDuePenceintegerrequired-9007199254740991 to 9007199254740991
creditLeftPenceintegerrequired-9007199254740991 to 9007199254740991
creditableLinesarray of objectrequiredinvoiceLineIduuidrequireddescriptionstringrequiredvatRateBpintegerrequired-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
remainingNetPenceintegerrequired-9007199254740991 to 9007199254740991
remainingVatPenceintegerrequired-9007199254740991 to 9007199254740991
curl -X POST "https://app.workscope.co.uk/v1/invoices/ID/bookings" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"bookingIds": [
"3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
]
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"frequency": "weekly",
"basis": "bookings",
"periodStart": "2026-11-06",
"periodEnd": "2026-11-06",
"manual": false,
"projectId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"projectName": "1 Harbour Road",
"issueDate": "2026-11-06",
"dueDate": "2026-11-06",
"paidOn": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"missingPrices": -9007199254740991,
"bookings": -9007199254740991,
"coveredBookings": -9007199254740991,
"lateBookings": 51.4545,
"bookedPence": 4500,
"fixedPence": 4500,
"manualPence": 4500,
"missingAccepted": false,
"notes": "Side gate code is on the key safe.",
"voidReason": "text",
"creditedPence": 4500,
"amountDuePence": 4500,
"calculatedAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "booking",
"description": "Side gate code is on the key safe.",
"date": "2026-11-06",
"projectId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"projectName": "1 Harbour Road",
"quantity": 1,
"unitPence": 4500,
"netPence": 4500,
"vatRateBp": 1207,
"vatPence": 4500,
"missingPrice": false,
"late": false,
"covered": false,
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"chargeId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"chargePence": 4500,
"vatRateOverrideBp": 1207,
"photoCount": 0,
"hiddenPhotoCount": 0,
"unsignedPhotoCount": 0
}
],
"history": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"byName": "Harbourside Dental",
"at": "2026-11-06T09:30:00.000Z",
"reason": "text",
"summary": "text"
}
],
"issueBlocker": "text",
"unsignedBookings": 0,
"listCoveredVisits": true,
"from": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"website": "https://example.co.uk",
"companyNumber": "text",
"vatNumber": "text",
"paymentDetails": "Side gate code is on the key safe.",
"hasLogo": false
},
"to": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123"
},
"vatRegistered": false,
"terms": "text",
"includePhotos": false,
"photos": [
{
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"name": "Harbourside Dental",
"projectName": "1 Harbour Road",
"teamMemberName": "Sam Hart",
"photos": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"caption": "text",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
]
}
],
"credits": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"invoiceId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"invoiceReference": "INV-0042",
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"clientName": "Harbourside Dental",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"kind": "whole",
"reason": "text",
"issueDate": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"uninvoiceBookings": false,
"voidReason": "text",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refunds": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"amountPence": 4500,
"refundedOn": "2026-11-06",
"method": "text",
"note": "Side gate code is on the key safe.",
"byName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refundedPence": 4500,
"refundDuePence": 4500,
"creditLeftPence": 4500,
"creditableLines": [
{
"invoiceLineId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"description": "Side gate code is on the key safe.",
"vatRateBp": 1207,
"netPence": 4500,
"vatPence": 4500,
"remainingNetPence": 4500,
"remainingVatPence": 4500
}
]
}Put some of the client's products and materials on a draft (take one off by removing its line)
POST/v1/invoices/{id}/charges
- Permission
invoice.manage- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
chargeIdsarray of uuidrequired1–500 items
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","paid","void"clientIduuidrequiredclientNamestringrequiredfrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"basisenumrequiredOne of
"bookings","fixed"periodStartdaterequiredYYYY-MM-DD
periodEnddaterequiredYYYY-MM-DD
manualbooleanrequiredDefault
falseprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullDefault
nullissueDatedaterequiredcan be nullYYYY-MM-DD
dueDatedaterequiredcan be nullYYYY-MM-DD
paidOndaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricesintegerrequired-9007199254740991 to 9007199254740991
bookingsintegerrequired-9007199254740991 to 9007199254740991
coveredBookingsintegerrequired-9007199254740991 to 9007199254740991
lateBookingsintegerrequired-9007199254740991 to 9007199254740991
bookedPenceintegerrequired-9007199254740991 to 9007199254740991
fixedPenceintegerrequired-9007199254740991 to 9007199254740991
manualPenceintegerrequired-9007199254740991 to 9007199254740991
missingAcceptedbooleanrequirednotesstringrequiredcan be nullvoidReasonstringrequiredcan be nullcreditedPenceintegerrequired-9007199254740991 to 9007199254740991
amountDuePenceintegerrequired-9007199254740991 to 9007199254740991
calculatedAtstringrequiredcan be nullcreatedAtstringrequiredlinesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"booking","fixed","manual","product"descriptionstringrequireddatedaterequiredcan be nullYYYY-MM-DD
projectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullquantitynumberrequiredunitPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatRateBpintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricebooleanrequiredlatebooleanrequiredcoveredbooleanrequiredbookingIduuidrequiredcan be nullchargeIduuidoptionalcan be nullchargePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
vatRateOverrideBpintegerrequiredcan be null-9007199254740991 to 9007199254740991
photoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0hiddenPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0unsignedPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0
historyarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","issued","paid","voided","line_added","line_changed","line_removed","missing_accepted","notes","credit_raised","credit_issued","credit_voided","credit_deleted","refunded","refund_removed"byNamestringrequiredcan be nullatstringrequiredreasonstringrequiredcan be nullsummarystringrequiredcan be null
issueBlockerstringrequiredcan be nullunsignedBookingsintegerrequired-9007199254740991 to 9007199254740991 · Default
0listCoveredVisitsbooleanrequiredDefault
truefromobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be nullwebsitestringrequiredcan be nullcompanyNumberstringrequiredcan be nullvatNumberstringrequiredcan be nullpaymentDetailsstringrequiredcan be nullhasLogobooleanrequired
toobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be null
vatRegisteredbooleanrequiredtermsstringrequiredcan be nullincludePhotosbooleanrequiredDefault
falsephotosarray of objectrequiredDefault
[]bookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullnamestringrequiredprojectNamestringrequiredcan be nullteamMemberNamestringrequiredcan be nullphotosarray of objectrequirediduuidrequiredcaptionstringrequiredcan be nullwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
creditsarray of objectrequirediduuidrequiredinvoiceIduuidrequiredinvoiceReferencestringrequiredcan be nullclientIduuidrequiredclientNamestringrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","void"kindenumrequiredOne of
"whole","lines","amount"reasonstringrequiredissueDatedaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
uninvoiceBookingsbooleanrequiredvoidReasonstringrequiredcan be nullcreatedAtstringrequired
refundsarray of objectrequirediduuidrequiredamountPenceintegerrequired-9007199254740991 to 9007199254740991
refundedOndaterequiredYYYY-MM-DD
methodstringrequiredcan be nullnotestringrequiredcan be nullbyNamestringrequiredcan be nullcreatedAtstringrequired
refundedPenceintegerrequired-9007199254740991 to 9007199254740991
refundDuePenceintegerrequired-9007199254740991 to 9007199254740991
creditLeftPenceintegerrequired-9007199254740991 to 9007199254740991
creditableLinesarray of objectrequiredinvoiceLineIduuidrequireddescriptionstringrequiredvatRateBpintegerrequired-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
remainingNetPenceintegerrequired-9007199254740991 to 9007199254740991
remainingVatPenceintegerrequired-9007199254740991 to 9007199254740991
curl -X POST "https://app.workscope.co.uk/v1/invoices/ID/charges" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"chargeIds": [
"3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
]
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"frequency": "weekly",
"basis": "bookings",
"periodStart": "2026-11-06",
"periodEnd": "2026-11-06",
"manual": false,
"projectId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"projectName": "1 Harbour Road",
"issueDate": "2026-11-06",
"dueDate": "2026-11-06",
"paidOn": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"missingPrices": -9007199254740991,
"bookings": -9007199254740991,
"coveredBookings": -9007199254740991,
"lateBookings": 51.4545,
"bookedPence": 4500,
"fixedPence": 4500,
"manualPence": 4500,
"missingAccepted": false,
"notes": "Side gate code is on the key safe.",
"voidReason": "text",
"creditedPence": 4500,
"amountDuePence": 4500,
"calculatedAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "booking",
"description": "Side gate code is on the key safe.",
"date": "2026-11-06",
"projectId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"projectName": "1 Harbour Road",
"quantity": 1,
"unitPence": 4500,
"netPence": 4500,
"vatRateBp": 1207,
"vatPence": 4500,
"missingPrice": false,
"late": false,
"covered": false,
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"chargeId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"chargePence": 4500,
"vatRateOverrideBp": 1207,
"photoCount": 0,
"hiddenPhotoCount": 0,
"unsignedPhotoCount": 0
}
],
"history": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"byName": "Harbourside Dental",
"at": "2026-11-06T09:30:00.000Z",
"reason": "text",
"summary": "text"
}
],
"issueBlocker": "text",
"unsignedBookings": 0,
"listCoveredVisits": true,
"from": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"website": "https://example.co.uk",
"companyNumber": "text",
"vatNumber": "text",
"paymentDetails": "Side gate code is on the key safe.",
"hasLogo": false
},
"to": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123"
},
"vatRegistered": false,
"terms": "text",
"includePhotos": false,
"photos": [
{
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"name": "Harbourside Dental",
"projectName": "1 Harbour Road",
"teamMemberName": "Sam Hart",
"photos": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"caption": "text",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
]
}
],
"credits": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"invoiceId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"invoiceReference": "INV-0042",
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"clientName": "Harbourside Dental",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"kind": "whole",
"reason": "text",
"issueDate": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"uninvoiceBookings": false,
"voidReason": "text",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refunds": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"amountPence": 4500,
"refundedOn": "2026-11-06",
"method": "text",
"note": "Side gate code is on the key safe.",
"byName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refundedPence": 4500,
"refundDuePence": 4500,
"creditLeftPence": 4500,
"creditableLines": [
{
"invoiceLineId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"description": "Side gate code is on the key safe.",
"vatRateBp": 1207,
"netPence": 4500,
"vatPence": 4500,
"remainingNetPence": 4500,
"remainingVatPence": 4500
}
]
}Issue a draft: worked out one last time, given the next number, and its bookings' prices locked as invoiced
POST/v1/invoices/{id}/issue
- Permission
invoice.manage- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","paid","void"clientIduuidrequiredclientNamestringrequiredfrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"basisenumrequiredOne of
"bookings","fixed"periodStartdaterequiredYYYY-MM-DD
periodEnddaterequiredYYYY-MM-DD
manualbooleanrequiredDefault
falseprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullDefault
nullissueDatedaterequiredcan be nullYYYY-MM-DD
dueDatedaterequiredcan be nullYYYY-MM-DD
paidOndaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricesintegerrequired-9007199254740991 to 9007199254740991
bookingsintegerrequired-9007199254740991 to 9007199254740991
coveredBookingsintegerrequired-9007199254740991 to 9007199254740991
lateBookingsintegerrequired-9007199254740991 to 9007199254740991
bookedPenceintegerrequired-9007199254740991 to 9007199254740991
fixedPenceintegerrequired-9007199254740991 to 9007199254740991
manualPenceintegerrequired-9007199254740991 to 9007199254740991
missingAcceptedbooleanrequirednotesstringrequiredcan be nullvoidReasonstringrequiredcan be nullcreditedPenceintegerrequired-9007199254740991 to 9007199254740991
amountDuePenceintegerrequired-9007199254740991 to 9007199254740991
calculatedAtstringrequiredcan be nullcreatedAtstringrequiredlinesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"booking","fixed","manual","product"descriptionstringrequireddatedaterequiredcan be nullYYYY-MM-DD
projectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullquantitynumberrequiredunitPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatRateBpintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricebooleanrequiredlatebooleanrequiredcoveredbooleanrequiredbookingIduuidrequiredcan be nullchargeIduuidoptionalcan be nullchargePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
vatRateOverrideBpintegerrequiredcan be null-9007199254740991 to 9007199254740991
photoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0hiddenPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0unsignedPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0
historyarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","issued","paid","voided","line_added","line_changed","line_removed","missing_accepted","notes","credit_raised","credit_issued","credit_voided","credit_deleted","refunded","refund_removed"byNamestringrequiredcan be nullatstringrequiredreasonstringrequiredcan be nullsummarystringrequiredcan be null
issueBlockerstringrequiredcan be nullunsignedBookingsintegerrequired-9007199254740991 to 9007199254740991 · Default
0listCoveredVisitsbooleanrequiredDefault
truefromobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be nullwebsitestringrequiredcan be nullcompanyNumberstringrequiredcan be nullvatNumberstringrequiredcan be nullpaymentDetailsstringrequiredcan be nullhasLogobooleanrequired
toobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be null
vatRegisteredbooleanrequiredtermsstringrequiredcan be nullincludePhotosbooleanrequiredDefault
falsephotosarray of objectrequiredDefault
[]bookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullnamestringrequiredprojectNamestringrequiredcan be nullteamMemberNamestringrequiredcan be nullphotosarray of objectrequirediduuidrequiredcaptionstringrequiredcan be nullwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
creditsarray of objectrequirediduuidrequiredinvoiceIduuidrequiredinvoiceReferencestringrequiredcan be nullclientIduuidrequiredclientNamestringrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","void"kindenumrequiredOne of
"whole","lines","amount"reasonstringrequiredissueDatedaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
uninvoiceBookingsbooleanrequiredvoidReasonstringrequiredcan be nullcreatedAtstringrequired
refundsarray of objectrequirediduuidrequiredamountPenceintegerrequired-9007199254740991 to 9007199254740991
refundedOndaterequiredYYYY-MM-DD
methodstringrequiredcan be nullnotestringrequiredcan be nullbyNamestringrequiredcan be nullcreatedAtstringrequired
refundedPenceintegerrequired-9007199254740991 to 9007199254740991
refundDuePenceintegerrequired-9007199254740991 to 9007199254740991
creditLeftPenceintegerrequired-9007199254740991 to 9007199254740991
creditableLinesarray of objectrequiredinvoiceLineIduuidrequireddescriptionstringrequiredvatRateBpintegerrequired-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
remainingNetPenceintegerrequired-9007199254740991 to 9007199254740991
remainingVatPenceintegerrequired-9007199254740991 to 9007199254740991
curl -X POST "https://app.workscope.co.uk/v1/invoices/ID/issue" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"frequency": "weekly",
"basis": "bookings",
"periodStart": "2026-11-06",
"periodEnd": "2026-11-06",
"manual": false,
"projectId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"projectName": "1 Harbour Road",
"issueDate": "2026-11-06",
"dueDate": "2026-11-06",
"paidOn": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"missingPrices": -9007199254740991,
"bookings": -9007199254740991,
"coveredBookings": -9007199254740991,
"lateBookings": 51.4545,
"bookedPence": 4500,
"fixedPence": 4500,
"manualPence": 4500,
"missingAccepted": false,
"notes": "Side gate code is on the key safe.",
"voidReason": "text",
"creditedPence": 4500,
"amountDuePence": 4500,
"calculatedAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "booking",
"description": "Side gate code is on the key safe.",
"date": "2026-11-06",
"projectId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"projectName": "1 Harbour Road",
"quantity": 1,
"unitPence": 4500,
"netPence": 4500,
"vatRateBp": 1207,
"vatPence": 4500,
"missingPrice": false,
"late": false,
"covered": false,
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"chargeId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"chargePence": 4500,
"vatRateOverrideBp": 1207,
"photoCount": 0,
"hiddenPhotoCount": 0,
"unsignedPhotoCount": 0
}
],
"history": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"byName": "Harbourside Dental",
"at": "2026-11-06T09:30:00.000Z",
"reason": "text",
"summary": "text"
}
],
"issueBlocker": "text",
"unsignedBookings": 0,
"listCoveredVisits": true,
"from": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"website": "https://example.co.uk",
"companyNumber": "text",
"vatNumber": "text",
"paymentDetails": "Side gate code is on the key safe.",
"hasLogo": false
},
"to": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123"
},
"vatRegistered": false,
"terms": "text",
"includePhotos": false,
"photos": [
{
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"name": "Harbourside Dental",
"projectName": "1 Harbour Road",
"teamMemberName": "Sam Hart",
"photos": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"caption": "text",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
]
}
],
"credits": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"invoiceId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"invoiceReference": "INV-0042",
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"clientName": "Harbourside Dental",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"kind": "whole",
"reason": "text",
"issueDate": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"uninvoiceBookings": false,
"voidReason": "text",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refunds": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"amountPence": 4500,
"refundedOn": "2026-11-06",
"method": "text",
"note": "Side gate code is on the key safe.",
"byName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refundedPence": 4500,
"refundDuePence": 4500,
"creditLeftPence": 4500,
"creditableLines": [
{
"invoiceLineId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"description": "Side gate code is on the key safe.",
"vatRateBp": 1207,
"netPence": 4500,
"vatPence": 4500,
"remainingNetPence": 4500,
"remainingVatPence": 4500
}
]
}Add a line by hand to a draft: an extra, an adjustment, or a credit (a negative price)
POST/v1/invoices/{id}/lines
- Permission
invoice.manage- Module
invoicing- Answers
201
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
descriptionstringrequired1–2000 characters
quantityX100integeroptional1 to 1000000 · Default
100unitPenceintegerrequired-100000000 to 100000000
datedateoptionalcan be nullYYYY-MM-DD
projectIduuidoptionalcan be nullvatRateBpintegeroptionalcan be null0 to 10000
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","paid","void"clientIduuidrequiredclientNamestringrequiredfrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"basisenumrequiredOne of
"bookings","fixed"periodStartdaterequiredYYYY-MM-DD
periodEnddaterequiredYYYY-MM-DD
manualbooleanrequiredDefault
falseprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullDefault
nullissueDatedaterequiredcan be nullYYYY-MM-DD
dueDatedaterequiredcan be nullYYYY-MM-DD
paidOndaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricesintegerrequired-9007199254740991 to 9007199254740991
bookingsintegerrequired-9007199254740991 to 9007199254740991
coveredBookingsintegerrequired-9007199254740991 to 9007199254740991
lateBookingsintegerrequired-9007199254740991 to 9007199254740991
bookedPenceintegerrequired-9007199254740991 to 9007199254740991
fixedPenceintegerrequired-9007199254740991 to 9007199254740991
manualPenceintegerrequired-9007199254740991 to 9007199254740991
missingAcceptedbooleanrequirednotesstringrequiredcan be nullvoidReasonstringrequiredcan be nullcreditedPenceintegerrequired-9007199254740991 to 9007199254740991
amountDuePenceintegerrequired-9007199254740991 to 9007199254740991
calculatedAtstringrequiredcan be nullcreatedAtstringrequiredlinesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"booking","fixed","manual","product"descriptionstringrequireddatedaterequiredcan be nullYYYY-MM-DD
projectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullquantitynumberrequiredunitPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatRateBpintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricebooleanrequiredlatebooleanrequiredcoveredbooleanrequiredbookingIduuidrequiredcan be nullchargeIduuidoptionalcan be nullchargePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
vatRateOverrideBpintegerrequiredcan be null-9007199254740991 to 9007199254740991
photoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0hiddenPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0unsignedPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0
historyarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","issued","paid","voided","line_added","line_changed","line_removed","missing_accepted","notes","credit_raised","credit_issued","credit_voided","credit_deleted","refunded","refund_removed"byNamestringrequiredcan be nullatstringrequiredreasonstringrequiredcan be nullsummarystringrequiredcan be null
issueBlockerstringrequiredcan be nullunsignedBookingsintegerrequired-9007199254740991 to 9007199254740991 · Default
0listCoveredVisitsbooleanrequiredDefault
truefromobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be nullwebsitestringrequiredcan be nullcompanyNumberstringrequiredcan be nullvatNumberstringrequiredcan be nullpaymentDetailsstringrequiredcan be nullhasLogobooleanrequired
toobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be null
vatRegisteredbooleanrequiredtermsstringrequiredcan be nullincludePhotosbooleanrequiredDefault
falsephotosarray of objectrequiredDefault
[]bookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullnamestringrequiredprojectNamestringrequiredcan be nullteamMemberNamestringrequiredcan be nullphotosarray of objectrequirediduuidrequiredcaptionstringrequiredcan be nullwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
creditsarray of objectrequirediduuidrequiredinvoiceIduuidrequiredinvoiceReferencestringrequiredcan be nullclientIduuidrequiredclientNamestringrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","void"kindenumrequiredOne of
"whole","lines","amount"reasonstringrequiredissueDatedaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
uninvoiceBookingsbooleanrequiredvoidReasonstringrequiredcan be nullcreatedAtstringrequired
refundsarray of objectrequirediduuidrequiredamountPenceintegerrequired-9007199254740991 to 9007199254740991
refundedOndaterequiredYYYY-MM-DD
methodstringrequiredcan be nullnotestringrequiredcan be nullbyNamestringrequiredcan be nullcreatedAtstringrequired
refundedPenceintegerrequired-9007199254740991 to 9007199254740991
refundDuePenceintegerrequired-9007199254740991 to 9007199254740991
creditLeftPenceintegerrequired-9007199254740991 to 9007199254740991
creditableLinesarray of objectrequiredinvoiceLineIduuidrequireddescriptionstringrequiredvatRateBpintegerrequired-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
remainingNetPenceintegerrequired-9007199254740991 to 9007199254740991
remainingVatPenceintegerrequired-9007199254740991 to 9007199254740991
curl -X POST "https://app.workscope.co.uk/v1/invoices/ID/lines" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"description": "Side gate code is on the key safe.",
"quantityX100": 100,
"unitPence": 4500,
"date": "2026-11-06",
"projectId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"vatRateBp": 1207
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"frequency": "weekly",
"basis": "bookings",
"periodStart": "2026-11-06",
"periodEnd": "2026-11-06",
"manual": false,
"projectId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"projectName": "1 Harbour Road",
"issueDate": "2026-11-06",
"dueDate": "2026-11-06",
"paidOn": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"missingPrices": -9007199254740991,
"bookings": -9007199254740991,
"coveredBookings": -9007199254740991,
"lateBookings": 51.4545,
"bookedPence": 4500,
"fixedPence": 4500,
"manualPence": 4500,
"missingAccepted": false,
"notes": "Side gate code is on the key safe.",
"voidReason": "text",
"creditedPence": 4500,
"amountDuePence": 4500,
"calculatedAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "booking",
"description": "Side gate code is on the key safe.",
"date": "2026-11-06",
"projectId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"projectName": "1 Harbour Road",
"quantity": 1,
"unitPence": 4500,
"netPence": 4500,
"vatRateBp": 1207,
"vatPence": 4500,
"missingPrice": false,
"late": false,
"covered": false,
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"chargeId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"chargePence": 4500,
"vatRateOverrideBp": 1207,
"photoCount": 0,
"hiddenPhotoCount": 0,
"unsignedPhotoCount": 0
}
],
"history": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"byName": "Harbourside Dental",
"at": "2026-11-06T09:30:00.000Z",
"reason": "text",
"summary": "text"
}
],
"issueBlocker": "text",
"unsignedBookings": 0,
"listCoveredVisits": true,
"from": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"website": "https://example.co.uk",
"companyNumber": "text",
"vatNumber": "text",
"paymentDetails": "Side gate code is on the key safe.",
"hasLogo": false
},
"to": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123"
},
"vatRegistered": false,
"terms": "text",
"includePhotos": false,
"photos": [
{
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"name": "Harbourside Dental",
"projectName": "1 Harbour Road",
"teamMemberName": "Sam Hart",
"photos": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"caption": "text",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
]
}
],
"credits": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"invoiceId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"invoiceReference": "INV-0042",
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"clientName": "Harbourside Dental",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"kind": "whole",
"reason": "text",
"issueDate": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"uninvoiceBookings": false,
"voidReason": "text",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refunds": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"amountPence": 4500,
"refundedOn": "2026-11-06",
"method": "text",
"note": "Side gate code is on the key safe.",
"byName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refundedPence": 4500,
"refundDuePence": 4500,
"creditLeftPence": 4500,
"creditableLines": [
{
"invoiceLineId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"description": "Side gate code is on the key safe.",
"vatRateBp": 1207,
"netPence": 4500,
"vatPence": 4500,
"remainingNetPence": 4500,
"remainingVatPence": 4500
}
]
}Change a line on a draft: a hand-added line's details, or the price and VAT rate of a booking or fixed line
PATCH/v1/invoices/{id}/lines/{lineId}
- Permission
invoice.manage- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired | |
lineId | path | uuidrequired |
Request body JSON
descriptionstringoptional1–2000 characters
quantityX100integeroptional1 to 1000000
unitPenceintegeroptional-100000000 to 100000000
datedateoptionalcan be nullYYYY-MM-DD
chargePenceintegeroptionalcan be null0 to 100000000
vatRateBpintegeroptionalcan be null0 to 10000
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","paid","void"clientIduuidrequiredclientNamestringrequiredfrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"basisenumrequiredOne of
"bookings","fixed"periodStartdaterequiredYYYY-MM-DD
periodEnddaterequiredYYYY-MM-DD
manualbooleanrequiredDefault
falseprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullDefault
nullissueDatedaterequiredcan be nullYYYY-MM-DD
dueDatedaterequiredcan be nullYYYY-MM-DD
paidOndaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricesintegerrequired-9007199254740991 to 9007199254740991
bookingsintegerrequired-9007199254740991 to 9007199254740991
coveredBookingsintegerrequired-9007199254740991 to 9007199254740991
lateBookingsintegerrequired-9007199254740991 to 9007199254740991
bookedPenceintegerrequired-9007199254740991 to 9007199254740991
fixedPenceintegerrequired-9007199254740991 to 9007199254740991
manualPenceintegerrequired-9007199254740991 to 9007199254740991
missingAcceptedbooleanrequirednotesstringrequiredcan be nullvoidReasonstringrequiredcan be nullcreditedPenceintegerrequired-9007199254740991 to 9007199254740991
amountDuePenceintegerrequired-9007199254740991 to 9007199254740991
calculatedAtstringrequiredcan be nullcreatedAtstringrequiredlinesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"booking","fixed","manual","product"descriptionstringrequireddatedaterequiredcan be nullYYYY-MM-DD
projectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullquantitynumberrequiredunitPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatRateBpintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricebooleanrequiredlatebooleanrequiredcoveredbooleanrequiredbookingIduuidrequiredcan be nullchargeIduuidoptionalcan be nullchargePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
vatRateOverrideBpintegerrequiredcan be null-9007199254740991 to 9007199254740991
photoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0hiddenPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0unsignedPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0
historyarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","issued","paid","voided","line_added","line_changed","line_removed","missing_accepted","notes","credit_raised","credit_issued","credit_voided","credit_deleted","refunded","refund_removed"byNamestringrequiredcan be nullatstringrequiredreasonstringrequiredcan be nullsummarystringrequiredcan be null
issueBlockerstringrequiredcan be nullunsignedBookingsintegerrequired-9007199254740991 to 9007199254740991 · Default
0listCoveredVisitsbooleanrequiredDefault
truefromobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be nullwebsitestringrequiredcan be nullcompanyNumberstringrequiredcan be nullvatNumberstringrequiredcan be nullpaymentDetailsstringrequiredcan be nullhasLogobooleanrequired
toobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be null
vatRegisteredbooleanrequiredtermsstringrequiredcan be nullincludePhotosbooleanrequiredDefault
falsephotosarray of objectrequiredDefault
[]bookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullnamestringrequiredprojectNamestringrequiredcan be nullteamMemberNamestringrequiredcan be nullphotosarray of objectrequirediduuidrequiredcaptionstringrequiredcan be nullwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
creditsarray of objectrequirediduuidrequiredinvoiceIduuidrequiredinvoiceReferencestringrequiredcan be nullclientIduuidrequiredclientNamestringrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","void"kindenumrequiredOne of
"whole","lines","amount"reasonstringrequiredissueDatedaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
uninvoiceBookingsbooleanrequiredvoidReasonstringrequiredcan be nullcreatedAtstringrequired
refundsarray of objectrequirediduuidrequiredamountPenceintegerrequired-9007199254740991 to 9007199254740991
refundedOndaterequiredYYYY-MM-DD
methodstringrequiredcan be nullnotestringrequiredcan be nullbyNamestringrequiredcan be nullcreatedAtstringrequired
refundedPenceintegerrequired-9007199254740991 to 9007199254740991
refundDuePenceintegerrequired-9007199254740991 to 9007199254740991
creditLeftPenceintegerrequired-9007199254740991 to 9007199254740991
creditableLinesarray of objectrequiredinvoiceLineIduuidrequireddescriptionstringrequiredvatRateBpintegerrequired-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
remainingNetPenceintegerrequired-9007199254740991 to 9007199254740991
remainingVatPenceintegerrequired-9007199254740991 to 9007199254740991
curl -X PATCH "https://app.workscope.co.uk/v1/invoices/ID/lines/ID" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"description": "Side gate code is on the key safe.",
"quantityX100": 1,
"unitPence": 4500,
"date": "2026-11-06",
"chargePence": 4500,
"vatRateBp": 1207
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"frequency": "weekly",
"basis": "bookings",
"periodStart": "2026-11-06",
"periodEnd": "2026-11-06",
"manual": false,
"projectId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"projectName": "1 Harbour Road",
"issueDate": "2026-11-06",
"dueDate": "2026-11-06",
"paidOn": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"missingPrices": -9007199254740991,
"bookings": -9007199254740991,
"coveredBookings": -9007199254740991,
"lateBookings": 51.4545,
"bookedPence": 4500,
"fixedPence": 4500,
"manualPence": 4500,
"missingAccepted": false,
"notes": "Side gate code is on the key safe.",
"voidReason": "text",
"creditedPence": 4500,
"amountDuePence": 4500,
"calculatedAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "booking",
"description": "Side gate code is on the key safe.",
"date": "2026-11-06",
"projectId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"projectName": "1 Harbour Road",
"quantity": 1,
"unitPence": 4500,
"netPence": 4500,
"vatRateBp": 1207,
"vatPence": 4500,
"missingPrice": false,
"late": false,
"covered": false,
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"chargeId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"chargePence": 4500,
"vatRateOverrideBp": 1207,
"photoCount": 0,
"hiddenPhotoCount": 0,
"unsignedPhotoCount": 0
}
],
"history": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"byName": "Harbourside Dental",
"at": "2026-11-06T09:30:00.000Z",
"reason": "text",
"summary": "text"
}
],
"issueBlocker": "text",
"unsignedBookings": 0,
"listCoveredVisits": true,
"from": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"website": "https://example.co.uk",
"companyNumber": "text",
"vatNumber": "text",
"paymentDetails": "Side gate code is on the key safe.",
"hasLogo": false
},
"to": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123"
},
"vatRegistered": false,
"terms": "text",
"includePhotos": false,
"photos": [
{
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"name": "Harbourside Dental",
"projectName": "1 Harbour Road",
"teamMemberName": "Sam Hart",
"photos": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"caption": "text",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
]
}
],
"credits": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"invoiceId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"invoiceReference": "INV-0042",
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"clientName": "Harbourside Dental",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"kind": "whole",
"reason": "text",
"issueDate": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"uninvoiceBookings": false,
"voidReason": "text",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refunds": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"amountPence": 4500,
"refundedOn": "2026-11-06",
"method": "text",
"note": "Side gate code is on the key safe.",
"byName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refundedPence": 4500,
"refundDuePence": 4500,
"creditLeftPence": 4500,
"creditableLines": [
{
"invoiceLineId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"description": "Side gate code is on the key safe.",
"vatRateBp": 1207,
"netPence": 4500,
"vatPence": 4500,
"remainingNetPence": 4500,
"remainingVatPence": 4500
}
]
}Remove a line added by hand
DELETE/v1/invoices/{id}/lines/{lineId}
- Permission
invoice.manage- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired | |
lineId | path | uuidrequired |
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","paid","void"clientIduuidrequiredclientNamestringrequiredfrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"basisenumrequiredOne of
"bookings","fixed"periodStartdaterequiredYYYY-MM-DD
periodEnddaterequiredYYYY-MM-DD
manualbooleanrequiredDefault
falseprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullDefault
nullissueDatedaterequiredcan be nullYYYY-MM-DD
dueDatedaterequiredcan be nullYYYY-MM-DD
paidOndaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricesintegerrequired-9007199254740991 to 9007199254740991
bookingsintegerrequired-9007199254740991 to 9007199254740991
coveredBookingsintegerrequired-9007199254740991 to 9007199254740991
lateBookingsintegerrequired-9007199254740991 to 9007199254740991
bookedPenceintegerrequired-9007199254740991 to 9007199254740991
fixedPenceintegerrequired-9007199254740991 to 9007199254740991
manualPenceintegerrequired-9007199254740991 to 9007199254740991
missingAcceptedbooleanrequirednotesstringrequiredcan be nullvoidReasonstringrequiredcan be nullcreditedPenceintegerrequired-9007199254740991 to 9007199254740991
amountDuePenceintegerrequired-9007199254740991 to 9007199254740991
calculatedAtstringrequiredcan be nullcreatedAtstringrequiredlinesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"booking","fixed","manual","product"descriptionstringrequireddatedaterequiredcan be nullYYYY-MM-DD
projectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullquantitynumberrequiredunitPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatRateBpintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricebooleanrequiredlatebooleanrequiredcoveredbooleanrequiredbookingIduuidrequiredcan be nullchargeIduuidoptionalcan be nullchargePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
vatRateOverrideBpintegerrequiredcan be null-9007199254740991 to 9007199254740991
photoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0hiddenPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0unsignedPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0
historyarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","issued","paid","voided","line_added","line_changed","line_removed","missing_accepted","notes","credit_raised","credit_issued","credit_voided","credit_deleted","refunded","refund_removed"byNamestringrequiredcan be nullatstringrequiredreasonstringrequiredcan be nullsummarystringrequiredcan be null
issueBlockerstringrequiredcan be nullunsignedBookingsintegerrequired-9007199254740991 to 9007199254740991 · Default
0listCoveredVisitsbooleanrequiredDefault
truefromobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be nullwebsitestringrequiredcan be nullcompanyNumberstringrequiredcan be nullvatNumberstringrequiredcan be nullpaymentDetailsstringrequiredcan be nullhasLogobooleanrequired
toobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be null
vatRegisteredbooleanrequiredtermsstringrequiredcan be nullincludePhotosbooleanrequiredDefault
falsephotosarray of objectrequiredDefault
[]bookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullnamestringrequiredprojectNamestringrequiredcan be nullteamMemberNamestringrequiredcan be nullphotosarray of objectrequirediduuidrequiredcaptionstringrequiredcan be nullwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
creditsarray of objectrequirediduuidrequiredinvoiceIduuidrequiredinvoiceReferencestringrequiredcan be nullclientIduuidrequiredclientNamestringrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","void"kindenumrequiredOne of
"whole","lines","amount"reasonstringrequiredissueDatedaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
uninvoiceBookingsbooleanrequiredvoidReasonstringrequiredcan be nullcreatedAtstringrequired
refundsarray of objectrequirediduuidrequiredamountPenceintegerrequired-9007199254740991 to 9007199254740991
refundedOndaterequiredYYYY-MM-DD
methodstringrequiredcan be nullnotestringrequiredcan be nullbyNamestringrequiredcan be nullcreatedAtstringrequired
refundedPenceintegerrequired-9007199254740991 to 9007199254740991
refundDuePenceintegerrequired-9007199254740991 to 9007199254740991
creditLeftPenceintegerrequired-9007199254740991 to 9007199254740991
creditableLinesarray of objectrequiredinvoiceLineIduuidrequireddescriptionstringrequiredvatRateBpintegerrequired-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
remainingNetPenceintegerrequired-9007199254740991 to 9007199254740991
remainingVatPenceintegerrequired-9007199254740991 to 9007199254740991
curl -X DELETE "https://app.workscope.co.uk/v1/invoices/ID/lines/ID" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"frequency": "weekly",
"basis": "bookings",
"periodStart": "2026-11-06",
"periodEnd": "2026-11-06",
"manual": false,
"projectId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"projectName": "1 Harbour Road",
"issueDate": "2026-11-06",
"dueDate": "2026-11-06",
"paidOn": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"missingPrices": -9007199254740991,
"bookings": -9007199254740991,
"coveredBookings": -9007199254740991,
"lateBookings": 51.4545,
"bookedPence": 4500,
"fixedPence": 4500,
"manualPence": 4500,
"missingAccepted": false,
"notes": "Side gate code is on the key safe.",
"voidReason": "text",
"creditedPence": 4500,
"amountDuePence": 4500,
"calculatedAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "booking",
"description": "Side gate code is on the key safe.",
"date": "2026-11-06",
"projectId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"projectName": "1 Harbour Road",
"quantity": 1,
"unitPence": 4500,
"netPence": 4500,
"vatRateBp": 1207,
"vatPence": 4500,
"missingPrice": false,
"late": false,
"covered": false,
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"chargeId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"chargePence": 4500,
"vatRateOverrideBp": 1207,
"photoCount": 0,
"hiddenPhotoCount": 0,
"unsignedPhotoCount": 0
}
],
"history": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"byName": "Harbourside Dental",
"at": "2026-11-06T09:30:00.000Z",
"reason": "text",
"summary": "text"
}
],
"issueBlocker": "text",
"unsignedBookings": 0,
"listCoveredVisits": true,
"from": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"website": "https://example.co.uk",
"companyNumber": "text",
"vatNumber": "text",
"paymentDetails": "Side gate code is on the key safe.",
"hasLogo": false
},
"to": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123"
},
"vatRegistered": false,
"terms": "text",
"includePhotos": false,
"photos": [
{
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"name": "Harbourside Dental",
"projectName": "1 Harbour Road",
"teamMemberName": "Sam Hart",
"photos": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"caption": "text",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
]
}
],
"credits": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"invoiceId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"invoiceReference": "INV-0042",
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"clientName": "Harbourside Dental",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"kind": "whole",
"reason": "text",
"issueDate": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"uninvoiceBookings": false,
"voidReason": "text",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refunds": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"amountPence": 4500,
"refundedOn": "2026-11-06",
"method": "text",
"note": "Side gate code is on the key safe.",
"byName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refundedPence": 4500,
"refundDuePence": 4500,
"creditLeftPence": 4500,
"creditableLines": [
{
"invoiceLineId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"description": "Side gate code is on the key safe.",
"vatRateBp": 1207,
"netPence": 4500,
"vatPence": 4500,
"remainingNetPence": 4500,
"remainingVatPence": 4500
}
]
}Mark an issued invoice as paid on a day
POST/v1/invoices/{id}/paid
- Permission
invoice.manage- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
paidOndaterequiredYYYY-MM-DD
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","paid","void"clientIduuidrequiredclientNamestringrequiredfrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"basisenumrequiredOne of
"bookings","fixed"periodStartdaterequiredYYYY-MM-DD
periodEnddaterequiredYYYY-MM-DD
manualbooleanrequiredDefault
falseprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullDefault
nullissueDatedaterequiredcan be nullYYYY-MM-DD
dueDatedaterequiredcan be nullYYYY-MM-DD
paidOndaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricesintegerrequired-9007199254740991 to 9007199254740991
bookingsintegerrequired-9007199254740991 to 9007199254740991
coveredBookingsintegerrequired-9007199254740991 to 9007199254740991
lateBookingsintegerrequired-9007199254740991 to 9007199254740991
bookedPenceintegerrequired-9007199254740991 to 9007199254740991
fixedPenceintegerrequired-9007199254740991 to 9007199254740991
manualPenceintegerrequired-9007199254740991 to 9007199254740991
missingAcceptedbooleanrequirednotesstringrequiredcan be nullvoidReasonstringrequiredcan be nullcreditedPenceintegerrequired-9007199254740991 to 9007199254740991
amountDuePenceintegerrequired-9007199254740991 to 9007199254740991
calculatedAtstringrequiredcan be nullcreatedAtstringrequiredlinesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"booking","fixed","manual","product"descriptionstringrequireddatedaterequiredcan be nullYYYY-MM-DD
projectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullquantitynumberrequiredunitPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatRateBpintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricebooleanrequiredlatebooleanrequiredcoveredbooleanrequiredbookingIduuidrequiredcan be nullchargeIduuidoptionalcan be nullchargePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
vatRateOverrideBpintegerrequiredcan be null-9007199254740991 to 9007199254740991
photoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0hiddenPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0unsignedPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0
historyarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","issued","paid","voided","line_added","line_changed","line_removed","missing_accepted","notes","credit_raised","credit_issued","credit_voided","credit_deleted","refunded","refund_removed"byNamestringrequiredcan be nullatstringrequiredreasonstringrequiredcan be nullsummarystringrequiredcan be null
issueBlockerstringrequiredcan be nullunsignedBookingsintegerrequired-9007199254740991 to 9007199254740991 · Default
0listCoveredVisitsbooleanrequiredDefault
truefromobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be nullwebsitestringrequiredcan be nullcompanyNumberstringrequiredcan be nullvatNumberstringrequiredcan be nullpaymentDetailsstringrequiredcan be nullhasLogobooleanrequired
toobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be null
vatRegisteredbooleanrequiredtermsstringrequiredcan be nullincludePhotosbooleanrequiredDefault
falsephotosarray of objectrequiredDefault
[]bookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullnamestringrequiredprojectNamestringrequiredcan be nullteamMemberNamestringrequiredcan be nullphotosarray of objectrequirediduuidrequiredcaptionstringrequiredcan be nullwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
creditsarray of objectrequirediduuidrequiredinvoiceIduuidrequiredinvoiceReferencestringrequiredcan be nullclientIduuidrequiredclientNamestringrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","void"kindenumrequiredOne of
"whole","lines","amount"reasonstringrequiredissueDatedaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
uninvoiceBookingsbooleanrequiredvoidReasonstringrequiredcan be nullcreatedAtstringrequired
refundsarray of objectrequirediduuidrequiredamountPenceintegerrequired-9007199254740991 to 9007199254740991
refundedOndaterequiredYYYY-MM-DD
methodstringrequiredcan be nullnotestringrequiredcan be nullbyNamestringrequiredcan be nullcreatedAtstringrequired
refundedPenceintegerrequired-9007199254740991 to 9007199254740991
refundDuePenceintegerrequired-9007199254740991 to 9007199254740991
creditLeftPenceintegerrequired-9007199254740991 to 9007199254740991
creditableLinesarray of objectrequiredinvoiceLineIduuidrequireddescriptionstringrequiredvatRateBpintegerrequired-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
remainingNetPenceintegerrequired-9007199254740991 to 9007199254740991
remainingVatPenceintegerrequired-9007199254740991 to 9007199254740991
curl -X POST "https://app.workscope.co.uk/v1/invoices/ID/paid" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"paidOn": "2026-11-06"
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"frequency": "weekly",
"basis": "bookings",
"periodStart": "2026-11-06",
"periodEnd": "2026-11-06",
"manual": false,
"projectId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"projectName": "1 Harbour Road",
"issueDate": "2026-11-06",
"dueDate": "2026-11-06",
"paidOn": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"missingPrices": -9007199254740991,
"bookings": -9007199254740991,
"coveredBookings": -9007199254740991,
"lateBookings": 51.4545,
"bookedPence": 4500,
"fixedPence": 4500,
"manualPence": 4500,
"missingAccepted": false,
"notes": "Side gate code is on the key safe.",
"voidReason": "text",
"creditedPence": 4500,
"amountDuePence": 4500,
"calculatedAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "booking",
"description": "Side gate code is on the key safe.",
"date": "2026-11-06",
"projectId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"projectName": "1 Harbour Road",
"quantity": 1,
"unitPence": 4500,
"netPence": 4500,
"vatRateBp": 1207,
"vatPence": 4500,
"missingPrice": false,
"late": false,
"covered": false,
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"chargeId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"chargePence": 4500,
"vatRateOverrideBp": 1207,
"photoCount": 0,
"hiddenPhotoCount": 0,
"unsignedPhotoCount": 0
}
],
"history": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"byName": "Harbourside Dental",
"at": "2026-11-06T09:30:00.000Z",
"reason": "text",
"summary": "text"
}
],
"issueBlocker": "text",
"unsignedBookings": 0,
"listCoveredVisits": true,
"from": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"website": "https://example.co.uk",
"companyNumber": "text",
"vatNumber": "text",
"paymentDetails": "Side gate code is on the key safe.",
"hasLogo": false
},
"to": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123"
},
"vatRegistered": false,
"terms": "text",
"includePhotos": false,
"photos": [
{
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"name": "Harbourside Dental",
"projectName": "1 Harbour Road",
"teamMemberName": "Sam Hart",
"photos": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"caption": "text",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
]
}
],
"credits": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"invoiceId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"invoiceReference": "INV-0042",
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"clientName": "Harbourside Dental",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"kind": "whole",
"reason": "text",
"issueDate": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"uninvoiceBookings": false,
"voidReason": "text",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refunds": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"amountPence": 4500,
"refundedOn": "2026-11-06",
"method": "text",
"note": "Side gate code is on the key safe.",
"byName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refundedPence": 4500,
"refundDuePence": 4500,
"creditLeftPence": 4500,
"creditableLines": [
{
"invoiceLineId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"description": "Side gate code is on the key safe.",
"vatRateBp": 1207,
"netPence": 4500,
"vatPence": 4500,
"remainingNetPence": 4500,
"remainingVatPence": 4500
}
]
}Show or leave out its bookings' photos (those clients may see) on pages after a draft invoice
POST/v1/invoices/{id}/photos
- Permission
invoice.manage- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
includebooleanrequired
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","paid","void"clientIduuidrequiredclientNamestringrequiredfrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"basisenumrequiredOne of
"bookings","fixed"periodStartdaterequiredYYYY-MM-DD
periodEnddaterequiredYYYY-MM-DD
manualbooleanrequiredDefault
falseprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullDefault
nullissueDatedaterequiredcan be nullYYYY-MM-DD
dueDatedaterequiredcan be nullYYYY-MM-DD
paidOndaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricesintegerrequired-9007199254740991 to 9007199254740991
bookingsintegerrequired-9007199254740991 to 9007199254740991
coveredBookingsintegerrequired-9007199254740991 to 9007199254740991
lateBookingsintegerrequired-9007199254740991 to 9007199254740991
bookedPenceintegerrequired-9007199254740991 to 9007199254740991
fixedPenceintegerrequired-9007199254740991 to 9007199254740991
manualPenceintegerrequired-9007199254740991 to 9007199254740991
missingAcceptedbooleanrequirednotesstringrequiredcan be nullvoidReasonstringrequiredcan be nullcreditedPenceintegerrequired-9007199254740991 to 9007199254740991
amountDuePenceintegerrequired-9007199254740991 to 9007199254740991
calculatedAtstringrequiredcan be nullcreatedAtstringrequiredlinesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"booking","fixed","manual","product"descriptionstringrequireddatedaterequiredcan be nullYYYY-MM-DD
projectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullquantitynumberrequiredunitPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatRateBpintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricebooleanrequiredlatebooleanrequiredcoveredbooleanrequiredbookingIduuidrequiredcan be nullchargeIduuidoptionalcan be nullchargePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
vatRateOverrideBpintegerrequiredcan be null-9007199254740991 to 9007199254740991
photoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0hiddenPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0unsignedPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0
historyarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","issued","paid","voided","line_added","line_changed","line_removed","missing_accepted","notes","credit_raised","credit_issued","credit_voided","credit_deleted","refunded","refund_removed"byNamestringrequiredcan be nullatstringrequiredreasonstringrequiredcan be nullsummarystringrequiredcan be null
issueBlockerstringrequiredcan be nullunsignedBookingsintegerrequired-9007199254740991 to 9007199254740991 · Default
0listCoveredVisitsbooleanrequiredDefault
truefromobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be nullwebsitestringrequiredcan be nullcompanyNumberstringrequiredcan be nullvatNumberstringrequiredcan be nullpaymentDetailsstringrequiredcan be nullhasLogobooleanrequired
toobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be null
vatRegisteredbooleanrequiredtermsstringrequiredcan be nullincludePhotosbooleanrequiredDefault
falsephotosarray of objectrequiredDefault
[]bookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullnamestringrequiredprojectNamestringrequiredcan be nullteamMemberNamestringrequiredcan be nullphotosarray of objectrequirediduuidrequiredcaptionstringrequiredcan be nullwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
creditsarray of objectrequirediduuidrequiredinvoiceIduuidrequiredinvoiceReferencestringrequiredcan be nullclientIduuidrequiredclientNamestringrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","void"kindenumrequiredOne of
"whole","lines","amount"reasonstringrequiredissueDatedaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
uninvoiceBookingsbooleanrequiredvoidReasonstringrequiredcan be nullcreatedAtstringrequired
refundsarray of objectrequirediduuidrequiredamountPenceintegerrequired-9007199254740991 to 9007199254740991
refundedOndaterequiredYYYY-MM-DD
methodstringrequiredcan be nullnotestringrequiredcan be nullbyNamestringrequiredcan be nullcreatedAtstringrequired
refundedPenceintegerrequired-9007199254740991 to 9007199254740991
refundDuePenceintegerrequired-9007199254740991 to 9007199254740991
creditLeftPenceintegerrequired-9007199254740991 to 9007199254740991
creditableLinesarray of objectrequiredinvoiceLineIduuidrequireddescriptionstringrequiredvatRateBpintegerrequired-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
remainingNetPenceintegerrequired-9007199254740991 to 9007199254740991
remainingVatPenceintegerrequired-9007199254740991 to 9007199254740991
curl -X POST "https://app.workscope.co.uk/v1/invoices/ID/photos" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"include": false
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"frequency": "weekly",
"basis": "bookings",
"periodStart": "2026-11-06",
"periodEnd": "2026-11-06",
"manual": false,
"projectId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"projectName": "1 Harbour Road",
"issueDate": "2026-11-06",
"dueDate": "2026-11-06",
"paidOn": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"missingPrices": -9007199254740991,
"bookings": -9007199254740991,
"coveredBookings": -9007199254740991,
"lateBookings": 51.4545,
"bookedPence": 4500,
"fixedPence": 4500,
"manualPence": 4500,
"missingAccepted": false,
"notes": "Side gate code is on the key safe.",
"voidReason": "text",
"creditedPence": 4500,
"amountDuePence": 4500,
"calculatedAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "booking",
"description": "Side gate code is on the key safe.",
"date": "2026-11-06",
"projectId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"projectName": "1 Harbour Road",
"quantity": 1,
"unitPence": 4500,
"netPence": 4500,
"vatRateBp": 1207,
"vatPence": 4500,
"missingPrice": false,
"late": false,
"covered": false,
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"chargeId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"chargePence": 4500,
"vatRateOverrideBp": 1207,
"photoCount": 0,
"hiddenPhotoCount": 0,
"unsignedPhotoCount": 0
}
],
"history": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"byName": "Harbourside Dental",
"at": "2026-11-06T09:30:00.000Z",
"reason": "text",
"summary": "text"
}
],
"issueBlocker": "text",
"unsignedBookings": 0,
"listCoveredVisits": true,
"from": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"website": "https://example.co.uk",
"companyNumber": "text",
"vatNumber": "text",
"paymentDetails": "Side gate code is on the key safe.",
"hasLogo": false
},
"to": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123"
},
"vatRegistered": false,
"terms": "text",
"includePhotos": false,
"photos": [
{
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"name": "Harbourside Dental",
"projectName": "1 Harbour Road",
"teamMemberName": "Sam Hart",
"photos": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"caption": "text",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
]
}
],
"credits": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"invoiceId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"invoiceReference": "INV-0042",
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"clientName": "Harbourside Dental",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"kind": "whole",
"reason": "text",
"issueDate": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"uninvoiceBookings": false,
"voidReason": "text",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refunds": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"amountPence": 4500,
"refundedOn": "2026-11-06",
"method": "text",
"note": "Side gate code is on the key safe.",
"byName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refundedPence": 4500,
"refundDuePence": 4500,
"creditLeftPence": 4500,
"creditableLines": [
{
"invoiceLineId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"description": "Side gate code is on the key safe.",
"vatRateBp": 1207,
"netPence": 4500,
"vatPence": 4500,
"remainingNetPence": 4500,
"remainingVatPence": 4500
}
]
}Work a draft out again from bookings, prices and fixed amounts (lines added by hand stay)
POST/v1/invoices/{id}/recalculate
- Permission
invoice.manage- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","paid","void"clientIduuidrequiredclientNamestringrequiredfrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"basisenumrequiredOne of
"bookings","fixed"periodStartdaterequiredYYYY-MM-DD
periodEnddaterequiredYYYY-MM-DD
manualbooleanrequiredDefault
falseprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullDefault
nullissueDatedaterequiredcan be nullYYYY-MM-DD
dueDatedaterequiredcan be nullYYYY-MM-DD
paidOndaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricesintegerrequired-9007199254740991 to 9007199254740991
bookingsintegerrequired-9007199254740991 to 9007199254740991
coveredBookingsintegerrequired-9007199254740991 to 9007199254740991
lateBookingsintegerrequired-9007199254740991 to 9007199254740991
bookedPenceintegerrequired-9007199254740991 to 9007199254740991
fixedPenceintegerrequired-9007199254740991 to 9007199254740991
manualPenceintegerrequired-9007199254740991 to 9007199254740991
missingAcceptedbooleanrequirednotesstringrequiredcan be nullvoidReasonstringrequiredcan be nullcreditedPenceintegerrequired-9007199254740991 to 9007199254740991
amountDuePenceintegerrequired-9007199254740991 to 9007199254740991
calculatedAtstringrequiredcan be nullcreatedAtstringrequiredlinesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"booking","fixed","manual","product"descriptionstringrequireddatedaterequiredcan be nullYYYY-MM-DD
projectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullquantitynumberrequiredunitPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatRateBpintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricebooleanrequiredlatebooleanrequiredcoveredbooleanrequiredbookingIduuidrequiredcan be nullchargeIduuidoptionalcan be nullchargePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
vatRateOverrideBpintegerrequiredcan be null-9007199254740991 to 9007199254740991
photoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0hiddenPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0unsignedPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0
historyarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","issued","paid","voided","line_added","line_changed","line_removed","missing_accepted","notes","credit_raised","credit_issued","credit_voided","credit_deleted","refunded","refund_removed"byNamestringrequiredcan be nullatstringrequiredreasonstringrequiredcan be nullsummarystringrequiredcan be null
issueBlockerstringrequiredcan be nullunsignedBookingsintegerrequired-9007199254740991 to 9007199254740991 · Default
0listCoveredVisitsbooleanrequiredDefault
truefromobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be nullwebsitestringrequiredcan be nullcompanyNumberstringrequiredcan be nullvatNumberstringrequiredcan be nullpaymentDetailsstringrequiredcan be nullhasLogobooleanrequired
toobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be null
vatRegisteredbooleanrequiredtermsstringrequiredcan be nullincludePhotosbooleanrequiredDefault
falsephotosarray of objectrequiredDefault
[]bookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullnamestringrequiredprojectNamestringrequiredcan be nullteamMemberNamestringrequiredcan be nullphotosarray of objectrequirediduuidrequiredcaptionstringrequiredcan be nullwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
creditsarray of objectrequirediduuidrequiredinvoiceIduuidrequiredinvoiceReferencestringrequiredcan be nullclientIduuidrequiredclientNamestringrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","void"kindenumrequiredOne of
"whole","lines","amount"reasonstringrequiredissueDatedaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
uninvoiceBookingsbooleanrequiredvoidReasonstringrequiredcan be nullcreatedAtstringrequired
refundsarray of objectrequirediduuidrequiredamountPenceintegerrequired-9007199254740991 to 9007199254740991
refundedOndaterequiredYYYY-MM-DD
methodstringrequiredcan be nullnotestringrequiredcan be nullbyNamestringrequiredcan be nullcreatedAtstringrequired
refundedPenceintegerrequired-9007199254740991 to 9007199254740991
refundDuePenceintegerrequired-9007199254740991 to 9007199254740991
creditLeftPenceintegerrequired-9007199254740991 to 9007199254740991
creditableLinesarray of objectrequiredinvoiceLineIduuidrequireddescriptionstringrequiredvatRateBpintegerrequired-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
remainingNetPenceintegerrequired-9007199254740991 to 9007199254740991
remainingVatPenceintegerrequired-9007199254740991 to 9007199254740991
curl -X POST "https://app.workscope.co.uk/v1/invoices/ID/recalculate" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"frequency": "weekly",
"basis": "bookings",
"periodStart": "2026-11-06",
"periodEnd": "2026-11-06",
"manual": false,
"projectId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"projectName": "1 Harbour Road",
"issueDate": "2026-11-06",
"dueDate": "2026-11-06",
"paidOn": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"missingPrices": -9007199254740991,
"bookings": -9007199254740991,
"coveredBookings": -9007199254740991,
"lateBookings": 51.4545,
"bookedPence": 4500,
"fixedPence": 4500,
"manualPence": 4500,
"missingAccepted": false,
"notes": "Side gate code is on the key safe.",
"voidReason": "text",
"creditedPence": 4500,
"amountDuePence": 4500,
"calculatedAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "booking",
"description": "Side gate code is on the key safe.",
"date": "2026-11-06",
"projectId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"projectName": "1 Harbour Road",
"quantity": 1,
"unitPence": 4500,
"netPence": 4500,
"vatRateBp": 1207,
"vatPence": 4500,
"missingPrice": false,
"late": false,
"covered": false,
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"chargeId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"chargePence": 4500,
"vatRateOverrideBp": 1207,
"photoCount": 0,
"hiddenPhotoCount": 0,
"unsignedPhotoCount": 0
}
],
"history": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"byName": "Harbourside Dental",
"at": "2026-11-06T09:30:00.000Z",
"reason": "text",
"summary": "text"
}
],
"issueBlocker": "text",
"unsignedBookings": 0,
"listCoveredVisits": true,
"from": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"website": "https://example.co.uk",
"companyNumber": "text",
"vatNumber": "text",
"paymentDetails": "Side gate code is on the key safe.",
"hasLogo": false
},
"to": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123"
},
"vatRegistered": false,
"terms": "text",
"includePhotos": false,
"photos": [
{
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"name": "Harbourside Dental",
"projectName": "1 Harbour Road",
"teamMemberName": "Sam Hart",
"photos": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"caption": "text",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
]
}
],
"credits": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"invoiceId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"invoiceReference": "INV-0042",
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"clientName": "Harbourside Dental",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"kind": "whole",
"reason": "text",
"issueDate": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"uninvoiceBookings": false,
"voidReason": "text",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refunds": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"amountPence": 4500,
"refundedOn": "2026-11-06",
"method": "text",
"note": "Side gate code is on the key safe.",
"byName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refundedPence": 4500,
"refundDuePence": 4500,
"creditLeftPence": 4500,
"creditableLines": [
{
"invoiceLineId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"description": "Side gate code is on the key safe.",
"vatRateBp": 1207,
"netPence": 4500,
"vatPence": 4500,
"remainingNetPence": 4500,
"remainingVatPence": 4500
}
]
}Take products from stock for the client and put them on this draft (taking the line off puts the stock back)
POST/v1/invoices/{id}/stock
- Permission
invoice.manage- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
itemsarray of objectrequired1–100 items
productIduuidrequiredquantityX100integerrequired1 to 100000000
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","paid","void"clientIduuidrequiredclientNamestringrequiredfrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"basisenumrequiredOne of
"bookings","fixed"periodStartdaterequiredYYYY-MM-DD
periodEnddaterequiredYYYY-MM-DD
manualbooleanrequiredDefault
falseprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullDefault
nullissueDatedaterequiredcan be nullYYYY-MM-DD
dueDatedaterequiredcan be nullYYYY-MM-DD
paidOndaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricesintegerrequired-9007199254740991 to 9007199254740991
bookingsintegerrequired-9007199254740991 to 9007199254740991
coveredBookingsintegerrequired-9007199254740991 to 9007199254740991
lateBookingsintegerrequired-9007199254740991 to 9007199254740991
bookedPenceintegerrequired-9007199254740991 to 9007199254740991
fixedPenceintegerrequired-9007199254740991 to 9007199254740991
manualPenceintegerrequired-9007199254740991 to 9007199254740991
missingAcceptedbooleanrequirednotesstringrequiredcan be nullvoidReasonstringrequiredcan be nullcreditedPenceintegerrequired-9007199254740991 to 9007199254740991
amountDuePenceintegerrequired-9007199254740991 to 9007199254740991
calculatedAtstringrequiredcan be nullcreatedAtstringrequiredlinesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"booking","fixed","manual","product"descriptionstringrequireddatedaterequiredcan be nullYYYY-MM-DD
projectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullquantitynumberrequiredunitPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatRateBpintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricebooleanrequiredlatebooleanrequiredcoveredbooleanrequiredbookingIduuidrequiredcan be nullchargeIduuidoptionalcan be nullchargePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
vatRateOverrideBpintegerrequiredcan be null-9007199254740991 to 9007199254740991
photoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0hiddenPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0unsignedPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0
historyarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","issued","paid","voided","line_added","line_changed","line_removed","missing_accepted","notes","credit_raised","credit_issued","credit_voided","credit_deleted","refunded","refund_removed"byNamestringrequiredcan be nullatstringrequiredreasonstringrequiredcan be nullsummarystringrequiredcan be null
issueBlockerstringrequiredcan be nullunsignedBookingsintegerrequired-9007199254740991 to 9007199254740991 · Default
0listCoveredVisitsbooleanrequiredDefault
truefromobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be nullwebsitestringrequiredcan be nullcompanyNumberstringrequiredcan be nullvatNumberstringrequiredcan be nullpaymentDetailsstringrequiredcan be nullhasLogobooleanrequired
toobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be null
vatRegisteredbooleanrequiredtermsstringrequiredcan be nullincludePhotosbooleanrequiredDefault
falsephotosarray of objectrequiredDefault
[]bookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullnamestringrequiredprojectNamestringrequiredcan be nullteamMemberNamestringrequiredcan be nullphotosarray of objectrequirediduuidrequiredcaptionstringrequiredcan be nullwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
creditsarray of objectrequirediduuidrequiredinvoiceIduuidrequiredinvoiceReferencestringrequiredcan be nullclientIduuidrequiredclientNamestringrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","void"kindenumrequiredOne of
"whole","lines","amount"reasonstringrequiredissueDatedaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
uninvoiceBookingsbooleanrequiredvoidReasonstringrequiredcan be nullcreatedAtstringrequired
refundsarray of objectrequirediduuidrequiredamountPenceintegerrequired-9007199254740991 to 9007199254740991
refundedOndaterequiredYYYY-MM-DD
methodstringrequiredcan be nullnotestringrequiredcan be nullbyNamestringrequiredcan be nullcreatedAtstringrequired
refundedPenceintegerrequired-9007199254740991 to 9007199254740991
refundDuePenceintegerrequired-9007199254740991 to 9007199254740991
creditLeftPenceintegerrequired-9007199254740991 to 9007199254740991
creditableLinesarray of objectrequiredinvoiceLineIduuidrequireddescriptionstringrequiredvatRateBpintegerrequired-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
remainingNetPenceintegerrequired-9007199254740991 to 9007199254740991
remainingVatPenceintegerrequired-9007199254740991 to 9007199254740991
curl -X POST "https://app.workscope.co.uk/v1/invoices/ID/stock" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"items": [
{
"productId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"quantityX100": 1
}
]
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"frequency": "weekly",
"basis": "bookings",
"periodStart": "2026-11-06",
"periodEnd": "2026-11-06",
"manual": false,
"projectId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"projectName": "1 Harbour Road",
"issueDate": "2026-11-06",
"dueDate": "2026-11-06",
"paidOn": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"missingPrices": -9007199254740991,
"bookings": -9007199254740991,
"coveredBookings": -9007199254740991,
"lateBookings": 51.4545,
"bookedPence": 4500,
"fixedPence": 4500,
"manualPence": 4500,
"missingAccepted": false,
"notes": "Side gate code is on the key safe.",
"voidReason": "text",
"creditedPence": 4500,
"amountDuePence": 4500,
"calculatedAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "booking",
"description": "Side gate code is on the key safe.",
"date": "2026-11-06",
"projectId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"projectName": "1 Harbour Road",
"quantity": 1,
"unitPence": 4500,
"netPence": 4500,
"vatRateBp": 1207,
"vatPence": 4500,
"missingPrice": false,
"late": false,
"covered": false,
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"chargeId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"chargePence": 4500,
"vatRateOverrideBp": 1207,
"photoCount": 0,
"hiddenPhotoCount": 0,
"unsignedPhotoCount": 0
}
],
"history": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"byName": "Harbourside Dental",
"at": "2026-11-06T09:30:00.000Z",
"reason": "text",
"summary": "text"
}
],
"issueBlocker": "text",
"unsignedBookings": 0,
"listCoveredVisits": true,
"from": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"website": "https://example.co.uk",
"companyNumber": "text",
"vatNumber": "text",
"paymentDetails": "Side gate code is on the key safe.",
"hasLogo": false
},
"to": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123"
},
"vatRegistered": false,
"terms": "text",
"includePhotos": false,
"photos": [
{
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"name": "Harbourside Dental",
"projectName": "1 Harbour Road",
"teamMemberName": "Sam Hart",
"photos": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"caption": "text",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
]
}
],
"credits": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"invoiceId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"invoiceReference": "INV-0042",
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"clientName": "Harbourside Dental",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"kind": "whole",
"reason": "text",
"issueDate": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"uninvoiceBookings": false,
"voidReason": "text",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refunds": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"amountPence": 4500,
"refundedOn": "2026-11-06",
"method": "text",
"note": "Side gate code is on the key safe.",
"byName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refundedPence": 4500,
"refundDuePence": 4500,
"creditLeftPence": 4500,
"creditableLines": [
{
"invoiceLineId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"description": "Side gate code is on the key safe.",
"vatRateBp": 1207,
"netPence": 4500,
"vatPence": 4500,
"remainingNetPence": 4500,
"remainingVatPence": 4500
}
]
}Void an issued or paid invoice, saying why: it keeps its number and its bookings are free to invoice again
POST/v1/invoices/{id}/void
- Permission
invoice.manage- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
reasonstringrequired1–500 characters
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","paid","void"clientIduuidrequiredclientNamestringrequiredfrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"basisenumrequiredOne of
"bookings","fixed"periodStartdaterequiredYYYY-MM-DD
periodEnddaterequiredYYYY-MM-DD
manualbooleanrequiredDefault
falseprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullDefault
nullissueDatedaterequiredcan be nullYYYY-MM-DD
dueDatedaterequiredcan be nullYYYY-MM-DD
paidOndaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricesintegerrequired-9007199254740991 to 9007199254740991
bookingsintegerrequired-9007199254740991 to 9007199254740991
coveredBookingsintegerrequired-9007199254740991 to 9007199254740991
lateBookingsintegerrequired-9007199254740991 to 9007199254740991
bookedPenceintegerrequired-9007199254740991 to 9007199254740991
fixedPenceintegerrequired-9007199254740991 to 9007199254740991
manualPenceintegerrequired-9007199254740991 to 9007199254740991
missingAcceptedbooleanrequirednotesstringrequiredcan be nullvoidReasonstringrequiredcan be nullcreditedPenceintegerrequired-9007199254740991 to 9007199254740991
amountDuePenceintegerrequired-9007199254740991 to 9007199254740991
calculatedAtstringrequiredcan be nullcreatedAtstringrequiredlinesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"booking","fixed","manual","product"descriptionstringrequireddatedaterequiredcan be nullYYYY-MM-DD
projectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullquantitynumberrequiredunitPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatRateBpintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricebooleanrequiredlatebooleanrequiredcoveredbooleanrequiredbookingIduuidrequiredcan be nullchargeIduuidoptionalcan be nullchargePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
vatRateOverrideBpintegerrequiredcan be null-9007199254740991 to 9007199254740991
photoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0hiddenPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0unsignedPhotoCountintegerrequired-9007199254740991 to 9007199254740991 · Default
0
historyarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","issued","paid","voided","line_added","line_changed","line_removed","missing_accepted","notes","credit_raised","credit_issued","credit_voided","credit_deleted","refunded","refund_removed"byNamestringrequiredcan be nullatstringrequiredreasonstringrequiredcan be nullsummarystringrequiredcan be null
issueBlockerstringrequiredcan be nullunsignedBookingsintegerrequired-9007199254740991 to 9007199254740991 · Default
0listCoveredVisitsbooleanrequiredDefault
truefromobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be nullwebsitestringrequiredcan be nullcompanyNumberstringrequiredcan be nullvatNumberstringrequiredcan be nullpaymentDetailsstringrequiredcan be nullhasLogobooleanrequired
toobjectrequirednamestringrequiredaddressstringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be null
vatRegisteredbooleanrequiredtermsstringrequiredcan be nullincludePhotosbooleanrequiredDefault
falsephotosarray of objectrequiredDefault
[]bookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullnamestringrequiredprojectNamestringrequiredcan be nullteamMemberNamestringrequiredcan be nullphotosarray of objectrequirediduuidrequiredcaptionstringrequiredcan be nullwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
creditsarray of objectrequirediduuidrequiredinvoiceIduuidrequiredinvoiceReferencestringrequiredcan be nullclientIduuidrequiredclientNamestringrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","void"kindenumrequiredOne of
"whole","lines","amount"reasonstringrequiredissueDatedaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
uninvoiceBookingsbooleanrequiredvoidReasonstringrequiredcan be nullcreatedAtstringrequired
refundsarray of objectrequirediduuidrequiredamountPenceintegerrequired-9007199254740991 to 9007199254740991
refundedOndaterequiredYYYY-MM-DD
methodstringrequiredcan be nullnotestringrequiredcan be nullbyNamestringrequiredcan be nullcreatedAtstringrequired
refundedPenceintegerrequired-9007199254740991 to 9007199254740991
refundDuePenceintegerrequired-9007199254740991 to 9007199254740991
creditLeftPenceintegerrequired-9007199254740991 to 9007199254740991
creditableLinesarray of objectrequiredinvoiceLineIduuidrequireddescriptionstringrequiredvatRateBpintegerrequired-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
remainingNetPenceintegerrequired-9007199254740991 to 9007199254740991
remainingVatPenceintegerrequired-9007199254740991 to 9007199254740991
curl -X POST "https://app.workscope.co.uk/v1/invoices/ID/void" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"reason": "text"
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"frequency": "weekly",
"basis": "bookings",
"periodStart": "2026-11-06",
"periodEnd": "2026-11-06",
"manual": false,
"projectId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"projectName": "1 Harbour Road",
"issueDate": "2026-11-06",
"dueDate": "2026-11-06",
"paidOn": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"missingPrices": -9007199254740991,
"bookings": -9007199254740991,
"coveredBookings": -9007199254740991,
"lateBookings": 51.4545,
"bookedPence": 4500,
"fixedPence": 4500,
"manualPence": 4500,
"missingAccepted": false,
"notes": "Side gate code is on the key safe.",
"voidReason": "text",
"creditedPence": 4500,
"amountDuePence": 4500,
"calculatedAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "booking",
"description": "Side gate code is on the key safe.",
"date": "2026-11-06",
"projectId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"projectName": "1 Harbour Road",
"quantity": 1,
"unitPence": 4500,
"netPence": 4500,
"vatRateBp": 1207,
"vatPence": 4500,
"missingPrice": false,
"late": false,
"covered": false,
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"chargeId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"chargePence": 4500,
"vatRateOverrideBp": 1207,
"photoCount": 0,
"hiddenPhotoCount": 0,
"unsignedPhotoCount": 0
}
],
"history": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"byName": "Harbourside Dental",
"at": "2026-11-06T09:30:00.000Z",
"reason": "text",
"summary": "text"
}
],
"issueBlocker": "text",
"unsignedBookings": 0,
"listCoveredVisits": true,
"from": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"website": "https://example.co.uk",
"companyNumber": "text",
"vatNumber": "text",
"paymentDetails": "Side gate code is on the key safe.",
"hasLogo": false
},
"to": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk",
"phone": "0117 496 0123"
},
"vatRegistered": false,
"terms": "text",
"includePhotos": false,
"photos": [
{
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"name": "Harbourside Dental",
"projectName": "1 Harbour Road",
"teamMemberName": "Sam Hart",
"photos": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"caption": "text",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
]
}
],
"credits": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"invoiceId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"invoiceReference": "INV-0042",
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"clientName": "Harbourside Dental",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"kind": "whole",
"reason": "text",
"issueDate": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"uninvoiceBookings": false,
"voidReason": "text",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refunds": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"amountPence": 4500,
"refundedOn": "2026-11-06",
"method": "text",
"note": "Side gate code is on the key safe.",
"byName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refundedPence": 4500,
"refundDuePence": 4500,
"creditLeftPence": 4500,
"creditableLines": [
{
"invoiceLineId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"description": "Side gate code is on the key safe.",
"vatRateBp": 1207,
"netPence": 4500,
"vatPence": 4500,
"remainingNetPence": 4500,
"remainingVatPence": 4500
}
]
}A client's products and materials not on any invoice yet (up to a day), to choose from
GET/v1/invoices/charges
- Permission
invoice.view- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
clientId | query | uuidrequired | |
upTo | query | date |
Response array of object
iduuidrequireddatedaterequiredYYYY-MM-DD
descriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
projectNamestringrequiredcan be nullgroupKeystringrequiredDefault
""groupLabelstringrequiredDefault
""orderIduuidrequiredcan be null
curl "https://app.workscope.co.uk/v1/invoices/charges?clientId=3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41" \
-H "Authorization: Bearer wsk_your_key_here"Example response
[
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"date": "2026-11-06",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"netPence": 4500,
"projectName": "1 Harbour Road",
"groupKey": "",
"groupLabel": "",
"orderId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f"
}
]Download invoices as CSV for an accounts package: one row per invoice, or every line
GET/v1/invoices/export
- Permission
invoice.view- Module
invoicing- Answers
200with a file (image/jpeg)
Parameters
| Name | In | Kind | |
|---|---|---|---|
status | query | enum | One of draft, issued, paid, void |
clientId | query | uuid | |
frequency | query | enum | One of weekly, fortnightly, four_weekly, monthly, quarterly, ad_hoc |
from | query | date | |
to | query | date | |
format | query | enum | One of invoices, lines, credits · Default "invoices" |
curl "https://app.workscope.co.uk/v1/invoices/export" \
-H "Authorization: Bearer wsk_your_key_here"Issue several drafts at once (each worked out one last time); says which could not be issued and why
POST/v1/invoices/issue
- Permission
invoice.manage- Module
invoicing- Answers
200
Request body JSON
idsarray of uuidrequired1–500 items
sendbooleanoptionalDefault
false
Response object
issuedarray of objectrequirediduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","paid","void"clientIduuidrequiredclientNamestringrequiredfrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"basisenumrequiredOne of
"bookings","fixed"periodStartdaterequiredYYYY-MM-DD
periodEnddaterequiredYYYY-MM-DD
manualbooleanrequiredDefault
falseprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullDefault
nullissueDatedaterequiredcan be nullYYYY-MM-DD
dueDatedaterequiredcan be nullYYYY-MM-DD
paidOndaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricesintegerrequired-9007199254740991 to 9007199254740991
bookingsintegerrequired-9007199254740991 to 9007199254740991
coveredBookingsintegerrequired-9007199254740991 to 9007199254740991
lateBookingsintegerrequired-9007199254740991 to 9007199254740991
bookedPenceintegerrequired-9007199254740991 to 9007199254740991
fixedPenceintegerrequired-9007199254740991 to 9007199254740991
manualPenceintegerrequired-9007199254740991 to 9007199254740991
missingAcceptedbooleanrequirednotesstringrequiredcan be nullvoidReasonstringrequiredcan be nullcreditedPenceintegerrequired-9007199254740991 to 9007199254740991
amountDuePenceintegerrequired-9007199254740991 to 9007199254740991
calculatedAtstringrequiredcan be nullcreatedAtstringrequired
refusedarray of objectrequirediduuidrequiredclientNamestringrequiredreasonstringrequired
emailedarray of objectrequiredDefault
[]iduuidrequiredtostringrequiredstatusstringrequired
notEmailedarray of objectrequiredDefault
[]iduuidrequiredclientNamestringrequiredreasonstringrequired
curl -X POST "https://app.workscope.co.uk/v1/invoices/issue" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"ids": [
"3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
],
"send": false
}'Example response
{
"issued": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"frequency": "weekly",
"basis": "bookings",
"periodStart": "2026-11-06",
"periodEnd": "2026-11-06",
"manual": false,
"projectId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"projectName": "1 Harbour Road",
"issueDate": "2026-11-06",
"dueDate": "2026-11-06",
"paidOn": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"missingPrices": -9007199254740991,
"bookings": -9007199254740991,
"coveredBookings": -9007199254740991,
"lateBookings": 51.4545,
"bookedPence": 4500,
"fixedPence": 4500,
"manualPence": 4500,
"missingAccepted": false,
"notes": "Side gate code is on the key safe.",
"voidReason": "text",
"creditedPence": 4500,
"amountDuePence": 4500,
"calculatedAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"refused": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"clientName": "Harbourside Dental",
"reason": "text"
}
],
"emailed": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"to": "2026-11-06",
"status": "text"
}
],
"notEmailed": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"clientName": "Harbourside Dental",
"reason": "text"
}
]
}The invoice run: each client billed at a frequency, its period, what it would be charged, and any invoice already made for it
GET/v1/invoices/run
- Permission
invoice.view- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
frequency | query | enum | One of weekly, fortnightly, four_weekly, monthly, quarterly, ad_hoc |
dueBy | query | date |
Response object
dueBydaterequiredYYYY-MM-DD
rowsarray of objectrequiredclientIduuidrequiredclientNamestringrequiredfrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"basisenumrequiredOne of
"bookings","fixed"periodStartdaterequiredcan be nullYYYY-MM-DD
periodEnddaterequiredcan be nullYYYY-MM-DD
duebooleanrequiredbookingsintegerrequired-9007199254740991 to 9007199254740991
lateBookingsintegerrequired-9007199254740991 to 9007199254740991
bookedPenceintegerrequired-9007199254740991 to 9007199254740991
fixedPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
productsintegerrequired-9007199254740991 to 9007199254740991 · Default
0productPenceintegerrequired-9007199254740991 to 9007199254740991 · Default
0ordersToRechargeintegerrequired-9007199254740991 to 9007199254740991 · Default
0waitingSignOffintegerrequired-9007199254740991 to 9007199254740991 · Default
0waitingSignOffFromdaterequiredcan be nullYYYY-MM-DD
toChargePenceintegerrequired-9007199254740991 to 9007199254740991
missingPricesintegerrequired-9007199254740991 to 9007199254740991
invoiceobjectrequiredcan be nulliduuidrequiredstatusenumrequiredOne of
"draft","issued","paid","void"referencestringrequiredcan be nullgrossPenceintegerrequired-9007199254740991 to 9007199254740991
curl "https://app.workscope.co.uk/v1/invoices/run" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"dueBy": "2026-11-06",
"rows": [
{
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"clientName": "Harbourside Dental",
"frequency": "weekly",
"basis": "bookings",
"periodStart": "2026-11-06",
"periodEnd": "2026-11-06",
"due": false,
"bookings": -9007199254740991,
"lateBookings": 51.4545,
"bookedPence": 4500,
"fixedPence": 4500,
"products": 0,
"productPence": 0,
"ordersToRecharge": 0,
"waitingSignOff": 0,
"waitingSignOffFrom": "2026-11-06",
"toChargePence": 4500,
"missingPrices": -9007199254740991,
"invoice": {
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"status": "draft",
"reference": "INV-0042",
"grossPence": 4500
}
}
]
}Make draft invoices for chosen clients for their due periods
POST/v1/invoices/run
- Permission
invoice.manage- Module
invoicing- Answers
201
Request body JSON
clientIdsarray of uuidrequired1–500 items
frequencyenumoptionalOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"dueBydateoptionalYYYY-MM-DD
includeChargesbooleanoptionalDefault
trueskipChargeIdsarray of uuidoptionalUp to 5000 items · Default
[]
Response object
createdarray of objectrequirediduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nullstatusenumrequiredOne of
"draft","issued","paid","void"clientIduuidrequiredclientNamestringrequiredfrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"basisenumrequiredOne of
"bookings","fixed"periodStartdaterequiredYYYY-MM-DD
periodEnddaterequiredYYYY-MM-DD
manualbooleanrequiredDefault
falseprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullDefault
nullissueDatedaterequiredcan be nullYYYY-MM-DD
dueDatedaterequiredcan be nullYYYY-MM-DD
paidOndaterequiredcan be nullYYYY-MM-DD
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricesintegerrequired-9007199254740991 to 9007199254740991
bookingsintegerrequired-9007199254740991 to 9007199254740991
coveredBookingsintegerrequired-9007199254740991 to 9007199254740991
lateBookingsintegerrequired-9007199254740991 to 9007199254740991
bookedPenceintegerrequired-9007199254740991 to 9007199254740991
fixedPenceintegerrequired-9007199254740991 to 9007199254740991
manualPenceintegerrequired-9007199254740991 to 9007199254740991
missingAcceptedbooleanrequirednotesstringrequiredcan be nullvoidReasonstringrequiredcan be nullcreditedPenceintegerrequired-9007199254740991 to 9007199254740991
amountDuePenceintegerrequired-9007199254740991 to 9007199254740991
calculatedAtstringrequiredcan be nullcreatedAtstringrequired
skippedarray of objectrequiredclientIduuidrequiredclientNamestringrequiredreasonstringrequired
curl -X POST "https://app.workscope.co.uk/v1/invoices/run" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"clientIds": [
"3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
],
"frequency": "weekly",
"dueBy": "2026-11-06",
"includeCharges": true,
"skipChargeIds": [
"8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f"
]
}'Example response
{
"created": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"status": "draft",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"frequency": "weekly",
"basis": "bookings",
"periodStart": "2026-11-06",
"periodEnd": "2026-11-06",
"manual": false,
"projectId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"projectName": "1 Harbour Road",
"issueDate": "2026-11-06",
"dueDate": "2026-11-06",
"paidOn": "2026-11-06",
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"missingPrices": -9007199254740991,
"bookings": -9007199254740991,
"coveredBookings": -9007199254740991,
"lateBookings": 51.4545,
"bookedPence": 4500,
"fixedPence": 4500,
"manualPence": 4500,
"missingAccepted": false,
"notes": "Side gate code is on the key safe.",
"voidReason": "text",
"creditedPence": 4500,
"amountDuePence": 4500,
"calculatedAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"skipped": [
{
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"clientName": "Harbourside Dental",
"reason": "text"
}
]
}The invoice run as CSV
GET/v1/invoices/run/export
- Permission
invoice.view- Module
invoicing- Answers
200with a file (image/jpeg)
Parameters
| Name | In | Kind | |
|---|---|---|---|
frequency | query | enum | One of weekly, fortnightly, four_weekly, monthly, quarterly, ad_hoc |
dueBy | query | date |
curl "https://app.workscope.co.uk/v1/invoices/run/export" \
-H "Authorization: Bearer wsk_your_key_here"One client's due period in the run, line by line, before a draft is made
GET/v1/invoices/run/preview
- Permission
invoice.view- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
clientId | query | uuidrequired | |
dueBy | query | date |
Response object
clientIduuidrequiredclientNamestringrequiredfrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"basisenumrequiredOne of
"bookings","fixed"periodStartdaterequiredcan be nullYYYY-MM-DD
periodEnddaterequiredcan be nullYYYY-MM-DD
duebooleanrequiredbookingsintegerrequired-9007199254740991 to 9007199254740991
lateBookingsintegerrequired-9007199254740991 to 9007199254740991
bookedPenceintegerrequired-9007199254740991 to 9007199254740991
fixedPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
productsintegerrequired-9007199254740991 to 9007199254740991 · Default
0productPenceintegerrequired-9007199254740991 to 9007199254740991 · Default
0ordersToRechargeintegerrequired-9007199254740991 to 9007199254740991 · Default
0waitingSignOffintegerrequired-9007199254740991 to 9007199254740991 · Default
0waitingSignOffFromdaterequiredcan be nullYYYY-MM-DD
toChargePenceintegerrequired-9007199254740991 to 9007199254740991
missingPricesintegerrequired-9007199254740991 to 9007199254740991
invoiceobjectrequiredcan be nulliduuidrequiredstatusenumrequiredOne of
"draft","issued","paid","void"referencestringrequiredcan be nullgrossPenceintegerrequired-9007199254740991 to 9007199254740991
dueBydaterequiredYYYY-MM-DD
linesarray of objectrequiredkindenumrequiredOne of
"booking","fixed","manual","product"descriptionstringrequireddatedaterequiredcan be nullYYYY-MM-DD
projectNamestringrequiredcan be nullunitPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatRateBpintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
missingPricebooleanrequiredlatebooleanrequiredcoveredbooleanrequiredbookingIduuidrequiredcan be nullchargeIduuidoptionalcan be null
netPenceintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
grossPenceintegerrequired-9007199254740991 to 9007199254740991
chargesarray of objectrequiredDefault
[]iduuidrequireddatedaterequiredYYYY-MM-DD
descriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
netPenceintegerrequired-9007199254740991 to 9007199254740991
projectNamestringrequiredcan be null
curl "https://app.workscope.co.uk/v1/invoices/run/preview?clientId=3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"clientName": "Harbourside Dental",
"frequency": "weekly",
"basis": "bookings",
"periodStart": "2026-11-06",
"periodEnd": "2026-11-06",
"due": false,
"bookings": -9007199254740991,
"lateBookings": 51.4545,
"bookedPence": 4500,
"fixedPence": 4500,
"products": 0,
"productPence": 0,
"ordersToRecharge": 0,
"waitingSignOff": 0,
"waitingSignOffFrom": "2026-11-06",
"toChargePence": 4500,
"missingPrices": -9007199254740991,
"invoice": {
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"status": "draft",
"reference": "INV-0042",
"grossPence": 4500
},
"dueBy": "2026-11-06",
"lines": [
{
"kind": "booking",
"description": "Side gate code is on the key safe.",
"date": "2026-11-06",
"projectName": "1 Harbour Road",
"unitPence": 4500,
"netPence": 4500,
"vatRateBp": 1207,
"vatPence": 4500,
"missingPrice": false,
"late": false,
"covered": false,
"bookingId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"chargeId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
}
],
"netPence": 4500,
"vatPence": 4500,
"grossPence": 4500,
"charges": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"date": "2026-11-06",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"netPence": 4500,
"projectName": "1 Harbour Road"
}
]
}Finished bookings not on an issued invoice: the check that nothing is missed
GET/v1/invoices/uninvoiced
- Permission
invoice.view- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
clientId | query | uuid | |
includeSkipped | query | boolean |
Response array of object
iduuidrequireddatedaterequiredYYYY-MM-DD
namestringrequiredclientIduuidrequiredclientNamestringrequiredprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullteamMemberNamestringrequiredcan be nullstatusstringrequiredpricePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
ageDaysintegerrequired-9007199254740991 to 9007199254740991
draftInvoiceIduuidrequiredcan be nullskippedReasonstringrequiredcan be null
curl "https://app.workscope.co.uk/v1/invoices/uninvoiced" \
-H "Authorization: Bearer wsk_your_key_here"Example response
[
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"date": "2026-11-06",
"name": "Harbourside Dental",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"projectId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"projectName": "1 Harbour Road",
"teamMemberName": "Sam Hart",
"status": "text",
"pricePence": 4500,
"ageDays": -9007199254740991,
"draftInvoiceId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"skippedReason": "text"
}
]Mark bookings as not to be invoiced (for example, covered by a fixed amount), saying why
POST/v1/invoices/uninvoiced/skip
- Permission
invoice.manage- Module
invoicing- Answers
200
Request body JSON
bookingIdsarray of uuidrequired1–500 items
reasonstringrequired1–300 characters
Response object
okconstantrequiredAlways
true
curl -X POST "https://app.workscope.co.uk/v1/invoices/uninvoiced/skip" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"bookingIds": [
"3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
],
"reason": "text"
}'Example response
{
"ok": true
}Take back "not to be invoiced" so bookings are invoiced again
POST/v1/invoices/uninvoiced/unskip
- Permission
invoice.manage- Module
invoicing- Answers
200
Request body JSON
bookingIdsarray of uuidrequired1–500 items
Response object
okconstantrequiredAlways
true
curl -X POST "https://app.workscope.co.uk/v1/invoices/uninvoiced/unskip" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"bookingIds": [
"3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
]
}'Example response
{
"ok": true
}Give several fortnightly or 4-weekly clients the same billing date (the last day of one of their periods), or clear it (null). Clients billed otherwise are skipped.
POST/v1/invoicing/billing-cycle
- Permission
invoice.manage- Module
invoicing- Answers
200
Request body JSON
clientIdsarray of uuidrequired1–500 items
billingCycleEnddaterequiredcan be nullYYYY-MM-DD
Response object
updatedintegerrequired-9007199254740991 to 9007199254740991
skippedarray of objectrequiredclientIduuidrequirednamestringrequiredreasonstringrequired
curl -X POST "https://app.workscope.co.uk/v1/invoicing/billing-cycle" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"clientIds": [
"3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
],
"billingCycleEnd": "2026-11-06"
}'Example response
{
"updated": -9007199254740991,
"skipped": [
{
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"reason": "text"
}
]
}The billing frequencies in use: the company's, clients billed differently, and invoices made
GET/v1/invoicing/frequencies
- Permission
invoice.view- Module
invoicing- Answers
200
Response object
frequenciesarray of enumrequired
curl "https://app.workscope.co.uk/v1/invoicing/frequencies" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"frequencies": [
"weekly"
]
}How clients are billed unless they say otherwise, VAT, numbering, payment terms and details
GET/v1/invoicing/settings
- Permission
invoice.view- Module
invoicing- Answers
200
Response object
billingFrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"billingBasisenumrequiredOne of
"bookings","fixed"vatRegisteredbooleanrequiredvatRateBpintegerrequired-9007199254740991 to 9007199254740991
invoicePrefixstringrequirednextInvoiceNumberintegerrequired-9007199254740991 to 9007199254740991
paymentTermsDaysintegerrequired-9007199254740991 to 9007199254740991
paymentDetailsstringrequiredcan be nullinvoiceTermsstringrequiredinvoicePhotosbooleanrequiredinvoiceSignedOffOnlybooleanrequiredcreditPrefixstringrequirednextCreditNumberintegerrequired-9007199254740991 to 9007199254740991
curl "https://app.workscope.co.uk/v1/invoicing/settings" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"billingFrequency": "weekly",
"billingBasis": "bookings",
"vatRegistered": false,
"vatRateBp": 1207,
"invoicePrefix": "text",
"nextInvoiceNumber": -9007199254740991,
"paymentTermsDays": -9007199254740991,
"paymentDetails": "Side gate code is on the key safe.",
"invoiceTerms": "text",
"invoicePhotos": false,
"invoiceSignedOffOnly": false,
"creditPrefix": "text",
"nextCreditNumber": -9007199254740991
}Change the invoicing settings
PATCH/v1/invoicing/settings
- Permission
invoice.manage- Module
invoicing- Answers
200
Request body JSON
billingFrequencyenumoptionalOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"billingBasisenumoptionalOne of
"bookings","fixed"vatRegisteredbooleanoptionalvatRateBpintegeroptional0 to 10000
invoicePrefixstringoptionalMatches
^[A-Za-z0-9/_.-]*$· Up to 20 charactersnextInvoiceNumberintegeroptional1 to 99999999
paymentTermsDaysintegeroptional0 to 365
paymentDetailsstringoptionalcan be nullUp to 2000 characters
invoiceTermsstringoptionalUp to 5000 characters
invoicePhotosbooleanoptionalinvoiceSignedOffOnlybooleanoptionalcreditPrefixstringoptionalMatches
^[A-Za-z0-9/_.-]*$· Up to 20 charactersnextCreditNumberintegeroptional1 to 99999999
Response object
billingFrequencyenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","ad_hoc"billingBasisenumrequiredOne of
"bookings","fixed"vatRegisteredbooleanrequiredvatRateBpintegerrequired-9007199254740991 to 9007199254740991
invoicePrefixstringrequirednextInvoiceNumberintegerrequired-9007199254740991 to 9007199254740991
paymentTermsDaysintegerrequired-9007199254740991 to 9007199254740991
paymentDetailsstringrequiredcan be nullinvoiceTermsstringrequiredinvoicePhotosbooleanrequiredinvoiceSignedOffOnlybooleanrequiredcreditPrefixstringrequirednextCreditNumberintegerrequired-9007199254740991 to 9007199254740991
curl -X PATCH "https://app.workscope.co.uk/v1/invoicing/settings" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"billingFrequency": "weekly",
"billingBasis": "bookings",
"vatRegistered": false,
"vatRateBp": 1207,
"invoicePrefix": "text",
"nextInvoiceNumber": 1,
"paymentTermsDays": 0,
"paymentDetails": "Side gate code is on the key safe.",
"invoiceTerms": "text",
"invoicePhotos": false,
"invoiceSignedOffOnly": false,
"creditPrefix": "text",
"nextCreditNumber": 1
}'Example response
{
"billingFrequency": "weekly",
"billingBasis": "bookings",
"vatRegistered": false,
"vatRateBp": 1207,
"invoicePrefix": "text",
"nextInvoiceNumber": -9007199254740991,
"paymentTermsDays": -9007199254740991,
"paymentDetails": "Side gate code is on the key safe.",
"invoiceTerms": "text",
"invoicePhotos": false,
"invoiceSignedOffOnly": false,
"creditPrefix": "text",
"nextCreditNumber": -9007199254740991
}