Introducción
Esta documentación tiene como objetivo brindarte toda la información necesaria para trabajar con nuestra API.
<aside>A medida que navegues, verás ejemplos de código para trabajar con la API en diferentes lenguajes de programación en el área oscura a la derecha (o como parte del contenido en dispositivos móviles).
Podés cambiar el lenguaje usado con las pestañas en la parte superior derecha (o desde el menú de navegación en la parte superior izquierda en móviles).</aside>
Autenticación de solicitudes
Para autenticar solicitudes, incluí un encabezado Authorization con el valor "Bearer Bearer {YOUR_TOKEN}".
Todos los endpoints autenticados están marcados con una insignia requiere autenticación en la documentación a continuación.
Para obtener el token, inicia sesión con tus credenciales.
El token será devuelto en la respuesta y deberá ser usado en el encabezado Authorization.
Cuenta
Consultar la configuración de la cuenta.
requiere autenticación
Solicitud de ejemplo:
curl --request GET \
--get "http://localhost/api/account/config" \
--header "Authorization: Bearer Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"http://localhost/api/account/config"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Respuesta de ejemplo (200):
{
"config_comprobantes_validar_total_items": "true",
"config_comprobantes_margen_total_items": "0.01"
}
Respuesta recibida:
Solicitud fallida con error:
Consejo: Verificá que estés conectado correctamente a la red.
Si sos el administrador de esta API, asegurate de que esté en funcionamiento y que CORS esté habilitado.
Podés revisar la consola de herramientas de desarrollo para obtener más información.
Actualizar la configuración de la cuenta.
requiere autenticación
Permite actualizar las opciones de comprobantes del usuario autenticado.
También conserva compatibilidad con el formato anterior basado en key y value.
Solicitud de ejemplo:
curl --request PUT \
"http://localhost/api/account/config" \
--header "Authorization: Bearer Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"config_comprobantes_validar_total_items\": true,
\"config_comprobantes_margen_total_items\": \"0.01\",
\"key\": \"config_comprobantes_margen_total_items\",
\"value\": \"0.01\",
\"code\": \"user_config\",
\"data_type\": \"decimal\",
\"serialized\": false
}"
const url = new URL(
"http://localhost/api/account/config"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"config_comprobantes_validar_total_items": true,
"config_comprobantes_margen_total_items": "0.01",
"key": "config_comprobantes_margen_total_items",
"value": "0.01",
"code": "user_config",
"data_type": "decimal",
"serialized": false
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Respuesta de ejemplo (200):
{
"message": "¡Los datos fueron actualizados con éxito!",
"data": {
"config_comprobantes_validar_total_items": "true",
"config_comprobantes_margen_total_items": "0.01"
}
}
Respuesta recibida:
Solicitud fallida con error:
Consejo: Verificá que estés conectado correctamente a la red.
Si sos el administrador de esta API, asegurate de que esté en funcionamiento y que CORS esté habilitado.
Podés revisar la consola de herramientas de desarrollo para obtener más información.
Solicitudes
Generar token de API
requiere autenticación
Inicia sesión con email y contraseña, y devuelve un token de acceso.
Solicitud de ejemplo:
curl --request POST \
"http://localhost/api/login" \
--header "Authorization: Bearer Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"username\": \"usuario@email.com\",
\"password\": \"secret123\"
}"
const url = new URL(
"http://localhost/api/login"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"username": "usuario@email.com",
"password": "secret123"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Respuesta recibida:
Solicitud fallida con error:
Consejo: Verificá que estés conectado correctamente a la red.
Si sos el administrador de esta API, asegurate de que esté en funcionamiento y que CORS esté habilitado.
Podés revisar la consola de herramientas de desarrollo para obtener más información.
Revocar el token
requiere autenticación
Revoca el token actual del usuario y cierra la sesión.
Solicitud de ejemplo:
curl --request POST \
"http://localhost/api/logout" \
--header "Authorization: Bearer Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"http://localhost/api/logout"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Respuesta recibida:
Solicitud fallida con error:
Consejo: Verificá que estés conectado correctamente a la red.
Si sos el administrador de esta API, asegurate de que esté en funcionamiento y que CORS esté habilitado.
Podés revisar la consola de herramientas de desarrollo para obtener más información.
Listado de alícuotas
requiere autenticación
Devuelve una lista de alícuotas obtenidas desde ARCA.
Solicitud de ejemplo:
curl --request GET \
--get "http://localhost/api/arca/alicuotas" \
--header "Authorization: Bearer Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"http://localhost/api/arca/alicuotas"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Respuesta de ejemplo (401):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
access-control-expose-headers: Pager-Total, X-Warning
{
"message": "No autentificado."
}
Respuesta recibida:
Solicitud fallida con error:
Consejo: Verificá que estés conectado correctamente a la red.
Si sos el administrador de esta API, asegurate de que esté en funcionamiento y que CORS esté habilitado.
Podés revisar la consola de herramientas de desarrollo para obtener más información.
Listado de conceptos
requiere autenticación
Devuelve una lista de conceptos obtenidos desde ARCA.
Solicitud de ejemplo:
curl --request GET \
--get "http://localhost/api/arca/conceptos" \
--header "Authorization: Bearer Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"http://localhost/api/arca/conceptos"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Respuesta de ejemplo (401):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
access-control-expose-headers: Pager-Total, X-Warning
{
"message": "No autentificado."
}
Respuesta recibida:
Solicitud fallida con error:
Consejo: Verificá que estés conectado correctamente a la red.
Si sos el administrador de esta API, asegurate de que esté en funcionamiento y que CORS esté habilitado.
Podés revisar la consola de herramientas de desarrollo para obtener más información.
Obtener PDF de comprobante.
requiere autenticación
Solicitud de ejemplo:
curl --request GET \
--get "http://localhost/api/comprobantes/1/pdf/obtener" \
--header "Authorization: Bearer Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"http://localhost/api/comprobantes/1/pdf/obtener"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Respuesta de ejemplo (401):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
access-control-expose-headers: Pager-Total, X-Warning
{
"message": "No autentificado."
}
Respuesta recibida:
Solicitud fallida con error:
Consejo: Verificá que estés conectado correctamente a la red.
Si sos el administrador de esta API, asegurate de que esté en funcionamiento y que CORS esté habilitado.
Podés revisar la consola de herramientas de desarrollo para obtener más información.
Generar PDF de comprobante.
requiere autenticación
Solicitud de ejemplo:
curl --request PUT \
"http://localhost/api/comprobantes/1/pdf/generar" \
--header "Authorization: Bearer Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"pdf_template\": \"comprobante_A\",
\"pdf_datos\": {
\"tipo_cbte_desc\": \"Factura A\",
\"receptor_nombre\": \"Juan Perez\",
\"receptor_localidad\": \"Bahia Blanca\",
\"receptor_cod_postal\": \"8000\",
\"receptor_calle\": \"Mitre\",
\"receptor_calle_nro\": \"123\",
\"receptor_telefono\": \"2911234567\"
}
}"
const url = new URL(
"http://localhost/api/comprobantes/1/pdf/generar"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"pdf_template": "comprobante_A",
"pdf_datos": {
"tipo_cbte_desc": "Factura A",
"receptor_nombre": "Juan Perez",
"receptor_localidad": "Bahia Blanca",
"receptor_cod_postal": "8000",
"receptor_calle": "Mitre",
"receptor_calle_nro": "123",
"receptor_telefono": "2911234567"
}
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Respuesta recibida:
Solicitud fallida con error:
Consejo: Verificá que estés conectado correctamente a la red.
Si sos el administrador de esta API, asegurate de que esté en funcionamiento y que CORS esté habilitado.
Podés revisar la consola de herramientas de desarrollo para obtener más información.
Listado de puntos de venta
requiere autenticación
Devuelve una lista de puntos de venta obtenidos desde ARCA.
Solicitud de ejemplo:
curl --request GET \
--get "http://localhost/api/arca/puntos-venta" \
--header "Authorization: Bearer Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"http://localhost/api/arca/puntos-venta"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Respuesta de ejemplo (401):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
access-control-expose-headers: Pager-Total, X-Warning
{
"message": "No autentificado."
}
Respuesta recibida:
Solicitud fallida con error:
Consejo: Verificá que estés conectado correctamente a la red.
Si sos el administrador de esta API, asegurate de que esté en funcionamiento y que CORS esté habilitado.
Podés revisar la consola de herramientas de desarrollo para obtener más información.
Listado de templates.
requiere autenticación
Devuelve una lista de templates.
Solicitud de ejemplo:
curl --request GET \
--get "http://localhost/api/templates?sortBy=tem_nombre&rowsPerPage=10&descending=1&filter=comprobante_A" \
--header "Authorization: Bearer Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"http://localhost/api/templates"
);
const params = {
"sortBy": "tem_nombre",
"rowsPerPage": "10",
"descending": "1",
"filter": "comprobante_A",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer Bearer {YOUR_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Respuesta de ejemplo (401):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
access-control-expose-headers: Pager-Total, X-Warning
{
"message": "No autentificado."
}
Respuesta recibida:
Solicitud fallida con error:
Consejo: Verificá que estés conectado correctamente a la red.
Si sos el administrador de esta API, asegurate de que esté en funcionamiento y que CORS esté habilitado.
Podés revisar la consola de herramientas de desarrollo para obtener más información.
Listado de tipos de comprobantes
requiere autenticación
Devuelve una lista de tipos de comprobantes obtenidos desde ARCA.
Solicitud de ejemplo:
curl --request GET \
--get "http://localhost/api/arca/tipos-comprobantes" \
--header "Authorization: Bearer Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"http://localhost/api/arca/tipos-comprobantes"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Respuesta de ejemplo (401):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
access-control-expose-headers: Pager-Total, X-Warning
{
"message": "No autentificado."
}
Respuesta recibida:
Solicitud fallida con error:
Consejo: Verificá que estés conectado correctamente a la red.
Si sos el administrador de esta API, asegurate de que esté en funcionamiento y que CORS esté habilitado.
Podés revisar la consola de herramientas de desarrollo para obtener más información.
Listado de tipos de documentos
requiere autenticación
Devuelve una lista de tipos de documentos obtenidos desde ARCA.
Solicitud de ejemplo:
curl --request GET \
--get "http://localhost/api/arca/tipos-documentos" \
--header "Authorization: Bearer Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"http://localhost/api/arca/tipos-documentos"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Respuesta de ejemplo (401):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
access-control-expose-headers: Pager-Total, X-Warning
{
"message": "No autentificado."
}
Respuesta recibida:
Solicitud fallida con error:
Consejo: Verificá que estés conectado correctamente a la red.
Si sos el administrador de esta API, asegurate de que esté en funcionamiento y que CORS esté habilitado.
Podés revisar la consola de herramientas de desarrollo para obtener más información.
Listado de tipos de datos opcionales
requiere autenticación
Devuelve una lista de tipos de datos opciones obtenidos desde ARCA.
Solicitud de ejemplo:
curl --request GET \
--get "http://localhost/api/arca/tipos-opcional" \
--header "Authorization: Bearer Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"http://localhost/api/arca/tipos-opcional"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Respuesta de ejemplo (401):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
access-control-expose-headers: Pager-Total, X-Warning
{
"message": "No autentificado."
}
Respuesta recibida:
Solicitud fallida con error:
Consejo: Verificá que estés conectado correctamente a la red.
Si sos el administrador de esta API, asegurate de que esté en funcionamiento y que CORS esté habilitado.
Podés revisar la consola de herramientas de desarrollo para obtener más información.
Listado de comprobantes.
requiere autenticación
Devuelve una lista de comprobantes.
Solicitud de ejemplo:
curl --request GET \
--get "http://localhost/api/comprobantes?sortBy=com_tap_fecha&rowsPerPage=10&descending=1&filter=1234&punto_venta_id=1&fecha_desde=2026-01-01&fecha_hasta=2026-01-31" \
--header "Authorization: Bearer Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"sortBy\": \"consequatur\",
\"rowsPerPage\": 45
}"
const url = new URL(
"http://localhost/api/comprobantes"
);
const params = {
"sortBy": "com_tap_fecha",
"rowsPerPage": "10",
"descending": "1",
"filter": "1234",
"punto_venta_id": "1",
"fecha_desde": "2026-01-01",
"fecha_hasta": "2026-01-31",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer Bearer {YOUR_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"sortBy": "consequatur",
"rowsPerPage": 45
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Respuesta de ejemplo (401):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
access-control-expose-headers: Pager-Total, X-Warning
{
"message": "No autentificado."
}
Respuesta recibida:
Solicitud fallida con error:
Consejo: Verificá que estés conectado correctamente a la red.
Si sos el administrador de esta API, asegurate de que esté en funcionamiento y que CORS esté habilitado.
Podés revisar la consola de herramientas de desarrollo para obtener más información.
Crear comprobante
requiere autenticación
Genera un comprobante fiscal, lo envía a ARCA y opcionalmente genera un PDF.
Solicitud de ejemplo:
curl --request POST \
"http://localhost/api/comprobantes" \
--header "Authorization: Bearer Bearer {YOUR_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"concepto_id\": 1,
\"punto_venta\": 1,
\"tipo_cbte\": 1,
\"fecha\": \"2026-01-01\",
\"importe_total\": \"1000.50\",
\"fecha_desde\": \"2026-01-01\",
\"fecha_hasta\": \"2026-01-31\",
\"receptor_doc_tipo\": 80,
\"receptor_doc_numero\": \"20123456789\",
\"receptor_categoria_iva\": 1,
\"fecha_vto_pago\": \"2026-02-01\",
\"comprobantes_asociados\": [
1,
2
],
\"generar_pdf\": true,
\"pdf_template\": \"comprobante_A\",
\"pdf_datos\": {
\"tipo_cbte_desc\": \"Factura A\",
\"receptor_nombre\": \"Juan Perez\",
\"receptor_localidad\": \"Bahia Blanca\",
\"receptor_cod_postal\": \"8000\",
\"receptor_calle\": \"Mitre\",
\"receptor_calle_nro\": \"123\",
\"receptor_telefono\": \"2911234567\"
},
\"items\": [
\"consequatur\"
]
}"
const url = new URL(
"http://localhost/api/comprobantes"
);
const headers = {
"Authorization": "Bearer Bearer {YOUR_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"concepto_id": 1,
"punto_venta": 1,
"tipo_cbte": 1,
"fecha": "2026-01-01",
"importe_total": "1000.50",
"fecha_desde": "2026-01-01",
"fecha_hasta": "2026-01-31",
"receptor_doc_tipo": 80,
"receptor_doc_numero": "20123456789",
"receptor_categoria_iva": 1,
"fecha_vto_pago": "2026-02-01",
"comprobantes_asociados": [
1,
2
],
"generar_pdf": true,
"pdf_template": "comprobante_A",
"pdf_datos": {
"tipo_cbte_desc": "Factura A",
"receptor_nombre": "Juan Perez",
"receptor_localidad": "Bahia Blanca",
"receptor_cod_postal": "8000",
"receptor_calle": "Mitre",
"receptor_calle_nro": "123",
"receptor_telefono": "2911234567"
},
"items": [
"consequatur"
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Respuesta recibida:
Solicitud fallida con error:
Consejo: Verificá que estés conectado correctamente a la red.
Si sos el administrador de esta API, asegurate de que esté en funcionamiento y que CORS esté habilitado.
Podés revisar la consola de herramientas de desarrollo para obtener más información.
