Tutorial: Flujo de trabajo de la API de cuentas
Guía para crear y gestionar cuentas de inversión utilizando la API de cuentas.
Pasos principales
Paso 1: Crear un partícipe
Antes de crear una cuenta, necesitamos crear un partícipe.
Endpoint para crear partícipe
POST /api/shareholders/create/
Request Body para crear partícipe
{
"external_id": "ext123",
"risk_level": 3,
"is_active": true,
"first_name": "Juan",
"last_name": "Pérez",
"business_activity": "0" // 0: Persona Natural (valor por defecto)
}
Response para creación de partícipe
{
"external_id": "ext123",
"uuid": "f41c7699-a1b9-4caa-9ff3-fa2f0e447e34",
"risk_level": 3,
"is_active": true,
"rut": null,
"first_name": "Nombre",
"last_name": "Apellido",
"created": "2024-11-20T15:30:44.119534-03:00",
"business_activity": "0"
}
Errores en creación de partícipe
400: Error de validación
{ "message": "Validation error", "code": "1003", "extra": { "fields": { "risk_level": [ "This field is required." ], "external_id": [ "This field is required." ], "first_name": [ "This field is required." ], "last_name": [ "This field is required." ] } } }
400: Erronea selección de risk_level
"extra": { "fields": { "risk_level": [ "Value 10 is not a valid choice." ] } }
Guarda el external_id devuelto en la respuesta, lo necesitarás para los siguientes pasos.
Paso 1.1 (Opcional): Agregar información de contacto
Endpoint para crear información de contacto
POST /api/shareholders/contact/create/
Request Body para crear información de contacto
{
"share_holder_external_id": "ext123",
"email": "juan.perez@ejemplo.com",
"phone": "+56912345678",
"birthdate": "1990-01-01",
"address": "Calle Ejemplo 123",
"commune": "Santiago"
}
Response para creación de información de contacto
{
"share_holder_external_id": "ext123",
"email": "juan.perez@ejemplo.com",
"phone": "+56912345678",
"birthdate": "1990-01-01",
"address": "Calle Ejemplo 123",
"commune": "Santiago"
}
Paso 1.2 (Opcional): Agregar información bancaria
Endpoint para crear información bancaria
POST /api/shareholders/bank/create/
Request Body para crear información bancaria
{
"share_holder_external_id": "ext123",
"bank": "Banco Ejemplo",
"account_type": "Cuenta Corriente",
"account_number": "00012345678"
}
Response para creación de información bancaria
{
"shareholder_external_id": "ext123",
"bank": "Banco Ejemplo",
"account_type": "Cuenta Corriente",
"account_number": "00012345678"
}
Paso 2: Crear una cuenta de inversión
Endpoint: Crear cuenta
POST /api/accounts/create/
Request Body para crear cuenta
{
"share_holder_external_id": "ext123",
"is_active": true,
"product": "SFC",
"objective": "Ahorro Vivienda",
"housing_subsidy": false,
"withdrawal_lock": false,
"contract_signed_at": "2024-03-15T10:00:00Z",
"contract_version": "v1.0",
"contract_url": "https://ejemplo.com/contrato.pdf",
"external_id": "cuenta123",
"metadata": {
"account_type": "premium",
"region": "metropolitana"
},
// Campos opcionales para crear DxP al mismo tiempo
"dxp_amount": "1000.0000",
"dxp_currency": "CLP", // Opciones: CLP, UF
"dxp_withdrawal_starts_at": "2024-04-15"
}
Response para creación de cuenta (sin DxP)
{
"uuid": "98765432-abcd-5678-efgh-987654321000",
"share_holder_external_id": "ext123",
"is_active": true,
"risk_level": "Bajo",
"product": "SFC",
"objective": "Ahorro Vivienda",
"housing_subsidy": false,
"withdrawal_lock": false,
"contract_signed_at": "2024-03-15T10:00:00Z",
"contract_version": "v1.0",
"contract_url": "https://ejemplo.com/contrato.pdf",
"external_id": "cuenta123",
"metadata": {
"account_type": "premium",
"region": "metropolitana"
},
"dxp_amount": null,
"dxp_currency": null,
"dxp_withdrawal_starts_at": null,
"dxp_is_active": null
}
Response para creación de cuenta (con DxP)
{
"uuid": "98765432-abcd-5678-efgh-987654321000",
"share_holder_external_id": "ext123",
"is_active": true,
"risk_level": "Bajo",
"product": "SFC",
"objective": "Ahorro Vivienda",
"housing_subsidy": false,
"withdrawal_lock": false,
"contract_signed_at": "2024-03-15T10:00:00Z",
"contract_version": "v1.0",
"contract_url": "https://ejemplo.com/contrato.pdf",
"external_id": "cuenta123",
"metadata": {
"account_type": "premium",
"region": "metropolitana"
},
"dxp_amount": "1000.0000",
"dxp_currency": "CLP",
"dxp_withdrawal_starts_at": "2024-04-15",
"dxp_is_active": true
}
Paso 3: Crear un DxP (Descuento por Planilla) [Opcional]
Si no creaste el DxP junto con la cuenta, puedes crearlo después:
Endpoint: Crear DxP
POST /api/accounts/dxpcreate/
Request Body para crear DxP
{
"account_external_id": "cuenta123",
"amount": "1000.0000",
"currency": "CLP", // Opciones: CLP, UF
"withdrawal_starts_at": "2024-04-15",
"is_active": true
}
Response para creación de DxP
{
"uuid": "98765432-abcd-5678-efgh-987654321000",
"id": 1,
"investment_account": "98765432-abcd-5678-efgh-987654321000",
"amount": "1000.0000",
"currency": "CLP",
"withdrawal_starts_at": "2024-04-15",
"is_active": true
}
Paso 4: Actualizar un DxP
Endpoint: Actualizar DxP
POST /api/accounts/dxpupdate/
Request Body para actualizar DxP
{
"account_external_id": "cuenta123",
"amount": "1500.0000", // Opcional
"currency": "CLP", // Opcional
"withdrawal_starts_at": "2024-05-15" // Opcional
}
Response para actualización de DxP
{
"uuid": "98765432-abcd-5678-efgh-987654321000",
"id": 1,
"investment_account": "98765432-abcd-5678-efgh-987654321000",
"amount": "1500.0000",
"currency": "CLP",
"withdrawal_starts_at": "2024-05-15",
"is_active": true
}
Paso 5: Cambiar el estado activo de un DxP
Endpoint: Actualizar estado activo del DxP
POST /api/accounts/dxpupdatestatus/
Request Body para actualizar estado activo del DxP
{
"account_external_id": "cuenta123",
"is_active": false
}
Response para actualización de estado activo del DxP
{
"uuid": "98765432-abcd-5678-efgh-987654321000",
"id": 1,
"investment_account": "98765432-abcd-5678-efgh-987654321000",
"amount": "1500.0000",
"currency": "CLP",
"withdrawal_starts_at": "2024-05-15",
"is_active": false
}
Otros endpoints
Listar cuentas
Endpoint: Listar cuentas
GET /api/accounts/list/
Parámetros de consulta opcionales
shareholder_external_id=ext123
external_id=cuenta123
metadata_value={"account_type": "premium"}
Response para listar cuentas
[
{
"uuid": "98765432-abcd-5678-efgh-987654321000",
"share_holder_external_id": "ext123",
"is_active": true,
"risk_level": "Bajo",
"product": "SFC",
"objective": "Ahorro Vivienda",
"housing_subsidy": false,
"withdrawal_lock": false,
"contract_signed_at": "2024-03-15T10:00:00Z",
"contract_version": "v1.0",
"contract_url": "https://ejemplo.com/contrato.pdf",
"external_id": "cuenta123",
"metadata": {
"account_type": "premium",
"region": "metropolitana"
},
"dxp_amount": "1000.0000",
"dxp_currency": "CLP",
"dxp_withdrawal_starts_at": "2024-04-15",
"dxp_is_active": true
},
// ... más cuentas ...
]
Cambiar el estado activo de una cuenta
Endpoint: Actualizar estado activo de una cuenta
POST /api/accounts/active/
Request Body para actualizar estado activo de una cuenta
{
"external_id": "cuenta123",
"is_active": false
}
Response para actualización de estado activo de una cuenta
{
"uuid": "98765432-abcd-5678-efgh-987654321000",
"share_holder_external_id": "ext123",
"is_active": false,
"risk_level": "Bajo",
"product": "SFC",
"objective": "Ahorro Vivienda",
"housing_subsidy": false,
"withdrawal_lock": false,
"contract_signed_at": "2024-03-15T10:00:00Z",
"contract_version": "v1.0",
"contract_url": "https://ejemplo.com/contrato.pdf",
"external_id": "cuenta123",
"metadata": {
"account_type": "premium",
"region": "metropolitana"
}
}
Establecer el estado de subsidio de vivienda
Endpoint: Actualizar estado de subsidio de vivienda
POST /api/accounts/subsidy/
Request Body para actualizar estado de subsidio de vivienda
{
"external_id": "cuenta123",
"housing_subsidy": true
}
Response para actualización de estado de subsidio de vivienda
{
"uuid": "98765432-abcd-5678-efgh-987654321000",
"share_holder_external_id": "ext123",
"is_active": true,
"risk_level": "Bajo",
"product": "SFC",
"objective": "Ahorro Vivienda",
"housing_subsidy": true,
"withdrawal_lock": false,
"contract_signed_at": "2024-03-15T10:00:00Z",
"contract_version": "v1.0",
"contract_url": "https://ejemplo.com/contrato.pdf",
"external_id": "cuenta123",
"metadata": {
"account_type": "premium",
"region": "metropolitana"
}
}