Factura Electronica - Contado

La Factura Electronica de Contado es el documento tributario electronico utilizado para registrar ventas con pago inmediato. Este documento se emite cuando el cliente realiza el pago total al momento de la transaccion, sin condiciones de credito.

Endpoint

POST {URL_BASE}/facturacion-api/data.php

Parametros

Parametro Tipo Descripcion
recordID String API Key proporcionada por CheFactura
datajson String JSON string con los datos de la factura

Estructura del JSON

Campos principales

Campo Tipo Requerido Descripcion
tipoDocumento String Si Debe ser "1" para Factura
establecimiento String Si Codigo de establecimiento (ej: "001")
punto String Si Punto de expedicion (ej: "001")
numero String Si Numero del documento, 7 digitos (ej: "0000060")
descripcion String No Informacion de interes del emisor
fecha String Si Formato YYYY-MM-DD HH:mm:ss
tipoEmision Integer Si 1=Normal, 2=Contingencia
tipoTransaccion Integer Si 1=Venta mercaderia, 2=Prestacion servicio, 3=Mixto, 4=Venta moneda extranjera
condicionPago Integer Si Debe ser 1 para Contado
moneda String Si Codigo moneda: PYG, USD, BRL, EUR
cambio Number Condicional Tipo de cambio. Obligatorio si moneda != PYG
descuentoGlobal Number No Descuento global a distribuir entre items. Default 0
totalPago Number Si Monto total del documento
totalRedondeo Number No Redondeo SEDECO (multiplos de 50 Gs). Default 0
receiptid String Si ID unico del sistema cliente, no repetir
codigoSeguridadAleatorio String Si 9 digitos aleatorios

Objeto cliente

Campo Tipo Requerido Descripcion
ruc String Condicional RUC con DV (ej: "80012345-6"). Vacio para factura sin nombre
nombre String Si Razon social o nombre del cliente
direccion String No Direccion del cliente
cpais String No Codigo pais receptor. Default "PRY"
correo String No Email del cliente
numCasa Integer No Numero de casa. Default 0
dncp Integer No 0=Normal, 1=Compra publica (DNCP)

Objeto pagos (array)

Campo Tipo Requerido Descripcion
tipoPago String Si 1=Efectivo, 2=Cheque, 3=Tarjeta credito, 4=Tarjeta debito, 5=Transferencia, 99=Otro
monto Number Si Monto del pago

Objeto items (array)

Campo Tipo Requerido Descripcion
codigo String Si Codigo interno del producto
descripcion String Si Descripcion del producto o servicio
unidadMedida Integer Si Codigo de unidad de medida segun tabla SIFEN (77=UNI, 83=KG, etc)
cantidad Number Si Cantidad (hasta 4 decimales)
precioUnitario Number Si Precio unitario (hasta 8 decimales)
precioTotal Number Si Precio total del item
descuento Number No Descuento particular sobre el precio unitario (EA002). Default 0
ivaTasa Integer Si Tasa IVA: 0=Exenta, 5=IVA 5%, 10=IVA 10%
baseGravItem Number Si Base gravada IVA (hasta 8 decimales, NO redondear). Para IVA10: precioTotal/1.1. Para IVA5: precioTotal/1.05
liqIvaItem Number Si Liquidacion IVA del item (hasta 8 decimales, NO redondear). precioTotal - baseGravItem

Ejemplo JSON completo

