Skip to main content

Introducción

La configuración correcta de los datos de tu empresa es fundamental para poder emitir comprobantes electrónicos válidos ante SUNAT. Esta guía te mostrará cómo completar toda la información necesaria.
Importante: Santo Domingo Facturación es un sistema mono-empresa. Solo puedes configurar una empresa (id_empresa = 1). No es posible crear empresas adicionales.

Acceder a la Configuración de Empresa

Desde el sistema:
  1. Ve al menú lateral
  2. Haz clic en Configuración
  3. Selecciona Empresa o Mi Empresa
El formulario de empresa permite ver y editar todos los datos de tu negocio en una sola pantalla.

Datos Básicos de la Empresa

Información RUC y Razón Social

1

RUC (Registro Único de Contribuyentes)

  • Campo: ruc
  • Formato: 11 dígitos numéricos
  • Ejemplo: 20612706702
  • Validación: Debe ser único en el sistema
  • Obligatorio:
El RUC identifica a tu empresa ante SUNAT y se incluye en todos los comprobantes electrónicos.
2

Razón Social

  • Campo: razon_social
  • Formato: Texto, máximo 245 caracteres
  • Ejemplo: SANTO DOMINGO S.A.C.
  • Obligatorio:
Es el nombre legal registrado en SUNAT. Se imprime en los comprobantes.
3

Nombre Comercial

  • Campo: comercial
  • Formato: Texto, máximo 245 caracteres
  • Ejemplo: Santo Domingo Facturación
  • Obligatorio:
Es el nombre con el que tu empresa es conocida comercialmente.

Ubicación y Domicilio Fiscal

1

Dirección

  • Campo: direccion
  • Formato: Texto, máximo 245 caracteres
  • Ejemplo: Av. Santo Domingo 123, Oficina 201
  • Uso: Se incluye en los comprobantes y en el XML enviado a SUNAT
2

Ubigeo

  • Campo: ubigeo
  • Formato: 6 dígitos (DDPPDD)
  • Ejemplo: 150101 (Lima, Lima, Lima)
  • Estructura:
    • 2 dígitos: Departamento
    • 2 dígitos: Provincia
    • 2 dígitos: Distrito
  • Por defecto: 150101 si no se especifica
El ubigeo es obligatorio para el XML de SUNAT.
3

Distrito, Provincia y Departamento

  • Campos: distrito, provincia, departamento
  • Formato: Texto, máximo 45 caracteres cada uno
  • Ejemplo:
    • Distrito: Lima
    • Provincia: Lima
    • Departamento: Lima
Estos campos complementan la dirección y se incluyen en los comprobantes.
Puedes consultar el ubigeo de tu distrito en:Ubigeos comunes:
  • Lima Cercado: 150101
  • Miraflores: 150122
  • San Isidro: 150130
  • Arequipa: 040101
  • Cusco: 080101
  • Trujillo: 130101

Datos de Contacto

1

Email

  • Campo: email
  • Formato: Dirección de correo válida, máximo 145 caracteres
  • Ejemplo: [email protected]
  • Uso: Para notificaciones y contacto con clientes
2

Teléfonos

  • Campos: telefono, telefono2, telefono3
  • Formato: Texto, máximo 30 caracteres cada uno
  • Ejemplo:
    • Teléfono 1: 01-2345678
    • Teléfono 2: 987654321 (móvil)
    • Teléfono 3: 01-2345679 (anexo)
Se muestran en los comprobantes impresos.

Logo de la Empresa

El logo aparece en los comprobantes impresos y reportes.
1

Subir logo

  1. En la sección Logo, haz clic en “Seleccionar archivo” o arrastra una imagen
  2. Formatos permitidos: JPG, PNG, GIF, WEBP
  3. Tamaño máximo: 2 MB
  4. Recomendación: 300x300 px (cuadrado) o 400x200 px (horizontal)
  5. La imagen se guardará en storage/app/public/empresasLogos/
