Mark a quote as rejected by the customer

View as Markdown
Records the customer's refusal of the offer (`status` → `rejected`). The mirror of [`acceptQuote`](#operation/acceptQuote). Available from `sent` and from `expired` — an offer the customer let lapse can still be recorded as explicitly declined. **Not idempotent**, unlike `accept`: a second call on an already `rejected` quote returns 422. **Required scope: `manage:quotes`**.

Authentication

AuthorizationBearer

JWT issued via POST /api/v1/auth/sign_in. Used by mobile and SPA clients. Revoked tokens are rejected.

OR
AuthorizationBearer
Lucanto API key. Two prefixes: - `lct_pat_<random><checksum>` — personal access token (owner: User) - `lct_live_<random><checksum>` — workspace token, live data Issue keys at `/settings/api_keys` (personal) or `/:workspace_id/settings/api_keys` (workspace). Plaintext token is shown once and never again.

Path parameters

workspace_idlongRequired>=1
Workspace ID. The numeric ID shown in your URLs.
idlongRequired>=1
Quote ID

Response

OK. The rejected quote (with status: rejected).

idlong
typeenum

Document type discriminator. Always quote on this endpoint.

statusenum

Quote lifecycle state. issued is ready for external use; sent has reached the customer; accepted and rejected record the customer’s decision; expired is past expiry_date; reopened is where reopenQuote lands a previously locked quote (editable again, must be re-sent); canceled is explicitly retired.

expiry_datedate
Quote validity end date. Required at creation. The model rejects past dates on create unless the record originates from an import.
currencystring

ISO-4217 currency code.

created_atdatetime
updated_atdatetime
payment_statusenum or nullOptional

Derived settlement degree. Null for quotes because they are non-payable.

overdueboolean or nullOptional

Null for quotes because they are non-payable.

paid_lateboolean or nullOptional

Null for quotes because they are non-payable.

status_transitionsobjectOptional
numberstring or nullOptional

Quote number (formatted via number_series, e.g. ‘CEN2026-0001’). Null for drafts.

issue_datedate or nullOptional
delivery_datedate or nullOptional
due_datedate or nullOptional

Payment due date; typically null for quotes.

due_daysinteger or nullOptional
exchange_ratestring or nullOptionalformat: "decimal"
order_numberstring or nullOptional
included_in_turnoverboolean or nullOptional
reverse_chargeboolean or nullOptional
reverse_charge_textstring or nullOptional
tax_schemestringOptional

Tax scheme (UNCL 5153), e.g. “VAT”.

discount_descriptionstring or nullOptional
discount_percentagestring or nullOptionalformat: "decimal"
discount_amountstring or nullOptionalformat: "decimal"
opening_textstring or nullOptional
closing_textstring or nullOptional
footer_notestring or nullOptional
internal_notestring or nullOptional
pdf_languagestring or nullOptional
pdf_localestring or nullOptional
delivery_methodstring or nullOptional

Delivery/carrier mode

email_sent_atdatetime or nullOptional
amount_paidstring or nullOptionalformat: "decimal"

Amount settled so far. Always null for quotes (non-payable type).

amount_duestring or nullOptionalformat: "decimal"

Outstanding amount. Always null for quotes (non-payable type).

import_sourceenum or nullOptional

Origin of the document. null when it was created in Lucanto, in which case totals are Lucanto’s EN 16931 calculation. A non-null value means the document was imported from that system and initially carries the source system’s own figures, preserved verbatim; those may differ by cents from Lucanto’s calculation because systems round VAT at different levels (line vs. category). insight means AI extraction from an uploaded file, not an import from another vendor. This records provenance only, not which calculation is currently in effect — editing line items or document discounts recomputes totals in Lucanto while leaving import_source set. In practice a document only ever carries kros_developer, isdoc, superfaktura or null. kros appears only on rows imported before the writer was renamed, and insight is written by the expense path only. The enum is kept as the union across resources rather than narrowed, so a legacy row cannot fail validation.

totalsobjectOptional
settingsobjectOptional
line_itemslist of objectsOptional
customerobject or nullOptional

The party identity as it appears on a document. On an ISSUED document this is the identity the document was issued with — a snapshot pinned at issue, which does NOT change when the legal entity is later renamed, re-registered, or moved. A draft follows the entity’s current identity. id is the legal entity’s id and is stable across identity changes, so a stored reference keeps resolving. This matches the PDF and the ISDOC export of the same document. vat_period is not part of this projection — a counterparty’s filing period is not knowable.

supplierobject or nullOptional

The party identity as it appears on a document. On an ISSUED document this is the identity the document was issued with — a snapshot pinned at issue, which does NOT change when the legal entity is later renamed, re-registered, or moved. A draft follows the entity’s current identity. id is the legal entity’s id and is stable across identity changes, so a stored reference keeps resolving. This matches the PDF and the ISDOC export of the same document. vat_period is not part of this projection — a counterparty’s filing period is not knowable.

Errors

401
Unauthorized Error
402
Payment Required Error
403
Forbidden Error
404
Not Found Error
422
Unprocessable Entity Error
429
Too Many Requests Error