Recurring Invoices & Subscriptions
Automate repeating billing cycles in Katixo. Ideal for Annual Maintenance Contracts (AMC), monthly retainer agreements, facility leases, software subscriptions, and scheduled repeat client billings.
1. Module Overview: Automated Headless Invoicing
Rather than manually re-creating identical monthly invoices for repeat clients, recurring profiles automate invoice creation on designated schedule dates:
Flexible Frequencies
Configure Weekly, Monthly, Quarterly, Semi-Annual, or Annual generation cadences.
Auto-Send Option
Automatically transitions invoices to SENT status and dispatches PDF copies via WhatsApp and Email.
Fixed Term or Perpetual
Set fixed contract dates (e.g. 12 months) or keep perpetual until client cancellation.
2. How to Set Up a Recurring Profile (Step-by-Step UI Guide)
- 1Go to Sales > Recurring Invoices > Click "New Recurring Profile":Select the customer contact.
- 2Configure Schedule & Term:Choose frequency (e.g. Monthly), Start Date, and optional End Date. Enable "Auto Send" if you want the system to deliver the bill without manual review.
- 3Define Invoice Template Lines:Add retainer items, services, or rental lines with negotiated rates and GST.
- 4Activate Profile:Save the profile. On the due date, Katixo's cron job automatically generates the next invoice and increments the generation counter.
Developer & REST API Reference
Programmatically query, create, stop, and resume recurring billing schedules via REST:
/api/v1/recurring-invoices/api/v1/recurring-invoices/{id}/api/v1/recurring-invoices/api/v1/recurring-invoices/{id}/api/v1/recurring-invoices/{id}/stop/api/v1/recurring-invoices/{id}/resumeCreate a recurring invoice
/api/v1/recurring-invoicescurl -X POST https://api.katixo.com/api/v1/recurring-invoices \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"contactId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"frequency": "MONTHLY",
"startDate": "2026-07-01",
"endDate": "2027-06-30",
"autoSend": true,
"lines": [
{
"description": "Monthly AMC — POS System",
"quantity": 1,
"unitPrice": 5000.00,
"gstRate": 18.00
}
],
"notes": "Annual Maintenance Contract — POS hardware and software"
}'Request body
| Field | Type | Required | Description |
|---|---|---|---|
contactId | UUID | Yes | Customer contact to bill. |
frequency | string | Yes | Billing frequency: WEEKLY, MONTHLY, QUARTERLY, YEARLY. |
startDate | date | Yes | Date of the first invoice. |
lines | array | Yes | Line items (same structure as invoice lines). |
endDate | date | No | When to stop generating invoices. Runs indefinitely if omitted. |
autoSend | boolean | No | Automatically send generated invoices. Default: false. |
Stop & resume
/api/v1/recurring-invoices/{id}/stop/api/v1/recurring-invoices/{id}/resumePause a recurring invoice schedule without deleting it. No new invoices are generated while stopped. Resume to continue from where it left off.
The RecurringInvoice object
{
"id": "f6a7b8c9-d0e1-2345-6789-abcdef012345",
"contactId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"customerName": "Sharma General Store",
"frequency": "MONTHLY",
"startDate": "2026-07-01",
"endDate": "2027-06-30",
"nextInvoiceDate": "2026-08-01",
"status": "ACTIVE",
"autoSend": true,
"invoicesGenerated": 1,
"totalBilled": 5900.00,
"lines": [
{
"description": "Monthly AMC — POS System",
"quantity": 1,
"unitPrice": 5000.00,
"gstRate": 18.00,
"lineTotal": 5900.00
}
],
"notes": "Annual Maintenance Contract — POS hardware and software",
"createdAt": "2026-06-15T10:00:00Z"
}