Skip to main content
Permiso requerido: expenses La compra v2 es la misma de v1 (mismos campos, centros de costo y tipos de documento) más moneda (currency_code, exchange_rate) y tax_ids obligatorio por línea. Sus errores llevan code; ver API v2: qué cambia.
A diferencia de las ventas, el guardado de compras no recalcula los impuestos: FileXpress guarda lo que envía tu sistema (convertido a moneda base si trae moneda) y tú eres quien los calcula. Solo se valida que cada id de tax_ids exista. Un IVA o un total a pagar que no cuadre se guarda tal cual, por lo que debes enviar los totales consistentes.
Los campos que no se describen aquí (observation, is_credit, credit_days, number_control, generation_code, stamp, centros de costo, etc.) son los de Registrar compra en v1. Los tipos de línea siguen siendo goods (bien) y services (servicio).

Registrar compra

Ejemplo: compra (CCF) de un negocio con base USD, en quetzales (GTQ), con IVA, COTRANS, FOVIAL, retención de IVA y renta. La tasa vigente de GTQ es 0.128.
Todos los montos van en la moneda de currency_code. El servidor convierte cada monto a la moneda base con la tasa del documento. En el ejemplo, 750.00 GTQ gravados son 96.00 USD; el IVA de 97.50 GTQ, 12.48 USD; COTRANS (charge_1), 2.00 USD; FOVIAL (charge_2), 1.00 USD; la retención de 7.50 GTQ, 0.96 USD; y la renta de 10.00 GTQ, 1.28 USD. El total a pagar de 1,040.94 GTQ se guarda como 133.24 USD.
El total a pagar es netTotals + totalTax + charge_1 + charge_2 − totalRetein − totalRent: 937.50 + 97.50 + 15.63 + 7.81 − 7.50 − 10.00 = 1,040.94.

Campos nuevos o distintos de v1

totals.expenseTotalTax es la base gravada, totalTax el IVA y charge_1 / charge_2 los cargos especiales (en El Salvador, COTRANS y FOVIAL). Si la línea lleva esos impuestos fijos en tax_ids, los montos quedan registrados por impuesto. Ver totals en v1.

Retención y renta

totalRetein (IVA retenido) y totalRent (renta retenida) restan del total a pagar. Ejemplo en USD con IVA 26.00, retención 2.00 y renta 5.00 sobre 200.00: expenseTotalToPayment = 200.00 + 26.00 − 2.00 − 5.00 = 219.00.

Respuesta 200

Para una compra en moneda base: currency_code es la moneda base, exchange_rate "1.00000000" y foreign_total null.

Errores

Se validan antes de guardar; ningún error crea la compra.

Consultar compra

Devuelve lo mismo que v1 más la referencia de moneda. Los montos de totals y products están en moneda base; el total en la moneda del documento está en foreign_total.
Una compra de otro negocio o inexistente responde 404 con { "status": false, "message": "..." }.
GET /payables (v1) también expone la referencia de moneda de cada documento por pagar. Ver Cuentas por pagar.