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

# Crear cesiones en lote

> Genera cesiones (AECs) de múltiples facturas en una sola llamada. Obtiene automáticamente los códigos EHDR del SII y envía los AECs al SII.

## ¿Para qué se usa?

Permite **generar cesiones (AECs) de múltiples facturas en una sola llamada** y enviarlas al SII. Se usa cuando quieres ceder varias facturas a un mismo cesionario (por ejemplo una empresa de factoring) de forma automatizada.

## Qué hace

* Genera los **archivos electrónicos de cesión (AEC)** para cada factura indicada.
* Obtiene automáticamente los **códigos EHDR** del SII para cada factura.
* Permite ceder **facturas electrónicas (DTE 33)** o **exentas (DTE 34)** a un cesionario.
* **Envía los AECs al SII** después de generarlos.
* Devuelve **URLs presignadas** para descargar los archivos AEC desde S3.

## Ejemplos de uso

* Ceder múltiples facturas a una empresa de factoring desde tu integración.
* Transferir derechos de crédito de un lote de facturas a un cesionario.
* Automatizar el proceso de cesión con entidades financieras.
* Generar cesiones masivas para procesos de financiamiento.

## Requisitos importantes

### Credenciales necesarias

**Las cesiones se generan usando la contraseña del SII del representante legal, NO con el certificado digital** (excepto para entidades enroladas en el facturador de mercado, que usan el AEC nativo con el certificado de la empresa).

La entidad debe tener configurada una **credencial SII personal** (no credencial de empresa) con:

* RUT del representante legal
* Contraseña del SII del representante legal
* La credencial debe estar en estado `VALID`

## Respuesta asíncrona: `202` + `cession_batch_id`

Este endpoint **no genera las cesiones en el momento de la llamada**. Valida el request (400/403/404 si algo es inválido) y encola la generación real en segundo plano, respondiendo de inmediato con `202`:

```json theme={null}
{
    "success": true,
    "status": "processing",
    "ws_channel": "cessions-70193",
    "total": 2,
    "message": "Generando las cesiones y enviándolas al SII…",
    "cession_batch_id": "e7877303-1a03-424d-a024-48c1de218611"
}
```

El campo **`cession_batch_id`** identifica el lote creado — úsalo para consultar el resultado más tarde con [`GET /cessions/batches/{id}`](/api-reference/cessions/batch-detail), que muestra el estado final (`completed`, `failed` o `partial`) y el detalle por documento, **incluyendo el mensaje de error real del SII si alguna cesión falló**. Esto es importante porque:

* El SII puede fallar, incluso de forma transitoria, durante la generación del AEC — en ese caso ninguna cesión se crea para ese documento.
* No existe reintento automático: si un documento falla, hay que volver a intentarlo con una nueva llamada a este endpoint.
* No asumas éxito por recibir `202` — es solo la confirmación de que la solicitud fue aceptada y encolada, no de que las cesiones se generaron correctamente. Consulta `cession_batch_id` para confirmar el resultado.


## OpenAPI

````yaml POST /cessions/batch
openapi: 3.0.0
info:
  title: Tupana API
  description: API para integración con el sistema Tupana - Facturación Electrónica
  version: 1.0.0
servers:
  - url: https://api.tupana.ai/v1
    description: Servidor de producción
security:
  - apiKeyAuth: []
