> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mipos.co.cr/llms.txt
> Use this file to discover all available pages before exploring further.

# Registrar Emisor

> Registrar un nuevo emisor con su certificado de Hacienda

Registra un nuevo emisor en el sistema con sus credenciales del Ministerio de Hacienda y certificado digital (archivo `.p12` codificado en base64).

<Warning>
  El campo `certificadoHacienda` debe ser el archivo `.p12` del emisor codificado en base64. Este certificado es emitido por el BCCR (Banco Central de Costa Rica).
</Warning>

## Request

```
POST https://{empresa}.mipos.co.cr/api/enviar/emisor
```

### Datos del emisor

<ParamField body="identificacion" type="number" required>
  Número de identificación del emisor (cédula física o jurídica).
</ParamField>

<ParamField body="tipoIdentificacion" type="number" required>
  Tipo de identificación:

  * `1` — Cédula Física
  * `2` — Cédula Jurídica
  * `3` — DIMEX
  * `4` — NITE
</ParamField>

<ParamField body="codigoActividad" type="number" required>
  Código de actividad económica registrado en Hacienda (ej: `4772.0`).
</ParamField>

<ParamField body="sucursal" type="number" required>
  Número de sucursal. Usar `1` para la sede principal.
</ParamField>

<ParamField body="nombreComercial" type="string" required>
  Nombre comercial o razón social del emisor.
</ParamField>

<ParamField body="telefono" type="string" required>
  Número de teléfono del emisor.
</ParamField>

<ParamField body="correoElectronico" type="string" required>
  Correo electrónico del emisor.
</ParamField>

### Ubicación

<ParamField body="ubicacion" type="object" required>
  Dirección física del emisor.

  <Expandable title="Propiedades">
    <ParamField body="provincia" type="string" required>
      Código de provincia (1-7).
    </ParamField>

    <ParamField body="canton" type="string" required>
      Código de cantón (2 dígitos).
    </ParamField>

    <ParamField body="distrito" type="string" required>
      Código de distrito (2 dígitos).
    </ParamField>

    <ParamField body="barrio" type="string" required>
      Código de barrio (2 dígitos).
    </ParamField>

    <ParamField body="direccion" type="string" required>
      Dirección detallada en texto libre.
    </ParamField>
  </Expandable>
</ParamField>

### Credenciales de Hacienda

<ParamField body="ambiente" type="number" required>
  Ambiente de Hacienda:

  * `1` — Producción
  * `2` — Pruebas (Sandbox)
</ParamField>

<ParamField body="usuarioHacienda" type="string" required>
  Usuario de acceso al sistema de comprobantes electrónicos de Hacienda.
</ParamField>

<ParamField body="claveHacienda" type="string" required>
  Clave de acceso al sistema de comprobantes electrónicos (codificada en base64).
</ParamField>

<ParamField body="pinCertificado" type="string" required>
  PIN del certificado digital `.p12`.
</ParamField>

