SIIDTE

Asignar usuario autorizado al contribuyente

Asignar un usuario autorizado a un contribuyente (flujo multi-step).

POST /api/v1/sii/dte/contribuyentes/set_usuario/{contribuyente}
import requests
 
headers = {
    "X-API-Token": "sk_live_replace_with_your_token",
}
 
response = requests.post(
    "https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/set_usuario/:contribuyente",
    headers=headers,
)
response.raise_for_status()
print(response.json())

Asignar un usuario autorizado a un contribuyente (flujo multi-step).

Agrega un usuario (por RUT) con permisos especificos para operar en
nombre del contribuyente (emitir DTE, descargar CAF, anular folios,
firmar documentos, etc.). El SII implementa la asignacion en 5 pasos:
`eu_enrola_usuarios` → `eu_mant_usuarios` → `eu_nuevo_usuario` →
`eu_confirma_usuario` (vista previa) → `eu_graba_usuario` (submit
final). Requiere certificado con permiso de escritura sobre el RUT.

**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:write`
+ certificado digital del contribuyente o representante autorizado.

**Quota:** Consume 1 consulta | Peso: 5x (operacion critica de escritura)

---

### Parametros de ruta

| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `contribuyente` | string | Si | RUT del contribuyente (`XXXXXXXX-K`) |

### Parametros de consulta

| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |

### Body (JSON)

| Campo | Tipo | Requerido | Descripcion |
|-------|------|-----------|-------------|
| `auth.cert.cert-data` | string | Si | Certificado digital (base64) |
| `auth.cert.pkey-data` | string | Si | Clave privada del certificado (base64) |
| `auth.cert.passphrase` | string | No | Passphrase del certificado |
| `usuario.rut` | string | Si | RUT del usuario a autorizar (`XXXXXXXX-K`) |
| `usuario.permisos.administrador` | boolean | No | Usuario Administrador (`SUP_USU` en el SII) |
| `usuario.permisos.solicitar_folios` | boolean | No | Solicitar Folios (`OBTENER` en el SII) |
| `usuario.permisos.anular_folios` | boolean | No | Anular Documentos (`ANULAR` en el SII) |
| `usuario.permisos.firmar` | boolean | No | Firmar Documentos (`FIRMAR` en el SII) |
| `usuario.permisos.enviar` | boolean | No | Enviar Documentos (`ENVIAR` en el SII) |
| `usuario.permisos.consultar` | boolean | No | Consulta (`CONSULTAR` en el SII) |

### Request de ejemplo
{
  "auth": {
    "cert": {
      "cert-data": "BASE64_CERT",
      "pkey-data": "BASE64_PKEY",
      "passphrase": "CERT_PASSPHRASE"
    }
  },
  "usuario": {
    "rut": "12.345.678-5",
    "permisos": {
      "administrador": false,
      "solicitar_folios": true,
      "anular_folios": false,
      "firmar": true,
      "enviar": true,
      "consultar": true
    }
  }
}
### Respuesta exitosa (200)

Mensaje extraido dinamicamente del HTML de confirmacion del SII
(gateway transparente, sin hardcoded):
{
  "success": true,
  "message": "Se ha grabado satisfactoriamente el nuevo usuario en la empresa EMPRESA X,"
" Rut XX.XXX.XXX-X, con los siguientes antecedentes:"
}
### Errores especificos

| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Certificado SII invalido | Renovar certificado |
| 400 | `VALIDATION_ERROR` | Usuario rechazado por SII | Revisar `message` |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `INSUFFICIENT_SCOPE` | Token sin scope `sii:write` | Generar token con scope adecuado |
| 403 | `AUTH_ERROR` | Certificado sin permiso sobre el RUT | Usar certificado del contribuyente |
| 422 | `VALIDATION_ERROR` | Body sin `usuario` o campos invalidos | Revisar `errors[]` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII rechazo la asignacion | Revisar `message` y `details.observacion` |

### Notas

- Este endpoint solo agrega **nuevos** usuarios (submit al form "Ingresar Nuevo Usuario").
  Para modificar permisos de un usuario existente, el SII usa `eu_mod_usuario` (flujo diferente).
- Si el RUT ya esta autorizado, el SII devuelve error — usar `GET /listar_usuarios` para verificar primero.

Parámetros

Header / Body
Tipo
Descripción
Requerido
contribuyente
string · path
ambiente
string · query
`0` produccion, `1` certificacion
No
dry_run
string | null · query
Si es `true` (o `1`/`yes`/`on`), el endpoint valida el payload y retorna una respuesta de previsualización (mismo shape que la respuesta real) sin contactar al SII. Útil para validar requests sin consumir folios, cuota ni créditos.
No

Cuerpo de la solicitud

Requerido. Content-Type: application/json.

{
  "auth": {
    "cert": {
      "cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
      "passphrase": "mi_passphrase_segura",
      "pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
    }
  },
  "usuario": {
    "permisos": {
      "administrador": false,
      "anular_folios": false,
      "consultar": false,
      "enviar": false,
      "firmar": false,
      "solicitar_folios": false
    },
    "rut": "string"
  }
}

Respuestas

200Successful Response
400Usuario invalido o credenciales SII incorrectas
401API token ausente o invalido
403Sin scope `sii:write` o sin permiso sobre contribuyente
422Body con formato invalido
429Limite de tasa excedido
502SII rechazo la asignacion
503SII en mantenimiento

Forma de la respuesta

Código 200. Estructura del JSON devuelto.

{}

On this page