paths:
  /cessions/batch:
    post:
      tags:
        - Cesiones
      summary: Generar cesiones de facturas en lote
      description: >-
        Genera cesiones (AECs) de múltiples facturas en una sola llamada.
        Obtiene automáticamente los códigos EHDR del SII y envía los AECs al
        SII.
      operationId: createCessionBatch
      requestBody:
        description: Datos para generar las cesiones
        content:
          application/json:
            schema:
              type: object
              required:
                - master_entity_id
                - document_ids
                - assignee_rut
                - assignee_dv
                - assignee_business_name
                - assignee_address
                - assignee_email
              properties:
                master_entity_id:
                  type: integer
                  description: ID de la entidad maestra emisora de las facturas
                  example: 123
                document_ids:
                  type: array
                  items:
                    type: integer
                  description: Lista de IDs de los documentos (facturas) a ceder
                  example:
                    - 858405
                    - 858406
                assignee_rut:
                  type: string
                  description: RUT del cesionario (sin puntos ni guión)
                  example: '76798398'
                assignee_dv:
                  type: string
                  description: Dígito verificador del RUT del cesionario
                  example: '0'
                assignee_business_name:
                  type: string
                  description: Razón social del cesionario
                  example: SUPLO SPA
                assignee_address:
                  type: string
                  description: Dirección del cesionario
                  example: Av. Tajamar 183
                assignee_email:
                  type: string
                  format: email
                  description: Email del cesionario
                  example: factoring@suplo.cl
                assignor_email:
                  type: string
                  format: email
                  description: >-
                    Email del cedente (opcional, se usa el email de la entidad
                    si no se proporciona)
                  example: antonio@tupana.ai
            example:
              master_entity_id: 123
              document_ids:
                - 858405
                - 858406
              assignee_rut: '76798398'
              assignee_dv: '0'
              assignee_business_name: SUPLO SPA
              assignee_address: Av. Tajamar 183
              assignee_email: factoring@suplo.cl
              assignor_email: antonio@tupana.ai
        required: true
      responses:
        '202':
          description: >-
            Solicitud aceptada y encolada. La generación real de las cesiones
            corre en segundo plano — este 202 NO confirma que las cesiones se
            hayan generado exitosamente, solo que la solicitud fue validada y
            aceptada. Usa `cession_batch_id` para consultar el resultado final
            en GET /cessions/batches/{id}.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  status:
                    type: string
                    example: processing
                  ws_channel:
                    type: string
                    description: >-
                      Canal WebSocket donde se publica el avance en tiempo real
                      (opcional de escuchar)
                    example: cessions-70193
                  total:
                    type: integer
                    description: Cantidad de documentos incluidos en el lote
                    example: 2
                  message:
                    type: string
                    example: Generando las cesiones y enviándolas al SII…
                  cession_batch_id:
                    type: string
                    format: uuid
                    description: >-
                      ID del lote creado. Consúltalo con GET
                      /cessions/batches/{id} para conocer el resultado (éxito,
                      fallo o parcial) de cada documento.
                    example: e7877303-1a03-424d-a024-48c1de218611
              example:
                success: true
                status: processing
                ws_channel: cessions-70193
                total: 2
                message: Generando las cesiones y enviándolas al SII…
                cession_batch_id: e7877303-1a03-424d-a024-48c1de218611
        '400':
          description: Error en los datos proporcionados
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  invalid_documents:
                    type: array
                    items:
                      type: object
              examples:
                missing_master_entity_id:
                  value:
                    error: master_entity_id is required in the request body
                missing_fields:
                  value:
                    error: >-
                      Missing required fields: assignee_rut, assignee_dv,
                      assignee_email
                invalid_documents:
                  value:
                    error: >-
                      Only electronic invoices (DTE 33) or exempt invoices (DTE
                      34) can be assigned
                    invalid_documents:
                      - id: 858407
                        folio: 12347
                        dte_code: '39'
                missing_credentials:
                  value:
                    error: >-
                      No se encontraron credenciales SII válidas para esta
                      entidad. La cesión requiere una credencial SII personal.
                  description: >-
                    Las cesiones se generan usando la contraseña del SII del
                    representante legal, no con el certificado digital. Se
                    requiere una credencial SII personal válida.
        '403':
          description: No tienes acceso a esta entidad
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: No tienes acceso a esta entidad
        '404':
          description: Documentos no encontrados
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: >-
                      Some documents were not found or don't belong to this
                      entity
        '500':
          description: Error interno del servidor
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  missing_folios:
                    type: array
                    items:
                      type: integer
      security:
        - apiKeyAuth: []
components:
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        API Key para autenticación. Debe proporcionarse en el header
        Authorization con el formato: 'Api-Key YOUR-API-KEY' (incluye el prefijo
        'Api-Key ' seguido de tu API key)

````