<ParamField body="certificadoHacienda" type="string" required>
  Certificado digital `.p12` codificado en base64.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://{empresa}.mipos.co.cr/api/enviar/emisor \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer {token}" \
    -d '{
      "identificacion": 102340568,
      "tipoIdentificacion": 1,
      "codigoActividad": 4772.0,
      "sucursal": 1,
      "nombreComercial": "MI EMPRESA S.A.",
      "telefono": "88180000",
      "correoElectronico": "empresa@ejemplo.com",
      "ubicacion": {
        "provincia": "1",
        "canton": "06",
        "distrito": "01",
        "barrio": "04",
        "direccion": "350 Oeste del Puente Cañas"
      },
      "ambiente": 1,
      "usuarioHacienda": "cpf-01-0234-0567@stag.comprobanteselectronicos.go.cr",
      "claveHacienda": "BASE64_ENCODED_KEY",
      "pinCertificado": "1234",
      "certificadoHacienda": "BASE64_ENCODED_P12_CERTIFICATE"
    }'
  ```

  ```php PHP theme={null}
  // Leer el certificado .p12 y codificar en base64
  $certificado = base64_encode(file_get_contents('/ruta/certificado.p12'));

  $ch = curl_init('https://{empresa}.mipos.co.cr/api/enviar/emisor');
  curl_setopt_array($ch, [
      CURLOPT_POST           => true,
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_HTTPHEADER     => [
          'Content-Type: application/json',
          'Authorization: Bearer ' . $token,
      ],
      CURLOPT_POSTFIELDS     => json_encode([
          'identificacion'      => 102340568,
          'tipoIdentificacion'  => 1,
          'codigoActividad'     => 4772.0,
          'sucursal'            => 1,
          'nombreComercial'     => 'MI EMPRESA S.A.',
          'telefono'            => '88180000',
          'correoElectronico'   => 'empresa@ejemplo.com',
          'ubicacion'           => [
              'provincia' => '1',
              'canton'    => '06',
              'distrito'  => '01',
              'barrio'    => '04',
              'direccion' => '350 Oeste del Puente Cañas',
          ],
          'ambiente'            => 1,
          'usuarioHacienda'     => 'cpf-01-0234-0567@stag.comprobanteselectronicos.go.cr',
          'claveHacienda'       => 'BASE64_ENCODED_KEY',
          'pinCertificado'      => '1234',
          'certificadoHacienda' => $certificado,
      ]),
  ]);

  $response = curl_exec($ch);
  $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  curl_close($ch);
  ```

  ```javascript Node.js theme={null}
  import { readFileSync } from 'fs';

  // Leer el certificado .p12 y codificar en base64
  const certificado = readFileSync('/ruta/certificado.p12').toString('base64');

  const response = await fetch('https://{empresa}.mipos.co.cr/api/enviar/emisor', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${token}`,
    },
    body: JSON.stringify({
      identificacion: 102340568,
      tipoIdentificacion: 1,
      codigoActividad: 4772.0,
      sucursal: 1,
      nombreComercial: 'MI EMPRESA S.A.',
      telefono: '88180000',
      correoElectronico: 'empresa@ejemplo.com',
      ubicacion: {
        provincia: '1',
        canton: '06',
        distrito: '01',
        barrio: '04',
        direccion: '350 Oeste del Puente Cañas',
      },
      ambiente: 1,
      usuarioHacienda: 'cpf-01-0234-0567@stag.comprobanteselectronicos.go.cr',
      claveHacienda: 'BASE64_ENCODED_KEY',
      pinCertificado: '1234',
      certificadoHacienda: certificado,
    }),
  });

  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests
  import base64

  # Leer el certificado .p12 y codificar en base64
  with open('/ruta/certificado.p12', 'rb') as f:
      certificado = base64.b64encode(f.read()).decode()

  response = requests.post(
      'https://{empresa}.mipos.co.cr/api/enviar/emisor',
      headers={'Authorization': f'Bearer {token}'},
      json={
          'identificacion': 102340568,
          'tipoIdentificacion': 1,
          'codigoActividad': 4772.0,
          'sucursal': 1,
          'nombreComercial': 'MI EMPRESA S.A.',
          'telefono': '88180000',
          'correoElectronico': 'empresa@ejemplo.com',
          'ubicacion': {
              'provincia': '1',
              'canton': '06',
              'distrito': '01',
              'barrio': '04',
              'direccion': '350 Oeste del Puente Cañas',
          },
          'ambiente': 1,
          'usuarioHacienda': 'cpf-01-0234-0567@stag.comprobanteselectronicos.go.cr',
          'claveHacienda': 'BASE64_ENCODED_KEY',
          'pinCertificado': '1234',
          'certificadoHacienda': certificado,
      },
  )

  data = response.json()
  ```
</RequestExample>

<ResponseExample>
  ```json 200 — Emisor registrado theme={null}
  {
    "status": "success",
    "message": "Emisor registrado correctamente"
  }
  ```

  ```json 400 — Error de validación theme={null}
  {
    "error": "bad_request",
    "message": "Campos requeridos faltantes"
  }
  ```

  ```json 401 — No autorizado theme={null}
  {
    "error": "unauthorized",
    "message": "Token inválido o expirado"
  }
  ```
</ResponseExample>
