API Parser Factura, VEP, Bancos y Tarjetas

Guia de uso para clientes que consumen la API de lectura de comprobantes argentinos, VEPs, extractos bancarios y resumenes de tarjetas.

Inicio

La API recibe la URL publica de una imagen o PDF de factura, nota de credito, nota de debito, factura E, VEP, extracto bancario o resumen de tarjeta y devuelve un JSON con los datos detectados.

URL facturashttps://vxtlogistica.com/api_reader/api_parser_factura.php
URL VEPshttps://vxtlogistica.com/api_reader/api_parser_vep.php
URL bancoshttps://vxtlogistica.com/api_reader/api_parser_bancos.php
URL tarjetashttps://vxtlogistica.com/api_reader/api_parser_tarjetas.php
MetodoPOST
FormatoContent-Type: application/json
Costo1 credito por cada solicitud procesada.
La API devuelve los campos que puede leer con confianza. Si un dato no aparece o no se puede leer, no se incluye en el JSON.
La salida normal no incluye metadatos de evidencia. Si el cliente envia include_evidence: true, cada campo importante puede incluir confianza y evidencia visual en _meta.

Credenciales

Cada cliente recibe un client_id y un secret. Ambos deben enviarse en cada solicitud.

X-Client-Id: CLIENT_ID
X-Client-Secret: CLIENT_SECRET
Content-Type: application/json

Alternativa con Authorization

Tambien se puede enviar el secret como Bearer, manteniendo el client id en header.

Authorization: Bearer CLIENT_SECRET
X-Client-Id: CLIENT_ID
Content-Type: application/json
No enviar el secret en aplicaciones frontend publicas. Usarlo siempre desde un backend propio.

Creditos

El servicio descuenta automaticamente 1 credito por cada uso. La respuesta exitosa incluye el saldo anterior y el saldo posterior.

{
  "credits": {
    "mode": "database",
    "consumed": 1,
    "balance_before": 100,
    "balance_after": 99,
    "movement_id": 10,
    "reference_id": "7b7f3e..."
  }
}

Si el cliente no tiene saldo disponible, la API no procesa la imagen y responde INSUFFICIENT_CREDITS.

Request

Enviar un JSON con la URL de la imagen o PDF. La URL debe ser accesible publicamente por HTTPS o HTTP.

{
  "image_url": "https://dominio.com/facturas/factura-a-0001.jpg"
}

Campos de entrada

CampoRequeridoDescripcion
image_urlSiURL publica de la imagen o PDF del comprobante.
urlNoAlias de image_url.
openai_tokenNoToken OpenAI propio del cliente. Si no se envia, se usa el token configurado por el servicio.
include_evidenceNoSolo para facturas/VEPs. Si es true, agrega _meta, confidence, evidence y quality. En bancos no se usa.
Aunque el campo se llama image_url, tambien acepta URLs de PDF. Usar api_parser_factura.php para comprobantes, api_parser_vep.php para VEPs, api_parser_bancos.php para extractos bancarios y api_parser_tarjetas.php para resumenes de tarjetas.

Ejemplo curl

Factura

curl -X POST "https://vxtlogistica.com/api_reader/api_parser_factura.php" \
  -H "Content-Type: application/json" \
  -H "X-Client-Id: CLIENT_ID" \
  -H "X-Client-Secret: CLIENT_SECRET" \
  -d '{
    "image_url": "https://dominio.com/facturas/factura-a-0001.jpg"
  }'

VEP

curl -X POST "https://vxtlogistica.com/api_reader/api_parser_vep.php" \
  -H "Content-Type: application/json" \
  -H "X-Client-Id: CLIENT_ID" \
  -H "X-Client-Secret: CLIENT_SECRET" \
  -d '{
    "image_url": "https://dominio.com/veps/vep-04-2026.pdf"
  }'

Bancos

curl -X POST "https://vxtlogistica.com/api_reader/api_parser_bancos.php" \
  -H "Content-Type: application/json" \
  -H "X-Client-Id: CLIENT_ID" \
  -H "X-Client-Secret: CLIENT_SECRET" \
  -d '{
    "image_url": "https://dominio.com/bancos/extracto-04-2026.pdf"
  }'

Tarjetas

curl -X POST "https://vxtlogistica.com/api_reader/api_parser_tarjetas.php" \
  -H "Content-Type: application/json" \
  -H "X-Client-Id: CLIENT_ID" \
  -H "X-Client-Secret: CLIENT_SECRET" \
  -d '{
    "image_url": "https://dominio.com/tarjetas/resumen-04-2026.pdf"
  }'

