feriados.io ← Inicio
chilecobrosfintechdias-habilestutorial

Validar fechas de cobro en Chile: feriados, fin de mes y días hábiles bancarios

Cómo validar fechas de cobro, vencimientos y pagos en Chile considerando feriados bancarios, fines de mes y días hábiles. Con ejemplos de código para fintech y e-commerce.

19 de marzo de 2026

En Chile, una fecha de cobro inválida tiene consecuencias concretas: un cargo procesado en feriado puede ser rechazado por el banco, llegar al cliente un día después, o generar una disputa en la tarjeta. En el segmento fintech y e-commerce, esto es especialmente crítico en meses con feriados largos (Fiestas Patrias en septiembre, Semana Santa en abril).

Los feriados bancarios en Chile

Chile tiene 16 feriados nacionales. Todos son “feriados bancarios” para efectos prácticos — el sistema financiero local (ACH, transferencias, débito automático) procesa pagos solo en días hábiles.

Los más relevantes para la planificación de cobros:

Validar si una fecha de cobro es hábil

const API = "https://api.feriados.io/v1";
const KEY = process.env.FERIADOS_API_KEY;

async function validarFechaCobro(fecha) {
  const res = await fetch(
    `${API}/CL/is-business-day?date=${fecha}`,
    { headers: { "Authorization": `Bearer ${KEY}` } }
  );
  const { data } = await res.json();
  return {
    fecha,
    esHabil: data.is_business_day,
    diaSemana: data.day_of_week
  };
}

// Verificar antes de programar un cobro
const resultado = await validarFechaCobro("2026-09-18"); // Fiestas Patrias
// { fecha: "2026-09-18", esHabil: false, diaSemana: "Friday" }

Ajustar automáticamente al día hábil anterior

Para cobros de suscripción o débito automático, la práctica habitual en Chile es adelantar al último día hábil anterior al feriado (no postergar, porque postergar puede afectar el flujo de caja del mes):

async function proximoDiaHabilAnterior(fecha) {
  const check = await validarFechaCobro(fecha);
  if (check.esHabil) return fecha;

  // Buscar el día hábil anterior
  const res = await fetch(
    `${API}/CL/business-days/subtract?date=${fecha}&days=1`,
    { headers: { "Authorization": `Bearer ${KEY}` } }
  );
  const { data } = await res.json();
  return data.result_date;
}

// El 18 de septiembre no es hábil → el 17 tampoco (feriado puente) → retorna el 16
const fechaCobro = await proximoDiaHabilAnterior("2026-09-18");
// → "2026-09-16" (miércoles)

Último día hábil del mes

Útil para cierres contables, liquidaciones de nómina, y cobros de fin de mes:

async function ultimoDiaHabilMes(year, month) {
  // Último día del mes
  const lastDay = new Date(year, month, 0).toISOString().slice(0, 10);

  const res = await fetch(
    `${API}/CL/last-business-day?date=${lastDay}`,
    { headers: { "Authorization": `Bearer ${KEY}` } }
  );
  const { data } = await res.json();
  return data.date;
}

// Último día hábil de septiembre 2026
const cierre = await ultimoDiaHabilMes(2026, 9);
// → "2026-09-30" (miércoles — sep 30 es hábil en 2026)

// Último día hábil de diciembre 2026
const cierreAnual = await ultimoDiaHabilMes(2026, 12);
// → "2026-12-31" (jueves — si es hábil) o día anterior

Calcular la próxima fecha de cobro en un ciclo mensual

Para suscripciones que se cobran “el día N de cada mes”, hay que manejar dos casos: cuando el día N no existe en ese mes (ej. día 31 en febrero) y cuando cae en feriado.

async function proximaFechaCobro(diaDelMes, mesBase, anioBase) {
  // Construir la fecha ideal
  const diasEnMes = new Date(anioBase, mesBase, 0).getDate();
  const diaReal   = Math.min(diaDelMes, diasEnMes);
  const fechaIdeal = `${anioBase}-${String(mesBase).padStart(2, "0")}-${String(diaReal).padStart(2, "0")}`;

  // Verificar si es hábil
  const check = await validarFechaCobro(fechaIdeal);
  if (check.esHabil) return fechaIdeal;

  // Ajustar al día hábil anterior
  return proximoDiaHabilAnterior(fechaIdeal);
}

// Suscripción que se cobra el día 18 de cada mes
// En septiembre 2026, el 18 es Fiestas Patrias
const cobro = await proximaFechaCobro(18, 9, 2026);
// → "2026-09-16" (adelantado 2 días por feriado)

Pre-calcular el calendario de cobros del año

Para evitar llamadas en tiempo real en cada cobro, puedes pre-calcular las fechas hábiles de cobro para todo el año y cachearlo:

async function calendarCobrosAnual(diaDelMes, year) {
  const cobros = [];

  for (let mes = 1; mes <= 12; mes++) {
    const fecha = await proximaFechaCobro(diaDelMes, mes, year);
    cobros.push({ mes, fechaCobro: fecha });
  }

  return cobros;
}

const calendario = await calendarCobrosAnual(18, 2026);
// [
//   { mes: 1,  fechaCobro: "2026-01-19" },  // lunes post-festivo
//   { mes: 2,  fechaCobro: "2026-02-18" },  // hábil
//   { mes: 3,  fechaCobro: "2026-03-18" },  // hábil
//   { mes: 4,  fechaCobro: "2026-04-17" },  // Viernes 17 — hábil (SS el 18)
//   { mes: 9,  fechaCobro: "2026-09-16" },  // Fiestas Patrias → adelantado
//   ...
// ]

Meses críticos en Chile para cobros

Mes 2026RiesgoFeriado relevante
AbrilAltoViernes Santo (3) + Sábado Santo (4)
SeptiembreAltoFiestas Patrias (18) + Independencia (19) + posible puente
OctubreMedioDía de los Pueblos Indígenas (2)
NoviembreBajoDía de Todos los Santos (1)
DiciembreMedioNavidad (25) — impacta cierre del año

Casos específicos de Semana Santa

Semana Santa es el período de mayor riesgo de error porque sus fechas varían cada año y no es intuitivo. En Chile, Sábado Santo también es feriado (además de Viernes Santo), a diferencia de la mayoría de los países.

// Obtener los feriados de Semana Santa en Chile para cualquier año
async function feriadosSemanaSanta(year) {
  const res = await fetch(
    `${API}/CL/holidays/${year}`,
    { headers: { "Authorization": `Bearer ${KEY}` } }
  );
  const { data } = await res.json();

  return data.filter(h =>
    h.name.includes("Santo") || h.name.includes("Pascua")
  );
}

const ss2026 = await feriadosSemanaSanta(2026);
// [
//   { date: "2026-04-03", name: "Viernes Santo" },
//   { date: "2026-04-04", name: "Sábado Santo" },
// ]

Plan Free incluye is-business-day. last-business-day y los demás endpoints de lógica operativa requieren plan Starter o superior. API key gratis — sin tarjeta →


Ver también: Calcular días hábiles en Chile → · Feriados Chile 2026 → · Chile Holiday API → · Pagos y cobros en fintech →

Integra feriados.io en tu proyecto

API key gratis en 30 segundos. Sin tarjeta. 11 países de Latinoamérica, siempre actualizada con los feriados oficiales.

← Ver todos los artículos