API
¿Cómo facturo con la API de Xubio?
Todos los llamados van a https://xubio.com/API/1.1/ y necesitan el token que obtuviste con tus credenciales. El token dura una hora.
Etapa 1 de 3
Preparás tu cuenta
Qué necesitás antes de empezar
Un punto de venta electrónico
Si no está marcado como electrónico, vas a poder crear la factura pero no pedirle el CAE.
La delegación ante ARCA
Te la explicamos paso a paso en ¿Cómo configuro mis facturas electrónicas en Xubio?.
Elegí cómo se numeran tus comprobantes
Tu punto de venta puede numerar de dos formas, y de eso depende con qué endpoint creás la factura.
| Si tu punto de venta numera… | Creás la factura con | El número de comprobante |
|---|---|---|
| Automático | POST /facturar |
Lo pone Xubio. No lo mandes |
| Manual (editable sugerido) | POST /comprobanteVentaBean |
Lo mandás vos |
El punto de venta va en cada factura que emitís, pero no hace falta que lo consultes cada vez: lo buscás una sola vez al armar la integración y te guardás su id.
GET /API/1.1/puntoVentaBean
curl "https://xubio.com/API/1.1/puntoVentaBean" \
-H "Authorization: Bearer TU_TOKEN"
Respuesta
[
{
"puntoVentaId": 4821,
"nombre": "Ventas online",
"codigo": "0003",
"puntoVenta": "00003",
"modoNumeracion": "automatico",
"circuitoContable": { "ID": -2, "nombre": "default", "codigo": "DEFAULT" },
"activo": 1,
"factElectronicaConXB": 1
}
]
modoNumeracion es el dato que define con qué endpoint vas a crear la factura, y factElectronicaConXB te dice si ese punto de venta emite factura electrónica. Los dos indicadores vienen como 1 o 0, no como true o false.
Etapa 2 de 3
Emitís la factura
Paso 1Indicá el cliente
La factura lleva el cliente en el campo cliente, que lo referencia por id, código o nombre. Tiene que existir antes: si todavía no está en tu cuenta, creálo.
POST /API/1.1/clienteBean
Son tres campos obligatorios: nombre, identificacionTributaria y categoriaFiscal.
Paso 2Indicá los productos
Cada item de la factura lleva un producto dentro de transaccionProductoItems. Tiene que existir antes: si todavía no está en tu cuenta, creálo.
POST /API/1.1/ProductoVentaBean
Son cuatro campos obligatorios: nombre, codigo, cuentaContable y tasaIva.
Ver documentación de productos
Paso 3Creá la factura
El ejemplo usa el endpoint de punto de venta automático.
POST /API/1.1/facturar
El cuerpo del pedido reproduce las mismas partes que ves en la pantalla de factura de venta: el encabezado, los items, las percepciones y los instrumentos de cobro.
Ejemplo
{
"cliente": { "nombre": "Distribuidora del Norte SA" },
"puntoVenta": { "codigo": "0003" },
"tipo": 1,
"fecha": "2026-09-25",
"condicionDePago": 2,
"transaccionProductoItems": [
{
"producto": { "codigo": "SERVICIO_DE_MANTENIMIENTO_MENSUAL" },
"cantidad": 2,
"precio": 15000
}
],
"transaccionCobranzaItems": [
{
"cuentaId": -13,
"moneda": { "codigo": "PESOS_ARGENTINOS" },
"cotizacionMonTransaccion": 1,
"importeMonTransaccion": 36300
}
]
}
Si la condición de pago es 1 (cuenta corriente), sacá transaccionCobranzaItems y agregá fechaVto.
El encabezado
Son los datos de la cabecera de la factura: a quién le facturás, con qué punto de venta, cuándo y cómo se cobra. En el JSON van en el nivel principal, sin anidar.

| Campo | Formato | Qué es |
|---|---|---|
cliente |
Referencia → GET /clienteBean |
Un cliente que ya exista en tu cuenta |
puntoVenta |
Referencia → GET /puntoVentaBean |
El punto de venta que vas a usar |
tipo |
Número | Qué comprobante emitís (ver la tabla de abajo) |
fecha |
Fecha AAAA-MM-DD |
La fecha del comprobante. No puede caer en un período ya cerrado |
condicionDePago |
Número: 1 cuenta corriente, 2 contado |
Cómo se cobra |
fechaVto |
Fecha AAAA-MM-DD |
La fecha de vencimiento. No hace falta si la condición es contado |
| Campo | Formato | Qué es |
|---|---|---|
moneda |
Referencia → GET /monedaBean |
Si no la mandás, se usa la principal de tu cuenta |
cotizacion |
Número decimal | Si no la mandás, se toma 1 |
deposito |
Referencia → GET /depositos |
De dónde sale el stock |
circuitoContable |
Referencia → GET /circuitoContableBean |
Si no lo mandás, se usa el genérico. Si lo mandás, tiene que coincidir con el del punto de venta |
descripcion |
Texto, hasta 4096 caracteres | Las observaciones del comprobante |
externalId |
Texto | Tu propio identificador, para relacionar la factura con tu sistema. No se puede repetir: si mandás uno ya usado, el alta se rechaza |
vendedor |
Referencia → GET /vendedorBean |
Van juntos con el porcentaje: si mandás uno, tenés que mandar el otro |
porcentajeComision |
Número decimal | La comisión del vendedor |
comprobante |
Número: el transaccionid de otro comprobante |
Para vincular la nota de crédito o débito con su factura |
comprobanteAsociado |
Número: 1 por comprobante, 2 por período |
Qué tipo de vínculo es. Obligatorio en notas de crédito y débito |
Los items
Es la grilla de productos: qué vendés, cuánto y a qué precio. Cada fila de la pantalla es un objeto dentro de transaccionProductoItems, y va al menos uno.

