Base URL https://api.afer.pro Referencia aferapp.com Reservar demo

Compras del período

GET https://api.afer.pro/api/v1/reports/purchases
Alias en castellano (v0, sigue operativo): POST 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.

Autenticación

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_iniciodate
obligatorio
Inicio del período (YYYY-MM-DD), incluido.
fecha_findate
obligatorio
Fin del período (YYYY-MM-DD), incluido.
agruparstring
opcional
"mes" (serie mensual), "proveedor" (top 25 proveedores por gasto) o "subtipo" (gasto por tipo/clasificación fiscal).

Ejemplo de petición

curl -X GET 'https://api.afer.pro/api/v1/reports/purchases?fecha_inicio=2026-01-01&fecha_fin=2026-06-30&agrupar=subtipo' \
  -H 'X-API-KEY: afer_tk_TU_TOKEN' \
  -H 'X-API-SECRET: afer_sk_TU_SECRET'
<?php

$ch = curl_init('https://api.afer.pro/api/v1/reports/purchases?fecha_inicio=2026-01-01&fecha_fin=2026-06-30&agrupar=subtipo');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    '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/api/v1/reports/purchases?fecha_inicio=2026-01-01&fecha_fin=2026-06-30&agrupar=subtipo', {
  method: 'GET',
  headers: {
    'X-API-KEY': 'afer_tk_TU_TOKEN',
    'X-API-SECRET': 'afer_sk_TU_SECRET'
  }
});

const resultado = await respuesta.json();

Respuesta

200 · application/json
{
    "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

CasoResultado
Sin credenciales de API key errorCode 401.
Fechas ausentes o mal formadas errorCode 400 indicando el parámetro.