Respuesta exitosa

{
  "success": true,
  "data": {
    "parsed": {
      "comprobante": {
        "tipo": "Factura",
        "letra": "A",
        "codigo_tipo": "001",
        "punto_venta": "0056",
        "numero": "00018287",
        "fecha_emision": "2026-07-03",
        "cae": "12345678901234",
        "cae_vencimiento": "2026-07-13",
        "moneda": "PES"
      },
      "emisor": {
        "razon_social": "EMPRESA SA",
        "cuit": "30111111118",
        "condicion_iva": "IVA Responsable Inscripto",
        "domicilio": "Av. Ejemplo 123"
      },
      "receptor": {
        "razon_social": "CLIENTE SRL",
        "cuit": "30222222229",
        "condicion_iva": "IVA Responsable Inscripto"
      },
      "items": [
        {
          "codigo": "SERV-001",
          "descripcion": "Servicio mensual",
          "cantidad": 1,
          "precio_unitario": 1000,
          "alicuota_iva": 21,
          "total": 1210
        }
      ],
      "iva": [
        {
          "alicuota": 21,
          "base_imponible": 1000,
          "importe": 210
        }
      ],
      "totales": {
        "importe_neto_gravado": 1000,
        "iva_total": 210,
        "total": 1210
      }
    },
    "source": {
      "image_url": "https://dominio.com/facturas/factura-a-0001.jpg"
    },
    "credits": {
      "mode": "database",
      "consumed": 1,
      "balance_before": 100,
      "balance_after": 99,
      "movement_id": 10,
      "reference_id": "7b7f3e..."
    }
  }
}

Lector de VEPs

El endpoint api_parser_vep.php lee VEPs, Volante Electronico de Pago, y devuelve los datos visibles del volante.

URLhttps://vxtlogistica.com/api_reader/api_parser_vep.php
MetodoPOST
Costo1 credito por solicitud procesada.

Respuesta VEP

{
  "success": true,
  "data": {
    "parsed": {
      "vep": {
        "numero": "123456789012",
        "estado": "Pendiente",
        "fecha_generacion": "2026-04-10",
        "fecha_vencimiento": "2026-04-30"
      },
      "contribuyente": {
        "cuit": "30111111118",
        "razon_social": "EMPRESA SA"
      },
      "organismo": {
        "nombre": "ARCA",
        "concepto": "Volante Electronico de Pago"
      },
      "obligacion": {
        "impuesto": "IVA",
        "periodo": "04/2026"
      },
      "importes": {
        "capital": 1000,
        "intereses_resarcitorios": 0,
        "total": 1000
      }
    },
    "source": {
      "image_url": "https://dominio.com/veps/vep-04-2026.pdf"
    },
    "credits": {
      "mode": "database",
      "consumed": 1,
      "balance_before": 100,
      "balance_after": 99,
      "movement_id": 11,
      "reference_id": "7b7f3e..."
    }
  }
}

Campos habituales

GrupoDatos habituales
vepNumero, estado, fecha de generacion, vencimiento, codigo de barras, QR, entidad y canal de pago.
contribuyenteCUIT, razon social, condicion y domicilio.
generadorCUIT, razon social, usuario y dependencia.
pagadorCUIT, razon social, banco, cuenta y medio de pago.
organismoNombre, codigo, dependencia y concepto.
obligacionImpuesto, recurso, concepto, subconcepto, formulario, periodo, anticipo y cuota.
importesCapital, intereses, multas, otros y total.
detalleFilas visibles de conceptos u obligaciones.
pagosPagos visibles con fecha, banco, comprobante, importe y estado.

API Bancos

El endpoint api_parser_bancos.php lee extractos, resumenes bancarios, movimientos de cuenta y detalles bancarios de distintos formatos.

URLhttps://vxtlogistica.com/api_reader/api_parser_bancos.php
MetodoPOST
Costo1 credito por solicitud procesada.
Para bancos no hace falta enviar parametros adicionales: solo image_url y las credenciales. La salida es simple y no incluye _meta, confidence, evidence ni quality.

Respuesta bancos

{
  "success": true,
  "data": {
    "parsed": {
      "banco": {
        "nombre": "Banco Ejemplo"
      },
      "cuenta": {
        "titular": "EMPRESA SA",
        "cuit_cuil": "30111111118",
        "tipo": "Cuenta corriente",
        "numero": "000123456789",
        "moneda": "ARS",
        "cbu": "0000000000000000000000"
      },
      "resumen": {
        "periodo_desde": "2026-04-01",
        "periodo_hasta": "2026-04-30",
        "fecha_emision": "2026-05-01"
      },
      "saldos": {
        "saldo_inicial": 10000,
        "saldo_final": 25000.5,
        "moneda": "ARS"
      },
      "transacciones": [
        {
          "fecha": "2026-04-01",
          "fecha_valor": "2026-04-01",
          "descripcion": "Transferencia recibida",
          "tipo": "credito",
          "credito": 15000.5,
          "importe": 15000.5,
          "saldo": 25000.5,
          "referencia": "TRX 123456"
        }
      ],
      "totales": {
        "total_debitos": 0,
        "total_creditos": 15000.5
      }
    },
    "source": {
      "image_url": "https://dominio.com/bancos/extracto-04-2026.pdf"
    },
    "credits": {
      "mode": "database",
      "consumed": 1,
      "balance_before": 100,
      "balance_after": 99,
      "movement_id": 12,
      "reference_id": "7b7f3e..."
    }
  }
}

Campos habituales

GrupoDatos habituales
bancoNombre, codigo, pais y datos de contacto visibles.
cuentaTitular, CUIT/CUIL, tipo, numero, moneda, CBU/CVU, alias, IBAN, sucursal e identificador de cliente.
resumenTipo de documento, numero de resumen, periodo, emision, cierre, vencimiento y paginas.
saldosSaldo anterior, inicial, final, contable, disponible, promedio y moneda.
transaccionesTodas las filas visibles con fechas, descripcion, tipo, debito, credito, importe, saldo, referencia, operacion, contraparte, canal, comercio, cupon, cuotas y tarjeta si aparecen.
totalesTotal de debitos, creditos, impuestos, comisiones, retenciones, percepciones, intereses y gastos.
impuestos_y_comisionesDesglose visible de impuestos, comisiones o cargos.
El parser esta pensado para varios modelos de extractos. Si una columna no existe en un banco especifico, el campo se omite.

API Tarjetas

El endpoint api_parser_tarjetas.php lee resumenes de tarjetas de credito de distintos emisores y formatos.

URLhttps://vxtlogistica.com/api_reader/api_parser_tarjetas.php
MetodoPOST
Costo1 credito por solicitud procesada.
Para tarjetas no hace falta enviar parametros adicionales: solo image_url y las credenciales.

Respuesta tarjetas

{
  "success": true,
  "data": {
    "parsed": {
      "entidad": {
        "nombre": "Banco Ejemplo",
        "marca_tarjeta": "Visa"
      },
      "cliente": {
        "titular": "EMPRESA SA",
        "cuit_cuil": "30111111118"
      },
      "tarjeta": {
        "marca": "Visa",
        "numero_enmascarado": "**** **** **** 1234",
        "ultimos_digitos": "1234"
      },
      "resumen": {
        "fecha_cierre": "2026-04-25",
        "fecha_vencimiento": "2026-05-10",
        "pago_minimo": 25000
      },
      "saldos": {
        "saldo_pesos": 150000,
        "saldo_dolares": 50,
        "pago_total_pesos": 150000,
        "pago_total_dolares": 50
      },
      "movimientos": [
        {
          "fecha": "2026-04-01",
          "descripcion": "Compra comercio",
          "tipo": "consumo",
          "importe": 15000.5,
          "moneda": "ARS",
          "cuota_actual": 1,
          "cuotas_total": 3
        }
      ],
      "totales": {
        "consumos_pesos": 150000,
        "pago_minimo": 25000
      }
    },
    "source": {
      "image_url": "https://dominio.com/tarjetas/resumen-04-2026.pdf"
    },
    "credits": {
      "mode": "database",
      "consumed": 1,
      "balance_before": 100,
      "balance_after": 99,
      "movement_id": 13,
      "reference_id": "7b7f3e..."
    }
  }
}

Campos habituales

GrupoDatos habituales
entidadBanco o emisor, marca de tarjeta y pais.
clienteTitular, CUIT/CUIL, numero de cliente y domicilio.
tarjetaMarca, producto, numero enmascarado, ultimos digitos, titular/adicional y cuenta asociada.
resumenNumero, periodo, cierre, vencimiento, emision, pago minimo y paginas.
limitesLimites de compra, financiacion, adelantos y disponibles.
saldosSaldo anterior, pagos recibidos, saldo actual, pesos, dolares y pagos totales.
movimientosConsumos, pagos, debitos automaticos, intereses, impuestos, ajustes, devoluciones, cuotas, cupones y comercios visibles.
impuestos_y_cargosImpuestos, percepciones, intereses, gastos y cargos visibles.
pagosPagos visibles con fecha, importe, moneda y medio de pago.
totalesConsumos, impuestos, intereses, cargos, pago total y pago minimo.

Evidencia opcional

Por defecto, la API no devuelve metadatos de evidencia para mantener compatibilidad con clientes existentes. Si el request trae include_evidence: true, agrega _meta y quality.

{
  "image_url": "https://dominio.com/facturas/factura-a-0001.jpg",
  "include_evidence": true
}
{
  "comprobante": {
    "punto_venta": "0056",
    "numero": "00018287",
    "_meta": {
      "punto_venta": {
        "confidence": 0.96,
        "evidence": "0056 - 00018287"
      },
      "numero": {
        "confidence": 0.94,
        "evidence": "0056 - 00018287"
      }
    }
  },
  "quality": {
    "overall_confidence": 0.91,
    "needs_review": false,
    "low_confidence_fields": []
  }
}
CampoDescripcion
confidenceNumero entre 0 y 1. Es una estimacion del modelo, no una garantia matematica.
evidenceTexto visible usado para justificar el valor extraido.
overall_confidenceEstimacion general de la calidad del parseo completo.
needs_reviewtrue cuando hay campos dudosos o inconsistencias entre partes del comprobante.
low_confidence_fieldsLista de campos que conviene revisar manualmente.
La mejora de punto de venta y numero aplica siempre, aun sin include_evidence. Para comprobantes argentinos, el parser prioriza el patron Punto de venta - Numero, por ejemplo 0056 - 00018287. El codigo de tipo, como 001, se guarda en codigo_tipo y no debe confundirse con el punto de venta.

Campos parseados

La estructura puede variar segun el comprobante y la calidad de imagen. Los grupos esperados son:

GrupoDatos habituales
comprobanteTipo, letra, codigo, punto de venta, numero, fechas, CAE, moneda, cotizacion y concepto.
emisorRazon social, CUIT, ingresos brutos, inicio de actividades, condicion IVA, domicilio y contacto.
receptorRazon social, CUIT o documento, condicion IVA, domicilio, condicion de venta y email.
itemsCodigo, descripcion, cantidad, unidad, precio unitario, bonificacion, IVA y total por renglon.
ivaAlicuotas, bases imponibles e importes.
tributosPercepciones, impuestos internos u otros tributos visibles.
totalesSubtotal, neto gravado, exento, no gravado, IVA, tributos, descuentos y total.
comprobantes_asociadosComprobantes relacionados en notas de credito o debito.
exportacionDatos especificos de factura E: destino, incoterms, forma de pago, cliente exterior y observaciones.
raw_textTexto OCR relevante detectado en la imagen.

Token OpenAI opcional

Normalmente no hace falta enviar token OpenAI: el servicio usa el token configurado en la API. Si el cliente necesita usar su propio token, puede enviarlo en el body.

{
  "image_url": "https://dominio.com/facturas/factura-a-0001.jpg",
  "openai_token": "sk-..."
}
Enviar openai_token solo desde servidores propios. No incluirlo en apps web o moviles expuestas al usuario final.

Errores frecuentes

ErrorHTTPSignificado
UNAUTHORIZED401Falta client/secret o las credenciales son invalidas.
INSUFFICIENT_CREDITS402El cliente no tiene creditos disponibles.
INVALID_JSON422El body no es JSON valido.
MISSING_IMAGE_URL422No se envio image_url ni url.
INVALID_IMAGE_URL422La URL no es valida o no usa HTTP/HTTPS.
OPENAI_TOKEN_MISSING500No hay token OpenAI configurado y tampoco se envio openai_token.
INTERNAL_ERROR500Error interno o rechazo de OpenAI.

Ejemplo sin creditos

{
  "success": false,
  "error": {
    "code": "INSUFFICIENT_CREDITS",
    "message": "No hay creditos disponibles.",
    "credits": {
      "balance": 0,
      "required": 1
    }
  }
}

Recomendaciones

  • Usar imagenes nitidas, sin cortes y con el comprobante completo visible.
  • Evitar fotos torcidas, borrosas o con sombras fuertes.
  • Subir la imagen a una URL temporal privada pero accesible para la API.
  • No asumir que todos los campos van a venir siempre: validar campos opcionales en la integracion.
  • Guardar la respuesta completa para auditoria si el sistema del cliente necesita trazabilidad.