| Campo | Formato | Qué es |
|---|---|---|
producto |
Referencia → GET /ProductoVentaBean |
El producto o servicio que facturás |
cantidad |
Número decimal | Cuántas unidades |
precio |
Número decimal | El precio unitario. En una factura A va sin IVA; en una B o C, Xubio lo toma con el IVA ya incluido |
| Campo | Formato | Qué es |
|---|---|---|
porcentajeDescuento |
Número decimal | El descuento de esa fila |
montoExento |
Número decimal | La parte del importe que no paga IVA. Sobre un producto gravado no tiene efecto: Xubio lo guarda en 0 y no cambia el total |
centroDeCosto |
Referencia → GET /centroDeCostoBean |
A qué centro de costo se imputa |
El importe, el IVA y el total no se mandan: los calcula Xubio a partir de la cantidad, el precio y la alícuota configurada en el producto.
El depósito no se define por fila: el item toma siempre el deposito del encabezado. Si mandás uno distinto adentro del item, la respuesta te lo devuelve pero el comprobante queda guardado con el del encabezado.
Percepciones e impuestos
Son las percepciones que se suman al comprobante. Cada fila es un objeto dentro de transaccionPercepcionItems, y toda la sección es opcional.

| Campo | Formato | Qué es |
|---|---|---|
percepcionImpuesto |
Referencia → GET /percepcionBean |
Qué percepción aplicás |
importe |
Número decimal | El monto de la percepción |
descripcion |
Texto | Las observaciones de esa fila |
En el listado de GET /percepcionBean el identificador viene en percepcionId. Para referenciarlo desde la factura mandalo como { "ID": -55 }, o usá el código de la percepción.
Ejemplo
"transaccionPercepcionItems": [
{
"percepcionImpuesto": { "ID": -55 },
"importe": 900,
"descripcion": "Percepción IIBB CABA"
}
]
La percepción se suma al total del comprobante. Si la factura es al contado, el cobro tiene que cubrir ese total con la percepción incluida.
Los instrumentos de cobro
Es con qué te pagan. Solo va si la condición de pago es contado, y cada fila es un objeto dentro de transaccionCobranzaItems. El total de los cobros tiene que coincidir exactamente con el total del comprobante, con el IVA y las percepciones incluidas. Si no coincide, el alta se rechaza con el detalle de la diferencia: Suma del Debe: 20000.00. Suma del Haber: 30000.00, Diferencia: 10000.00.

