Delete an invoice line
DELETEhttps://
Soft-deletes one line and recalculates the invoice's subtotal, vat_total and total in the same transaction.
Access
- Token scope
- api:
destroy: sales_invoices Without it:
403 insufficient-token-scope. - Permission
- sales_invoices::
delete Without it:
403 insufficient-permission. - Feature
- Needs the billing feature on your organisation.
Without it:
404 endpoint-not-found. - Rate cost
- 1 unit, write bucket.
- Also
- Accepts
If-Match. Never cached:private, no-store. Unknown query parameters are refused, never ignored.
Both are checked, scope first. A token never does more than its user. How access is checked
There is no permanent delete and no restore verb: a line comes back by being re-created through POST sales-invoices/{sales_invoice}/rows, or by restoring the invoice it belonged to. Because this is a soft delete, worklogs settled against the line keep pointing at it: they are neither shown as re-invoiceable nor released, and re-creating the line does not re-couple them. Only deleting the whole invoice releases its hours. Re-deleting an already-deleted line answers 204, so a retry is safe. A line of a legacy or synced invoice answers 409 state-conflict. A caller without sales_invoices::finalize also returns the invoice to pending_approval, as editing the invoice itself does.
Path parameters
Request headers
A correlation id of your own. It is recorded in our logs next to the server's request id but never returned: the response header always carries the server's id. A value that does not match the pattern is discarded silently, never rejected.
Response 204
Returns no content.
Headers
RateLimit- The IETF
httpapi-ratelimit-headersform of your remaining allowance on the tightest bucket this request touched. RateLimit-Policy- The ceiling and window of that bucket, as
<limit>;w=<seconds>. X-Request-Id- The server-generated ULID correlating this response with our logs.
Every response also carries Cache-Control, Vary, X-Content-Type-Options, X-Plnnrly-Api-Version, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. Headers and versioning
Errors
409 Conflict.
412 Precondition failed.
7 errors every operation can return: 400, 401, 404, 406, 429, 500, 503
400 Bad request.
idempotency-key-requiredinvalid-cursorinvalid-query-parametermalformed-requestunsupported-parameter
401 Unauthenticated.
404 Not found.
406 Not acceptable.
429 Too many requests.
500 Server error.
503 Service unavailable.
This path allows GET, PATCH, DELETE. Anything else answers 405.
Something wrong or missing on this page? Tell us