2

Previsualizar logo

Una vez subido, el logo se mostrará en una vista previa. Podrás ver cómo se verá en los comprobantes.
3

Eliminar logo

Si necesitas cambiar el logo:
  1. Haz clic en “Eliminar Logo”
  2. Confirma la acción
  3. Sube un nuevo archivo
Nombre del archivo: El sistema guarda el logo con el formato logo_{RUC}_{timestamp}.{extension} para evitar conflictos.

Credenciales SUNAT (Clave SOL)

Seguridad: Las credenciales SOL son críticas. Permiten firmar y enviar comprobantes a SUNAT en nombre de tu empresa. Guárdalas de forma segura.

Usuario y Clave SOL

1

Usuario SOL

  • Campo: user_sol
  • Formato: Texto, máximo 45 caracteres
  • Ejemplo: SANTOD01 (usuario secundario) o tu RUC (usuario principal)
  • Dónde obtenerlo:
    1. Ingresa a SUNAT Operaciones en Línea
    2. Si eres persona natural: Tu usuario es tu RUC
    3. Si eres empresa: Crea un usuario secundario en Clave SOL → Mis usuarios → Nuevo usuario
Se recomienda usar un usuario secundario para mayor seguridad. Si el usuario es comprometido, puedes desactivarlo sin afectar el usuario principal.
2

Clave SOL

  • Campo: clave_sol
  • Formato: Texto, máximo 45 caracteres
  • Ejemplo: MiCl@ve2024!
  • Seguridad: La clave se guarda en texto plano en la BD (considera encriptarla en producción)
Requisitos de la clave:
  • Mínimo 8 caracteres
  • Al menos una mayúscula
  • Al menos una minúscula
  • Al menos un número
  • Al menos un carácter especial
3

Probar credenciales

Después de guardar las credenciales:
  1. Ve al módulo de Ventas
  2. Crea una venta de prueba (puede ser en modo beta)
  3. Genera el XML
  4. Intenta “Enviar a SUNAT”
  5. Si las credenciales son correctas, recibirás el CDR
  6. Si son incorrectas, verás un error de autenticación

Credenciales GRE (Guías de Remisión Electrónicas)

GRE: Sistema nuevo de SUNAT para Guías de Remisión. Requiere autenticación OAuth2 separada.
1

Client ID

  • Campo: gre_client_id
  • Formato: Texto, máximo 255 caracteres
  • Ejemplo: SANTOD-12345678-01
  • Dónde obtenerlo:
    1. Ingresa a Portal SUNAT - GRE
    2. Ve a ConfiguraciónAPI REST
    3. Genera un nuevo Client ID
    4. Copia el valor generado
2

Client Secret

  • Campo: gre_client_secret
  • Formato: Texto, máximo 255 caracteres
  • Seguridad: Es un secreto, no lo compartas
  • Uso: Se usa junto con el Client ID para obtener tokens de acceso
Importante: Si no emites Guías de Remisión Electrónicas, puedes dejar estos campos vacíos. Solo son necesarios si usas el módulo de Guías GRE.

Certificado Digital (.pem)

El certificado digital es necesario para firmar electrónicamente los XML antes de enviarlos a SUNAT.
1

Obtener certificado

Existen dos formas:Opción 1: Certificado de SUNAT (gratuito)
  1. Ingresa a SUNAT
  2. Ve a Comprobantes ElectrónicosCertificados
  3. Genera tu certificado digital gratuito
  4. Descarga el archivo (generalmente en formato .pfx)
Opción 2: Certificado de entidad certificadora
  • Compra un certificado SSL de una entidad como:
    • Thawte
    • VeriSign
    • DigiCert
    • Entidades locales en Perú
2

Convertir a formato .pem

Si tu certificado está en formato .pfx o .p12, debes convertirlo a .pem:Usando OpenSSL (línea de comandos):
# Extraer clave privada
openssl pkcs12 -in certificado.pfx -nocerts -out key.pem -nodes

