API reference
Invoices
14 requests. Each shows the permission a key needs, what to send and what comes back.
On this page
Credit notes, newest first
GET/v1/credit-notes
- Permission
invoice.view- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
status | query | enum | One of draft, issued, void |
clientId | query | uuid | |
invoiceId | query | uuid |
Response array of object
iduuidrequiredinvoiceIduuidrequiredinvoiceReferencestringrequiredcan 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
curl "https://app.workscope.co.uk/v1/credit-notes" \
-H "Authorization: Bearer wsk_your_key_here"Example response
[
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"invoiceId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"invoiceReference": "INV-0042",
"clientId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"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"
}
]One credit note and its lines
GET/v1/credit-notes/{id}
- Permission
invoice.view- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Response object
iduuidrequiredinvoiceIduuidrequiredinvoiceReferencestringrequiredcan 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 nullcreatedAtstringrequiredlinesarray of objectrequirediduuidrequiredinvoiceLineIduuidrequiredcan be nulldescriptionstringrequirednetPenceintegerrequired-9007199254740991 to 9007199254740991
vatRateBpintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
vatRegisteredbooleanrequired
curl "https://app.workscope.co.uk/v1/credit-notes/ID" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"invoiceId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"invoiceReference": "INV-0042",
"clientId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"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",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"invoiceLineId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"netPence": 4500,
"vatRateBp": 1207,
"vatPence": 4500
}
],
"vatRegistered": false
}Delete a draft credit note
DELETE/v1/credit-notes/{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/credit-notes/ID" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"ok": true
}A ready-to-send email for a credit note, in the company's wording
GET/v1/credit-notes/{id}/email
- Permission
invoice.manage- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Response object
toarray of objectrequiredemailstringrequirednamestringrequiredcan be null
subjectstringrequiredmessagestringrequiredpdfbooleanrequiredlinkstringrequiredcan be null
curl "https://app.workscope.co.uk/v1/credit-notes/ID/email" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"to": [
{
"email": "office@example.co.uk",
"name": "Harbourside Dental"
}
],
"subject": "text",
"message": "text",
"pdf": false,
"link": "text"
}Issue a draft credit note: it gets the next credit number and comes off the invoice's amount due
POST/v1/credit-notes/{id}/issue
- Permission
invoice.manage- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Response object
iduuidrequiredinvoiceIduuidrequiredinvoiceReferencestringrequiredcan 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 nullcreatedAtstringrequiredlinesarray of objectrequirediduuidrequiredinvoiceLineIduuidrequiredcan be nulldescriptionstringrequirednetPenceintegerrequired-9007199254740991 to 9007199254740991
vatRateBpintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
vatRegisteredbooleanrequired
curl -X POST "https://app.workscope.co.uk/v1/credit-notes/ID/issue" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"invoiceId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"invoiceReference": "INV-0042",
"clientId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"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",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"invoiceLineId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"netPence": 4500,
"vatRateBp": 1207,
"vatPence": 4500
}
],
"vatRegistered": false
}The credit note as a PDF
GET/v1/credit-notes/{id}/pdf
- Permission
invoice.view- Module
invoicing- Answers
200with a file (image/jpeg)
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
curl "https://app.workscope.co.uk/v1/credit-notes/ID/pdf" \
-H "Authorization: Bearer wsk_your_key_here"Email an issued credit note with its PDF and the invoice's link
POST/v1/credit-notes/{id}/send
- Permission
invoice.manage- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
toarray of emailrequired1–5 items
subjectstringrequired1–300 characters
messagestringrequired1–10000 characters
Response object
iduuidrequiredinvoiceIduuidrequiredinvoiceReferencestringrequiredcan 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 nullcreatedAtstringrequiredlinesarray of objectrequirediduuidrequiredinvoiceLineIduuidrequiredcan be nulldescriptionstringrequirednetPenceintegerrequired-9007199254740991 to 9007199254740991
vatRateBpintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
vatRegisteredbooleanrequired
curl -X POST "https://app.workscope.co.uk/v1/credit-notes/ID/send" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"to": [
"office@example.co.uk"
],
"subject": "text",
"message": "text"
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"invoiceId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"invoiceReference": "INV-0042",
"clientId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"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",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"invoiceLineId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"netPence": 4500,
"vatRateBp": 1207,
"vatPence": 4500
}
],
"vatRegistered": false
}Void an issued credit note, saying why (it keeps its number)
POST/v1/credit-notes/{id}/void
- Permission
invoice.manage- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
reasonstringrequired1–500 characters
Response object
iduuidrequiredinvoiceIduuidrequiredinvoiceReferencestringrequiredcan 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 nullcreatedAtstringrequiredlinesarray of objectrequirediduuidrequiredinvoiceLineIduuidrequiredcan be nulldescriptionstringrequirednetPenceintegerrequired-9007199254740991 to 9007199254740991
vatRateBpintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
vatRegisteredbooleanrequired
curl -X POST "https://app.workscope.co.uk/v1/credit-notes/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",
"invoiceId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"invoiceReference": "INV-0042",
"clientId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"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",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"invoiceLineId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"netPence": 4500,
"vatRateBp": 1207,
"vatPence": 4500
}
],
"vatRegistered": false
}Raise a credit note from an issued invoice: the whole of it, chosen lines, or an amount, with a reason (a draft, or issued straight away)
POST/v1/invoices/{id}/credits
- Permission
invoice.manage- Module
invoicing- Answers
201
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
Option 1: object
kindconstantrequiredAlways
"whole"reasonstringrequired1–500 characters
uninvoiceBookingsbooleanoptionalDefault
falseissuebooleanoptionalDefault
false
Option 2: object
kindconstantrequiredAlways
"lines"reasonstringrequired1–500 characters
linesarray of objectrequired1–1000 items
invoiceLineIduuidrequirednetPenceintegerrequired0 to 100000000
issuebooleanoptionalDefault
false
Option 3: object
kindconstantrequiredAlways
"amount"reasonstringrequired1–500 characters
grossPenceintegerrequired0 to 100000000
descriptionstringoptionalcan be nullUp to 300 characters
issuebooleanoptionalDefault
false
Response object
iduuidrequiredinvoiceIduuidrequiredinvoiceReferencestringrequiredcan 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 nullcreatedAtstringrequiredlinesarray of objectrequirediduuidrequiredinvoiceLineIduuidrequiredcan be nulldescriptionstringrequirednetPenceintegerrequired-9007199254740991 to 9007199254740991
vatRateBpintegerrequired-9007199254740991 to 9007199254740991
vatPenceintegerrequired-9007199254740991 to 9007199254740991
vatRegisteredbooleanrequired
curl -X POST "https://app.workscope.co.uk/v1/invoices/ID/credits" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"kind": "whole",
"reason": "text",
"uninvoiceBookings": false,
"issue": false
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"invoiceId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"invoiceReference": "INV-0042",
"clientId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"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",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"invoiceLineId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"netPence": 4500,
"vatRateBp": 1207,
"vatPence": 4500
}
],
"vatRegistered": false
}A ready-to-send email for an invoice, in the company's wording: who it could go to, subject and message
GET/v1/invoices/{id}/email
- Permission
invoice.manage- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired | |
kind | query | enum | One of invoice, invoice_reminder, payment_received · Default "invoice" |
Response object
toarray of objectrequiredemailstringrequirednamestringrequiredcan be null
subjectstringrequiredmessagestringrequiredpdfbooleanrequiredlinkstringrequiredcan be null
curl "https://app.workscope.co.uk/v1/invoices/ID/email" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"to": [
{
"email": "office@example.co.uk",
"name": "Harbourside Dental"
}
],
"subject": "text",
"message": "text",
"pdf": false,
"link": "text"
}The invoice as a PDF (kept once issued; a draft is made fresh, marked DRAFT)
GET/v1/invoices/{id}/pdf
- Permission
invoice.view- Module
invoicing- Answers
200with a file (image/jpeg)
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
curl "https://app.workscope.co.uk/v1/invoices/ID/pdf" \
-H "Authorization: Bearer wsk_your_key_here"Record money paid back to the client on a paid invoice with credits
POST/v1/invoices/{id}/refunds
- Permission
invoice.manage- Module
invoicing- Answers
201
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
amountPenceintegerrequired0 to 100000000
refundedOndaterequiredYYYY-MM-DD
methodstringoptionalcan be nullUp to 50 characters
notestringoptionalcan be nullUp to 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/refunds" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"amountPence": 4500,
"refundedOn": "2026-11-06",
"method": "text",
"note": "Side gate code is on the key safe."
}'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 back a refund recorded by mistake
DELETE/v1/invoices/{id}/refunds/{refundId}
- Permission
invoice.manage- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired | |
refundId | 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/refunds/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
}
]
}Email an issued invoice (or a reminder) with its PDF and link; logged on the invoice
POST/v1/invoices/{id}/send
- Permission
invoice.manage- Module
invoicing- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired | |
kind | query | enum | One of invoice, invoice_reminder, payment_received · Default "invoice" |
Request body JSON
toarray of emailrequired1–5 items
subjectstringrequired1–300 characters
messagestringrequired1–10000 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/send" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"to": [
"office@example.co.uk"
],
"subject": "text",
"message": "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
}
]
}