Retiro de suscripción a plan de ahorro
Transfiere dinero de una suscripción a plan de ahorro al CVU indicado en cxu. El usuario puede retirar en cualquier momento, aunque no se haya llegado a la fecha ni al monto objetivo del plan.
- Parcial: enviar
amount. Se transfiere ese monto y la suscripción sigue activa. No puede superar el capital invertido. - Total: enviar
finalize_plan: truesinamount. Se transfiere todo lo que tiene la suscripción, menos la penalización, y la suscripción se cierra.
Cuando la transferencia se completa, Allaria llama a tu Webhook de actividad completada en plan, que informa el monto efectivamente transferido.
Hoy un retiro pierde todos los rendimientos generados: solo se transfiere el capital invertido. Esta política está sujeta a cambios.
Un depósito en USD se invierte en fondos comunes de inversión. Solo puede retirarse cuando se asignan sus cuotapartes, 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 retirar |
|---|---|
| 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 |
Un retiro total rescata los fondos en su totalidad y envía el efectivo cuando el rescate tiene precio, desde las 21 hs del día en que se procesa. Las suscripciones en ARS no se ven afectadas.
/v1/savings/business/account-investment-plans/{account_investment_plan_id}/withdrawalRequest
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 |
|---|---|---|---|
cxu | string | Sí | CVU de destino al que se transferirán los fondos. |
amount | number | Condicional | Monto a retirar. Debe ser mayor a 0. Obligatorio salvo que finalize_plan sea true. |
finalize_plan | boolean | No | true retira 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 retiro. |
activity_id | number | Identificador de la actividad creada para este retiro. Guardalo contra tu propio registro: el Webhook de actividad de plan completada informa el mismo valor cuando el retiro 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 cxu no fue enviado, 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 | El campo amount es menor o igual a 0. |
400 | invalid_request | La suscripción no se encuentra en estado activo. |
400 | invalid_request | El campo amount excede el capital invertido. Los rendimientos no pueden retirarse. |
400 | insufficient_valuation | El campo amount excede la valuación actual de la suscripción o, en un retiro total, la suscripción no tiene nada para retirar. |
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 un retiro total, hay algún depósito pendiente. Se valida por cada fondo del plan. Reintentar cuando los depósitos pendientes estén disponibles. |
400 | cxu_not_found | El CVU especificado no existe en el sistema financiero. |
400 | invalid_request | El CVU especificado no es un CBU/CVU válido o la cuenta no está activa. |
400 | cxu_not_owned_by_holder | El CVU especificado no pertenece al titular de la suscripción. En suscripciones en USD, el titular es el titular principal del comitente; no se aceptan cotitulares ni apoderados. |
400 | holder_cuit_unavailable | El titular de la suscripción no tiene un CUIT válido registrado en Allaria, por lo que no puede verificarse la titularidad del CVU de destino. En suscripciones en USD, también cuando no puede determinarse el titular principal del comitente. Contactar a Allaria: el dato debe corregirse de nuestro lado antes de reintentar. |
403 | — | El token no tiene el rol requerido para operar este endpoint. |
502 | cxu_fetch_error | No se pudo validar el CVU de destino porque el sistema financiero no está disponible. Es transitorio: reintentar el request. |
502 | holder_fetch_error | No se pudieron obtener los titulares del comitente, por lo que no puede verificarse la titularidad del CVU de destino. Solo para suscripciones en USD. Es transitorio: reintentar el request. |
Ejemplo de código
- cURL
- JavaScript
- Python
- Node.js
curl -X POST https://b2b.allaria.cloud/v1/savings/business/account-investment-plans/1/withdrawal \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"cxu": "0000003100010000000001",
"amount": 50000.00
}'
const accountInvestmentPlanId = 1;
const response = await fetch(
`https://b2b.allaria.cloud/v1/savings/business/account-investment-plans/${accountInvestmentPlanId}/withdrawal`,
{
method: 'POST',
headers: {
'Authorization': 'Bearer ACCESS_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
cxu: '0000003100010000000001',
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.cloud/v1/savings/business/account-investment-plans/{account_investment_plan_id}/withdrawal',
headers={
'Authorization': 'Bearer ACCESS_TOKEN',
'Content-Type': 'application/json'
},
json={
'cxu': '0000003100010000000001',
'amount': 50000.00
}
)
data = response.json()
print(data)
const axios = require('axios');
const accountInvestmentPlanId = 1;
const response = await axios.post(
`https://b2b.allaria.cloud/v1/savings/business/account-investment-plans/${accountInvestmentPlanId}/withdrawal`,
{
cxu: '0000003100010000000001',
amount: 50000.00
},
{
headers: {
Authorization: 'Bearer ACCESS_TOKEN',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
{
"message": "Withdrawal created successfully",
"activity_id": 4821
}