Saltar al contenido principal

Alta masiva de comprobantes

Para escenarios B2B donde el ERP emite muchos comprobantes por día (corrida nocturna, cierre de jornada, importación inicial), existe POST /v1/receivables/batches. Procesa de forma asíncrona y notifica el resultado por webhook.

Si solo necesitás crear un comprobante, usá POST /v1/receivables. Si necesitás vincular post-hoc un operador, ver Operaciones avanzadas.

Request

POST /v1/receivables/batches
Idempotency-Key: erp-batch-2026-05-15-cierre
Content-Type: application/json

{
"items": [
{
"receivableAccountId": 4242,
"amount": 45000.00,
"currencyCode": "ARS",
"receivableType": "INVOICE",
"dueDate": "2026-05-30",
"legalNumber": "0001-00012345"
},
{
"receivableAccountId": 4243,
"amount": 12500.00,
"currencyCode": "ARS",
"receivableType": "INVOICE",
"dueDate": "2026-05-30",
"legalNumber": "0001-00012346"
}
]
}

Cada item del array tiene los mismos campos que POST /v1/receivables. La validación se hace por item: items inválidos no rompen el batch, se reportan individualmente al cierre.

Response

202 Accepted
Location: /v1/receivables/batches/902

{
"batchId": 902,
"status": "PROCESSING",
"totalItems": 2
}

El batch queda procesándose en background. El integrador se entera del resultado por el evento receivable.batch.completed.

Resultado vía webhook

{
"type": "receivable.batch.completed",
"data": {
"batchId": 902,
"totalItems": 500,
"successCount": 498,
"failureCount": 2,
"reportUrl": "https://files.maxpay.com.ar/batches/902/report.csv?token=..."
}
}

El reportUrl apunta a un CSV firmado con una fila por item: batchIndex, receivableId (si se creó), status (success/error) y error.code con detalle en caso de falla.

Idempotencia

El Idempotency-Key aplica al batch completo, no a items individuales. Si el customer reintenta el mismo batch con la misma key dentro de la ventana de caché, recibe el mismo batchId (no se reprocesa). Para items individuales, la deduplicación se apoya en las claves de negocio del comprobante (ver Idempotencia).