Flujo
- Tras el contrato, el cobro queda andando (PSE, tarjeta, etc.).
- Cada ciclo: lo del inquilino entra; lo del propietario sale con comisión/admin.
- Mora, garantes y liquidaciones se operan sobre el mismo libro.
Invariantes
- Rutas bajo
/api/v1/accounts/{account_id}/treasury/.... - Permisos de tesorería van con suite administrativa /
treasury_manage(y admin). - MCP
treasury:read: cartera, mora, comisiones, liquidación, claims de garantía — sin filtrar PII de más. - Listado de suscripciones sin
unbilled_leases/status=unbilled. Opciones de terceros:payload.tenancies. Terminar arriendo sin cobro:POST .../contract_submissions/{contract_submission_id}/tenancy/finish. - Terminar contrato:
PATCH .../treasury/subscriptions/{id}constatus=cancelledpidetermination(causa y penalidad). Un contrato terminado ya no cambia de estado (422). El mismo PATCH aceptasubscription.property.admin_fee(escribe la administración de la propiedad; 422 si no es válido). - Un ajuste ya aplicado se anula (
POST .../adjustments/{id}/annul) o se corrige (POST .../adjustments/{id}/correct) solo mientrasapplied_change.allowedsea true en el detalle del ajuste; ambos pidenreason. - Un tercero puede ser una empresa: regístralo con
person_type=legalycompany_id, y en las rutas de detalle envíaparty_type=Company. - En un inmueble de una empresa, cada fila de
propertieslleva elcontact_idque actúa por ella. El estado de cuenta y el certificado de retenciones del propietario (.../treasury/owners/{id}/statementy.../withholding_certificate) también aceptanparty_type=Company. - Si un tercero practica retención en la fuente o de ICA al pagar el arriendo se marca con
PATCH .../treasury/third_parties/{id}/tax_profile(withholding_agent,ica_withholding_agent), tenga o no un rol de tercero. - Lo que sale a cada tercero se lista en
GET .../treasury/payouts(filtrosrole,status,channel,monthofrom/to,payout_day,q). Una dispersión se aprueba (POST .../payouts/{id}/approve), se reprograma (.../reschedule), se registra pagada a mano (.../mark_paid) o devuelta por el banco (.../mark_returned). Las rutastreasury/giros,treasury/owners/{id}/debitsy.../debit_paymentsya no existen. - El mismo
PATCH .../treasury/subscriptions/{id}cambia el convenio que afianza el arriendo (subscription.guarantee.collection_agreement_id, vacío para dejarlo sin afianzamiento) y su tarifa propia (subscription.guarantee_fee_percentage, vacío para volver a la del convenio). La respuesta traeguaranteecon el estado, el convenio y la tarifa.