idrequired | Id | — |
tenantrequired | TenantRef | — |
merchantAccountIdoptional | Id | The merchant account the invoices of this schedule are routed through. Absent means the business default, then the workspace default account. |
clientIdrequired | Id | — |
titleoptional | string | Untrusted text— |
frequencyrequired | RecurringFrequency | — |
anchorDayoptional | integer | Day of the period to issue on. A 31 in a 30-day month clamps to the last day; that rule lives and is stated here so two implementations cannot disagree. |
startDateoptional | DateOnly | — |
endDateoptional | DateOnly | — |
occurrenceLimitoptional | integer | 600, what the server and REST accept. Counts ISSUED occurrences: skipped ones (below) do not use it up. |
skippedOccurrencesoptional | integer | SERVER-WRITTEN. Occurrences passed over on purpose: when a resume, a past start date or a timing edit would have issued invoices for dates before today, the caller chose missed: skip. |
occurrencesIssuedoptional | integer | SERVER-WRITTEN. |
nextRunAtoptional | IsoTimestamp | SERVER-WRITTEN. Resolved from anchorDay in the tenant's timezone. |
lastRunAtoptional | IsoTimestamp | — |
capRefusedoptional | object | SERVER-WRITTEN. The send cap refused this schedule's occurrence occurrence at at, in the usage month period, on plan plan. |
blockedAtoptional | IsoTimestamp | SERVER-WRITTEN, like nextRunAt. When the runner parked this schedule because it could not issue (a required invoice detail is missing). Absent on a schedule that is not parked. |
blockedCodeoptional | string | SERVER-WRITTEN. The error code the runner stopped on. A code, never tenant text. |
blockedDraftUpdatedAtoptional | IsoTimestamp | SERVER-WRITTEN. The updatedAt of the draft invoice the blocked run left behind, so a retry can tell whether it was changed since. |
blockedScheduleUpdatedAtoptional | IsoTimestamp | SERVER-WRITTEN. The schedule's own updatedAt when it was parked: an edit after this moment means the block may be resolved and the runner tries again. |
currencyrequired | Currency | — |
languagerequired | Language | — |
feeOverrideoptional | InvoiceFeeOverride | Copied onto every invoice this schedule issues. Absent means the workspace default. |
lineItemsrequired | LineItem[] | — |
customFieldsoptional | object | Untrusted textkey, copied by the runner onto every invoice the schedule issues. A required field with no value here is why a schedule cannot issue. |
installmentTotaloptional | Money | An installment plan: the whole amount split over occurrenceLimit occurrences by the money module's exact split — the last installment absorbs the remainder. Absent on an ordinary schedule. Additive. |
netDaysoptional | integer | — |
autopayoptional | AutopayConfig | — |
activerequired | boolean | — |
createdAtrequired | IsoTimestamp | — |
updatedAtoptional | IsoTimestamp | — |
createdByoptional | Id | — |
lastWriteActoroptional | WriteActor | Who last wrote this record, and when — stamped by the server core. An EDIT_CONFLICT names it, so the person refused knows who saved the newer version. |