| Campo | Formato | Qué es |
|---|---|---|
cuentaId |
Número: el id de la cuenta → GET /cuenta |
Con qué cobraste: caja, banco, valores a depositar |
moneda |
Referencia → GET /monedaBean |
La moneda del cobro. Tiene que coincidir con la del comprobante |
cotizacionMonTransaccion |
Número decimal | La cotización del cobro. Tiene que coincidir con la del comprobante. Si trabajás en pesos, mandá 1 |
importeMonTransaccion |
Número decimal | El importe en la moneda del comprobante |
| Campo | Formato | Qué es |
|---|---|---|
importeMonPrincipal |
Número decimal | El mismo importe en la moneda principal de tu cuenta. Si no lo mandás, Xubio lo calcula con la cotización |
banco |
Referencia → GET /banco |
Solo para cobros con cheque |
numeroCheque |
Texto | El número del cheque |
fechaVto |
Fecha AAAA-MM-DD |
El vencimiento del cheque |
descripcion |
Texto | Detalle libre del cobro |
Los cuatro campos del cheque quedan guardados en el comprobante y los recuperás con GET /comprobanteVentaBean/{transaccionid}.
Ejemplo
"transaccionCobranzaItems": [
{
"cuentaId": -2,
"moneda": { "codigo": "PESOS_ARGENTINOS" },
"cotizacionMonTransaccion": 1,
"importeMonTransaccion": 36300,
"banco": { "codigo": "BANCO_BICA" },
"numeroCheque": "12345678",
"fechaVto": "2026-11-30",
"descripcion": "Cheque a 60 días"
}
]
Si la moneda o la cotización del cobro no son las del comprobante, el alta se rechaza con Todos los items de cobro deben tener la misma moneda y cotización que la factura.
Tipos de comprobante
| Valor | Comprobante |
|---|---|
1 |
Factura |
2 |
Nota de débito |
3 |
Nota de crédito |
4 |
Informe diario de cierre Z |
6 |
Recibo |
Respuesta
Te devuelve el mismo comprobante que mandaste, más el transaccionid y el numeroDocumento que asignó Xubio. Los campos que no mandaste y quedaron con su valor por defecto, como el circuito contable, también vuelven completos.
{
"transaccionid": 101224258,
"numeroDocumento": "A-00003-00001547",
"fecha": "2026-09-25",
"condicionDePago": 2,
"tipo": 1,
"cliente": { "ID": 13103455, "id": 13103455 },
"puntoVenta": { "ID": 4821, "codigo": "0003", "id": 4821 },
"circuitoContable": { "ID": -2, "id": -2 },
"transaccionProductoItems": [
{
"producto": { "ID": 3529585, "codigo": "SERVICIO_DE_MANTENIMIENTO_MENSUAL", "id": 3529585 },
"cantidad": 2,
"precio": 15000
}
],
"transaccionCobranzaItems": [
{
"cuentaId": -13,
"moneda": { "ID": -2, "codigo": "PESOS_ARGENTINOS", "id": -2 },
"cotizacionMonTransaccion": 1,
"importeMonTransaccion": 36300,
"importeMonPrincipal": 36300
}
],
"tienePeriodoServicio": false
}
Guardá el transaccionid: lo vas a necesitar en el paso siguiente.
Tené en cuenta que la respuesta no trae los importes calculados —total, gravado ni impuestos— ni el CAE. Para eso, consultá el comprobante con GET /API/1.1/comprobanteVentaBean/{transaccionid}.
Paso 4Pedí el CAE
POST /API/1.1/solicitarCAE
Ejemplo
{
"transaccionId": 98432
}
Obligatorio: transaccionId o externalId.
Si ARCA autoriza el comprobante, recibís el CAE y su fecha de vencimiento:
Respuesta
{
"cae": "75318294016523",
"caeFechaVto": "2026-10-05",
"transaccionId": 98432
}
Listo: la factura quedó emitida y autorizada.
Etapa 3 de 3
Trabajás con la factura emitida
Obtené el PDF
GET /API/1.1/imprimirPDF?idtransaccion=98432&tipoimpresion=1
Obligatorio: idtransaccion y tipoimpresion, que va del 1 al 5 y tiene que existir para ese tipo de comprobante. No hay parámetros opcionales.
Respuesta
{
"urlPdf": "https://xubio.com/NXV/ImprimirPdf?transaccionid=98432&tenant=tnt_000000&tipoimpresion=1"
}
No devuelve el archivo: devuelve el link de descarga en el campo urlPdf.
Enviá el comprobante por mail
POST /API/1.1/enviarTransaccionPorMail
Ejemplo
{
"transaccionId": 98432,
"para": "administracion@distribuidoradelnorte.com",
"asunto": "Factura A-00003-00001547",
"cuerpo": "Te adjuntamos la factura correspondiente a tu compra."
}
Obligatorio: transaccionId, y al menos una dirección de destino.
Opcional: para, copia y copiaOculta (separadas por punto y coma, hasta cinco por campo), asunto, cuerpo y la marca para adjuntar el certificado de retención.
Tres cosas a tener en cuenta: el mail del cliente no se toma automáticamente, tenés que mandarlo siempre; el PDF se adjunta solo, con el formato por defecto del comprobante; y la respuesta confirma que recibimos el pedido, no que el mail haya llegado.
Emití una nota de crédito
No hay un endpoint aparte: se usa el mismo de la factura. El cuerpo es igual al del Paso 3 —cliente, punto de venta, fecha, condición de pago e items— y cambian solo estos tres campos.
Ejemplo
{
"tipo": 3,
"comprobante": 98432,
"comprobanteAsociado": 1
}
comprobante es el transaccionid de la factura original y comprobanteAsociado indica el tipo de vínculo: 1 por comprobante, 2 por período.
De los dos, el que no podés omitir es comprobanteAsociado: sin él el alta se rechaza con El campo comprobanteAsociado debe contener el valor 1 (comprobante) o 2 (período). Si elegís por período, sumá también fechaDesde y fechaHasta.
El cliente de la nota de crédito tiene que ser el mismo que el de la factura original. Si no coincide, el alta se rechaza con El ID cliente del comprobante creado debe coincidir con el ID cliente del comprobante asociado.
Después pedile el CAE igual que a cualquier comprobante.