El ciclo de vida de la solicitud
Una solicitud pasa por estados con nombre. Cada transición es una operación distinta, y cada una guarda un registro de decisión o de desembolso:
Pasos
1
Previsualizar el cronograma (opcional)
POST /api/v1/loan-applications/preview-schedule calcula el cronograma de amortización para términos propuestos sin originar nada. Recibe monthlyInterestRate, la tasa mensual como fracción decimal en un string, la misma unidad de requestedInterestRate. Cuando registra la cotización como oferta, devuelve el scheduleOfferSnapshotId de la oferta, que la solicitud puede citar. Úsalo para mostrar cuotas y divulgaciones antes de que alguien se comprometa.2
Enviar la solicitud
POST /api/v1/loan-applications crea la solicitud contra la versión actual del producto. Lleva el CPF o el CNPJ y el nombre del prestatario, no un id de prestatario. El documento define el tipo de prestatario, y Lender busca o registra al prestatario como titular en el CRM de Midaz. La tasa solicitada debe quedar dentro de la banda de tasa de la versión: consulta Precifica desde tu back office. Indica exactamente uno entre el principal, el neto que recibe el prestatario o la cuota que cabe, y opcionalmente la primera fecha de vencimiento. La solicitud también puede pedir otro cronograma y llevar tu número de contrato: consulta Cronograma y número del contrato.3
Decidir
Resuelve la solicitud con exactamente una de las siguientes:
POST /api/v1/loan-applications/{id}/approve: acéptala, con un registro de decisión.POST /api/v1/loan-applications/{id}/reject: recházala, con un registro de decisión.POST /api/v1/loan-applications/{id}/withdraw: retírala mientras está pendiente de aprobación o, después de la aprobación, antes del desembolso.
4
Emite la CCB (opcional)
La versión del producto define quién emite la CCB: Lender la genera, o la genera tu institución. En ambos casos, registras la CCB firmada en la solicitud. Una versión puede retener la primera liberación de un contrato directo hasta que la registres. Consulta Emite la CCB.
5
Desembolsar
POST /api/v1/loan-applications/{id}/disburse registra los fondos entregados. Lender no envía el pago: tu institución paga al prestatario por su propio canal, y esta llamada registra esa liberación y la contabiliza en el ledger. Consulta Registra una liberación que tu institución hizo. Toma la clave X-Idempotency que toma toda escritura de esta página. Por eso, un reintento con la misma clave repite la primera respuesta y no registra un segundo desembolso.Una sola transacción de base de datos confirma el evento de desembolso, el cronograma de originación y una intención de asiento balanceada. Cuando la llamada retorna, el préstamo es una cuenta de préstamo activa que administras de aquí en adelante.El asiento en el ledger no está en esa transacción. Un despachador del outbox retransmite la intención a Midaz poco después de la respuesta, mediante el perfil contable del producto. Consulta la ruta de asientos.Precifica desde tu back office
Lender no guarda una tabla de tasa ni de gracia por rango de cuotas. Tu back office mantiene esa tabla, elige una tasa y un período de gracia para cada solicitud y los envía. La versión del producto declara una banda de tasa y, de forma opcional, una ventana para la primera fecha de vencimiento. Lender verifica cada solicitud contra ambas. Una solicitud incluye:
requestedInterestRate: la tasa mensual como fracción decimal en un string, con escala 8.firstDueDateogracePeriodDays(el período de gracia en días corridos), nunca los dos.
m en puntos base anuales efectivos, (1 + m)^12 - 1, y la acepta cuando el resultado cae dentro de la banda de la versión. Una tasa de 1.5% al mes da cerca de 1956 bps. Una tasa exactamente en el piso o en el techo se acepta. Fuera de la banda, Lender rechaza con LENDER-0215, y detail imprime el valor anual que comparó y la banda.
La primera fecha de vencimiento que eliges, o la que produce el período de gracia, debe caer dentro de la ventana de la versión. Una versión sin ventana solo acepta la fecha que marca el generador de cronograma. Cuando la versión declara límites de principal, de plazo o de número de cuotas, Lender rechaza una solicitud fuera de ellos con LENDER-0250, LENDER-0251 o LENDER-0252.
Cronograma y número del contrato
Una solicitud puede pedir un cronograma distinto del predeterminado y llevar tu propio número para el contrato:
amortizationSystem:price(el predeterminado),sacoamerican.paymentPeriodicity:monthly(el predeterminado),fortnightlyoweekly.paymentRules: filas que pagas por regla, en lugar de la cuota del sistema, como una gracia (interestOnly) o una cuota balloon (fixedAmount). Una solicitud con reglas aceptapriceosac,monthlyy un principal (requestedPrincipalAmount). La última fila no puede serinterestOnly.periods: una solicitud de flujo libre da un fin de devengo para cada cuota, en orden estrictamente creciente. La versión debe admitirfreeFlowenpaymentRuleKinds(LENDER-0260). La solicitud no puede enviar tambiénfirstDueDate,gracePeriodDays, un monto de cuota ni un monto neto, y el total de cada cuota debe superar los intereses de su período: cada infracción respondeLENDER-0263. La ventana de la versión juzga el primer fin, llevado a un día hábil (LENDER-0235). La previsualización de cronograma y la previsualización de impuestos BR también aceptanperiods, y las filas del cronograma muestranperiod.clientContractNumber: tu propio número para el contrato, de 1 a 40 caracteres. Lo escribes una vez, al crear. Es único entre los contratos vivos de tu institución, que son las solicitudes pendientes de aprobación, aprobadas o desembolsadas. Una solicitud rechazada o retirada libera el número, y la sustituta que genera una renegociación sustancial lo conserva.GET /api/v1/loan-applicationsfiltra por él.
Registra una liberación que tu institución hizo
Lender no envía el pago. Tu institución paga al prestatario por su propio canal, y
POST /api/v1/loan-applications/{id}/disburse registra esa liberación y la contabiliza en el ledger. Como el registro llega después del pago, el orden de los pasos importa: la solicitud y su aprobación deben existir antes de que salga el dinero.
1
Crea la solicitud antes de pagar
Lender fecha la solicitud en el momento de la llamada, y no puedes fecharla en el pasado. Un pago hecho antes de que exista la solicitud no se puede registrar con su fecha real. Envía
expectedDisbursementDate con el día en que tu institución va a pagar, y paga ese día. Un día posterior al día de São Paulo tres meses calendario por delante de hoy responde LENDER-0212. Un día pasado se acepta.2
Aprueba la solicitud
Si tu back office aprobó la solicitud antes, envía ese momento como
decisionAt. No puede ser anterior a la creación de la solicitud ni posterior a hoy en São Paulo. disbursedAt no puede quedar antes de la aprobación.3
Cotiza el neto y paga exactamente ese valor
POST /api/v1/br/tax/preview con los términos de la propia solicitud:grossAmount: el monto aprobado.disbursementDate: el momento del pago.finalDueDate: el vencimiento de la última cuota de la solicitud.requestedInstallmentsyrequestedInterestRate, como en la solicitud.amortizationSystem,paymentPeriodicityypaymentRules, como en la solicitud. Sin ellos, la cotización valoraprice,monthlyy ninguna regla.firstDueDate: la fecha que registró la solicitud.borrowerKind, como en la solicitud, ytaxRegimecuando la solicitud declaró uno. Una pessoaJuridica en una versión que admite dos regímenes debe declarar uno, o Lender rechaza conLENDER-0962.loanProductVersionId, yjurisdictionCodecon el valorBR.
netDeliveredAmount, para que la cotización calcule el neto. Sin las cuotas y la tasa, la cotización valora una sola ventana, del día del pago al vencimiento final. Eso sirve para un bullet y falla para un contrato amortizado, y Lender entonces rechaza el neto con LENDER-0208. El mismo rechazo sigue a una cotización sin los campos de cronograma de una solicitud sac, american, quincenal, semanal o pagada por regla. La cotización valora el día de disbursementDate: si el pago cambia de día, cotiza de nuevo antes de que salga. Paga al prestatario exactamente el neto cotizado.4
Registra el consentimiento de capitalización, cuando la versión lo exija
En una versión que exige la cláusula de capitalización, registra el consentimiento del prestatario con
POST /api/v1/br/loan-applications/{id}/capitalization-consents antes de llamar a /disburse. acceptedAt puede ser como máximo el momento del pago. Consulta Consentimiento de capitalización.5
Registra la CCB firmada, cuando la versión lo exija
En una versión con
terms.releaseRequiresSignedInstrument activado, la primera liberación de un contrato directo espera la CCB firmada. Regístrala con POST /api/v1/loan-applications/{applicationId}/signed-credit-instrument antes de llamar a /disburse. Cuando Lender emitió esa CCB, la primera liberación debe caer en el money day de la CCB, o responde LENDER-0264. Consulta Emite la CCB.6
Registra la liberación
POST /api/v1/loan-applications/{id}/disburse con disbursedAt en el momento en que salió el dinero y netDeliveredAmount con lo que recibió el prestatario. disbursedAt es opcional: si lo omites, Lender usa el ahora de negocio del tenant. Una llamada sin respuesta vuelve con la misma clave X-Idempotency. La sección de idempotencia cubre el caso de resultado incierto. Una llamada que Lender rechaza con un código de la tabla siguiente no liberó nada y gastó la clave, así que envía la solicitud corregida con una clave nueva.disbursedAt y netDeliveredAmount registran cuándo y cuánto recibió el prestatario. Ningún rechazo se resuelve cambiando uno de los dos.
Toda escritura toma una clave de idempotencia
Crear una solicitud y moverla (aprobar, rechazar, desistir, desembolsar) exigen todas el encabezado
X-Idempotency. Lender lee la clave con esa grafía y con ninguna otra. Rechaza Idempotency-Key y X-Idempotency-Key por nombre, para que un cliente nunca quede desprotegido en silencio por haber adivinado el encabezado. Enviar una de esas junto con el encabezado del contrato no es problema. El rechazo solo se dispara cuando X-Idempotency está ausente.
La guarda falla cerrada. Cuando el almacén de idempotencia no puede responder, Lender rechaza el pedido con
503 en vez de dejarlo pasar sin protección.
Crear cuesta una clave a propósito: sin ella, un cliente que agota el tiempo al crear y llama de nuevo abre una segunda solicitud para el mismo prestatario. Es el duplicado más barato de producir en el servicio y el más caro de deshacer. Es caro porque las dos copias se ven legítimas y solo una persona sabe decir cuál es la verdadera.
En las cuatro escrituras de ciclo de vida, puedes conciliar un pedido que termina sin resolverse y reenviarlo bajo una clave nueva. Lee la solicitud por id y pregunta si ya sostiene el estado que querías. En el desembolso, concilia primero: lee la solicitud y mira el
disbursementEvent más reciente. Si la liberación no está ahí, reenvía la misma solicitud sin cambios bajo una clave nueva, trancheNumber incluido (o todavía ausente). La posición que declara es lo que impide una segunda liberación.El producto tiene que estar activo
La originación lee el estado de activación del producto de préstamo y rechaza un producto que no está activo, con
LENDER-0225 y un 422. El rechazo se ubica en los tres pasos que deciden crédito nuevo: crear la solicitud, aprobarla y liberar el dinero por la API. La cotización del consignado y la vista previa de cronograma que nombra una versión de producto fijan precio al mismo crédito, así que rechazan un producto inactivo del mismo modo. Un producto archivado no está activo. Por eso, un producto apagado después de presentada la solicitud la detiene antes de que salga el dinero.
Crear una solicitud también tiene que nombrar la versión vigente del producto, o Lender la rechaza con LENDER-0226 y un 422. Esa comprobación corre en la creación y en ningún otro lado, porque una solicitud se queda de por vida en la versión en que nació. Promover una versión nueva nunca mata entonces las solicitudes detenidas en la anterior, y cada una sigue contabilizando en la versión que nombró. Mira Definir un producto de préstamo.
Tres caminos quedan fuera de esta puerta a propósito:
- El carril del consignado, que registra un contrato que los sistemas del propio cliente ya inscribieron en la nómina. Rechazar un hecho que ya ocurrió dejaría al libro negando un contrato que el prestatario tiene en la mano.
- Una renegociación sustancial, cuyo contrato de reemplazo hereda la versión de producto del contrato al que reemplaza. El contrato de reemplazo hereda esa versión esté ese producto activo o no y sea esa versión la vigente o no. Renegociar es servicing de crédito ya escrito. Solo una solicitud nueva es crédito nuevo.
- Una tranche posterior de una solicitud que ya tiene un desembolso. Esa solicitud ya es un contrato, así que un producto apagado después no detiene la siguiente tranche.
Lo que obtienes
El desembolso produce una cuenta de préstamo, la vista de administración del contrato vivo, que lleva su cronograma, sus transacciones, sus cargos y su historial de auditoría. Continúa en Administrar un préstamo.
Lo que ocurre downstream
El ciclo de vida emite
loan_application.submitted, loan_application.approved, loan_application.rejected, loan_application.withdrawn y loan_application.disbursed, cada uno en la versión de esquema 2.0.0. El desembolso registra una intención de asiento durable y la transmite al ledger. Consulta la ruta de asiento.
La originación brasileña agrega pasos regulados (divulgación de CET y consentimiento de capitalización) que cubre el Paquete regulatorio de Brasil. El flujo de consignado con descuento en nómina forma su propio contexto delimitado brasileño. Consulta Consignado privado.
Próximos pasos
Administrar un préstamo
Registra pagos, anticipa, reprograma y corrige una cuenta de préstamo activa.