# Extraer certificado
openssl pkcs12 -in certificado.pfx -clcerts -nokeys -out cert.pem

# Combinar en un solo archivo
cat key.pem cert.pem > certificado-final.pem
Se te pedirá la contraseña del archivo .pfx.
3

Subir certificado al sistema

Método 1: Mediante interfaz (si está implementado)
  1. En la configuración de empresa, busca “Certificado Digital”
  2. Haz clic en “Subir certificado”
  3. Selecciona tu archivo .pem
  4. El sistema lo guardará en storage/app/sunat/certificados/{RUC}-cert.pem
Método 2: Manualmente (servidor)
  1. Conéctate al servidor via FTP/SFTP
  2. Navega a storage/app/sunat/certificados/
  3. Crea la carpeta si no existe
  4. Sube tu archivo con el nombre: {TU_RUC}-cert.pem
  5. Ejemplo: 20612706702-cert.pem
  6. Asigna permisos: chmod 600 (solo lectura para el propietario)
4

Verificar instalación

Para confirmar que el certificado está correctamente instalado:
  1. Ve a Ventas y crea una venta de prueba
  2. Genera el XML
  3. Intenta enviar a SUNAT
  4. Si el certificado es válido, el XML se firmará correctamente
  5. Si hay error, verifica la ruta y formato del archivo .pem
Para el modo beta de SUNAT, el sistema usa un certificado de prueba global:
  • Ubicación: storage/app/sunat/certificados/cert.pem
  • RUC de prueba: 20000000001
  • Usuario SOL: MODDATOS
  • Clave SOL: moddatos
Este certificado es proporcionado por SUNAT para testing y no requiere configuración adicional.

Configuración de IGV

1

Tasa de IGV

  • Campo: igv
  • Formato: Decimal (0.00 a 1.00)
  • Valor por defecto: 0.18 (18%)
  • Ejemplo: Para 18%, ingresa 0.18
Esta tasa se aplica a todos los comprobantes. Si SUNAT cambia la tasa de IGV, actualiza este campo.
El IGV (Impuesto General a las Ventas) en Perú es del 18% desde 2011. No cambies este valor a menos que haya una modificación oficial.

Modo de Operación

1

Seleccionar modo

  • Campo: modo
  • Opciones:
    • test (Beta): Usa servidores de prueba de SUNAT
    • production (Producción): Usa servidores reales de SUNAT
Modo Test/Beta:
  • URL: https://e-beta.sunat.gob.pe/...
  • RUC de prueba: 20000000001
  • Credenciales: MODDATOS / moddatos
  • Los comprobantes NO son válidos legalmente
  • Ideal para pruebas y capacitación
Modo Producción:
  • URL: https://e-factura.sunat.gob.pe/...
  • Usa tu RUC real y credenciales SOL
  • Los comprobantes son válidos ante SUNAT
  • Usa este modo cuando estés listo para emitir comprobantes reales
Importante: No emitas comprobantes en modo beta a clientes reales. SUNAT no los reconocerá como válidos.Antes de pasar a producción:
  1. ✓ Verifica todos los datos de la empresa
  2. ✓ Sube tu certificado digital real
  3. ✓ Configura tus credenciales SOL reales
  4. ✓ Prueba todo el flujo en modo beta primero
  5. ✓ Cambia el modo a production solo cuando estés seguro

Tipo de Impresión

1

Formato de impresión

  • Campo: tipo_impresion
  • Opciones:
    • A4: Hoja completa (210mm x 297mm)
    • ticket: Rollo térmico (80mm de ancho)
  • Por defecto: A4
Esto configura el formato predeterminado al imprimir comprobantes.
Puedes cambiar el formato de impresión al momento de guardar cada venta. Esta configuración solo establece el valor por defecto.

Propaganda (Pie de página)

1

