CredonixDocs
Referencia de la APICalendario personalizado

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 en bill_date más grace_period_days días y sin CFDI. La fecha queda con processed: true y el historial registra una ejecución automated. Si la orden no se puede generar, el historial registra la ejecución con estatus error y la solicitud responde 201 de 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

POSThttps://app.credonix.mx/api/v1/custom-schedule-automations

Calendario 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

CampoTipoRequeridoNotas
customer_idstringid de un cliente de tu organización.
legal_entity_idstringid de una razón social de tu organización.
conceptstringConcepto de las órdenes de cobro. No puede estar vacío.
descriptionstring | nullNoTexto libre.
currencystringMXN o USD.
grace_period_daysintegerNoDías entre la fecha de cobro y el vencimiento de la orden. Número JSON entero, mayor o igual a 0. Por defecto 5.
entriesarrayFechas de cobro. Ver abajo.

No se aceptan otros campos: cualquier campo desconocido responde 400 con VALIDATION_ERROR.

entries[]

CampoTipoRequeridoNotas
bill_datestringFecha de cobro con el formato YYYY-MM-DD. Cada fecha debe ser única en la automatización.
itemsarrayConceptos de la orden de cobro de esa fecha. Al menos uno. Ver abajo.

entries[].items[]

CampoTipoRequeridoNotas
product_idstring | nullNoid de un producto de tu organización.
product_namestring | nullNoNombre del concepto. Cada concepto requiere product_name o description.
descriptionstring | nullNoDescripción del concepto.
quantityintegerCantidad, como número JSON entero.
unit_pricestring | numberPrecio unitario mayor o igual a 0, por ejemplo "1234.50".
discountstring | nullNoCon discount_type: "percentage" es un porcentaje (10 es 10 %); con fixed, un monto.
discount_typestring | nullNopercentage o fixed.
product_codestring | nullNoClave de producto o servicio del SAT.
unit_codestring | nullNoClave de unidad del SAT.
taxesarrayNoImpuestos del concepto. Por defecto [].

taxes[]

CampoTipoRequeridoNotas
typestringiva, isr o ieps. Cualquier otro valor es un impuesto local de hasta 10 caracteres.
categorystringtransferred (trasladado), withheld (retenido) o exempt (exento). IVA acepta los tres; ISR solo withheld; IEPS acepta transferred o withheld. Los impuestos locales no aceptan exempt.
ratestringTasa como fracción: "0.16" es 16 %. Mayor o igual a 0.
basestring | nullNoBase 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

StatusCódigoCausa
400VALIDATION_ERRORUn 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.
400INVALID_AUTOMATIONLos conceptos no cumplen las reglas de los conceptos.
400CUSTOMER_NOT_FOUNDcustomer_id no es un cliente de tu organización.
400LEGAL_ENTITY_NOT_FOUNDlegal_entity_id no es una razón social de tu organización.
400PRODUCT_NOT_FOUNDUn product_id no es un producto de tu organización.
401MISSING_API_KEY, INVALID_API_KEY, API_KEY_REVOKEDAPI key ausente, inválida o revocada.
403INSUFFICIENT_PERMISSIONSLa API key no tiene el permiso Crear en Automatizaciones.
Abrir Credonix