CredonixDocs
Referencia de la APIRecurrentes

Crear

Crea una automatización recurrente que genera órdenes de cobro periódicamente.

Descripción general

Este endpoint crea una automatización recurrente con las mismas reglas que el formulario de la aplicación: un cliente, una razón social, un concepto, la periodicidad y los conceptos que se cobran en cada orden de cobro. Una solicitud exitosa devuelve 201 con la automatización creada, incluidos sus totales y su next_billing_date.

Si la primera fecha de cobro es hoy (en la zona horaria de la organización), la automatización genera la orden de cobro en ese momento: con estatus issued, fecha de emisión de hoy, vencimiento a grace_period_days días de la emisión y sin CFDI. La ejecución queda en el historial como automated, se actualiza last_execution_at y, si no quedan fechas por cobrar, la automatización pasa a completed. Si esa generación falla, la ejecución queda en el historial con estatus error y la solicitud responde 201 igualmente; puedes reintentarla.

Acepta el header Idempotency-Key para reintentar sin crear automatizaciones duplicadas (ver Idempotencia).

Requiere el permiso Crear en Automatizaciones.

Endpoint

POSThttps://app.credonix.mx/api/v1/recurring-automations

Automatización mensual


Cobra el mismo día de cada mes a partir de start_date. Sin end_date, la automatización no tiene fecha de fin. grace_period_days toma 5 y repeat_every toma 1 por defecto.

En la respuesta, los conceptos traen discount en "0" cuando no se envió descuento, y cada impuesto trae su base calculada.

{
  "customer_id": "cmu21fp9g00qiv1dqitkc8c8x",
  "legal_entity_id": "cmpydghmk0004v1oyioviuwjs",
  "currency": "MXN",
  "concept": "Iguala mensual",
  "start_date": "2026-11-01",
  "interval": "monthly",
  "monthly_mode": "day_of_month",
  "items": [
    {
      "product_name": "Servicio de consultoría",
      "description": "Consultoría mensual",
      "quantity": 1,
      "unit_price": "12000",
      "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 ser vacío.
descriptionstring | nullNoDescripción.
currencyMXN | USDMoneda de las órdenes de cobro.
grace_period_daysinteger ≥ 0NoPor defecto 5. Días entre la emisión y el vencimiento de cada orden de cobro. Se envía como número JSON, no como string.
start_datestring YYYY-MM-DDFecha de inicio.
end_datestring YYYY-MM-DD | nullNoFecha de fin. No puede ser anterior a start_date.
intervaldaily, weekly, monthly, yearlyIntervalo de repetición.
repeat_everyinteger ≥ 1NoPor defecto 1. Cada cuántos intervalos se repite. Se envía como número JSON.
monthly_modeday_of_month | weekday_position | nullNoRequerido con interval: monthly.
weekdaysarray de MON, TUE, WED, THU, FRI, SAT, SUNNoPor defecto []. Requiere al menos un día con interval: weekly.
itemsarrayConceptos de cada orden de cobro. Al menos uno.

weekdays y monthly_mode se aceptan y se guardan con cualquier interval. No se aceptan campos adicionales: cualquier campo desconocido responde 400.

Conceptos (items[])

CampoTipoRequeridoNotas
product_idstring | nullNoID de un producto de tu organización.
product_namestring | nullNoSe requiere product_name o description.
descriptionstring | nullNoSe requiere product_name o description.
quantityintegerNúmero JSON entero, mayor a 0.
unit_pricestring o number ≥ 0Por ejemplo "1234.50".
discountstring ≥ 0 | nullNoCon percentage es un porcentaje (10 = 10 %); con fixed, un monto.
discount_typepercentage | fixed | nullNoTipo de descuento.
product_codestring | nullNoClave de producto o servicio del SAT.
unit_codestring | nullNoClave de unidad del SAT.
taxesarrayNoPor defecto [].

El total de cada concepto (subtotal menos descuento, más impuestos trasladados, menos retenidos) debe ser mayor o igual a 0.

Impuestos (items[].taxes[])

CampoTipoRequeridoNotas
typestringiva, isr o ieps en minúsculas. Cualquier otro valor es un impuesto local de hasta 10 caracteres.
categorytransferred | withheld | exemptiva: transferred, withheld o exempt. isr: withheld. ieps: transferred o withheld. Los impuestos locales solo pueden ser transferred o withheld.
ratestring ≥ 0Tasa como fracción: "0.16" para 16 %.
basestring ≥ 0 | nullNoSi se omite o es 0, se usa el subtotal del concepto menos su descuento.

Errores

400 — reglas de la automatización

Cuando la automatización no cumple sus reglas, la API responde INVALID_AUTOMATION sin errors; message une todas las reglas que fallaron, separadas por un espacio:

  • "La fecha de inicio debe ser menor a la fecha de fin"
  • "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."
  • "Al menos un día de la semana debe ser seleccionado."
  • "El modo mensual debe ser seleccionado."

400 — producto no encontrado

Un product_id que no pertenece a tu organización:

{
  "code": "PRODUCT_NOT_FOUND",
  "message": "Ocurrió un error al crear la automatización, por favor intenta nuevamente más tarde o contacta a soporte si el problema persiste.",
  "request_id": "b1905913-d742-4c83-8257-4d485721520f"
}
StatusCódigoCausa
400VALIDATION_ERRORFalta un campo requerido, un campo tiene formato inválido o se envió un campo desconocido. errors trae el detalle por campo.
400INVALID_AUTOMATIONLa automatización no cumple sus reglas (ver arriba).
400CUSTOMER_NOT_FOUNDcustomer_id no existe en tu organización.
400LEGAL_ENTITY_NOT_FOUNDlegal_entity_id no existe en tu organización.
400PRODUCT_NOT_FOUNDUn product_id no existe en tu organización.
403INSUFFICIENT_PERMISSIONSLa API key no tiene el permiso Crear en Automatizaciones.
Abrir Credonix