Recurring Invoices
List recurring invoice settings and view generated invoice history via the API.
Recurring Invoices API
Read recurring invoice settings and their generated history. All endpoints require an API token with the documents.view ability.
List Recurring Invoice Settings
GET /api/v1/recurring-invoices — Permission: documents.view
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
status | string | No | Filter by status: active, paused, completed, cancelled |
per_page | integer | No | Results per page, 1–100 (default: 25) |
Example Request
curl -X GET "https://your-domain.com/api/v1/recurring-invoices?status=active" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"const response = await fetch("https://your-domain.com/api/v1/recurring-invoices?status=active", {
headers: {
"Authorization": "Bearer YOUR_API_TOKEN",
"Accept": "application/json"
}
});
const data = await response.json();$ch = curl_init("https://your-domain.com/api/v1/recurring-invoices?status=active");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer YOUR_API_TOKEN",
"Accept: application/json",
],
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);import requests
response = requests.get(
"https://your-domain.com/api/v1/recurring-invoices?status=active",
headers={
"Authorization": "Bearer YOUR_API_TOKEN",
"Accept": "application/json"
}
)
data = response.json()Example Response
{
"data": [
{
"id": 1,
"document_id": 42,
"frequency": "monthly",
"frequency_interval": 1,
"next_billing_date": "2025-07-01",
"status": "active",
"cycles_completed": 5,
"total_cycles": 12,
"auto_send": true,
"last_generated_at": "2025-06-01T00:00:00.000000Z",
"created_at": "2025-01-01T10:00:00.000000Z",
"updated_at": "2025-06-01T00:00:00.000000Z"
}
],
"meta": { "current_page": 1, "last_page": 1, "per_page": 25, "total": 1 },
"links": { "first": "...", "last": "...", "prev": null, "next": null }
}
Get Recurring Invoice Setting
GET /api/v1/recurring-invoices/{id} — Permission: documents.view
Returns the setting with a list of generated invoices (most recent first, up to 50).
Example Request
curl -X GET "https://your-domain.com/api/v1/recurring-invoices/1" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"const response = await fetch("https://your-domain.com/api/v1/recurring-invoices/1", {
headers: {
"Authorization": "Bearer YOUR_API_TOKEN",
"Accept": "application/json"
}
});
const data = await response.json();$ch = curl_init("https://your-domain.com/api/v1/recurring-invoices/1");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer YOUR_API_TOKEN",
"Accept: application/json",
],
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);import requests
response = requests.get(
"https://your-domain.com/api/v1/recurring-invoices/1",
headers={
"Authorization": "Bearer YOUR_API_TOKEN",
"Accept": "application/json"
}
)
data = response.json()Example Response
{
"data": {
"id": 1,
"document_id": 42,
"frequency": "monthly",
"frequency_interval": 1,
"next_billing_date": "2025-07-01",
"status": "active",
"cycles_completed": 5,
"total_cycles": 12,
"auto_send": true,
"last_generated_at": "2025-06-01T00:00:00.000000Z",
"created_at": "2025-01-01T10:00:00.000000Z",
"updated_at": "2025-06-01T00:00:00.000000Z",
"generated_invoices": [
{ "id": 80, "number": "INV-0080", "status": "paid", "total": "500.00", "created_at": "2025-06-01T00:00:00.000000Z" },
{ "id": 65, "number": "INV-0065", "status": "paid", "total": "500.00", "created_at": "2025-05-01T00:00:00.000000Z" }
]
}
}
Was this article helpful?