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 facturas | https://vxtlogistica.com/api_reader/api_parser_factura.php |
|---|---|
| URL VEPs | https://vxtlogistica.com/api_reader/api_parser_vep.php |
| URL bancos | https://vxtlogistica.com/api_reader/api_parser_bancos.php |
| URL tarjetas | https://vxtlogistica.com/api_reader/api_parser_tarjetas.php |
| Metodo | POST |
| Formato | Content-Type: application/json |
| Costo | 1 credito por cada solicitud procesada. |
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
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
| Campo | Requerido | Descripcion |
|---|---|---|
image_url | Si | URL publica de la imagen o PDF del comprobante. |
url | No | Alias de image_url. |
openai_token | No | Token OpenAI propio del cliente. Si no se envia, se usa el token configurado por el servicio. |
include_evidence | No | Solo para facturas/VEPs. Si es true, agrega _meta, confidence, evidence y quality. En bancos no se usa. |
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.
| URL | https://vxtlogistica.com/api_reader/api_parser_vep.php |
|---|---|
| Metodo | POST |
| Costo | 1 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
| Grupo | Datos habituales |
|---|---|
vep | Numero, estado, fecha de generacion, vencimiento, codigo de barras, QR, entidad y canal de pago. |
contribuyente | CUIT, razon social, condicion y domicilio. |
generador | CUIT, razon social, usuario y dependencia. |
pagador | CUIT, razon social, banco, cuenta y medio de pago. |
organismo | Nombre, codigo, dependencia y concepto. |
obligacion | Impuesto, recurso, concepto, subconcepto, formulario, periodo, anticipo y cuota. |
importes | Capital, intereses, multas, otros y total. |
detalle | Filas visibles de conceptos u obligaciones. |
pagos | Pagos 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.
| URL | https://vxtlogistica.com/api_reader/api_parser_bancos.php |
|---|---|
| Metodo | POST |
| Costo | 1 credito por solicitud procesada. |
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
| Grupo | Datos habituales |
|---|---|
banco | Nombre, codigo, pais y datos de contacto visibles. |
cuenta | Titular, CUIT/CUIL, tipo, numero, moneda, CBU/CVU, alias, IBAN, sucursal e identificador de cliente. |
resumen | Tipo de documento, numero de resumen, periodo, emision, cierre, vencimiento y paginas. |
saldos | Saldo anterior, inicial, final, contable, disponible, promedio y moneda. |
transacciones | Todas las filas visibles con fechas, descripcion, tipo, debito, credito, importe, saldo, referencia, operacion, contraparte, canal, comercio, cupon, cuotas y tarjeta si aparecen. |
totales | Total de debitos, creditos, impuestos, comisiones, retenciones, percepciones, intereses y gastos. |
impuestos_y_comisiones | Desglose visible de impuestos, comisiones o cargos. |
API Tarjetas
El endpoint api_parser_tarjetas.php lee resumenes de tarjetas de credito de distintos emisores y formatos.
| URL | https://vxtlogistica.com/api_reader/api_parser_tarjetas.php |
|---|---|
| Metodo | POST |
| Costo | 1 credito por solicitud procesada. |
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
| Grupo | Datos habituales |
|---|---|
entidad | Banco o emisor, marca de tarjeta y pais. |
cliente | Titular, CUIT/CUIL, numero de cliente y domicilio. |
tarjeta | Marca, producto, numero enmascarado, ultimos digitos, titular/adicional y cuenta asociada. |
resumen | Numero, periodo, cierre, vencimiento, emision, pago minimo y paginas. |
limites | Limites de compra, financiacion, adelantos y disponibles. |
saldos | Saldo anterior, pagos recibidos, saldo actual, pesos, dolares y pagos totales. |
movimientos | Consumos, pagos, debitos automaticos, intereses, impuestos, ajustes, devoluciones, cuotas, cupones y comercios visibles. |
impuestos_y_cargos | Impuestos, percepciones, intereses, gastos y cargos visibles. |
pagos | Pagos visibles con fecha, importe, moneda y medio de pago. |
totales | Consumos, 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": []
}
}
| Campo | Descripcion |
|---|---|
confidence | Numero entre 0 y 1. Es una estimacion del modelo, no una garantia matematica. |
evidence | Texto visible usado para justificar el valor extraido. |
overall_confidence | Estimacion general de la calidad del parseo completo. |
needs_review | true cuando hay campos dudosos o inconsistencias entre partes del comprobante. |
low_confidence_fields | Lista de campos que conviene revisar manualmente. |
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:
| Grupo | Datos habituales |
|---|---|
comprobante | Tipo, letra, codigo, punto de venta, numero, fechas, CAE, moneda, cotizacion y concepto. |
emisor | Razon social, CUIT, ingresos brutos, inicio de actividades, condicion IVA, domicilio y contacto. |
receptor | Razon social, CUIT o documento, condicion IVA, domicilio, condicion de venta y email. |
items | Codigo, descripcion, cantidad, unidad, precio unitario, bonificacion, IVA y total por renglon. |
iva | Alicuotas, bases imponibles e importes. |
tributos | Percepciones, impuestos internos u otros tributos visibles. |
totales | Subtotal, neto gravado, exento, no gravado, IVA, tributos, descuentos y total. |
comprobantes_asociados | Comprobantes relacionados en notas de credito o debito. |
exportacion | Datos especificos de factura E: destino, incoterms, forma de pago, cliente exterior y observaciones. |
raw_text | Texto 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-..."
}
openai_token solo desde servidores propios. No incluirlo en apps web o moviles expuestas al usuario final.Errores frecuentes
| Error | HTTP | Significado |
|---|---|---|
UNAUTHORIZED | 401 | Falta client/secret o las credenciales son invalidas. |
INSUFFICIENT_CREDITS | 402 | El cliente no tiene creditos disponibles. |
INVALID_JSON | 422 | El body no es JSON valido. |
MISSING_IMAGE_URL | 422 | No se envio image_url ni url. |
INVALID_IMAGE_URL | 422 | La URL no es valida o no usa HTTP/HTTPS. |
OPENAI_TOKEN_MISSING | 500 | No hay token OpenAI configurado y tampoco se envio openai_token. |
INTERNAL_ERROR | 500 | Error 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.