The application
You submit a registered client, a configuration version, a requested principal, a reference of your own, and a value for every declared attribute the adopted version reads.submitted_on is stated rather than taken from a clock. The Platform supplies no today, so how stale your own facts are allowed to be is measured against a day you name.
Every declared value carries the day you hold it to be true. A value dated after submitted_on is refused, and one older than its attribute’s maximum age is refused naming the attribute, the day and the bound. Without it, an income last confirmed two years ago is indistinguishable from one confirmed this morning, and a decision that cannot say how old its inputs were cannot be judged later on whether it was reasonable when it was made.
Evaluation order
Evaluation is a pure function of the application as read and the version named. It reads no clock and no store, so the same application under the same version yields the same score, the same trace and the same outcome whenever it is decided.Derived attributes are computed
Once, up front, from the declared values and the requested principal. They are recorded beside the declared ones.
Every knockout is evaluated
All of them, not only up to the first that fires. A refusal names every knockout that fired, because which cause was preponderant is unanswerable if evaluation stopped early. Where several fire,
refuse wins over not_offered, and not_offered over refer.The score falls in one cutoff band
That band’s outcome is the answer, unless a knockout already settled it.
refer, and the trace names which rule could not be evaluated. Content the Platform validated before serving should make that unreachable, and an inability to evaluate is never presented as an evaluation.
Outcomes
Refer exists so that an application the Platform will not settle is never dressed as one it settled against the applicant. A person nobody assessed does not acquire a refusal in the record.
Not offered exists for the same reason from the other side. “A first loan is the short product only” is a statement about what you sell, never about the person, and a policy that could only refuse would put an adverse record on every first-time client who asked for the product they are not yet sold. A
not_offered Decision bars nothing, no count of refusals includes it, and no surface presents it as a refusal or a referral. Only a knockout may answer it, never a cutoff band. Your integration reads it by stating outcomes: four on the application; one that has not is refused before anything is read rather than answered a word it was not built to parse.
A refer becomes something else in one way only: a person at your tenancy resolves it. Otherwise it is the final answer to the application that received it; gather what was missing and submit a new application under a new reference, which is decided on its own inputs and recorded on its own.
Resolving a refer
An administrator of your tenancy may settle arefer at the console, as a person: POST /console/v1/tenants/{tenant_id}/credit-decisions/{decision_id}/resolution. A tenant API key cannot, and neither can an agent. A resolution is a credit judgement somebody signs.
The resolution is its own record beside the decision. The decision reads exactly as recorded, still
refer, with its score, band and trace, and carries the resolution next to it: who, when, why, and the zone the moment is read in. A decision states awaits_resolution: true for a refer nobody has resolved, false for everything else.
A resolved approval grants a Facility on the resolution’s principal and rate. A resolved refusal with a moratorium bars the client exactly as a refusing decision does, counted from the day of the resolution.
A refusal is never resolved. Departing from an outcome the policy settled is a different act, and calling it a resolution would be the override the record exists to keep out.
The Platform makes no counter-offer. When the score lands in a band whose ceiling is below what you asked for, the answer is a refusal naming the ceiling, which tells you exactly what a new application should ask.
Invalid inputs
A refusal about the applicant is a decision. A refusal about the request is not, and nothing is written for it.
The distinction is the record’s honesty. A client refused because the request was malformed was not refused credit, and a record that cannot tell the two apart turns every typo into an adverse fact against a person.
A malformed application names everything wrong with it at once, so correcting it takes one round trip rather than several.
The corridor refusal is worth its own sentence: a policy and a configuration that disagree about the price are two of your own documents in conflict, not a fact about the applicant, and recording it as a credit refusal would put somebody’s name on a configuration mistake.
References
Every application carries a reference you choose, unique within your tenancy, with the grammar of a client identifier: 1–64 characters ofa–z A–Z 0–9 - _.
A retry after a lost response is the same application named twice, and it answers the same decision. Two decisions under one reference is a which-did-you-mean the Platform will not answer on your behalf.
One purchase, several products
One purchase that may be sold under several Configurations is one application, decided across a menu. The application is read once — every declared value validated once, every Source read once under the one consent — and decided under the policy version adopted for each Configuration named. One Decision is recorded per Configuration, each whole, all under your one reference, and answered together: approved on the short product,not_offered on the long one. Deciding per product one call at a time would spend a consulta per product under a consent that authorised one.
A Configuration with nothing adopted refuses the whole menu, and nothing is recorded. A repeat answers the recorded Decisions only when it names the same Configurations in the same order.
A facility in the same act
An application may state afacility window. Where the Decision is an approval, a Facility is created from it in the same request, exactly as a separate creation would create it, and answered with the Decision; anything else grants nothing, and the answer says granted: false. The window is held to the same bound a separate creation is, before any Source is read, so a window beyond it costs nothing. Creating the Facility separately afterwards answers the one already created.
What is recorded
A decision is recorded whole and never altered. It carries everything needed to explain it without anything else being fetched.
A decision belonging to another tenancy answers exactly as one that never existed.
Moratorium and bar
A refusal decided under a cutoff band or a knockout that carries a moratorium binds against re-application for that many whole days. Where several fired knockouts carry one, the longest binds.mx-base version 1 attaches 30 days to its below-the-cutoff band.
The bar counts from the decision’s bound_from: the application’s submitted_on where that day is earlier than the day the decision was recorded on, and the recording day otherwise. A book written in the past, a sandbox’s or a migrated portfolio’s, bars and lifts as the dates it states.
Ask whether a client is barred on a day, and the Platform answers from the recorded decisions rather than from anything stored beside the client, so the answer cannot disagree with them. Where several refusals bar a client at once, the answer is the latest day any of them lifts.
A refer a person resolved as a refusal with a moratorium bars the same way, counted from the day it was resolved. The bar names the decision the resolution settled.
Whether deciding consults the bar is your choice per configuration, stated on the adoption.
What it binds
A decision binds nothing on its own. Issuance does not read one, and a loan can be issued on terms no decision approved. What turns an approval into something issuance honours is a Facility: you create one from an approving decision, or from arefer resolved as an approval, and every loan drawn under it is held against the amount, the price, the client, the product and the window that decision fixed.
A loan may also name a decision directly, with or without a grant. That reference binds nothing at all. It exists so that what became of a loan can be joined to what decided it.