Retrieve a recurring invoice
curl --request GET \
--url https://thirdparty.qonto.com/v2/recurring_invoices/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://thirdparty.qonto.com/v2/recurring_invoices/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://thirdparty.qonto.com/v2/recurring_invoices/{id}', 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}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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}"
req, _ := http.NewRequest("GET", 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.get("https://thirdparty.qonto.com/v2/recurring_invoices/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://thirdparty.qonto.com/v2/recurring_invoices/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.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"
}
}
}Recurring invoices
Retrieve a recurring invoice
Returns the recurring invoice identified by the id path parameter, including its schedule, its line items and the amount each occurrence bills.
GET
/
v2
/
recurring_invoices
/
{id}
Retrieve a recurring invoice
curl --request GET \
--url https://thirdparty.qonto.com/v2/recurring_invoices/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://thirdparty.qonto.com/v2/recurring_invoices/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://thirdparty.qonto.com/v2/recurring_invoices/{id}', 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}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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}"
req, _ := http.NewRequest("GET", 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.get("https://thirdparty.qonto.com/v2/recurring_invoices/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://thirdparty.qonto.com/v2/recurring_invoices/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.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"
}
}
}Authentication: API key OAuth 2.0
Scope:
Scope:
client_invoices.read
Line items are flat. A recurring invoice created in the Qonto app can group its items into named sections. This endpoint returns every item in a single
items array, in section order, matching the flat items array POST /v2/recurring_invoices accepts. Section titles are not exposed.next_invoice_date is the date the next invoice will be generated. While the recurring invoice is suspended, next_invoice_date is left out of the response, but the schedule keeps moving: dates that fall during the suspension are skipped and not billed later. After reactivation, next_invoice_date shows the next scheduled date.Authorizations
OAuthSecretKey
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
Returns the recurring invoice identified by the id path parameter.
Show child attributes
Show child attributes
Was this page helpful?