# Emitir Documento Electrónico (/docs/referencia/documentos-electronicos/emitir)



## POST /api/v1/documento-electronico [#post-apiv1documento-electronico]

Recibe un documento electrónico para firmarlo y enviarlo a SIFEN. La respuesta es **asíncrona**: la API retorna inmediatamente con `estado: PENDIENTE` y un CDC ya calculado. La respuesta de SIFEN llega después. Usá [`GET /status/:cdc`](/docs/referencia/documentos-electronicos/consultar-estado) o el `statusUrl` retornado para hacer polling del estado final.

Con una clave `sk_sandbox_`, el documento se procesa sin envío a SIFEN. La respuesta inicial sigue siendo `202` con `PENDIENTE`; consultá el [comportamiento de SANDBOX](/docs/conceptos/ambientes#sandbox-de-sifende).

### Autenticación [#autenticación]

`Authorization: Bearer {api-key}` — requerido

### Idempotencia [#idempotencia]

`Idempotency-Key` es un header opcional de 1 a 255 caracteres ASCII visibles, sin espacios al inicio ni al final. El flujo compartido está definido en [Idempotencia y Reintentos Seguros](/docs/guias/idempotencia).

```http
Idempotency-Key: 7d444840-9dc0-11d1-b245-5ffdce74fad2
```

En emisión, el replay devuelve el mismo `202`, documento, CDC, correlativo y `Location`; nunca reserva otro número.

### Cuerpo de la solicitud [#cuerpo-de-la-solicitud]

El campo `tipoDocumento` determina el schema completo de la solicitud. Ver los modelos:

* [Factura Electrónica](/docs/referencia/modelos/factura-electronica)
* [Autofactura Electrónica](/docs/referencia/modelos/autofactura)
* [Nota de Crédito Electrónica](/docs/referencia/modelos/nota-credito)
* [Nota de Débito Electrónica](/docs/referencia/modelos/nota-debito)
* [Nota de Remisión Electrónica](/docs/referencia/modelos/nota-remision)

### Campos de facturas y notas de crédito o débito [#campos-de-facturas-y-notas-de-crédito-o-débito]

La NRE tiene un contrato propio de carga y transporte, sin importes comerciales. Usá sus [tablas de campos](/docs/referencia/modelos/nota-remision).

La AFE también tiene un contrato propio: informa `vendedor`, `lugarOperacion` y `constancia`, y no admite `receptor`. Usá sus [tablas de campos](/docs/referencia/modelos/autofactura).

| Campo                       | Tipo       | Req. | Descripción                                                                                                              |
| --------------------------- | ---------- | ---- | ------------------------------------------------------------------------------------------------------------------------ |
| `tipoDocumento`             | `enum`     | Sí   | Tipo de documento — ver la lista de modelos arriba                                                                       |
| `fechaEmision`              | `datetime` | No   | Fecha y hora de Paraguay (`YYYY-MM-DDTHH:mm:ss`). Si se omite, se usa la fecha y hora en que Sifende recibe la solicitud |
| `tipoEmision`               | `enum`     | No   | Sólo `NORMAL`, valor por defecto. SIFEN todavía no habilita la emisión en contingencia                                   |
| `numeroEstablecimiento`     | `integer`  | Sí   | Número de establecimiento (1-999)                                                                                        |
| `puntoExpedicion`           | `integer`  | Sí   | Punto de expedición (1-999)                                                                                              |
| `receptor`                  | `object`   | Sí   | Datos del receptor — ver [Campos del receptor](#campos-del-receptor)                                                     |
| `items`                     | `array`    | Sí   | Lista de ítems — ver [Modelo Ítem](/docs/referencia/modelos/item)                                                        |
| `monedaOperacion`           | `enum`     | No   | Moneda de la operación (ej: `PYG`, `USD`). Por defecto `PYG`                                                             |
| `descuentoGlobalPorcentaje` | `number`   | No   | Porcentaje global mayor que 0 y menor o igual a 100. No se admite en Nota de Remisión                                    |
| `infoEmisor`                | `string`   | No   | Texto libre adicional del emisor, de 1 a 3000 caracteres en una sola línea                                               |

### Campos condicionales según el tipo de documento [#campos-condicionales-según-el-tipo-de-documento]

Estos campos no aplican a todos los tipos de documento. Omitir el que corresponde a tu `tipoDocumento` devuelve `400 validation-error`.

| Campo                | Tipo               | Obligatorio cuando                                                              | Descripción                                                                                                                                           |
| -------------------- | ------------------ | ------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `tipoTransaccion`    | `enum`             | `tipoDocumento` es `FACTURA_ELECTRONICA` o `AUTOFACTURA_ELECTRONICA`            | Naturaleza de la operación (`VENTA_MERCADERIA`, `PRESTACION_SERVICIOS`, …). En NCE, NDE y NRE no se informa                                           |
| `condicionOperacion` | `enum`             | `tipoDocumento` es `FACTURA_ELECTRONICA` o `AUTOFACTURA_ELECTRONICA`            | `CONTADO` o `CREDITO`. En AFE sólo se admite `CONTADO`, que es el valor por defecto. No aplica a NCE ni NDE                                           |
| `condicionPago`      | `object`           | `condicionOperacion` es `CONTADO` o `CREDITO`, salvo que uses `pagos`/`credito` | Medio de pago o modalidad de crédito — ver [Modelo Condición de Pago](/docs/referencia/modelos/condicion-pago)                                        |
| `pagos` / `credito`  | `array` / `object` | Alternativa de la FE a `condicionPago`                                          | Varios medios de pago y crédito con entrega — ver [Forma completa](/docs/referencia/modelos/condicion-pago#forma-completa-pagos-y-credito)            |
| `motivoEmision`      | `enum`             | `tipoDocumento` es `NOTA_DE_CREDITO_ELECTRONICA` o `NOTA_DE_DEBITO_ELECTRONICA` | Motivo del ajuste (`DEVOLUCION`, `DESCUENTO`, `AJUSTE_DE_PRECIO`, …)                                                                                  |
| `documentoAsociado`  | `object`           | `tipoDocumento` es `NOTA_DE_CREDITO_ELECTRONICA` o `NOTA_DE_DEBITO_ELECTRONICA` | El documento que se modifica — ver [Modelo Documento Asociado](/docs/referencia/modelos/documento-asociado). La FE usa la lista `documentosAsociados` |

### Campos del receptor [#campos-del-receptor]

El bloque `receptor` usa los mismos nombres de campo en toda operación, pero &#x2A;*cuáles son obligatorios depende de `tipoContribuyente`**. Schema completo en [Modelo Receptor](/docs/referencia/modelos/receptor).

| Campo                       | Tipo     | Req.        | Descripción                                                                                                                                                                 |
| --------------------------- | -------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `tipoContribuyente`         | `enum`   | Sí          | `CONTRIBUYENTE` (receptor con RUC) o `NO_CONTRIBUYENTE`. Siempre se envía                                                                                                   |
| `tipoOperacion`             | `enum`   | Sí          | `B2B`, `B2C`, `B2G`, `B2F`                                                                                                                                                  |
| `numeroDocumento`           | `string` | Sí          | RUC sin DV, cédula o pasaporte según el caso. Para el receptor innominado, el literal `"0"`                                                                                 |
| `nombreRazonSocial`         | `string` | Sí          | Nombre o razón social. Para el receptor innominado, el literal `"Sin Nombre"`                                                                                               |
| `tipoContribuyenteReceptor` | `enum`   | Condicional | **Obligatorio cuando `tipoContribuyente = CONTRIBUYENTE`.** `PERSONA_FISICA` o `PERSONA_JURIDICA`. No se envía para `NO_CONTRIBUYENTE`: SIFEN lo rechaza con el código 1303 |
| `digitoVerificador`         | `string` | Condicional | **Obligatorio cuando `tipoContribuyente = CONTRIBUYENTE`.** Un solo dígito — el DV del RUC del receptor                                                                     |
| `tipoDocumento`             | `enum`   | Condicional | **Obligatorio cuando `tipoContribuyente = NO_CONTRIBUYENTE`.** `CEDULA_PARAGUAYA`, `PASAPORTE`, `INNOMINADO`, etc. No se envía para `CONTRIBUYENTE`                         |
| `direccion`                 | `string` | Condicional | Obligatoria para `tipoOperacion = B2F` y para la Nota de Remisión. Opcional en el resto                                                                                     |
| `email`                     | `string` | No          | Si está configurado el envío automático, Sifende manda el KuDE a esta dirección                                                                                             |

<Callout type="warn">
  `tipoContribuyente` decide tres campos a la vez, y es el motivo de rechazo más frecuente al integrar. Si el receptor es `CONTRIBUYENTE`, `tipoContribuyenteReceptor` y `digitoVerificador` van sí o sí, y `tipoDocumento` no se envía. Si es `NO_CONTRIBUYENTE`, es exactamente al revés. La guía [Receptor B2B y B2C](/docs/guias/receptor-b2b-b2c) cubre cada caso con su ejemplo.
</Callout>

### Respuesta exitosa [#respuesta-exitosa]

**Status:** `202 Accepted`

La respuesta incluye el CDC, el ambiente efectivo y URLs auxiliares para seguimiento.

```json
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "cdc": "01800123451001001000000122026042710000000006",
  "estado": "PENDIENTE",
  "ambiente": "DEV",
  "tipoDocumento": "FACTURA_ELECTRONICA",
  "iTiDe": 1,
  "numeroDocumento": 1,
  "numeroFormateado": "001-001-0000001",
  "fechaCreacion": "2026-04-27T10:30:00",
  "qrUrl": "https://ekuatia.set.gov.py/consultas-test/qr?...",
  "statusUrl": "https://api.sifende.com.py/api/v1/documento-electronico/status/01800123451001001000000122026042710000000006",
  "kudeUrl": "https://api.sifende.com.py/api/v1/documento-electronico/01800123451001001000000122026042710000000006/kude"
}
```

#### Headers de respuesta [#headers-de-respuesta]

| Header     | Valor         | Descripción                                         |
| ---------- | ------------- | --------------------------------------------------- |
| `Location` | `{statusUrl}` | URL absoluta para consultar el estado del documento |

#### Campos de la respuesta [#campos-de-la-respuesta]

| Campo              | Tipo         | Descripción                                                                                                                                     |
| ------------------ | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`               | `uuid`       | Identificador público del documento en Sifende. No es una clave de idempotencia                                                                 |
| `cdc`              | `string(44)` | Código de Control del Documento Electrónico — identificador único en SIFEN                                                                      |
| `estado`           | `enum`       | Estado inicial: siempre `PENDIENTE` en la respuesta de emisión                                                                                  |
| `ambiente`         | `string`     | Ambiente de la emisión: `DEV`, `PROD` o `SANDBOX`, determinado por la API key. No cambia para este documento                                    |
| `tipoDocumento`    | `enum`       | Tipo del documento creado (eco de la solicitud)                                                                                                 |
| `iTiDe`            | `integer`    | Código numérico SIFEN del tipo (1=FE, 4=AFE, 5=NCE, 6=NDE, 7=NRE)                                                                               |
| `numeroDocumento`  | `integer`    | Número correlativo asignado dentro del punto de expedición                                                                                      |
| `numeroFormateado` | `string`     | Número en formato `establecimiento-puntoExpedicion-secuencia` (ej: `001-001-0000001`)                                                           |
| `fechaCreacion`    | `datetime`   | Timestamp de creación del registro                                                                                                              |
| `qrUrl`            | `string`     | URL del QR oficial de SIFEN para el KuDE                                                                                                        |
| `statusUrl`        | `string`     | URL absoluta para consultar el estado                                                                                                           |
| `kudeUrl`          | `string`     | URL absoluta para descargar el KuDE en PDF en estado `APROBADO` o `APROBADO_OBSERVACION`. En SANDBOX, el PDF indica que no tiene validez fiscal |

<Callout type="info">
  El estado inicial es siempre `PENDIENTE`. Hacé polling a `statusUrl` o `GET /status/:cdc` cada 5 segundos, durante un máximo de 5 minutos, hasta llegar a un estado terminal: `APROBADO`, `APROBADO_OBSERVACION`, `RECHAZADO`, `CANCELADO` o `ERROR`. `APROBADO_OBSERVACION` es un resultado exitoso: el DE quedó registrado, con observaciones en `mensajeRechazo`. Ver [Polling de resultados](/docs/guias/polling-resultados).
</Callout>

### Errores comunes [#errores-comunes]

| Status | Tipo                                     | Cuándo ocurre                                                                                                                                                                  | Acción                                                                                |
| ------ | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------- |
| 400    | `validation-error`                       | Campos inválidos, faltantes o ramas de pago incompatibles; en `CONTADO`, pagos que no cubren exactamente el total                                                              | Corregí las rutas incluidas en `errores` y reenviá la solicitud                       |
| 400    | `validation-error`                       | En `CREDITO`: falta `condicionCredito`, se mezclan `PLAZO`/`CUOTA`, no coincide `cuotas` con `detalleCuotas`, las cuotas no suman el saldo financiado o la entrega es inválida | Ajustá `condicionPago` según la [referencia](/docs/referencia/modelos/condicion-pago) |
| 400    | `invalid-enum-value`                     | Valor de enumeración no reconocido                                                                                                                                             | Usá un valor publicado por `GET /api/v1/public/enums`                                 |
| 422    | `configuracion-incompleta`               | Falta el timbrado u otro dato del emisor                                                                                                                                       | Completá el dato indicado por `campo`                                                 |
| 404    | `certificate-not-found`                  | Falta certificado activo o CSC del ambiente                                                                                                                                    | Revisá ambos desde el panel                                                           |
| 422    | `documento-electronico-generation-error` | El documento no cumple una regla fiscal; revisá el `detail`                                                                                                                    | Revisá el detalle y contactá soporte si la solicitud cumple OpenAPI                   |

<Callout type="info">
  La API ejecuta la validación `400` antes de reservar la secuencia. Un payload inválido no consume numeración ni crea un registro de documento electrónico.
</Callout>

### Ejemplos [#ejemplos]

Los dos casos de receptor que cubren la mayoría de las integraciones. Copiá el que corresponda a tu operación — lo que los diferencia es el bloque `receptor`.

#### Factura B2C — consumidor final identificado [#factura-b2c--consumidor-final-identificado]

<Tabs>
  <Tab value="curl" label="cURL">
    ```bash
    curl -X POST https://api.sifende.com.py/api/v1/documento-electronico \
      -H "Authorization: Bearer $SIFENDE_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "tipoDocumento": "FACTURA_ELECTRONICA",
        "fechaEmision": "2026-04-15T10:30:00",
        "tipoEmision": "NORMAL",
        "numeroEstablecimiento": 1,
        "puntoExpedicion": 1,
        "tipoTransaccion": "VENTA_MERCADERIA",
        "monedaOperacion": "PYG",
        "receptor": {
          "tipoContribuyente": "NO_CONTRIBUYENTE",
          "tipoOperacion": "B2C",
          "tipoDocumento": "CEDULA_PARAGUAYA",
          "numeroDocumento": "1234567",
          "nombreRazonSocial": "Juan Pérez"
        },
        "condicionOperacion": "CONTADO",
        "condicionPago": {
          "tipo": "CONTADO",
          "tipoPago": "EFECTIVO",
          "monedaPago": "PYG",
          "montoPago": 110000
        },
        "items": [
          {
            "codigo": "PROD-001",
            "descripcion": "Resma de papel A4 75g",
            "cantidad": 10,
            "unidadMedida": "UNI",
            "precioUnitario": 11000,
            "afectacionTributaria": "GRAVADO",
            "tasaIVA": 10
          }
        ]
      }'
    ```
  </Tab>

  <Tab value="typescript" label="TypeScript">
    ```typescript
    const response = await fetch(
      'https://api.sifende.com.py/api/v1/documento-electronico',
      {
        method: 'POST',
        headers: {
          'Authorization': `Bearer ${process.env.SIFENDE_API_KEY}`,
          'Content-Type': 'application/json',
        },
        body: JSON.stringify({
          tipoDocumento: 'FACTURA_ELECTRONICA',
          fechaEmision: '2026-04-15T10:30:00',
          tipoEmision: 'NORMAL',
          numeroEstablecimiento: 1,
          puntoExpedicion: 1,
          tipoTransaccion: 'VENTA_MERCADERIA',
          monedaOperacion: 'PYG',
          receptor: {
            tipoContribuyente: 'NO_CONTRIBUYENTE',
            tipoOperacion: 'B2C',
            tipoDocumento: 'CEDULA_PARAGUAYA',
            numeroDocumento: '1234567',
            nombreRazonSocial: 'Juan Pérez',
          },
          condicionOperacion: 'CONTADO',
          condicionPago: {
            tipo: 'CONTADO',
            tipoPago: 'EFECTIVO',
            monedaPago: 'PYG',
            montoPago: 110000,
          },
          items: [
            {
              codigo: 'PROD-001',
              descripcion: 'Resma de papel A4 75g',
              cantidad: 10,
              unidadMedida: 'UNI',
              precioUnitario: 11000,
              afectacionTributaria: 'GRAVADO',
              tasaIVA: 10,
            },
          ],
        }),
      }
    );

    const data = await response.json();
    // data.cdc      → "01800123451001001000000122026042710000000006"
    // data.estado   → "PENDIENTE"
    // data.statusUrl → "https://api.sifende.com.py/api/v1/documento-electronico/status/..."
    ```
  </Tab>

  <Tab value="python" label="Python">
    ```python
    import requests, os

    response = requests.post(
        'https://api.sifende.com.py/api/v1/documento-electronico',
        headers={
            'Authorization': f'Bearer {os.environ["SIFENDE_API_KEY"]}',
            'Content-Type': 'application/json',
        },
        json={
            'tipoDocumento': 'FACTURA_ELECTRONICA',
            'fechaEmision': '2026-04-15T10:30:00',
            'tipoEmision': 'NORMAL',
            'numeroEstablecimiento': 1,
            'puntoExpedicion': 1,
            'tipoTransaccion': 'VENTA_MERCADERIA',
            'monedaOperacion': 'PYG',
            'receptor': {
                'tipoContribuyente': 'NO_CONTRIBUYENTE',
                'tipoOperacion': 'B2C',
                'tipoDocumento': 'CEDULA_PARAGUAYA',
                'numeroDocumento': '1234567',
                'nombreRazonSocial': 'Juan Pérez',
            },
            'condicionOperacion': 'CONTADO',
            'condicionPago': {
                'tipo': 'CONTADO',
                'tipoPago': 'EFECTIVO',
                'monedaPago': 'PYG',
                'montoPago': 110000,
            },
            'items': [{
                'codigo': 'PROD-001',
                'descripcion': 'Resma de papel A4 75g',
                'cantidad': 10,
                'unidadMedida': 'UNI',
                'precioUnitario': 11000,
                'afectacionTributaria': 'GRAVADO',
                'tasaIVA': 10,
            }],
        }
    )

    data = response.json()
    # data['cdc']        → "01800123451001001000000122026042710000000006"
    # data['estado']     → "PENDIENTE"
    # data['statusUrl']  → "https://api.sifende.com.py/api/v1/documento-electronico/status/..."
    ```
  </Tab>
</Tabs>

#### Factura a crédito por cuotas [#factura-a-crédito-por-cuotas]

Ejemplo de solicitud:

```bash
curl -X POST https://api.sifende.com.py/api/v1/documento-electronico \
  -H "Authorization: Bearer $SIFENDE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "tipoDocumento": "FACTURA_ELECTRONICA",
  "fechaEmision": "2026-09-18T10:30:00",
  "tipoEmision": "NORMAL",
  "numeroEstablecimiento": 1,
  "puntoExpedicion": 1,
  "tipoTransaccion": "VENTA_MERCADERIA",
  "monedaOperacion": "PYG",
  "receptor": {
    "tipoContribuyente": "CONTRIBUYENTE",
    "tipoOperacion": "B2B",
    "tipoContribuyenteReceptor": "PERSONA_JURIDICA",
    "numeroDocumento": "80012345",
    "digitoVerificador": "0",
    "nombreRazonSocial": "Comercial San Roque S.A."
  },
  "condicionOperacion": "CREDITO",
  "condicionPago": {
    "tipo": "CREDITO",
    "condicionCredito": "CUOTA",
    "cuotas": 3,
    "detalleCuotas": [
      {
        "monto": 40000,
        "fechaVencimiento": "2026-09-18"
      },
      {
        "monto": 40000,
        "fechaVencimiento": "2026-10-18"
      },
      {
        "monto": 40000,
        "fechaVencimiento": "2026-11-18"
      }
    ]
  },
  "items": [
    {
      "codigo": "PROD-001",
      "descripcion": "Resma de papel A4 75g",
      "cantidad": 10,
      "unidadMedida": "UNI",
      "precioUnitario": 12000,
      "afectacionTributaria": "GRAVADO",
      "tasaIVA": 10
    }
  ]
}'
```

Para crédito a plazo, reemplazá la rama por `condicionCredito: "PLAZO"` y `plazoCredito`; no envíes `cuotas` ni `detalleCuotas`.

#### Factura B2B — receptor contribuyente con RUC [#factura-b2b--receptor-contribuyente-con-ruc]

Respecto del ejemplo anterior, en el bloque `receptor`: `tipoContribuyente` pasa a `CONTRIBUYENTE` y `tipoOperacion` a `B2B`, se agregan `tipoContribuyenteReceptor` y `digitoVerificador`, y &#x2A;*se saca `tipoDocumento`**. El `numeroDocumento` es el RUC sin el dígito verificador.

<Tabs>
  <Tab value="curl" label="cURL">
    ```bash
    curl -X POST https://api.sifende.com.py/api/v1/documento-electronico \
      -H "Authorization: Bearer $SIFENDE_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "tipoDocumento": "FACTURA_ELECTRONICA",
        "fechaEmision": "2026-04-15T10:30:00",
        "tipoEmision": "NORMAL",
        "numeroEstablecimiento": 1,
        "puntoExpedicion": 1,
        "tipoTransaccion": "VENTA_MERCADERIA",
        "monedaOperacion": "PYG",
        "receptor": {
          "tipoContribuyente": "CONTRIBUYENTE",
          "tipoOperacion": "B2B",
          "tipoContribuyenteReceptor": "PERSONA_JURIDICA",
          "numeroDocumento": "80012345",
          "digitoVerificador": "0",
          "nombreRazonSocial": "Comercial Guaraní S.A.",
          "direccion": "Av. Mariscal López 4567, Asunción"
        },
        "condicionOperacion": "CONTADO",
        "condicionPago": {
          "tipo": "CONTADO",
          "tipoPago": "TRANSFERENCIA",
          "monedaPago": "PYG",
          "montoPago": 1100000
        },
        "items": [
          {
            "codigo": "PROD-001",
            "descripcion": "Resma de papel A4 75g",
            "cantidad": 100,
            "unidadMedida": "UNI",
            "precioUnitario": 11000,
            "afectacionTributaria": "GRAVADO",
            "tasaIVA": 10
          }
        ]
      }'
    ```
  </Tab>

  <Tab value="typescript" label="TypeScript">
    ```typescript
    const response = await fetch(
      'https://api.sifende.com.py/api/v1/documento-electronico',
      {
        method: 'POST',
        headers: {
          'Authorization': `Bearer ${process.env.SIFENDE_API_KEY}`,
          'Content-Type': 'application/json',
        },
        body: JSON.stringify({
          tipoDocumento: 'FACTURA_ELECTRONICA',
          fechaEmision: '2026-04-15T10:30:00',
          tipoEmision: 'NORMAL',
          numeroEstablecimiento: 1,
          puntoExpedicion: 1,
          tipoTransaccion: 'VENTA_MERCADERIA',
          monedaOperacion: 'PYG',
          receptor: {
            tipoContribuyente: 'CONTRIBUYENTE',
            tipoOperacion: 'B2B',
            tipoContribuyenteReceptor: 'PERSONA_JURIDICA',
            numeroDocumento: '80012345',
            digitoVerificador: '1',
            nombreRazonSocial: 'Comercial Guaraní S.A.',
            direccion: 'Av. Mariscal López 4567, Asunción',
          },
          condicionOperacion: 'CONTADO',
          condicionPago: {
            tipo: 'CONTADO',
            tipoPago: 'TRANSFERENCIA',
            monedaPago: 'PYG',
            montoPago: 1100000,
          },
          items: [
            {
              codigo: 'PROD-001',
              descripcion: 'Resma de papel A4 75g',
              cantidad: 100,
              unidadMedida: 'UNI',
              precioUnitario: 11000,
              afectacionTributaria: 'GRAVADO',
              tasaIVA: 10,
            },
          ],
        }),
      }
    );

    const data = await response.json();
    // data.cdc      → "01800123451001001000000122026042710000000006"
    // data.estado   → "PENDIENTE"
    ```
  </Tab>

  <Tab value="python" label="Python">
    ```python
    import requests, os

    response = requests.post(
        'https://api.sifende.com.py/api/v1/documento-electronico',
        headers={
            'Authorization': f'Bearer {os.environ["SIFENDE_API_KEY"]}',
            'Content-Type': 'application/json',
        },
        json={
            'tipoDocumento': 'FACTURA_ELECTRONICA',
            'fechaEmision': '2026-04-15T10:30:00',
            'tipoEmision': 'NORMAL',
            'numeroEstablecimiento': 1,
            'puntoExpedicion': 1,
            'tipoTransaccion': 'VENTA_MERCADERIA',
            'monedaOperacion': 'PYG',
            'receptor': {
                'tipoContribuyente': 'CONTRIBUYENTE',
                'tipoOperacion': 'B2B',
                'tipoContribuyenteReceptor': 'PERSONA_JURIDICA',
                'numeroDocumento': '80012345',
                'digitoVerificador': '1',
                'nombreRazonSocial': 'Comercial Guaraní S.A.',
                'direccion': 'Av. Mariscal López 4567, Asunción',
            },
            'condicionOperacion': 'CONTADO',
            'condicionPago': {
                'tipo': 'CONTADO',
                'tipoPago': 'TRANSFERENCIA',
                'monedaPago': 'PYG',
                'montoPago': 1100000,
            },
            'items': [{
                'codigo': 'PROD-001',
                'descripcion': 'Resma de papel A4 75g',
                'cantidad': 100,
                'unidadMedida': 'UNI',
                'precioUnitario': 11000,
                'afectacionTributaria': 'GRAVADO',
                'tasaIVA': 10,
            }],
        }
    )

    data = response.json()
    # data['cdc']    → "01800123451001001000000122026042710000000006"
    # data['estado'] → "PENDIENTE"
    ```
  </Tab>
</Tabs>

## Próximos pasos [#próximos-pasos]

* [Receptor B2B y B2C](/docs/guias/receptor-b2b-b2c): cada caso de receptor con su ejemplo y los rechazos asociados.
* [Consultar el estado del documento](/docs/referencia/documentos-electronicos/consultar-estado)
* [Modelo Receptor](/docs/referencia/modelos/receptor): schema completo del bloque `receptor`.
