Cómo empezar
Este tutorial te lleva de cero a tener tu primer cobro impactado en Max Pay. Vas a:
- Obtener credenciales y autenticar contra sandbox.
- Crear un cliente.
- Crear una cuenta recaudadora con CVU.
- Emitir un comprobante (registrar una factura).
- Simular un cobro entrante.
- Marcar el comprobante como pagado.
Todo el flujo lleva ~10 minutos. Los ejemplos usan curl y JavaScript (Node.js). Asumen el ambiente sandbox: https://api-sandbox.maxpay.com.ar/v1.
Paso 1 — Obtener credenciales y autenticar
Pedile al equipo comercial de Max Pay un clientId y un clientSecret de sandbox. Después autenticá:
curl -X POST https://api-sandbox.maxpay.com.ar/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"clientId": "your-client-id",
"clientSecret": "your-client-secret"
}'
Response:
{
"accessToken": "eyJhbGciOiJSUzI1NiIsInR...",
"tokenType": "Bearer",
"expiresIn": 43200,
"scope": "clients:read clients:write receivable-accounts:read receivable-accounts:write receivables:read receivables:write ..."
}
Guardá el accessToken — lo vas a usar en todos los requests siguientes en el header Authorization: Bearer <accessToken>.
Validá que tus credenciales funcionan:
curl https://api-sandbox.maxpay.com.ar/v1/me \
-H "Authorization: Bearer $TOKEN"
Para detalles de scopes y errores, ver Autenticación.
Paso 2 — Crear un cliente
El cliente representa a quien vas a facturar. Es idempotente por (documentType, documentNumber, branchExternalCode):
curl -X POST https://api-sandbox.maxpay.com.ar/v1/clients \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: tutorial-cli-001" \
-d '{
"businessName": "Kiosco Central",
"taxId": "30998888887",
"documentType": "CUIT"
}'
Response:
{
"id": 1042,
"businessName": "Kiosco Central",
"taxId": "30998888887",
...
}
Anotá el id: 1042 — lo necesitás para crear la cuenta recaudadora.
Paso 3 — Crear la cuenta recaudadora
Una cuenta recaudadora es la cuenta con CVU dedicado donde el cliente va a transferir. Atámosla al cliente que recién creamos:
curl -X POST https://api-sandbox.maxpay.com.ar/v1/receivable-accounts \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: tutorial-rac-001" \
-d '{
"clientId": 1042
}'
Response:
{
"id": 4242,
"cvu": null,
"alias": null,
"status": "PROVISIONING",
"owner": { "type": "CLIENT", "id": 1042 },
...
}
La cuenta arranca en PROVISIONING porque el CVU se asigna de forma asíncrona contra el proveedor bancario.
Esperá a que la cuenta esté activa (típicamente unos segundos). Podés pollearla o esperar el webhook receivable-account.activated. Para este tutorial, polleá:
curl https://api-sandbox.maxpay.com.ar/v1/receivable-accounts/4242 \
-H "Authorization: Bearer $TOKEN"
Cuando veas "status": "ACTIVE" y un cvu asignado, seguí al paso siguiente.
Paso 4 — Emitir un comprobante
Un comprobante es el documento que registra la deuda. Vamos a emitir una factura de $45.000 con vencimiento a 15 días:
curl -X POST https://api-sandbox.maxpay.com.ar/v1/receivables \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: tutorial-rcv-001" \
-d '{
"receivableAccountId": 4242,
"amount": 45000.00,
"currencyCode": "ARS",
"receivableType": "INVOICE",
"legalNumber": "0001-00000001",
"issueDate": "2026-05-15",
"dueDate": "2026-05-30"
}'
Response:
{
"id": 99001,
"receivableAccountId": 4242,
"status": "PENDING",
...
}
El comprobante queda en PENDING. Quedó "registrado lo que se espera cobrar".
Paso 5 — Simular un cobro
En sandbox podés simular que un cliente transfiere a tu CVU desde el panel web de Max Pay (o vía un endpoint helper de sandbox que tu account manager puede habilitarte). Una vez disparada la simulación, Max Pay registra un movement y emite el webhook movement.created.
Si suscribiste un webhook en este sandbox, vas a recibir:
{
"type": "movement.created",
"data": {
"movement": {
"id": 88123,
"receivableAccountId": 4242,
"movementType": "CREDIT",
"operationType": "DEPOSIT",
"amount": 45000.00,
"counterParty": { "name": "Kiosco Central", "taxId": "30998888887" }
}
}
}
Si todavía no configuraste webhooks, podés ver el movement por API:
curl "https://api-sandbox.maxpay.com.ar/v1/receivable-accounts/4242/movements" \
-H "Authorization: Bearer $TOKEN"
Paso 6 — Marcar el comprobante como pagado
Max Pay no imputa automáticamente el movement al comprobante. La decisión "este cobro paga esta factura" la tomás vos: identificás el comprobante correspondiente y lo marcás como PAID.
curl -X PATCH https://api-sandbox.maxpay.com.ar/v1/receivables/99001/status \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: tutorial-paid-99001" \
-d '{
"status": "PAID"
}'
Response:
{
"id": 99001,
"status": "PAID",
...
}
¡Listo! Tenés un comprobante creado, cobrado e imputado.
¿Y después?
- En el próximo ciclo de liquidación, Max Pay va a mover los fondos cobrados desde la cuenta recaudadora a la cuenta corriente del customer y el comprobante va a pasar a
SETTLED. Ver Liquidaciones. - Para entender por qué la imputación es manual y cómo se relacionan comprobantes, movements y liquidaciones, ver Comprobantes, movements y liquidaciones.
- Para hacer este flujo robusto en producción (manejo de errores, reintentos, webhooks): ver Imputar cobros entrantes a comprobantes y Empezar con webhooks.
- Para casos donde tu cuenta no es de un cliente simple (operadores, modelo educativo), ver Modelos de operación y Cuentas en Patrones B y C.