POST to /api.xro/2.0/RepeatingInvoices with a Schedule object specifying Period (e.g., MONTHLY), Unit (1), DueDate, EndDate, and the repeating invoice template including Contact and LineItems
Retrieve all active repeating invoices via GET /api.xro/2.0/RepeatingInvoices to confirm creation and obtain the RepeatingInvoiceID
Update schedule or line items by sending a PUT to /api.xro/2.0/RepeatingInvoices/{RepeatingInvoiceID} with the modified fields
List the draft invoices generated from the template on their scheduled dates via GET /api.xro/2.0/Invoices?Status=DRAFT and identify those whose InvoiceNumber matches the repeating template pattern
Approve generated draft invoices individually via PUT /api.xro/2.0/Invoices/{InvoiceID} setting Status to AUTHORISED, or use the bulk approve endpoint with multiple invoice objects in the payload
Known gotchas
Changing the Schedule on an existing repeating invoice affects only future occurrences; already-generated draft invoices are independent objects and must be updated separately
Setting EndDate to a date in the past effectively deactivates the repeating invoice but does not delete it; use Status: DELETED to remove it from active listings
Repeating invoices do not send automatic email reminders; you must listen for the generated DRAFT invoice via webhook or polling and trigger email via the Send Invoice endpoint separately
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp