---
title: "Solicitar acceso OEM (self-serve, empresa)"
method: POST
path: "/partners/solicitar-oem"
tags: ["partners"]
---

# Solicitar acceso OEM (self-serve, empresa)

`POST /partners/solicitar-oem`

## Request

- Base URL: `https://contadeo.com/api`
- URL: `https://contadeo.com/api/partners/solicitar-oem`
- Auth: none required

**Requiere el programa OEM activo** (`OEM_HABILITADO=true`; sin la variable, 404). Alta de partners por aprobación manual del operador.

Alta autoservicio de una empresa como partner OEM. Rate-limit: 5 solicitudes por IP cada 10 min (429). Queda en estado `pendiente` hasta que el operador la aprueba y emite la primera `cdop_` key. Idempotente por país, tipo e identificación fiscal: si la identidad ya existe la respuesta es la misma que para uno nuevo (código + estado `pendiente`), a propósito, para no revelar qué empresas ya son partners. Admite Ecuador (EC/RUC) y Estados Unidos (US/EIN). El EIN identifica al partner; los emisores de sus clientes necesitan RUC ecuatoriano. El alta y la aprobación no activan por sí solas el régimen comercial de emisión OEM.

## Request body

- union
  - object
    - `razonSocial` string, required: Razón social de la empresa
    - `ruc` string, required: Campo compatible con integraciones anteriores: solo EC/RUC. No enviar para US/EIN.
    - `emailContacto` string, email, required
    - `nombreContacto` string
    - `telefonoContacto` string
    - `aceptaTerminos` boolean, required: Aceptación de los Términos y Condiciones. Debe ser `true` (400 si falta). Este único campo acredita TRES textos: los Términos y Condiciones, el Aviso de Privacidad (`/privacidad`) y el Anexo de Protección de Datos del contrato OEM (`/oem-anexo-datos`), que se acepta en el mismo acto de solicitar el acceso; se registra como evidencia LOPDP con la fecha y, para el anexo, la versión del texto aceptado. El formulario de `/solicitar-oem` nombra y enlaza los tres en la casilla; si envías `true` desde tu propio formulario, muéstralos igual antes de marcarlo, porque la fila que queda guardada dice que el solicitante los aceptó. La evidencia se guarda solo en el alta: una solicitud repetida de la misma identidad fiscal no la reescribe.
    - `paisFiscal` 'EC' | 'US'
    - `tipoIdentificacionFiscal` 'RUC' | 'EIN': RUC para EC; EIN para US. Si se omite se infiere del país.
    - `identificacionFiscal` string: EC: RUC válido de 13 dígitos. US: EIN de 9 dígitos, con guion opcional después de los primeros dos. Se valida formato; no existencia registral.
  - object
    - `razonSocial` string, required: Razón social de la empresa
    - `ruc` string: Campo compatible con integraciones anteriores: solo EC/RUC. No enviar para US/EIN.
    - `emailContacto` string, email, required
    - `nombreContacto` string
    - `telefonoContacto` string
    - `aceptaTerminos` boolean, required: Aceptación de los Términos y Condiciones. Debe ser `true` (400 si falta). Este único campo acredita TRES textos: los Términos y Condiciones, el Aviso de Privacidad (`/privacidad`) y el Anexo de Protección de Datos del contrato OEM (`/oem-anexo-datos`), que se acepta en el mismo acto de solicitar el acceso; se registra como evidencia LOPDP con la fecha y, para el anexo, la versión del texto aceptado. El formulario de `/solicitar-oem` nombra y enlaza los tres en la casilla; si envías `true` desde tu propio formulario, muéstralos igual antes de marcarlo, porque la fila que queda guardada dice que el solicitante los aceptó. La evidencia se guarda solo en el alta: una solicitud repetida de la misma identidad fiscal no la reescribe.
    - `paisFiscal` 'EC' | 'US'
    - `tipoIdentificacionFiscal` 'RUC' | 'EIN': RUC para EC; EIN para US. Si se omite se infiere del país.
    - `identificacionFiscal` string, required: EC: RUC válido de 13 dígitos. US: EIN de 9 dígitos, con guion opcional después de los primeros dos. Se valida formato; no existencia registral.

## Response `201`

Solicitud registrada o existente; estado público uniforme pendiente.

- object
  - `codigo` string: Código del partner (CTD-XXXXXXXX)
  - `estado` string

## Other responses

- `400`: Datos inválidos (RUC, email, términos)
- `429`: Demasiadas solicitudes desde esta IP

---

[API](https://skmtc.dev/contadeo/apis/api-de-contadeo.md) · [All operations](https://skmtc.dev/contadeo/apis/api-de-contadeo/llms.txt) · [OpenAPI document](https://skmtc.dev/contadeo/apis/api-de-contadeo/revisions/461bbb9a74ce?raw)
