Invoice operations

This page covers the API operations for advancing a draft invoice to final, voiding an invoice before it is finalized, and controlling how tax and sub-lines render on the invoice PDF.


Advancing a draft invoice to final

Draft invoices move to Final automatically once the 8-hour grace period ends, as described in Invoice lifecycle. To advance an invoice immediately, once you’ve reviewed it and are ready to trigger payment collection, set status to FINAL with PATCH /v1/invoices/{id}:

PATCH
/v:version/invoices/:resourceId
1curl -X PATCH https://api.solvimon.com/v1/invoices/invo_LwFkp9AvbstgH5ZZ1Qd4 \
2 -H "X-API-KEY: <apiKey>" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "status": "FINAL"
6}'
Response
1{
2 "object_type": "INVOICE",
3 "id": "invo_LwFkp9AvbstgH5ZZ1Qd4",
4 "invoice_number": "INV-2026-00042",
5 "customer_id": "cust_AbD3DqausjOYiMNDZY11F",
6 "status": "FINAL",
7 "on_hold": false,
8 "type": "STANDARD",
9 "created_at": "2026-07-02T10:00:00Z",
10 "updated_at": "2026-07-02T10:05:00Z",
11 "billing_currency": "EUR",
12 "updated_to_final_at": "2026-07-02T10:05:00Z",
13 "payment_status": "UNPAID",
14 "paid": false
15}

An invoice with on_hold: true won’t advance to Final automatically or via this call until the hold is released. Set on_hold to false and status to FINAL in the same request to release the hold and finalize in one step.

Once Final, the invoice receives a permanent invoice number, becomes immutable, and payment collection is triggered. Corrections must go through a credit note.

Voiding an invoice

Voiding removes an invoice from revenue and accounts receivable records. Use it for invoices created in error. Voided invoices are retained for audit purposes but excluded from financial reporting.

Voiding is only possible for Open or Draft invoices. Correct a Final invoice with a credit note instead.

Set status to VOID with the same PATCH /v1/invoices/{id} endpoint:

PATCH
/v:version/invoices/:resourceId
1curl -X PATCH https://api.solvimon.com/v1/invoices/invo_LwFkp9AvbstgH5ZZ1Qd4 \
2 -H "X-API-KEY: <apiKey>" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "status": "VOID"
6}'

Once voided, the status is permanent and cannot be changed.

To void every Draft and Open invoice for a subscription at once, void the subscription itself with POST /v1/pricing-plan-subscriptions/{id}/void.

Void vs. cancel

VoidCancel (subscription)
Use whenInvoice was created in errorThe contract is legitimately ending
Effect on invoicesSets status to VOIDLeaves already-finalized invoices intact
Applies toOpen or Draft invoices onlyEnds future billing only
ReversibleNoDepends on the cancellation type

Configuring tax and sub-line display

Two settings control how tax and sub-lines render on the invoice PDF. Both are set on the subscription with PATCH /v1/pricing-plan-subscriptions/{id} and are copied onto each invoice at creation time, so already-issued documents keep rendering as originally generated.

Show or hide the tax breakdown per line item

show_tax_per_line_item controls whether tax is shown per invoice line or only summarized at the invoice total. Tax is always calculated per line item; this only affects what’s displayed.

  • true (default): each line shows its tax rate and a per-subtotal “incl. tax” label.
  • false: the tax rate column and per-line labels are removed; tax appears only in the invoice total, summarized per tax rate. Useful for self-billing setups.
PATCH
/v:version/pricing-plan-subscriptions/:resourceId
1curl -X PATCH https://test.api.solvimon.com/v1/pricing-plan-subscriptions/ppsu_ZwDeeN0vcSMXaMAFhN19 \
2 -H "X-API-KEY: <apiKey>" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "show_tax_per_line_item": false
6}'

Show sub-lines per processing-only customer

In parent-child billing hierarchies, display_invoice_sub_lines_per_processing_only_customer controls whether the invoice breaks out a separate sub-line for each processing-only child customer, instead of showing a single combined line for the parent.

PATCH
/v:version/pricing-plan-subscriptions/:resourceId
1curl -X PATCH https://test.api.solvimon.com/v1/pricing-plan-subscriptions/ppsu_ZwDeeN0vcSMXaMAFhN19 \
2 -H "X-API-KEY: <apiKey>" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "display_invoice_sub_lines_per_processing_only_customer": true
6}'

Both settings are also available in Desk under the subscription’s details panel.

These settings apply to invoices created after the change. Already-finalized invoices retain the values in effect when they were created.

Downloading the invoice PDF

Download the invoice as a PDF with GET /v1/invoices/{id}/pdf:

GET
/v:version/invoices/:resourceId/pdf
1curl https://api.solvimon.com/v1/invoices/invo_LwFkp9AvbstgH5ZZ1Qd4/pdf \
2 -H "X-API-KEY: <apiKey>"

This works for Final invoices as well as Draft invoices, where it renders a preview.


See also: Invoice lifecycle, Correcting invoices, and Customizing invoices.