Pagos anticipados y validación de la fecha de pago
Una fecha de pago anterior a la de emisión se acepta ahora como pago anticipado, y una fecha de pago posterior a hoy responde 422. Afecta a ventas y gastos, a marcar como pagada y a registrar un pago.
30 de octubre de 2026 — La fecha de un pago ya no tiene que ser igual o posterior a la fecha de emisión
del documento. Un pago hecho antes de emitir el documento es un pago anticipado y se acepta.
Una fecha de pago posterior a hoy se rechaza con un error de dominio 422.
Operaciones de esta versión
| Operación | operationId | Herramienta MCP | Qué cambia |
|---|---|---|---|
POST /v1/companies/{company}/invoices/{invoice}/mark-paid | public-api.v1.invoices.mark_paid | mark_invoice_as_paid | Se acepta un paid_on anterior a la fecha de emisión. Un paid_on futuro responde 422. |
POST /v1/companies/{company}/invoices/{invoice}/payments | public-api.v1.invoices.payments_create | register_invoice_payment | Se acepta un paid_on anterior a la fecha de emisión. Un paid_on futuro responde 422. |
POST /v1/companies/{company}/purchase-invoices/{purchase_invoice}/mark-paid | public-api.v1.purchase_invoices.mark_paid | mark_purchase_invoice_paid | Se acepta un paid_on anterior a la fecha de emisión del documento del proveedor. Un paid_on futuro responde 422. |
POST /v1/companies/{company}/purchase-invoices/{purchase_invoice}/payments | public-api.v1.purchase_invoices.register_payment | register_purchase_invoice_payment | Se acepta un paid_on anterior a la fecha de emisión del documento del proveedor. Un paid_on futuro responde 422. |
La regla
La fecha de un pago no puede ser posterior a hoy (día de Europe/Madrid). Nada más la limita.
- Anterior a la emisión: se acepta. Un cliente puede pagar antes de que se emita la factura, y tú puedes pagar a un proveedor antes de que llegue su documento. Registra la fecha real: es la que usan el ciclo de cobro, los informes de antigüedad y la conciliación bancaria. No la cambies para ajustarla a la emisión.
- Posterior a hoy:
422. Registrar un pago confirma algo que ya ocurrió. Un pago que solo está previsto es el vencimiento del documento.
La respuesta es 422. El error siempre señala la fecha, pero su code, subcode y param dependen de la
operación:
- Ventas,
mark-paidypayments:error.codebusiness_rule_violation, sinerror.subcode,error.parampayment_date. - Gastos,
mark-paid:error.codeinvalid_payment_date, sinerror.subcode,error.parampayment_date. - Gastos,
payments:error.codebusiness_rule_violation,error.subcodeinvalid_payment_date,error.parampaid_on.
En tres de las cuatro operaciones param lleva el nombre que tiene la fecha en el dominio (payment_date),
aunque el campo de la petición sea paid_on. Para distinguir este error de otros 422, comprueba estos valores
en la operación que llamaste. No te bases en message.
Qué fallaba antes
- Un
paid_onanterior a la fecha de emisión se rechazaba, así que un pago anticipado no podía registrarse con su fecha real. POST /v1/companies/{company}/invoices/{invoice}/mark-paidcon unpaid_onfuturo respondía500. Ahora responde el mismo422que las demás operaciones.
La misma regla en todas partes
- Cambio de estado en lote.
POST /v1/companies/{company}/invoices/bulk-statusyPOST /v1/companies/{company}/purchase-invoices/bulk-statusreciben la fecha enpayment_datey aplican la misma regla. Unpayment_dateposterior a hoy rechaza la llamada entera con422(error.codeinvalid_param_value,parampayment_date) antes de procesar ningún documento. Una fecha anterior a la emisión de un documento se acepta.failures[]solo informa de los documentos que no pueden recibir el pago por otro motivo, como un id desconocido o un estado que no lo admite. - MCP. Las cuatro herramientas anteriores siguen la misma regla y responden con el mismo error que su operación REST.
- Pasarelas de pago. Los cobros de Stripe sobre una factura existente se registran con la fecha real del cargo, nunca posterior a hoy. Ya no se adelantan a la fecha de emisión de la factura.
Qué hacer:
- Envía en
paid_onla fecha real del pago, aunque sea anterior a la fecha de emisión. - No envíes una fecha futura. Si gestionabas el antiguo
500demark-paid, gestiona ahora el422. - No des por hecho en tus validaciones o informes que
paid_ones igual o posterior aissued_on.
La tabla siguiente lista las operaciones de esta versión.
Endpoints actualizados4
| Endpoint | Descripción |
|---|---|
POST/v1/companies/{company}/invoices/{invoice}/mark-paid | Marca la factura como pagada |
POST/v1/companies/{company}/invoices/{invoice}/payments | Registrar un pago |
POST/v1/companies/{company}/purchase-invoices/{purchase_invoice}/mark-paid | Marca el gasto como pagado |
POST/v1/companies/{company}/purchase-invoices/{purchase_invoice}/payments | Registrar un pago de gasto |