Compras del período
https://api.afer.pro/consultarCompras
Devuelve las compras entre dos fechas (facturas de compra), con serie mensual opcional.
El espejo de consultarVentas en el lado del gasto: la suma de las facturas de compra con fecha en el rango, con importes sin IVA calculados desde las líneas.
Con agrupar añade el desglose para gráficos: serie mensual, top proveedores o gasto por tipo (el subtipo fiscal de cada factura). Combinado con ventas obtienes el margen — o pídelo ya calculado a consultarResultado.
Envía tus claves API en las cabeceras X-API-KEY y X-API-SECRET. La cuenta sobre la que se opera se resuelve automáticamente a partir de la clave. Cómo obtener tus claves →
Este endpoint requiere autenticación con API key: sin credenciales responde 401.
Parámetros del cuerpo
El cuerpo de la petición es un objeto JSON con Content-Type: application/json.
fecha_iniciodateobligatorio | Inicio del período (YYYY-MM-DD), incluido. |
fecha_findateobligatorio | Fin del período (YYYY-MM-DD), incluido. |
agruparstringopcional | "mes" (serie mensual), "proveedor" (top 25 proveedores por gasto) o "subtipo" (gasto por tipo/clasificación fiscal). |
Ejemplo de petición
curl -X POST 'https://api.afer.pro/consultarCompras' \
-H 'Content-Type: application/json' \
-H 'X-API-KEY: afer_tk_TU_TOKEN' \
-H 'X-API-SECRET: afer_sk_TU_SECRET' \
-d '{
"fecha_inicio": "2026-01-01",
"fecha_fin": "2026-06-30",
"agrupar": "subtipo"
}'
<?php
$data = [
'fecha_inicio' => '2026-01-01',
'fecha_fin' => '2026-06-30',
'agrupar' => 'subtipo',
];
$ch = curl_init('https://api.afer.pro/consultarCompras');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'X-API-KEY: afer_tk_TU_TOKEN',
'X-API-SECRET: afer_sk_TU_SECRET',
]);
$respuesta = json_decode(curl_exec($ch), true);
curl_close($ch);
const respuesta = await fetch('https://api.afer.pro/consultarCompras', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-KEY': 'afer_tk_TU_TOKEN',
'X-API-SECRET': 'afer_sk_TU_SECRET'
},
body: JSON.stringify({
"fecha_inicio": "2026-01-01",
"fecha_fin": "2026-06-30",
"agrupar": "subtipo"
})
});
const resultado = await respuesta.json();
Respuesta
{
"errorCode": 200,
"errorMsg": "",
"data": {
"fecha_inicio": "2026-01-01",
"fecha_fin": "2026-06-30",
"total_compras": 98750.6,
"num_documentos": 214,
"agrupacion": {
"por": "subtipo",
"grupos": [
{
"subtipo": "compras-mercaderias",
"titulo": "Compras de mercaderías",
"total": 61200.1,
"num_documentos": 122
},
{
"subtipo": "suministros",
"titulo": "Suministros",
"total": 21350.5,
"num_documentos": 64
},
{
"subtipo": null,
"titulo": "Sin clasificar",
"total": 16200,
"num_documentos": 28
}
]
}
}
}
Errores
| Caso | Resultado |
|---|---|
| Sin credenciales de API key | errorCode 401. |
| Fechas ausentes o mal formadas | errorCode 400 indicando el parámetro. |