Skip to main content
PUT
Update a recurring invoice
Authentication: API key OAuth 2.0
Scope: client_invoice.write
Leaving a field out clears or resets it. purchase_order, terms_and_conditions, header, footer, end_date, discount, email_template, payment_link and payment_reporting are removed if the body does not carry them, even when they were set in the Qonto app. currency is reset to EUR and invoice_status to unpaid. items is replaced as a whole, and the new items get new ids.Settings this endpoint does not accept are kept: direct debit, welfare fund, withholding tax, stamp duty, e-invoicing and the attachment.
What you can change depends on the current status.
  • scheduled: every field can change.
  • active and suspended: frequency and start_date cannot change. Sending a different value returns a 422 with code frequency_not_updatable or start_date_not_updatable. Every other field can still change.
  • canceled and finished: the recurring invoice cannot be updated. A valid request returns a 412 with code recurring_invoice_not_updatable.
Updating a scheduled recurring invoice whose start_date is today generates an invoice immediately, and the recurring invoice becomes active. The response does not include the id of that invoice. Organizations with an Italian legal country must send payment_reporting. Without it the request returns a 422.

Authorizations

Authorization
string
header
required

Bearer authorization header: Bearer <token>, where <token> is the access token received from the authorization server at the end of the OAuth 2.0 flow.

Headers

X-Qonto-Staging-Token
string

Required only for Sandbox API requests; to get one, please sign up to the Developer Portal.

Path Parameters

id
string<uuid>
required

The unique identifier of the recurring invoice.

Body

application/json

The complete recurring invoice. A field you leave out is cleared or reset to its default, so send every field you want to keep. Settings this endpoint does not accept, such as direct debit, welfare fund, withholding tax and stamp duty, are kept as they are.

client_id
string<uuid>
required

The client this recurring invoice bills.

Example:

"5c1f4e3a-9b7d-4a1e-8f2c-3d6b8a0e7f11"

start_date
string<date>
required

The date of the first occurrence. Cannot change once the recurring invoice is active or suspended.

Example:

"2030-01-01"

payment_terms_days
integer
required

Days between an occurrence's invoice date and its due date.

Required range: 0 <= x <= 365
Example:

30

frequency
object
required

Cannot change once the recurring invoice is active or suspended.

bank_account
object
required

The bank account generated invoices are paid to, identified by IBAN.

items
object[]
required

The line items billed on every occurrence. The whole list is replaced, and the new items get new ids.

Minimum array length: 1
end_date
string<date> | null

The date after which no further invoice is generated. Must be on or after start_date. Leave it out to remove it.

Example:

"2031-01-01"

currency
string

Currency for the recurring invoice and its items, as an ISO 4217 trigram. Every item's currency has to match it. Reset to EUR when left out, even if the recurring invoice used another currency.

Example:

"EUR"

invoice_status
enum<string>

The status each generated invoice is created as. Reset to unpaid when left out, even if it was draft.

Available options:
draft,
unpaid
email_template
object

How each generated invoice is emailed to the client. Required when invoice_status is unpaid. Leave it out to remove it, which is only valid when invoice_status is draft.

purchase_order
string | null

The purchase order reference printed on every generated invoice. Leave it out to remove it.

Maximum string length: 40
Example:

"PO-2026-001"

terms_and_conditions
string | null

The terms and conditions printed on every generated invoice. Leave them out to remove them.

Maximum string length: 50000
header
string | null

The header printed on every generated invoice. Leave it out to remove it.

Maximum string length: 50000

The footer printed on every generated invoice. Leave it out to remove it.

Maximum string length: 50000
discount
object | null

An overall discount applied to every generated invoice. Leave it out to remove the discount.

The payment methods offered on every generated invoice. Leave it out, or send an empty methods list, to remove the payment link.

payment_reporting
object

Italian payment reporting details. Required for organizations with an Italian legal country. For other organizations, leave them out to remove them.

Response

Returns the updated recurring invoice.

recurring_invoice
object
required