Mensaje personalizado

  • Campo: propaganda
  • Formato: Texto libre
  • Ejemplo: ¡Gracias por su compra! Síguenos en Facebook: @SantoDomingoSAC
  • Uso: Aparece al pie de los comprobantes impresos
Puedes incluir:
  • Agradecimientos
  • Promociones
  • Redes sociales
  • Horarios de atención

Guardar la Configuración

1

Validar datos

Antes de guardar, verifica:
  • ✓ RUC tiene 11 dígitos
  • ✓ Razón social es correcta
  • ✓ Dirección completa
  • ✓ Ubigeo válido (6 dígitos)
  • ✓ Email tiene formato válido
  • ✓ Credenciales SOL configuradas
  • ✓ Certificado .pem subido (si estás en producción)
2

Guardar cambios

Haz clic en el botón “Guardar” o “Actualizar Empresa”.El sistema:
  1. Valida todos los campos
  2. Guarda en la tabla empresas (id_empresa = 1)
  3. Si hay logo, lo guarda en storage/app/public/empresasLogos/
  4. Muestra mensaje de confirmación
3

Verificar en comprobantes

Para confirmar que los cambios se aplicaron:
  1. Ve a Ventas y crea una venta de prueba
  2. Genera el PDF
  3. Verifica que aparezcan:
    • RUC correcto
    • Razón social
    • Dirección completa
    • Logo (si lo subiste)
    • Propaganda (si la configuraste)

Estructura de la Base de Datos

CREATE TABLE empresas (
  id_empresa INT PRIMARY KEY,
  ruc VARCHAR(11) UNIQUE NOT NULL,
  razon_social VARCHAR(245) NOT NULL,
  comercial VARCHAR(245) NOT NULL,
  direccion VARCHAR(245),
  email VARCHAR(145),
  telefono VARCHAR(30),
  telefono2 VARCHAR(30),
  telefono3 VARCHAR(30),
  ubigeo VARCHAR(6),
  distrito VARCHAR(45),
  provincia VARCHAR(45),
  departamento VARCHAR(45),
  user_sol VARCHAR(45),
  clave_sol VARCHAR(45),
  gre_client_id VARCHAR(255),
  gre_client_secret VARCHAR(255),
  igv DECIMAL(10,2) DEFAULT 0.18,
  modo ENUM('test', 'production') DEFAULT 'test',
  logo VARCHAR(255),
  tipo_impresion VARCHAR(20),
  propaganda TEXT,
  estado CHAR(1) DEFAULT '1',
  created_at TIMESTAMP,
  updated_at TIMESTAMP
);

Flujo en el Código

Controller: EmpresaController.php

Endpoints:
  • GET /api/empresas - Lista todas las empresas (en este sistema, solo retorna la empresa con id=1)
  • GET /api/empresas/{id} - Muestra una empresa específica
  • POST /api/empresas - Crea una nueva empresa (restringido a admin)
  • PUT /api/empresas/{id} - Actualiza una empresa existente
  • DELETE /api/empresas/{id}/logo - Elimina el logo de una empresa
Validaciones (líneas 58-78, 120-140):
'ruc' => 'required|string|size:11|unique:empresas,ruc',
'razon_social' => 'required|string|max:245',
'comercial' => 'required|string|max:245',
'email' => 'nullable|email|max:145',
'ubigeo' => 'nullable|string|size:6',
'user_sol' => 'nullable|string|max:45',
'clave_sol' => 'nullable|string|max:45',
'logo' => 'nullable|image|mimes:jpeg,png,jpg,gif,webp|max:2048',

Service: SunatService.php

