Ir al contenido

Pasar a producción

En modo de prueba no configuraste nada. Para emitir comprobantes con valor tributario, SUNAT exige que cada empresa firme con su certificado digital y envíe con su usuario secundario SOL. Emitay guarda ambos cifrados y nunca los devuelve por la API ni los escribe en sus registros.

Tu código no cambia: cambia la llave.

¿Obligatorio? Para qué
Certificado digital Sí Firmar cada comprobante
Usuario secundario SOL Sí Enviar a SUNAT
Credenciales de guías Solo si emites guías de remisión Enviar guías, que usan otro servicio de SUNAT
Llave de producción (sk_live_…) Sí, para integrar por API Autenticar tus peticiones en producción
Endpoint de webhook de producción Recomendado Recibir los veredictos
Servidor de correo propio No Que los correos salgan desde tu dirección

El panel muestra esta lista, con lo que ya tienes y lo que falta, en Inicio y en Ajustes («Para pasar a producción»). Mientras falte algo obligatorio, una llave de producción responde 409 company_not_configured, con lo que falta en detail, y no consume ningún número.

Es el archivo .pfx o .p12 que emite una entidad de certificación a nombre de tu empresa, con su contraseña.

  • Se carga en el panel, en Ajustes, en la sección Certificado digital. Emitay lo abre para comprobar que se puede leer y que no está vencido; si no, lo rechaza y dice por qué.
  • Vence. Emitay avisa por correo a los administradores de la organización 30, 15 y 7 días antes. Con un certificado vencido no se puede firmar: renuévalo a tiempo.

SUNAT no admite enviar comprobantes con el usuario principal de la Clave SOL. Se necesita un usuario secundario creado en SUNAT Operaciones en Línea, con perfil para el envío de documentos electrónicos.

Se registran en el panel, en Ajustes, en la sección Usuario secundario SOL: su nombre de usuario —sin el RUC delante— y su clave.

Las guías van por un servicio distinto de SUNAT, con credenciales propias: un client_id y un client_secret que se generan una vez en SUNAT Operaciones en Línea, en la opción «Credenciales de API SUNAT». Se registran en Ajustes, en la sección Credenciales para guías de remisión.

SUNAT no tiene ambiente de pruebas para guías, así que tu primera guía en producción es la primera que SUNAT ve. Emite una y revisa su resultado antes de automatizar el flujo.

En el panel, en Llaves de API, crea una llave de producción (sk_live_…). Se muestra una sola vez. Guárdala donde guardas tus secretos, no en el repositorio.

Ventana de terminal
export EMITAY_API_KEY=sk_live_…
npx emitay whoami

whoami confirma la empresa y que la llave es de producción. En PowerShell la variable se define con $env:EMITAY_API_KEY = "sk_live_…".

Los endpoints de prueba no reciben eventos reales: registra el de producción y guarda su secreto, que se muestra una sola vez. En el panel, con el selector de modo en Producción, en Webhooks → Agregar endpoint; o por la API, con la llave de producción:

const endpoint = await emitay.webhookEndpoints.create({
url: "https://erp.miempresa.pe/webhooks/emitay",
events: ["document.accepted", "document.observed", "document.rejected"],
});
console.log(endpoint.secret); // whsec_… → EMITAY_WEBHOOK_SECRET en producción
  • Las series empiezan de nuevo. Producción tiene su propio correlativo: F001 empieza en 1. Si vienes de otro sistema y debes continuar una numeración, envía number en la primera emisión de cada serie; las siguientes siguen desde ahí.
  • Usa una Idempotency-Key con el id de tu venta en cada emisión. Ver Idempotencia.
  • Maneja los tres veredictos: accepted, observed y rejected. Ver El veredicto de SUNAT.
  • Producción valida más que beta. El ambiente de pruebas no cruza datos con los padrones de SUNAT ni entre comprobantes. Emite un primer comprobante real, comprueba su veredicto y su PDF, y recién entonces abre el flujo completo.