Jurisdiction
XX books no credit. Lender refuses its products, versions, and applications with 422. Read the Brazil regulatory pack for what the BR profile adds to this path.What an application binds to
An application binds to a product version, never to a product on its own. The version pins the currency, the rate terms, and the accrual basis, so a contract always traces back to the terms it was created under. A later version does not change a loan that already exists. The product must be active, and the version must be the one the product currently originates on. Activation requires an accounting profile on the version. The disbursement builds its posting from the profile’s legs. See Define a loan product.
Preview, if you want it
Schedule preview computes the installments and the cost disclosure for prospective terms. When it records the result as an offer, it returns the offer’s identifier. It creates no application. Use it to show a borrower what the loan looks like before anyone commits. This step is optional.
Submit
The submit call creates the application in
pending_approval. It carries the product version, the borrower and the borrower kind, the requested principal, the requested monthly interest rate, the number of installments, and an expected disbursement date. Lender accepts up to 600 installments. The requested rate must fall inside the version’s rate band.
The body does not carry the assigned officer. Lender takes it from the authenticated subject of the submit call. Later decisions are checked against that officer, so submit with the identity that will also approve and disburse.
Decide
Exactly one decision resolves a pending application.
An approved application can still be withdrawn.
rejected and withdrawn are final, and nothing moves out of them.
The approved amount is a limit, not a payment. It bounds every disbursement that follows.
Disburse
Disbursement moves money, so it carries the most guards. Three things belong in the request:
- An
X-Idempotencyheader. Lender requires it on this operation. - The loan account identifier. It is a UUID you choose, and Lender does not mint one for you. That identifier addresses the schedule, the transactions, the charges, and the audit trail.
- The gross requested amount and the net delivered amount.
Under
BR the withholding is IOF. Quote it before you disburse with the tax preview in the Brazil regulatory pack.
One transaction, four results
A disbursement is a single database transaction. Four things happen inside it.
1
The application becomes disbursed
Lender appends a disbursement event that records the amounts, the date, and the actor who disbursed.
2
Lender writes the schedule
Lender computes a Price (French) amortisation schedule over the cumulative disbursed principal. It stores the result as schedule version 1, with the change reason
origination.3
The jurisdiction pipeline runs
Under
BR the pipeline computes the IOF withholding.4
Lender enqueues the posting intent
Lender writes a balanced posting intent to the outbox: principal debited at gross, cash credited at net, one credit for each withholding, and one credit for a retained origination fee.
approved.
More than one tranche
You can disburse an approved application more than once. The status stays
disbursed, Lender appends another disbursement event, and Lender writes a new schedule version over the cumulative principal. The new version supersedes the previous one on read.
The total across tranches still cannot exceed the approved amount, and every tranche uses the same loan account identifier.
Two callers, one application
Every lifecycle write states the status it expects to find. When two callers decide the same application at the same time, one wins and the other receives
409 Conflict without changing anything. A repeated disburse that does not match the first one is refused the same way.
The state model
What you have at the end
- An application that reads
disbursed, with one disbursement event per tranche. - A loan account under the identifier you supplied, carrying its schedule, its transactions, its charges, and its audit events.
- A posting intent on the way to the ledger. That booking is asynchronous, so it lands shortly after the request returns rather than during it.
- One lifecycle event on the event backbone for each transition.
Next steps
Service a loan
Record repayments, prepay, reschedule, and correct an active loan account.
Lender architecture
The domains, the jurisdiction seam, and the outbox that carries money out.
Accounting and accrual runs
Posting rules, accrual runs, and the journal reference that ties a booking back.
Brazil regulatory pack
IOF, CET, capitalization consent, and the rest of the Brazilian profile.

