Liberacion de suscripción a plan de ahorro
Transfiere al partner el monto indicado en amount, en cuotapartes, desde una suscripción a plan de ahorro, para concretar la operación. La liberación ocurre cuando el usuario decide utilizar sus ahorros para consumir un bien o servicio ofrecido por el partner.
Al finalizar la liberación, Allaria envía una notificación a la URL registrada del partner — ver Webhook de actividad completada en plan.
La liberación puede realizarse en cualquier momento, independientemente de si se alcanzó el monto objetivo de la alcancía. El objetivo es únicamente una referencia de ahorro y no condiciona la operación.
La liberación nunca tiene penalización, ya sea que se realice antes o después de cumplir el objetivo.
Un depósito en USD se invierte en fondos comunes de inversión. Solo puede liberarse cuando sus cuotapartes se asignan a la cuenta: a la noche del día en que se procesa la orden, desde las 21 hs (hora de Argentina).
Hasta entonces forma parte de la valuación de la suscripción, pero un request que lo necesite devuelve insufficient_settled_position. Reintentar cuando esté disponible.
| Depósito procesado | Disponible para liberar |
|---|---|
| Antes del horario de corte de los fondos (16–16:30 hs) | Esa misma noche |
| Después del corte | La noche del día hábil siguiente |
Las suscripciones en ARS no se ven afectadas.
- Parcial: enviar
amount. Se transfiere ese monto y la suscripción sigue activa. - Total: enviar
finalize_plan: truesinamount. Se transfieren al partner todas las cuotapartes de la suscripción y la suscripción se cierra. El webhook informa el monto transferido.
Se debe realizar el siguiente request:
/v1/savings/business/account-investment-plans/{account_investment_plan_id}/claimRequest
Headers
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
Authorization | string | Sí | Token de acceso en formato Bearer ACCESS_TOKEN |
Content-Type | string | Sí | Debe ser application/json |
Path Parameters
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
account_investment_plan_id | number | Sí | Identificador de la suscripción. |
No aplica: Query Parameters.
Body
El body debe enviarse en snake_case.
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
amount | number | Condicional | Monto a liberar. Debe ser mayor a 0. Obligatorio salvo que finalize_plan sea true. |
finalize_plan | boolean | No | true libera todo y cierra la suscripción; no se debe enviar amount. |
Response
2XX Éxito
| Campo | Tipo | Descripción |
|---|---|---|
message | string | Mensaje confirmando el resultado del rescate. |
activity_id | number | Identificador de la actividad creada para este rescate. Guardalo contra tu propio registro: el Webhook de actividad de plan completada informa el mismo valor cuando el rescate se completa, y es el único campo que distingue una operación de otra. |
Códigos de error
Los errores devuelven el siguiente body:
{
"code": "invalid_request",
"description": "Descripción del error."
}
| Status | Code | Condición |
|---|---|---|
400 | invalid_request | El campo amount es menor o igual a 0, o no se envió ni amount ni finalize_plan: true. |
400 | finalize_plan_with_amount | Se envió finalize_plan: true junto con amount. Para cerrar la suscripción, no enviar amount: se mueve todo. |
400 | invalid_request | La suscripción no se encuentra en estado activo. |
400 | insufficient_valuation | El campo amount excede la valuación actual de la suscripción o, en una liberación total, la suscripción no tiene nada para liberar. |
400 | insufficient_settled_position | Solo para suscripciones en USD. Parte del amount corresponde a cuotapartes que todavía no se asignaron a la cuenta (ver Disponibilidad de los depósitos más arriba) o, en una liberación total, hay algún depósito pendiente. Se valida por cada fondo del plan. Reintentar cuando los depósitos pendientes estén disponibles. |
403 | — | El token no tiene el rol requerido para operar este endpoint. |
Ejemplo de código
- cURL
- JavaScript
- Python
- Node.js
curl -X POST https://b2b.allaria.dev/v1/savings/business/account-investment-plans/1/claim \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"amount": 50000.00
}'
const accountInvestmentPlanId = 1;
const response = await fetch(
`https://b2b.allaria.dev/v1/savings/business/account-investment-plans/${accountInvestmentPlanId}/claim`,
{
method: 'POST',
headers: {
'Authorization': 'Bearer ACCESS_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
amount: 50000.00
})
}
);
const data = await response.json();
console.log(data);
import requests
account_investment_plan_id = 1
response = requests.post(
f'https://b2b.allaria.dev/v1/savings/business/account-investment-plans/{account_investment_plan_id}/claim',
headers={
'Authorization': 'Bearer ACCESS_TOKEN',
'Content-Type': 'application/json'
},
json={
'amount': 50000.00
}
)
data = response.json()
print(data)
const axios = require('axios');
const accountInvestmentPlanId = 1;
const response = await axios.post(
`https://b2b.allaria.dev/v1/savings/business/account-investment-plans/${accountInvestmentPlanId}/claim`,
{
amount: 50000.00
},
{
headers: {
Authorization: 'Bearer ACCESS_TOKEN',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
{
"message": "Claim created successfully",
"activity_id": 4821
}