API Reference

Recurring invoices

Create and manage recurring invoice schedules via the Rebill API. Covers the object schema, anchor day options, and activate/deactivate endpoints.

Recurring invoices automatically generate and send invoices to a client on a fixed schedule: weekly, monthly, or yearly. They are a premium feature and require an active premium subscription.

A recurring invoice is a template. When it fires, Rebill creates a real invoice from it and sends it to the client. Recurring invoices must be activated before they start generating invoices.

List recurring invoices

GET /recurring_invoice
curl https://rebill-api-896466068278.africa-south1.run.app/recurring_invoice \
  -H "Authorization: Bearer sk_your_secret_key"

Response:

{
  "recurring_invoices": [
    {
      "id": "ri001",
      "active": true,
      "client_id": "xyz789",
      "currency": "ZAR",
      "interval": "month",
      "interval_amount": 1,
      "start_date": "2026-01-01T00:00:00Z",
      "next_date": "2026-04-01T00:00:00Z",
      "items": [...]
    }
  ]
}

Get a recurring invoice

GET /recurring_invoice/:id

Returns a single recurring invoice by ID.

Recurring invoice object

FieldTypeDescription
idstringUnique identifier
createdtimestampWhen the recurring invoice was created
activebooleanWhether the schedule is currently running
currencystringISO 4217 currency code
client_idstringID of the client to invoice
start_datetimestampDate the schedule begins
end_datetimestampDate the schedule ends (optional; runs indefinitely if absent)
next_datetimestampWhen the next invoice will be generated
intervalstringRecurrence unit: week · month · year
interval_amountintegerNumber of intervals between invoices (e.g. 2 + month = every 2 months)
due_intervalstringUnit for calculating due date: day · week · month · year
due_interval_amountintegerNumber of due_interval units after invoice date (0 = due on issue)
itemsarrayLine items (same structure as invoice items)
notesstringNotes to print on each generated invoice
bank_detailsstringBank details to print on each invoice
vat_enabledbooleanWhether VAT is shown on generated invoices
whatsapp_enabledbooleanWhether generated invoices are sent via WhatsApp
monthly_anchorstringControls which day of the month invoices are generated (see below)
monthly_anchor_dayintegerUsed when monthly_anchor is specific_day (1–31)
late_fee_disabledbooleanWhether late fees are disabled for generated invoices

Monthly anchor

When the interval is month or year, the monthly_anchor field controls exactly which day of the month each invoice is generated:

ValueDescription
same_daySame day of the month as the start date (default)
first_dayFirst day of the month
last_dayLast day of the month
specific_dayA specific day; set monthly_anchor_day to the day (1–31)
last_day_offsetOffset from the end of the month

Create a recurring invoice

POST /recurring_invoice
FieldRequiredTypeDescription
client_idYesstringID of an existing client
start_dateYesdateDate the schedule begins (YYYY-MM-DD)
intervalYesstringRecurrence unit: week · month · year
interval_amountYesintegerNumber of intervals between invoices (must be > 0)
due_intervalYesstringDue date unit: day · week · month · year
due_interval_amountYesintegerNumber of due_interval units after issue date (0 = due on issue)
itemsYesarrayAt least one line item
currencyNostringISO 4217 code; defaults to your account currency
end_dateNodateDate the schedule ends; omit for indefinite
notesNostringNotes to print on each generated invoice
bank_detailsNostringBank details to print on each invoice
vat_enabledNobooleanShow VAT on generated invoices (default: false)
whatsapp_enabledNobooleanSend via WhatsApp when invoices are generated (default: false)
monthly_anchorNostringsame_day · first_day · last_day · specific_day · last_day_offset
monthly_anchor_dayNointegerDay of month when monthly_anchor is specific_day (1–31)
late_fee_disabledNobooleanDisable late fees on generated invoices (default: false)
curl -X POST https://rebill-api-896466068278.africa-south1.run.app/recurring_invoice \
  -H "Authorization: Bearer sk_your_secret_key" \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": "xyz789",
    "start_date": "2026-04-01",
    "interval": "month",
    "interval_amount": 1,
    "due_interval": "day",
    "due_interval_amount": 14,
    "currency": "ZAR",
    "items": [
      {
        "type": "service",
        "name": "Monthly retainer",
        "description": "Ongoing consulting retainer",
        "quantity": 1,
        "unit_price": 1500000,
        "vat_type": "exclusive",
        "vat_rate": 1500
      }
    ]
  }'

Response (201 Created):

{
  "id": "ri001"
}

The recurring invoice is created in an inactive state. You must activate it before it starts generating invoices.

Update a recurring invoice

PUT /recurring_invoice/:id

Updates a recurring invoice. Accepts the same fields as create.

Delete a recurring invoice

DELETE /recurring_invoice/:id

Permanently deletes a recurring invoice. Returns 200 OK on success.

Activate a recurring invoice

PUT /recurring_invoice/:id/activate

Activates the schedule. Once active, Rebill will generate and send invoices on the configured cadence starting from the start_date.

curl -X PUT https://rebill-api-896466068278.africa-south1.run.app/recurring_invoice/ri001/activate \
  -H "Authorization: Bearer sk_your_secret_key"

Deactivate a recurring invoice

PUT /recurring_invoice/:id/deactivate

Pauses the schedule. No new invoices will be generated until the recurring invoice is activated again. Existing generated invoices are not affected.

curl -X PUT https://rebill-api-896466068278.africa-south1.run.app/recurring_invoice/ri001/deactivate \
  -H "Authorization: Bearer sk_your_secret_key"

Was this article helpful?