Price a deal and find where it can be approved
Runs the calculator and the Approval Matrix over one payload and returns the join: each financier that can both price the deal and approve it, with the rate and repayment from the cheapest rate card that financier accepts.
The request is the union of the two tools’ fields, so anything either accepts is accepted here. Two differences from the standalone surfaces:
termis required. Matrix treats it as optional because a broker without a term in mind can still ask who would approve a deal. There is no repayment without a term, so the combined tool demands it.- Commercial only.
typeacceptscommercial; consumer pricing carries its own entitlement and commission columns and is not folded in yet.
home_owner and asset_owner are the same question under the two
tools’ names. Send either; sending both with different values is
rejected rather than silently resolved.
The rate bracket is the join key, so a financier appears only when
it can do both. An approval whose brackets were all filtered out by
pricing has no rate to show and is omitted — it still appears in
the standalone Matrix, which is the tool for that question. This is
why destination_count can exceed the length of results.
Requires the matrix.enabled entitlement, and
surfaces.matrix_calculator on GET /api/v1/feature-flags to
be available. A run decrements both the
calculator and Matrix daily allowances, because it consumes both
engines.
If one engine fails and the other succeeds, the response is a 200
with degraded naming the missing half and the surviving half
returned unjoined. An empty results with degraded: null means
no financier matched; degraded set means the check could not be
completed. The two are deliberately distinguishable.
Authentication
JWT access token obtained from POST /api/v1/auth/login, or a finput_sk_... API token
Headers
Which client is asking, so every message in the response is worded for it. ios and android get sentences that state a fact and nothing more: no plan, no price, no link. Absent means web, which keeps its existing wording. An unrecognised value is treated like ios and android.
Request
Asset cost. Compared GST-inclusive against an approval's min_asset_cost / max_asset_cost. A negative cost is rejected.
Asset ID from GET /api/v1/assets/search.
Months. Required here even though Matrix treats it as optional — there is no repayment without a term.
Whether payments are made at the start or end of each period. none prices in arrears.
none prices monthly.
Whether cost already includes GST.
ABN age (months).
GST registration age (months).
Asset age (months). Derived from year_model when that is sent instead.
Build year, used to derive asset_age.
Youngest borrower's age (years). Tested against the approval's minimum — every borrower has to sit inside the band.
Oldest borrower's age (years), tested against the maximum. A single-borrower deal can send borrower_age instead and the API mirrors it into both ends.
Shorthand for a single-borrower deal.
Age of the borrower's credit file, in months — not the deal file. Months to match every other age criterion on the form (ABN age, GST age, asset age); it was days until the unit was unified.
The borrower's credit score. A different criterion from file_age: this is the score, that is how long the file has existed, and an approval can gate on either or both.
ANZSIC division. See GET /api/v1/approvals/options.
Restrict results to these organisation (financier) IDs.
Treat deposit as a percentage of cost rather than dollars.
Treat balloon as a percentage. A percentage above 100 is rejected; a dollar balloon above 100 is ordinary.
The calculator's name for home_owner. Send either; both with different values is rejected.
Loan-to-value ratio as a percentage of asset value. Cards whose max_lvr is below this drop out.
Response
Approvals that were not ruled out. Can exceed the length of results, because an approval with no priced rate bracket has no rate to show and is omitted from the join.
Null on a healthy run. Set when one engine failed and the other succeeded, naming the missing half (rates for the rate engine, approvals for the approval checks) — so an empty results can be told apart from "we could not check".
Present only on a degraded run where the rate engine survived: the unjoined rate cards, so the broker still sees something useful.
Present only on a degraded run where the approvals lookup survived: the unjoined Matrix groups.