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

# Emitir una factura electrónica

> Tipo de DE 1 — venta de bienes o servicios a un cliente.

La **Factura Electrónica** (`tipo_de: 1`) es el comprobante más usado: documenta la venta de bienes o servicios. Sirve tanto para clientes contribuyentes (con RUC) como para consumidores finales.

## Variables del ejemplo

```bash theme={null}
export EMITI_BASE_URL="https://api.emiti.fravelabs.com"
export EMITI_API_KEY="emiti_k_xxxxxxxxxxxxxxxxxxxxxxxx"
```

## Caso 1 — Factura a consumidor final, contado, PYG

Caso más común: venta de mostrador en moneda local sin datos del cliente.

```bash theme={null}
curl -s "$EMITI_BASE_URL/v1/de/emitir" \
  -X POST \
  -H "Authorization: ApiKey $EMITI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "establecimiento": "001",
    "punto": "001",
    "tipo_de": 1,
    "tipo_transaccion": 1,
    "id_interno": "FAC-2026-0001",
    "receptor": {
      "nombre": "Consumidor Final",
      "tipo_documento": 5,
      "numero_documento": "0"
    },
    "items": [
      {
        "descripcion": "Producto X",
        "cantidad": "1.0",
        "precio_unitario": "100000.00",
        "iva_tipo": 1
      }
    ]
  }'
```

Campos clave:

* `tipo_de: 1` → factura electrónica.
* `tipo_transaccion: 1` → venta de mercadería (otros valores: `2` prestación de servicios, `3` mixto, `10` compra de productos, etc.).
* `receptor.tipo_documento: 5` → INNOMINADO (consumidor final). En este caso `numero_documento: "0"` es válido.
* `items[].iva_tipo: 1` → IVA 10%. Otros valores: `2` IVA 5%, `3` Exento.

## Caso 2 — Factura a cliente contribuyente con RUC

Cuando el cliente es contribuyente y necesita el comprobante para crédito fiscal:

```json theme={null}
{
  "establecimiento": "001",
  "punto": "001",
  "tipo_de": 1,
  "tipo_transaccion": 2,
  "id_interno": "FAC-2026-0042",
  "receptor": {
    "nombre": "Empresa Cliente SA",
    "ruc": "80012345-6",
    "tipo_documento": 1,
    "numero_documento": "12345678",
    "email": "facturacion@cliente.com",
    "direccion": "Av. Mariscal López 1234",
    "codigo_departamento": 1,
    "codigo_ciudad": 1
  },
  "items": [
    {
      "descripcion": "Servicio de consultoría",
      "cantidad": "10.0",
      "precio_unitario": "150000.00",
      "iva_tipo": 1
    }
  ]
}
```

Notar:

* `receptor.ruc` con formato `XXXXXXXX-D` (RUC y dígito verificador).
* `tipo_transaccion: 2` (prestación de servicios).
* `email` permite que e-Miti envíe el KuDE por correo en el futuro.

## Caso 3 — Factura en moneda extranjera

Cuando facturás en USD, BRL, EUR o ARS, **es obligatorio** indicar el tipo de cambio aplicado:

```json theme={null}
{
  "establecimiento": "001",
  "punto": "001",
  "tipo_de": 1,
  "tipo_transaccion": 2,
  "moneda": "USD",
  "tipo_cambio": "7350.00",
  "receptor": { "nombre": "Cliente Extranjero", "tipo_documento": 5, "numero_documento": "0" },
  "items": [
    {
      "descripcion": "Licencia anual",
      "cantidad": "1.0",
      "precio_unitario": "1200.00",
      "iva_tipo": 3
    }
  ]
}
```

El `tipo_cambio` se aplica para calcular la base imponible en guaraníes que reporta SIFEN.

## Caso 4 — Factura a crédito con plazo

Para venta a crédito tenés que especificar la condición y el detalle:

```json theme={null}
{
  "establecimiento": "001",
  "punto": "001",
  "tipo_de": 1,
  "tipo_transaccion": 1,
  "condicion_venta": 2,
  "pago_credito": {
    "tipo_cred": 1,
    "plazo": "30 días"
  },
  "receptor": { "nombre": "Cliente", "tipo_documento": 5, "numero_documento": "0" },
  "items": [
    { "descripcion": "Producto Y", "cantidad": "1.0", "precio_unitario": "500000.00", "iva_tipo": 1 }
  ]
}
```

* `condicion_venta: 2` → crédito (default es `1` contado).
* `pago_credito.tipo_cred: 1` → PLAZO (`"30 días"`). Para cuotas usar `tipo_cred: 2` + `cuotas: <N>`.

## Validaciones que hace SIFEN

* **Fecha de emisión**: no puede ser futura.
* **Montos**: el sistema valida la coherencia entre `cantidad`, `precio_unitario`, descuentos e IVA. Errores de cálculo se reportan en el response con código `VALIDACION_MULTIPLES_CAMPOS`.
* **RUC del receptor** (si se envía): debe existir y estar activo en el padrón DNIT. Un RUC cancelado dispara `0500` ([ver errores](/errors/sifen-codes)).
* **Establecimiento + punto**: deben pertenecer al tenant y al ambiente correcto (Homologación vs Producción se resuelve por el punto).

## Errores típicos

| Código | Causa más común                                        | Acción                                                    |
| ------ | ------------------------------------------------------ | --------------------------------------------------------- |
| `0150` | CDC duplicado — enviaste un `numero` que ya fue usado. | Omitir `numero` para que el sistema asigne automático.    |
| `0500` | RUC del receptor cancelado.                            | Verificar con el cliente, o emitir como consumidor final. |
| `0400` | Timbrado vencido.                                      | Renovar el timbrado en Marangatú y cargarlo en el panel.  |

## Siguiente paso

Una vez emitida, seguís el [flujo asíncrono](/concepts/flujo-asincrono) (polling de `GET /v1/de?cdc=...`) hasta estado `A`, y descargás el [KuDE](/api-reference/introduction#endpoints-publicos-sin-auth) con `GET /v1/de/{cdc}/kude`.
