Saltar al contenido principal

Autenticación

La API usa OAuth 2.0 con flujo client_credentials y tokens JWT de larga duración (12 horas).

Obtener un token

POST /v1/auth/login
Content-Type: application/json

{
"clientId": "your-client-id",
"clientSecret": "your-client-secret"
}

Respuesta

{
"accessToken": "eyJhbGciOiJSUzI1NiIsInR...",
"tokenType": "Bearer",
"expiresIn": 43200,
"scope": "clients:read clients:write receivables:read receivables:write ..."
}
CampoDescripción
accessTokenJWT a usar en Authorization: Bearer ...
tokenTypeSiempre Bearer
expiresInSegundos hasta expiración. Default 43200 (12 horas)
scopeLista de scopes habilitados separados por espacio

Usar el token

Incluí el accessToken como bearer token en cada request:

GET /v1/me
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR...

Renovación

Cuando el token expira, hacé un nuevo POST /v1/auth/login para obtener otro. No hay refresh tokens.

Para integraciones server-to-server: cacheá el token en memoria, renovalo antes de que expire (típicamente 5 minutos antes), y reusalo entre requests. El campo expiresIn del response indica el tiempo de vida en segundos.

Scopes

Cada API key tiene un set de scopes que limita lo que puede hacer. El token devuelve los scopes activos en el campo scope.

ScopePermite
clients:readLeer clientes
clients:writeCrear y actualizar clientes
associates:readLeer asociados
associates:writeCrear, actualizar y deshabilitar asociados
receivable-accounts:readLeer cuentas recaudadoras
receivable-accounts:writeCrear, actualizar, deshabilitar cuentas recaudadoras
current-accounts:readLeer cuentas corrientes (MAIN/SUB)
receivables:readLeer comprobantes
receivables:writeCrear, actualizar, cambiar estado de comprobantes
movements:readLeer movimientos
settlements:readLeer liquidaciones
route-settlements:readLeer rendiciones por hoja de ruta
route-settlements:writeCrear/actualizar rendiciones
reports:readGenerar y descargar reportes
webhooks:adminGestionar webhooks

Cuando un request requiere un scope que el token no tiene, la respuesta es 403 insufficient-scope.

Errores comunes

EscenarioHTTPcode
Credenciales incorrectas401invalid-credentials
Token expirado401token-expired
Token mal formado401invalid-token
Falta scope necesario403insufficient-scope
Rate limit en /auth/login429rate-limit-exceeded

GET /v1/me

Recurso de conveniencia para inspeccionar el contexto del token activo. Útil al integrar para confirmar credenciales, customer y ambiente:

GET /v1/me
Authorization: Bearer eyJ...

200 OK
{
"customer": {
"id": 17,
"businessName": "DistribuidoraDemo S.A.",
"taxId": "30999999999",
"creationDate": "2025-11-01T10:00:00-03:00"
},
"apiKey": {
"id": 88,
"name": "ERP Producción",
"scopes": [
"clients:read", "clients:write",
"associates:read", "associates:write",
"receivable-accounts:read", "receivable-accounts:write",
"receivables:read", "receivables:write",
"movements:read", "settlements:read", "reports:read",
"webhooks:admin"
],
"environment": "PRODUCTION",
"rateLimitTier": "STANDARD"
}
}

Rotación de credenciales

El clientSecret se puede rotar contactando al equipo de Max Pay. En una próxima versión se expondrá un endpoint self-service.