curl --request POST \
--url https://thirdparty.qonto.com/v2/recurring_invoices/{id}/cancel \
--header 'Authorization: Bearer <token>'import requests
url = "https://thirdparty.qonto.com/v2/recurring_invoices/{id}/cancel"
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}/cancel', 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}/cancel",
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}/cancel"
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}/cancel")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://thirdparty.qonto.com/v2/recurring_invoices/{id}/cancel")
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"
}
}
}Cancel a recurring invoice
OAuth scope: client_invoice.write
Cancels the recurring invoice identified by the id path parameter. No further invoices are generated, and next_invoice_date stops advancing. Invoices already generated are not changed.
Cancellation is final. A canceled recurring invoice cannot be reactivated, suspended or updated. Create a new one instead.
Cancellable from scheduled, active or suspended. A recurring invoice that is already canceled or has finished returns 412 recurring_invoice_status_transition_forbidden.
Takes no request body.
curl --request POST \
--url https://thirdparty.qonto.com/v2/recurring_invoices/{id}/cancel \
--header 'Authorization: Bearer <token>'import requests
url = "https://thirdparty.qonto.com/v2/recurring_invoices/{id}/cancel"
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}/cancel', 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}/cancel",
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}/cancel"
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}/cancel")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://thirdparty.qonto.com/v2/recurring_invoices/{id}/cancel")
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 canceled.
Show child attributes
Show child attributes
Was this page helpful?