Método buildCompany (líneas 109-125): Construye el objeto Company de Greenter usando los datos de la empresa:
public function buildCompany(Empresa $empresa): Company
{
    $company = new Company();
    $company->setRuc($empresa->modo !== 'production' 
            ? config('sunat.beta.ruc') 
            : $empresa->ruc)
        ->setNombreComercial($empresa->razon_social)
        ->setRazonSocial($empresa->razon_social)
        ->setAddress((new Address())
            ->setUbigueo($empresa->ubigeo ?? '150101')
            ->setDistrito($empresa->distrito ?? '-')
            ->setProvincia($empresa->provincia ?? '-')
            ->setDepartamento($empresa->departamento ?? '-')
            ->setDireccion($empresa->direccion ?? '-'));
    return $company;
}
Método getCertificate (líneas 67-81): Busca el certificado digital:
public function getCertificate(Empresa $empresa): string
{
    $certPath = storage_path("app/sunat/certificados/{$empresa->ruc}-cert.pem");
    
    if (file_exists($certPath)) {
        return file_get_contents($certPath);
    }
    
    // Fallback: certificado global de prueba
    $globalCert = config('sunat.certificado_prueba');
    if (file_exists($globalCert)) {
        return file_get_contents($globalCert);
    }
    
    throw new \RuntimeException('No se encontró certificado PEM');
}

Errores Comunes y Soluciones

Causa: Intentas crear una empresa con un RUC que ya está en la base de datos.Solución:
  • En Santo Domingo, solo se permite una empresa (id_empresa = 1)
  • Usa el endpoint de actualización (PUT) en lugar de crear una nueva
Causa: El sistema no encuentra el archivo .pem del certificado digital.Solución:
  1. Verifica la ruta: storage/app/sunat/certificados/{TU_RUC}-cert.pem
  2. Confirma que el archivo existe y tiene permisos de lectura
  3. Usa el RUC correcto en el nombre del archivo
  4. Si estás en modo beta, verifica que exista storage/app/sunat/certificados/cert.pem
Causa: Usuario o clave SOL incorrectos al intentar enviar a SUNAT.Solución:
  1. Verifica tus credenciales en SUNAT SOL
  2. Si usas usuario secundario, confirma que tiene permisos para facturación electrónica
  3. Asegúrate de que el modo (test/production) coincida con las credenciales
  4. En modo beta, usa: MODDATOS / moddatos
Causa: El ubigeo no tiene 6 dígitos o no existe en el catálogo SUNAT.Solución:
  • Usa el formato correcto: 6 dígitos (DDPPDD)
  • Consulta la lista oficial de ubigeos
  • Por defecto, usa 150101 (Lima) si no conoces tu ubigeo
Causa: El archivo de logo no se encuentra o la ruta es incorrecta.Solución:
  1. Verifica que el logo se guardó correctamente en storage/app/public/empresasLogos/
  2. Ejecuta php artisan storage:link para crear el enlace simbólico
  3. Confirma que el campo logo en la BD tiene la ruta correcta
  4. Prueba acceder al logo via URL: /storage/empresasLogos/{nombre_archivo}

Checklist de Configuración

Antes de emitir tu primer comprobante en producción:
  • RUC correcto (11 dígitos)
  • Razón social coincide con la registrada en SUNAT
  • Dirección completa con ubigeo válido
  • Distrito, provincia y departamento completos
  • Email y teléfonos de contacto
  • Logo subido (formato: JPG/PNG, máx 2MB)
  • Usuario SOL configurado (preferiblemente secundario)
  • Clave SOL verificada
  • Certificado digital .pem subido en la ruta correcta
  • Probado en modo test antes de pasar a production
  • Tasa de IGV correcta (0.18 = 18%)
  • Tipo de impresión seleccionado (A4 o Ticket)
  • (Opcional) Credenciales GRE si emites guías electrónicas

Próximos Pasos

Configurar Series

Aprende a gestionar las series y correlativos de tus comprobantes

Primera Venta

Crea tu primer comprobante electrónico paso a paso

Gestión de Usuarios

Configura usuarios y permisos para tu equipo

Certificados Digitales

Guía detallada sobre certificados digitales en Perú
¡Configuración completa! Tu empresa está lista para emitir comprobantes electrónicos.

Build docs developers (and LLMs) love