List recurring invoice templates
/partners/recurring-invoice-templatesReturns a paginated list of recurring invoice templates in the workspace.
Defaults to non-draft templates. Pass isDraft=true to retrieve templates still seeded from a draft invoice, or isDraft=all for both. Results embed the customer and line items. Use search and ordering to narrow the list.
Query parameters
pageintegeroptionalPage number for pagination. The first page is 1.
limitintegeroptionalRecords to return per page.
searchstringoptionalPartial, case-insensitive match across invoice title, summary, email, customer name, and total amount.
orderByenumoptionalField to sort by. Defaults to nextInvoiceDate.
One of: customer, nextInvoiceDate, createdAt, updatedAt, total
orderDirectionenumoptionalSort direction. Defaults to DESC.
One of: ASC, DESC
isDraftstringoptionalDraft filter: true returns only templates still seeded from a draft invoice, false (default) returns only active templates, all returns both.
One of: true, false, all
Responses
200Paginated list of recurring invoice templates.401Missing or invalid HMAC signature, expired timestamp, or invalid Bearer token. Troubleshoot403The credential does not have access to this workspace or resource. Troubleshoot429Rate limit exceeded (100 requests per minute per clientId). Retry after the Retry-After header. Troubleshoothttps://api.getcount.com/partners/recurring-invoice-templatesimport crypto from 'node:crypto';
const BASE_URL = 'https://api.getcount.com';
const CLIENT_ID = process.env.COUNT_CLIENT_ID;
const CLIENT_SECRET = process.env.COUNT_CLIENT_SECRET;
const ACCESS_TOKEN = process.env.COUNT_ACCESS_TOKEN;
const method = 'GET';
const signingPath = '/recurring-invoice-templates';
const timestamp = Math.floor(Date.now() / 1000).toString();
const bodyString = '';
const bodyHash = '';
const baseString = `${method}:${signingPath}:${timestamp}:${bodyHash}`;
const signature = crypto.createHmac('sha256', CLIENT_SECRET).update(baseString).digest('hex');
const response = await fetch(`${BASE_URL}/partners/recurring-invoice-templates`, {
method,
headers: {
'x-client-id': CLIENT_ID,
'x-timestamp': timestamp,
'x-signature': signature,
Authorization: `Bearer ${ACCESS_TOKEN}`,
},
});
console.log(await response.json());{
"status": "success",
"message": "Success on fetching recurring invoice templates",
"data": {
"result": [
{
"id": "c4d5e6f7-a8b9-0123-cdef-456789012345",
"invoiceTitle": "Monthly consulting retainer",
"summary": "Recurring monthly invoice for Acme Corporation",
"email": "contact@acme.com",
"currency": "USD",
"subtotal": 1000,
"taxTotal": 85,
"total": 1085,
"invoiceType": "invoice",
"customer": {
"id": "dfa3219e-6af8-4c53-997a-037534f63a35",
"customer": "Acme Corporation",
"email": "contact@acme.com",
"contactName": "John Doe"
},
"invoiceProducts": [
{
"id": "d5e6f7a8-b9c0-1234-defa-567890123456",
"productServiceId": "aa11bb22-cc33-dd44-ee55-ff6677889900",
"description": "Consulting services",
"quantity": 10,
"unitPrice": 100,
"price": 100,
"nonTaxable": false
}
],
"createdInvoiceTemplate": {
"recurrencePattern": "monthly",
"recurrenceInterval": 1,
"occurrenceCount": null,
"remainingOccurrence": null,
"recurrenceEndDate": null,
"nextInvoiceDate": "2026-04-01",
"inAdvanceCreationDays": 0,
"creationDate": "2026-04-01",
"emailCustomer": true
},
"createdAt": "2026-01-15T10:30:00.000Z",
"updatedAt": "2026-01-28T14:22:30.000Z"
}
],
"page": 1,
"limit": 20,
"totalPages": 1,
"totalRecords": 1
}
}