Skip to main content
POST
Tenant credential
Required scopes: invoices.write.

Authorizations

X-API-Key
string
header
required

Tenant credential. This is sufficient by itself.

Headers

X-PrintTools-Organization-Id
string<uuid>

Tenant credential: optional and, when sent, must equal the shop bound to the key. Partner credential: required; it selects an organisation the user previously authorised.

Idempotency-Key
string

Optional client-generated key for write retries. Reusing it with a different request returns 409; a replay includes Idempotency-Replayed: true.

Required string length: 1 - 200

Path Parameters

invoiceId
string<uuid>
required

UUID.

Example:

"11111111-2222-3333-4444-555555555555"

Body

application/json

Parity with SendQuoteInput (F-29). Send Invoice is now the Send Quote flow — a Review step then a Compose & Send step with {{tokens}} and a live preview — so the operator composes a subject and can copy themselves, exactly as on a quote. The field names differ from the quote's (toEmail vs emailTo) only because this input shipped first; renaming it would break every deployed client.

toEmail
string
required
emailSubject
string

Operator-composed subject. Omitted or blank → the server default, Invoice {ref}, which is what every send used before F-29.

emailBodyMarkdown
string

The WHOLE email body as Markdown, with {{tokens}} already resolved by the client — the same contract as SendQuoteInput.emailBodyMarkdown. When set, the server composes nothing: no invoice summary block is prepended.

ccSelfEmail
string

Copy the sending rep, as on a quote.

message
string

A note PREPENDED to a server-composed summary (ref, amount due, due date, pay link). Kept working for clients that predate F-29.

Response

Successful response.

Every 2xx response uses this envelope.

status
boolean
required

The actual resolver result. It can be false when an operation returns false or null without throwing.

message
string
required
Example:

"OK"

data
object
required