SIFENDE
Guías

Facturar en Moneda Extranjera

Cómo emitir facturas en dólares (USD) u otras monedas, con tipo de cambio, monedaOperacion y totales en PYG.

SIFEN permite emitir documentos en moneda extranjera (USD, EUR, BRL, ARS, etc.) con tipo de cambio GLOBAL o POR_ITEM y reportar los equivalentes en guaraníes. Esta guía explica cómo configurarla correctamente.

Conceptos clave

Campo APIDescripciónEjemplo
monedaOperacionCódigo ISO de la moneda de operaciónUSD, EUR
tipoCambioTipo de cambio GLOBAL (D018): cantidad de PYG por una unidad de moneda extranjera7135.1256
items[].tipoCambioTipo de cambio POR_ITEM (E725), obligatorio en todos los ítems de esa modalidad7100.1111
condicionPago.tipoCambioTipo de cambio de la moneda extranjera del pago (E611)7130.5000

La cotización comprador o vendedor publicada por el BCP es una referencia para tu política contable y fiscal. Sifende valida la presencia y el formato del tipo de cambio, no que coincida con una cotización específica del BCP.

Cómo obtener el tipo de cambio

  • BCP (oficial): https://www.bcp.gov.py publica diariamente las cotizaciones
  • Elegí la cotización comprador o vendedor según tu política contable y el criterio de tu contador
  • Guardá el tipo de cambio usado junto con el DE para auditoría

Ejemplo: factura en USD

{
  "tipoDocumento": "FACTURA_ELECTRONICA",
  "fechaEmision": "2026-04-15T10:30:00",
  "tipoEmision": "NORMAL",
  "numeroEstablecimiento": 1,
  "puntoExpedicion": 1,
  "monedaOperacion": "USD",
  "tipoCambio": 7300,
  "tipoTransaccion": "PRESTACION_SERVICIOS",
  "condicionOperacion": "CONTADO",
  "receptor": {
    "tipoContribuyente": "CONTRIBUYENTE",
    "tipoOperacion": "B2B",
    "tipoContribuyenteReceptor": "PERSONA_JURIDICA",
    "numeroDocumento": "80012345",
    "digitoVerificador": "1",
    "nombreRazonSocial": "Comercial Guaraní S.A."
  },
  "condicionPago": {
    "tipo": "CONTADO",
    "tipoPago": "TRANSFERENCIA",
    "monedaPago": "USD",
    "tipoCambio": 7300,
    "montoPago": 1200
  },
  "items": [
    {
      "codigo": "SRV-001",
      "descripcion": "Licencia de software anual",
      "cantidad": 1,
      "unidadMedida": "UNI",
      "precioUnitario": 1200,
      "afectacionTributaria": "GRAVADO",
      "tasaIVA": 10
    }
  ]
}

En este caso:

  • El precio del ítem (1200) está en USD
  • Sifende calcula automáticamente el equivalente en PYG: 1200 × 7300 = 8.760.000 PYG
  • El KuDE muestra ambos valores: USD (operación) y PYG (referencia)

Cálculo de IVA

El IVA siempre se calcula sobre el monto en moneda de operación (USD en este caso), pero también se reporta su equivalente en PYG:

ConceptoUSDPYG
Subtotal1.090,917.963.636
IVA 10%109,09796.364
Total1.200,008.760.000

Sifende hace estos cálculos automáticamente; solo enviá los precios en moneda extranjera.

Modos de tipo de cambio

GLOBAL (recomendado)

Un solo tipo de cambio para toda la factura. Más simple y común. Enviá monedaOperacion + tipoCambio a nivel de documento:

{
  "monedaOperacion": "USD",
  "tipoCambio": 7300
}

POR_ITEM

Cada ítem tiene su propio tipo de cambio. Usado en operaciones complejas con commodities. Omití el tipoCambio global y envialo en todos los ítems. Si la moneda del pago también es extranjera, informá además E611 en condicionPago.tipoCambio:

{
  "tipoDocumento": "FACTURA_ELECTRONICA",
  "fechaEmision": "2026-04-15T10:30:00",
  "tipoEmision": "NORMAL",
  "numeroEstablecimiento": 1,
  "puntoExpedicion": 1,
  "tipoTransaccion": "VENTA_MERCADERIA",
  "monedaOperacion": "USD",
  "receptor": {
    "tipoContribuyente": "CONTRIBUYENTE",
    "tipoOperacion": "B2B",
    "tipoContribuyenteReceptor": "PERSONA_JURIDICA",
    "numeroDocumento": "80012345",
    "digitoVerificador": "7",
    "nombreRazonSocial": "Comercial San Roque S.A."
  },
  "condicionOperacion": "CONTADO",
  "condicionPago": {
    "tipo": "CONTADO",
    "tipoPago": "EFECTIVO",
    "monedaPago": "USD",
    "tipoCambio": 7130.5000,
    "montoPago": 30.75
  },
  "items": [
    {
      "codigo": "PROD-USD-1",
      "descripcion": "Producto con cambio uno",
      "cantidad": 2,
      "unidadMedida": "UNI",
      "precioUnitario": 10.25,
      "tipoCambio": 7100.1111,
      "afectacionTributaria": "GRAVADO",
      "tasaIVA": 10
    },
    {
      "codigo": "PROD-USD-2",
      "descripcion": "Producto con cambio dos",
      "cantidad": 1,
      "unidadMedida": "UNI",
      "precioUnitario": 10.25,
      "tipoCambio": 7200.2222,
      "afectacionTributaria": "GRAVADO",
      "tasaIVA": 10
    }
  ]
}

Restricciones SIFEN

RestricciónDetalle
Tipo de cambio positivo, con hasta 5 enteros y 4 decimalesDebe ser mayor que 0 y menor que 99999.9999
Modalidades excluyentesNo combines D018 global con E725 por ítem; en POR_ITEM todos los ítems deben informar E725
Operaciones B2C en USDPermitidas pero infrecuentes; confirmá con tu contador
Pago en moneda extranjeraE611 es obligatorio; para pagos en PYG no se informa
Moneda extranjera + receptor INNOMINADOPermitido para FE, no para Notas de Crédito
Crédito en moneda extranjeraLimitación temporal de Sifende: devuelve 400 validation-error

Ejemplo en TypeScript

async function emitirFacturaUSD(montoUSD: number, ruc: string, razonSocial: string) {
  const tipoCambio = await obtenerCotizacionBCP(); // tu integración con BCP

  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: new Date().toISOString().slice(0, 19),
        tipoEmision: "NORMAL",
        numeroEstablecimiento: 1,
        puntoExpedicion: 1,
        monedaOperacion: "USD",
        tipoCambio,
        tipoTransaccion: "PRESTACION_SERVICIOS",
        condicionOperacion: "CONTADO",
        receptor: {
          tipoContribuyente: "CONTRIBUYENTE",
          tipoOperacion: "B2B",
          tipoContribuyenteReceptor: "PERSONA_JURIDICA",
          numeroDocumento: ruc.split("-")[0],
          digitoVerificador: ruc.split("-")[1],
          nombreRazonSocial: razonSocial,
        },
        condicionPago: { tipo: "CONTADO", tipoPago: "TRANSFERENCIA", monedaPago: "USD", tipoCambio, montoPago: montoUSD },
        items: [{
          codigo: "SRV-001",
          descripcion: "Servicio",
          cantidad: 1,
          unidadMedida: "UNI",
          precioUnitario: montoUSD,
          afectacionTributaria: "GRAVADO",
          tasaIVA: 10,
        }],
      }),
    }
  );

  return response.json();
}

Próximos pasos

On this page