Crear
Crea una automatización por calendario personalizado con sus fechas de cobro.
Descripción general
Este endpoint crea una automatización por calendario personalizado: una lista de fechas de cobro (entries), cada una con sus propios conceptos. Cada fecha de cobro genera su propia orden de cobro. Los totales de la automatización son la suma de los totales de sus fechas. Una solicitud exitosa devuelve 201 con la automatización creada, con la misma forma que Consultar calendario personalizado.
- Fecha de cobro de hoy. Si una fecha de cobro es hoy (en la zona horaria de la organización), su orden de cobro se genera al guardar, con estatus
issued, vencimiento enbill_datemásgrace_period_daysdías y sin CFDI. La fecha queda conprocessed: truey el historial registra una ejecuciónautomated. Si la orden no se puede generar, el historial registra la ejecución con estatuserrory la solicitud responde201de todos modos. - Fechas pasadas. Se guardan sin procesar y no generan orden al crear la automatización. Puedes generarlas con Generar órdenes del calendario.
- Si no queda ninguna fecha sin procesar, la automatización queda con estatus
completed.
Acepta el header Idempotency-Key para reintentar sin duplicar la automatización.
Requiere el permiso Crear en Automatizaciones.
Endpoint
https://app.credonix.mx/api/v1/custom-schedule-automationsCalendario con dos fechas de cobro
Envía el cliente, la razón social, la moneda, el concepto y las fechas de cobro con sus conceptos. Sin grace_period_days, las órdenes vencen 5 días después de su fecha de cobro. Como ninguna fecha es hoy, no se genera ninguna orden: las dos fechas quedan con processed: false y next_billing_date es la primera fecha de cobro.
{
"customer_id": "cmu21fp9g00qiv1dqitkc8c8x",
"legal_entity_id": "cmpydghmk0004v1oyioviuwjs",
"currency": "MXN",
"concept": "Calendario de servicios",
"entries": [
{
"bill_date": "2026-11-15",
"items": [
{
"product_name": "Servicio de consultoría",
"description": "Consultoría mensual",
"quantity": 1,
"unit_price": "7000",
"product_code": "84111506",
"unit_code": "E48",
"taxes": [
{
"type": "iva",
"category": "transferred",
"rate": "0.16"
}
]
}
]
},
{
"bill_date": "2026-12-15",
"items": [
{
"product_name": "Servicio de consultoría",
"description": "Consultoría mensual",
"quantity": 1,
"unit_price": "7000",
"product_code": "84111506",
"unit_code": "E48",
"taxes": [
{
"type": "iva",
"category": "transferred",
"rate": "0.16"
}
]
}
]
}
]
}Reglas de los campos
| Campo | Tipo | Requerido | Notas |
|---|---|---|---|
customer_id | string | Sí | id de un cliente de tu organización. |
legal_entity_id | string | Sí | id de una razón social de tu organización. |
concept | string | Sí | Concepto de las órdenes de cobro. No puede estar vacío. |
description | string | null | No | Texto libre. |
currency | string | Sí | MXN o USD. |
grace_period_days | integer | No | Días entre la fecha de cobro y el vencimiento de la orden. Número JSON entero, mayor o igual a 0. Por defecto 5. |
entries | array | Sí | Fechas de cobro. Ver abajo. |
No se aceptan otros campos: cualquier campo desconocido responde 400 con VALIDATION_ERROR.
entries[]
| Campo | Tipo | Requerido | Notas |
|---|---|---|---|
bill_date | string | Sí | Fecha de cobro con el formato YYYY-MM-DD. Cada fecha debe ser única en la automatización. |
items | array | Sí | Conceptos de la orden de cobro de esa fecha. Al menos uno. Ver abajo. |
entries[].items[]
| Campo | Tipo | Requerido | Notas |
|---|---|---|---|
product_id | string | null | No | id de un producto de tu organización. |
product_name | string | null | No | Nombre del concepto. Cada concepto requiere product_name o description. |
description | string | null | No | Descripción del concepto. |
quantity | integer | Sí | Cantidad, como número JSON entero. |
unit_price | string | number | Sí | Precio unitario mayor o igual a 0, por ejemplo "1234.50". |
discount | string | null | No | Con discount_type: "percentage" es un porcentaje (10 es 10 %); con fixed, un monto. |
discount_type | string | null | No | percentage o fixed. |
product_code | string | null | No | Clave de producto o servicio del SAT. |
unit_code | string | null | No | Clave de unidad del SAT. |
taxes | array | No | Impuestos del concepto. Por defecto []. |
taxes[]
| Campo | Tipo | Requerido | Notas |
|---|---|---|---|
type | string | Sí | iva, isr o ieps. Cualquier otro valor es un impuesto local de hasta 10 caracteres. |
category | string | Sí | transferred (trasladado), withheld (retenido) o exempt (exento). IVA acepta los tres; ISR solo withheld; IEPS acepta transferred o withheld. Los impuestos locales no aceptan exempt. |
rate | string | Sí | Tasa como fracción: "0.16" es 16 %. Mayor o igual a 0. |
base | string | null | No | Base del impuesto. Si la omites, la respuesta devuelve el subtotal del concepto menos su descuento. |
Reglas de los conceptos
Estas reglas se revisan sobre todos los conceptos y responden 400 con INVALID_AUTOMATION. Si fallan varias, message las incluye todas:
- "Por lo menos un producto o servicio debe ser agregado."
- "Todos los productos deben incluir: cantidad y precio unitario."
- "Todos los productos deben contener un total igual o mayor a 0."
Errores
| Status | Código | Causa |
|---|---|---|
400 | VALIDATION_ERROR | Un campo no cumple sus reglas, por ejemplo una fecha de cobro repetida ("Cada fecha de cobro debe ser única"). errors indica el campo y el motivo. |
400 | INVALID_AUTOMATION | Los conceptos no cumplen las reglas de los conceptos. |
400 | CUSTOMER_NOT_FOUND | customer_id no es un cliente de tu organización. |
400 | LEGAL_ENTITY_NOT_FOUND | legal_entity_id no es una razón social de tu organización. |
400 | PRODUCT_NOT_FOUND | Un product_id no es un producto de tu organización. |
401 | MISSING_API_KEY, INVALID_API_KEY, API_KEY_REVOKED | API key ausente, inválida o revocada. |
403 | INSUFFICIENT_PERMISSIONS | La API key no tiene el permiso Crear en Automatizaciones. |