curl --request POST \
--url https://thirdparty.qonto.com/v2/recurring_invoices/{id}/suspend \
--header 'Authorization: Bearer <token>'import requests
url = "https://thirdparty.qonto.com/v2/recurring_invoices/{id}/suspend"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://thirdparty.qonto.com/v2/recurring_invoices/{id}/suspend', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://thirdparty.qonto.com/v2/recurring_invoices/{id}/suspend",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://thirdparty.qonto.com/v2/recurring_invoices/{id}/suspend"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://thirdparty.qonto.com/v2/recurring_invoices/{id}/suspend")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://thirdparty.qonto.com/v2/recurring_invoices/{id}/suspend")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"recurring_invoice": {
"id": "0198f2c1-8a3e-7c11-9f4d-2b6a7c8e9d01",
"status": "scheduled",
"client_id": "5c1f4e3a-9b7d-4a1e-8f2c-3d6b8a0e7f11",
"start_date": "2026-09-01",
"frequency": {
"value": 1,
"recurrence": "monthly"
},
"payment_terms_days": 30,
"invoice_status": "draft",
"purchase_order": "PO-2026-042",
"terms_and_conditions": "<string>",
"header": "<string>",
"footer": "<string>",
"currency": "EUR",
"amount_due": {
"value": "120.00",
"currency": "EUR"
},
"bank_account": {
"iban": "FR7630006000011234567890189",
"bic": "QNTOFRP1XXX"
},
"email_template": {
"send_to": [
"accounting@acme.com"
],
"copy_to_self": true,
"email_title": "Your invoice",
"email_body": "<string>"
},
"direct_debit_enabled": true,
"is_einvoice": true,
"items": [
{
"title": "Consulting",
"description": "<string>",
"quantity": "1",
"unit_price": {
"value": "100.00",
"currency": "EUR"
},
"vat_rate": "0.2",
"unit": "hour",
"vat_exemption_code": "<string>",
"discount": {
"type": "percentage",
"value": "0.1000"
}
}
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"client_name": "ACME SAS",
"end_date": "2023-12-25",
"next_invoice_date": "2026-10-01",
"prev_invoice_date": "2023-12-25",
"discount": {
"type": "percentage",
"value": "0.1000"
},
"payment_link": {
"methods": [
"credit_card"
]
},
"payment_reporting": {
"method": "MP01",
"conditions": "TP01"
}
}
}Suspend a recurring invoice
OAuth scope: client_invoice.write
Suspends the recurring invoice identified by the id path parameter, so no invoice is generated while it stays suspended. Invoices already generated are not changed.
Suspending does not pause the schedule. While suspended, next_invoice_date is left out of responses, but the schedule keeps moving. If you suspend for three months and then reactivate, generation resumes at the next scheduled date. The three skipped invoices are not generated.
Only an active recurring invoice can be suspended. A scheduled one, whose first invoice has not been generated yet, returns 412 recurring_invoice_status_transition_forbidden. Cancel it instead. canceled and finished are final and cannot be suspended either.
Takes no request body.
curl --request POST \
--url https://thirdparty.qonto.com/v2/recurring_invoices/{id}/suspend \
--header 'Authorization: Bearer <token>'import requests
url = "https://thirdparty.qonto.com/v2/recurring_invoices/{id}/suspend"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://thirdparty.qonto.com/v2/recurring_invoices/{id}/suspend', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://thirdparty.qonto.com/v2/recurring_invoices/{id}/suspend",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://thirdparty.qonto.com/v2/recurring_invoices/{id}/suspend"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://thirdparty.qonto.com/v2/recurring_invoices/{id}/suspend")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://thirdparty.qonto.com/v2/recurring_invoices/{id}/suspend")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"recurring_invoice": {
"id": "0198f2c1-8a3e-7c11-9f4d-2b6a7c8e9d01",
"status": "scheduled",
"client_id": "5c1f4e3a-9b7d-4a1e-8f2c-3d6b8a0e7f11",
"start_date": "2026-09-01",
"frequency": {
"value": 1,
"recurrence": "monthly"
},
"payment_terms_days": 30,
"invoice_status": "draft",
"purchase_order": "PO-2026-042",
"terms_and_conditions": "<string>",
"header": "<string>",
"footer": "<string>",
"currency": "EUR",
"amount_due": {
"value": "120.00",
"currency": "EUR"
},
"bank_account": {
"iban": "FR7630006000011234567890189",
"bic": "QNTOFRP1XXX"
},
"email_template": {
"send_to": [
"accounting@acme.com"
],
"copy_to_self": true,
"email_title": "Your invoice",
"email_body": "<string>"
},
"direct_debit_enabled": true,
"is_einvoice": true,
"items": [
{
"title": "Consulting",
"description": "<string>",
"quantity": "1",
"unit_price": {
"value": "100.00",
"currency": "EUR"
},
"vat_rate": "0.2",
"unit": "hour",
"vat_exemption_code": "<string>",
"discount": {
"type": "percentage",
"value": "0.1000"
}
}
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"client_name": "ACME SAS",
"end_date": "2023-12-25",
"next_invoice_date": "2026-10-01",
"prev_invoice_date": "2023-12-25",
"discount": {
"type": "percentage",
"value": "0.1000"
},
"payment_link": {
"methods": [
"credit_card"
]
},
"payment_reporting": {
"method": "MP01",
"conditions": "TP01"
}
}
}Authorizations
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
Required only for Sandbox API requests; to get one, please sign up to the Developer Portal.
Path Parameters
The unique identifier of the recurring invoice.
Response
The recurring invoice, now suspended.
Show child attributes
Show child attributes
Was this page helpful?