Planes y pagos
Cuánto cuesta ZarelaFact, qué es gratis, cómo pagas un plan, cómo se cuenta el consumo y qué pasa si un pago falla.
- Gratis siempre: registrarte, las pruebas en TesteCF, la certificación en CerteCF y crear API keys de cualquier ambiente, incluida la de producción.
- Producción (eCF) necesita un plan pagado. Única excepción: una cuenta directa tiene 50 e-CF gratis al mes en producción. Los Partners no tienen tramo gratis.
- Solo cuentan los e-CF aceptados por la DGII (
acceptedyaccepted_conditional). Los rechazados y cancelados nunca cuentan. - Pagas con tarjeta desde Empresa → Plan y facturación: se cobra el precio completo el día que pagas y se renueva ese mismo día cada mes.
- El cupo de un plan pagado se cuenta en su periodo de cobro (por ejemplo, del 4 de octubre al 4 de noviembre). El plan Gratis y los planes que activa ZarelaFact a mano usan el mes calendario de República Dominicana.
- Sin plan pagado, la emisión en producción responde
402 PAYMENT_REQUIRED. Con el plan pagado y su cupo agotado,429 PLAN_LIMIT_EXCEEDED.
Precios
Precio fijo al mes según los e-CF que emites, sin cobro por documento. Son los mismos planes de zarelafact.com y de Empresa → Planes en el portal.
| Plan | e-CF al mes | Cuenta directa | Partner |
|---|---|---|---|
| Gratis | Hasta 50 | RD$0 | — |
| Inicio | Hasta 100 | RD$595 | RD$415 |
| Crecimiento | Hasta 500 | — | RD$1,610 |
| Pyme | Hasta 1,000 | RD$3,900 | RD$2,730 |
| Negocio | Hasta 5,000 | RD$12,250 | RD$8,575 |
| Volumen | Hasta 10,000 | RD$19,500 | RD$13,650 |
| A medida | Más de 10,000 | Por contrato | Por contrato |
- Partner: 30 % menos que una cuenta directa, sobre el volumen sumado de todos tus clientes. Crecimiento solo existe para Partners y no hay plan Gratis.
- Los precios son en pesos dominicanos (DOP) y no incluyen impuestos.
Qué es gratis y qué necesita plan
| Cuenta directa | Partner | |
|---|---|---|
| Registro, portal y API keys (TesteCF, CerteCF y eCF) | Gratis | Gratis |
| Pruebas en TesteCF (el sandbox de cada cliente, si eres Partner) y certificación en CerteCF | Gratis, sin límite de plan | Gratis, sin límite de plan |
| Producción (eCF) | 50 e-CF gratis al mes; más volumen con un plan | Solo con un plan pagado |
La API key de producción se puede crear en cualquier momento, antes incluso de terminar la certificación. La emisión en producción funciona cuando la producción está activa y el plan lo permite.
Cómo se cuenta el consumo
- Consumo = e-CF aceptados por la DGII en producción (
acceptedyaccepted_conditional), según la fecha de aceptación de la DGII. - No cuentan nunca: los rechazados, los cancelados, las validaciones (
validate=true), las consultas ni nada de TesteCF o CerteCF. - Reserva temporal: mientras un e-CF va en camino a la DGII (en cola, firmado, enviado, en contingencia), ocupa un lugar del cupo para que varios envíos simultáneos no lo sobrepasen. Si la DGII lo acepta, pasa a consumo; si lo rechaza o se cancela, el lugar se libera.
- Reenviar el mismo eNCF después de un timeout no cuenta dos veces.
- Periodo del cupo:
- Plan pagado con tarjeta: el periodo de cobro de tu suscripción. Si pagaste el 4 de octubre, el periodo va del 4 de octubre al 4 de noviembre y el cupo vuelve a cero cuando se renueva. También durante la gracia de un pago fallido.
- Gratis y planes que activa ZarelaFact a mano (por ejemplo, A medida): el mes calendario de República Dominicana. Un e-CF aceptado el 31 de enero a las 21:30 (hora RD) cuenta en enero.
- En Empresa → Plan y facturación ves los e-CF consumidos (aceptados) / cupo, las fechas del periodo y cuántos van en camino.
Cómo pagar un plan
- En el portal, abre Empresa → Planes y pulsa Pagar en el plan que quieres. Lo hace el propietario o un administrador de la cuenta (en un Partner, el propietario).
- Pagas con tarjeta en la página segura de Stripe y vuelves al portal.
- El plan se activa en cuanto Stripe confirma el pago.
- Se cobra hoy el precio completo y se renueva el mismo día cada mes. Si pagas el 4 de octubre, el próximo cobro es el 4 de noviembre. No hay cobros proporcionales al empezar.
- A medida no se paga en línea: pulsa Solicitar y ZarelaFact acuerda contigo las condiciones y el pago.
Gestionar plan
Con un plan pagado, Empresa → Plan y facturación → Gestionar plan abre la pantalla del plan dentro del portal. La usan el propietario y los administradores de la cuenta (en un Partner, solo el propietario).
| Sección | Qué ves y qué haces |
|---|---|
| Tu plan | Plan, precio y estado; periodo actual; próxima renovación con su fecha e importe; tarjeta; e-CF consumidos del periodo; y cualquier cambio o cancelación programada. |
| Cambiar plan | Los planes de tu cuenta (directa o Partner) con su precio. Subir (se confirma en Stripe) o bajar, con una confirmación antes. |
| Método de pago | Cambiar tarjeta abre una página segura de Stripe con la marca de ZarelaFact. |
| Cancelar plan | Cancela al final del periodo pagado o reactiva una cancelación (las dos se confirman en Stripe). |
| Facturas y pagos | Número, fecha, importe y estado de cada factura de ZarelaFact, con su PDF y su página en línea. |
Subir de plan
- Pulsa Subir a … en el plan mayor.
- La confirmación muestra lo que se cobra hoy: la diferencia proporcional a los días que quedan del periodo. También el precio mensual desde la próxima renovación.
- Pulsa Continuar en Stripe. Se abre la página segura de Stripe con el cambio y el cobro exacto.
- Confírmalo allí. Stripe cobra la diferencia a tu tarjeta en ese momento y el plan nuevo, con su cupo, aplica de inmediato.
- Vuelves a Gestionar plan, que lee el resultado de Stripe: «Confirmado en Stripe: cambiaste a …».
- El día de renovación no cambia.
- Si tu banco pide confirmar el pago (3-D Secure), lo autorizas en la misma página de Stripe. Si el cobro no sale, tu plan no cambia.
- Si tenías una bajada programada, al continuar se descarta (la confirmación lo avisa).
Bajar de plan
- Pulsa Bajar a … en el plan menor.
- La confirmación muestra la fecha del cambio: el fin del periodo pagado.
- Pulsa Programar cambio. Hoy no se cobra nada.
- Hasta esa fecha sigues con tu plan y su cupo. La pantalla muestra «Cambia a … el DD/MM» con Deshacer.
- Desde esa fecha pagas el precio del plan menor, el mismo día de cada mes.
La bajada se programa en ZarelaFact, sin pasar por Stripe: hoy no se cobra nada y Stripe aplica el precio menor al renovar.
Cancelar y reactivar
- Cancelar plan muestra hasta cuándo sigue activo y lleva a la página segura de Stripe con Continuar en Stripe. Confírmalo allí.
- Vuelves a Gestionar plan: «Confirmado en Stripe: tu plan se cancela el DD/MM/AAAA». El plan sigue activo hasta esa fecha. No hay reembolsos del periodo pagado.
- Si tenías una bajada programada, al continuar se descarta (la confirmación lo avisa).
- Al terminar, una cuenta directa vuelve al plan Gratis (50 e-CF al mes en producción). Un Partner queda sin producción: sus clientes reciben
402 PAYMENT_REQUIREDen eCF. - Antes de esa fecha, Reactivar plan deshace la cancelación:
- La confirmación muestra el plan, que hoy no se cobra nada y la fecha y el importe de la próxima renovación.
- Pulsa Continuar en Stripe. En la página segura de Stripe pulsa Renovar y después vuelve a ZarelaFact.
- Gestionar plan lee el resultado de Stripe: «Confirmado en Stripe: tu plan sigue activo y se renueva el DD/MM/AAAA». El plan se renueva como siempre, el mismo día de cobro.
- Mientras haya una cancelación, un pago pendiente o una subida sin pagar, no se puede cambiar de plan. La pantalla dice qué resolver primero.
Cambiar la tarjeta
- Pulsa Cambiar tarjeta. Se abre una página segura de Stripe con la marca de ZarelaFact, donde guardas la tarjeta nueva. No se cobra nada al guardarla.
- Al volver, la tarjeta nueva queda como la de tu plan y de los próximos cobros.
- Si había un pago pendiente, lo cobramos en ese momento con la tarjeta nueva y la pantalla muestra el resultado.
Facturas
- Cada factura de ZarelaFact trae su PDF y su página Ver en Stripe.
- Esos documentos los genera Stripe, el procesador de pagos. Llevan los datos de facturación de la cuenta de Stripe, no siempre la marca de ZarelaFact. Lo mismo pasa con las páginas de Stripe donde confirmas una subida o una cancelación.
¿Qué pasa si llego al límite?
- Cuenta directa sin plan pagado: al pasar los 50 e-CF del mes, la emisión en producción responde
402 PAYMENT_REQUIREDhasta que pagues un plan o empiece el mes siguiente. - Con un plan pagado: al llegar a su cupo, la emisión responde
429 PLAN_LIMIT_EXCEEDED. No te cambiamos de plan solos ni cobramos excedentes: sube de plan (aplica en el acto) o espera a que se renueve tu periodo. - Reintentar no resuelve ninguno de los dos.
Un 402 o un 429 en plena operación significa no poder facturar. Elige el plan con margen sobre tu volumen real y vigila tu consumo.
Si un pago falla
- Stripe no pudo cobrar tu plan. Te escribimos y mantienes tu plan 7 días de gracia. El portal muestra «Pago pendiente · gracia hasta DD/MM».
- Dos días antes de que termine la gracia te recordamos que actualices el método de pago: Empresa → Gestionar plan → Cambiar tarjeta. Al guardar la tarjeta nueva, cobramos el pago pendiente en el acto.
- Si la gracia termina sin pago:
- una cuenta directa vuelve al plan Gratis: hasta 50 e-CF al mes en producción;
- un Partner queda con la producción bloqueada: sus clientes reciben
402 PAYMENT_REQUIREDen eCF.
- En cuanto se completa el pago, el plan vuelve y te avisamos.
Las pruebas y la certificación nunca se bloquean por un pago. Recibes un solo correo por cada aviso.
El error 402 PAYMENT_REQUIRED
La emisión en producción responde 402 cuando el plan no permite emitir:
{
"ok": false,
"error": {
"code": "PAYMENT_REQUIRED",
"message": "Usaste los 50 e-CF gratis del mes en producción (eCF). Para seguir emitiendo elige un plan en https://zarelafact.com/empresa#plan. TesteCF y CerteCF siguen gratis.",
"details": {
"reason": "free_tier_exhausted",
"billingUrl": "https://zarelafact.com/empresa#plan",
"accountType": "direct",
"plan": "gratis",
"limit": 50,
"used": 50,
"accepted": 48,
"reserved": 2,
"periodStart": "2026-10-01T04:00:00.000Z",
"periodEnd": "2026-11-01T04:00:00.000Z",
"periodBasis": "calendar_month"
}
}
}
details.reason | Qué pasó | Qué hacer |
|---|---|---|
free_tier_exhausted | Cuenta directa: se usaron los 50 e-CF gratis del mes. | Pagar un plan en billingUrl. |
payment_required | Partner sin plan pagado. | El propietario del Partner paga un plan en billingUrl. |
payment_failed | El pago está vencido y terminó la gracia de 7 días. | Cambiar la tarjeta en Empresa → Gestionar plan (billingUrl). El pago pendiente se cobra al guardarla. |
Muestra el mensaje y el enlace a quien administra la cuenta. No reintentes: el documento no se registró y el eNCF queda libre.
periodStart y periodEnd son el periodo del cupo: periodBasis es subscription (el periodo de cobro de un plan pagado con tarjeta) o calendar_month (mes calendario de República Dominicana, para Gratis y los planes activados a mano). El 429 PLAN_LIMIT_EXCEEDED trae los mismos campos.
Si tienes varios clientes (Partners)
Si integras como Partner, el cobro es para tu empresa y se calcula con el volumen de todos tus clientes sumados:
- Los planes Partner son los de la columna Partner de la tabla de precios. El cupo del plan es para todos tus clientes juntos, no por cliente.
- Los Partners no tienen el plan Gratis de 50 e-CF: sin plan pagado, tus clientes certifican y prueban gratis, pero no emiten en producción (
402 PAYMENT_REQUIRED). - Paga el plan el propietario del Partner desde Empresa → Planes del portal.
- Cuentan los e-CF
acceptedyaccepted_conditionalen producción de todas tus Cuentas fiscales, una sola vez, por fecha de aceptación, dentro del periodo de cobro de tu plan (mismo día cada mes).
Consulta el consumo de tu periodo actual, sumando todas tus cuentas, o el de un mes calendario con month:
curl -sS "$BASE_URL/billing/usage" -H "X-PARTNER-KEY: $PARTNER_KEY"
curl -sS "$BASE_URL/billing/usage?month=2026-10" -H "X-PARTNER-KEY: $PARTNER_KEY"
La respuesta trae acceptedDocuments, periodStart, periodEnd, periodBasis (subscription sin month y con plan pagado; calendar_month con month o sin suscripción) y timeZone. Es un conteo operativo, no una factura: el periodo en curso puede cambiar mientras la DGII responde. Requiere el permiso production:read.
¿Dudas que no están aquí? Revisa las Preguntas frecuentes.