Invoices take the date of the day they are issued
From 10 November 2026, issuing an invoice in the API v1 and in MCP sets issued_on to the day of issue, whatever the draft held. An earlier draft date moves to operation_on. Scheduled invoices take the day they run, batches issue oldest first, and a new 422, issue_date_before_series_last_issue_date, protects the date order of the series. Nine updated operations, with their MCP tools.
10 November 2026 — Until now, an invoice kept the date its draft carried, even when it was issued weeks later, and a series could end up with numbers out of date order. From today, issuing an invoice dates it the day it is issued. It applies to the API v1 and to MCP at once, with no notice period.
What changes
issued_onis the day of issue — when an invoice is issued,issued_onbecomes that calendar day inEurope/Madrid, whatever the draft held, earlier or later. From then on it is immutable.- The draft date moves to
operation_on— if the draft date was earlier than the day of issue andoperation_onwas empty, the draft date is kept inoperation_on. Anoperation_onyou had already sent is kept. A draft date later than the day of issue is replaced and does not becomeoperation_on. - Nothing else is recalculated —
due_onandpayment_termsstay as they were.
For example, issuing on 2026-11-10:
Draft issued_on | Draft operation_on | Issued invoice |
|---|---|---|
| 2026-10-21 | empty | issued_on: 2026-11-10 and operation_on: 2026-10-21 |
| 2026-10-21 | 2026-10-15 | issued_on: 2026-11-10 and operation_on: 2026-10-15 |
| 2026-11-10 | empty | issued_on: 2026-11-10 and no operation_on |
| 2026-11-17 | empty | issued_on: 2026-11-10 and no operation_on |
Scheduled, recurring and batches
- Scheduled invoices — an invoice you schedule leaves with the date of the day
it runs, not the draft date and not the day you scheduled it. Its draft date does
not move to
operation_on; anoperation_onyou sent is kept. - Recurring invoices — when the
generation_modeof the recurring invoice isissueorissue_and_send,generatecreates the invoice already issued, dated the day of issue. An earlier generation date is kept inoperation_on. - Batches issue oldest first —
bulk-statustoissued(or its aliassent) andbulk-send, which issues the drafts before sending them, process the invoices by draft date, and by age when two dates tie, whatever the order ofids. The lowest number goes to the oldest date.failures[]comes out in that processing order, not in the order you sent. bulk-createdoes not issue — it only creates drafts, soissued_onstays the draft date there.
A new 422 protects the order of the series
An invoice is never issued with a date earlier than the last issued invoice of its
series. The call answers 422, error.code: business_rule_violation and
error.subcode: issue_date_before_series_last_issue_date,
with error.param: issued_on. No number is consumed and the draft stays as it was.
{
"error": {
"type": "invalid_request_error",
"code": "business_rule_violation",
"subcode": "issue_date_before_series_last_issue_date",
"message": "No se puede emitir con fecha 10/11/2026: la serie ya tiene una factura emitida con fecha 12/11/2026.",
"param": "issued_on",
"doc_url": "https://docs.factuarea.com/guides/errors#business_rule_violation",
"request_id": "req_01KFPT3RM5H7J9K2M4N6P8Q0RS"
}
}The day of issue is now always today, so this only happens when the series already
holds an invoice dated in the future, which the API v1 allowed until now, or, in
rare cases, when the server clock goes back. Changing issued_on does not help.
Move the draft to another series of the same kind with series_id, or issue it once
the date of that last invoice arrives.
- Where you can get it —
createwith options that issue,paymentortype: F2;issue;sendon a draft;mark-sentin API versions before2026-10-01;bulk-send; andgenerateon a recurring invoice with an issuing mode. If you created the invoice withoptions, the draft already exists: issue that draft instead of repeating the creation. - Batches —
bulk-statusreports the rejected row infailures[]witherror_codebusiness_rule_violationand no subcode, and goes on with the rest.bulk-senddoes the same for companies with revisioned presentation; for the others, the rejection aborts the call with this 422, the invoices before it are already issued and the ones after it are not processed. - Scheduled invoices — one that the rule rejects when it runs is not issued: it
stays
scheduled, consumes no number and is tried again on the next pass.
What to check in your integration
- Read the dates from the response — if you sent a past
issued_onexpecting it to stay,issued_onnow comes back as the day of issue and the date you sent is inoperation_on. Take both from the response ofissueorcreate, or from the invoice you read afterwards. - Dates in the future — a future
issued_onno longer survives: the invoice leaves with today's date and nooperation_on. If you also sent anoperation_onlater than the day of issue, issuing answersoperation_date_after_issue_date, unless the first line that declares aregime_keyuses 14 or 15. - Series with future dates — a series that already holds an invoice dated in the future refuses every issue until that day arrives. Use another series or wait. Annulling that invoice does not unblock the series, because annulled invoices count.
- Which date goes where — if the day the service was done matters, send it as
operation_onin the draft.issued_onon a draft is only the draft date. - MCP — the tools behave like their operations and return the same error:
issue_invoice,send_invoice,create_invoice,bulk_change_invoice_status,bulk_send_invoices,bulk_create_invoices,schedule_invoiceandgenerate_recurring_invoice. The description ofupdate_invoicenow says thatissued_onis the draft date. The guardrailemision-borrador-a-emitida, listed in Resources and prompts, explains the rule.
Updated operations
The descriptions of issued_on and operation_on change in the invoice resource
and in the request bodies of create and update. These nine operations change their
description, and the six that can answer the new 422 declare it:
POST /v1/companies/{company}/invoices— creating with options that issue,paymentortype: F2dates the invoice the day of issue. Declares the new 422.POST /v1/companies/{company}/invoices/bulk-create— its rows are drafts and are never issued there.POST /v1/companies/{company}/invoices/bulk-send— drafts are issued oldest first, dated the day of issue. Declares the new 422.POST /v1/companies/{company}/invoices/bulk-status— issuing goes oldest date first, and each invoice takes the date of the day of issue.POST /v1/companies/{company}/invoices/{invoice}/issue— the invoice leaves with the date of the day of issue. Declares the new 422.POST /v1/companies/{company}/invoices/{invoice}/mark-sent— in API versions before2026-10-01it issues the draft with the same rule. Declares the new 422.POST /v1/companies/{company}/invoices/{invoice}/schedule— the invoice leaves with the date of the day it runs, and stays scheduled if the series has a later issued invoice.POST /v1/companies/{company}/invoices/{invoice}/send— a draft is issued first, dated the day of issue. Declares the new 422.POST /v1/companies/{company}/recurring-invoices/{recurring_invoice}/generate— with an issuing mode the invoice is born issued, dated the day of issue. Declares the new 422.
Updated endpoints9
| Endpoint | Description |
|---|---|
POST/v1/companies/{company}/invoices | Create an invoice |
POST/v1/companies/{company}/invoices/bulk-create | Bulk create invoices |
POST/v1/companies/{company}/invoices/bulk-send | Bulk send invoices |
POST/v1/companies/{company}/invoices/bulk-status | Bulk change invoice status |
POST/v1/companies/{company}/invoices/{invoice}/issue | Issue an invoice |
POST/v1/companies/{company}/invoices/{invoice}/mark-sent | Mark an invoice as sent |
POST/v1/companies/{company}/invoices/{invoice}/schedule | Schedule an invoice |
POST/v1/companies/{company}/invoices/{invoice}/send | Send invoice by email |
POST/v1/companies/{company}/recurring-invoices/{recurring_invoice}/generate | Generate an invoice from a recurring template |