{
  "tipoDocumento": "1",
  "establecimiento": "001",
  "punto": "001",
  "numero": "0000060",
  "descripcion": "Venta de productos",
  "fecha": "2026-04-03 10:30:00",
  "tipoEmision": 1,
  "tipoTransaccion": 1,
  "condicionPago": 1,
  "moneda": "PYG",
  "cambio": 0,
  "descuentoGlobal": 0,
  "totalPago": 150000,
  "totalRedondeo": 0,
  "receiptid": "FAC-001",
  "codigoSeguridadAleatorio": "819250260",
  "cliente": {
    "ruc": "80012345-6",
    "nombre": "EMPRESA EJEMPLO S.A.",
    "direccion": "Av. Mariscal Lopez 1234",
    "cpais": "PRY",
    "correo": "contacto@empresa.com",
    "numCasa": 1234,
    "dncp": 0
  },
  "pagos": [
    {
      "tipoPago": "1",
      "monto": 150000
    }
  ],
  "items": [
    {
      "codigo": "PROD-001",
      "descripcion": "Resma de papel A4",
      "unidadMedida": 77,
      "cantidad": 2,
      "precioUnitario": 55000,
      "precioTotal": 110000,
      "descuento": 0,
      "ivaTasa": 10,
      "baseGravItem": 100000.00000000,
      "liqIvaItem": 10000.00000000
    },
    {
      "codigo": "PROD-002",
      "descripcion": "Lapicera azul",
      "unidadMedida": 77,
      "cantidad": 10,
      "precioUnitario": 4000,
      "precioTotal": 40000,
      "descuento": 0,
      "ivaTasa": 10,
      "baseGravItem": 36363.63636364,
      "liqIvaItem": 3636.36363636
    }
  ]
}

Ejemplo con cURL

Terminal
curl -X POST "{URL_BASE}/facturacion-api/data.php" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "recordID=TU_API_KEY" \
  --data-urlencode "datajson={
    \"tipoDocumento\": \"1\",
    \"establecimiento\": \"001\",
    \"punto\": \"001\",
    \"numero\": \"0000060\",
    \"fecha\": \"2026-04-03 10:30:00\",
    \"tipoEmision\": 1,
    \"tipoTransaccion\": 1,
    \"condicionPago\": 1,
    \"moneda\": \"PYG\",
    \"cambio\": 0,
    \"totalPago\": 150000,
    \"receiptid\": \"FAC-001\",
    \"codigoSeguridadAleatorio\": \"819250260\",
    \"cliente\": {
      \"ruc\": \"80012345-6\",
      \"nombre\": \"EMPRESA EJEMPLO S.A.\"
    },
    \"pagos\": [{\"tipoPago\": \"1\", \"monto\": 150000}],
    \"items\": [{
      \"codigo\": \"PROD-001\",
      \"descripcion\": \"Resma de papel A4\",
      \"unidadMedida\": 77,
      \"cantidad\": 2,
      \"precioUnitario\": 55000,
      \"precioTotal\": 110000,
      \"ivaTasa\": 10,
      \"baseGravItem\": 100000.00000000,
      \"liqIvaItem\": 10000.00000000
    }]
  }"

Respuestas de la API

Respuesta exitosa

200 OK
{
  "status": true,
  "recordID": "B3-xxxx",
  "cdc": "01800012345001001000006012026040310300081925026",
  "mensaje": "Factura enviada exitosamente."
}

Respuesta con error

ERROR
{
  "status": false,
  "code": [
    "- Se espera campo tipoDocumento",
    "- Se espera campo establecimiento"
  ]
}

Formulas importantes

Concepto Formula
baseGravItem (IVA 10%) precioTotal / 1.1
baseGravItem (IVA 5%) precioTotal / 1.05
liqIvaItem precioTotal - baseGravItem
dTotOpeItem (con descuento) (precioUnitario - descuento) * cantidad

Importante: NO redondear baseGravItem ni liqIvaItem. Utilizar hasta 8 decimales para mantener la precision requerida por el SIFEN.

Notas importantes

Consideraciones

  • receiptid debe ser unico por cada documento. No repetir este valor en envios posteriores.
  • codigoSeguridadAleatorio debe contener exactamente 9 digitos aleatorios.
  • Si moneda es diferente a PYG, el campo cambio es obligatorio y debe contener el tipo de cambio vigente.
  • Para IVA exenta (ivaTasa=0), los campos baseGravItem y liqIvaItem deben ser 0.
  • descuentoGlobal se prorratea automaticamente entre los items segun su peso proporcional en el total.