Skip to content
WorkspaceDarkLight
Contents

API reference

LoanManager

A ledger that tells the story. Open the product

GET/v1/loanmanagerOpen ↗

The account from the page’s own query fields, as data

POST/v1/loanmanager/applicationKey

The application against the product version and form published on that day

Body
{catalogue, product, onDay, request, form, answers, applicant}

POST/v1/loanmanager/contractKey

Where a contract stands, from prepared to funded

Body
{contract: {pricing}, events: [{on, to}], asAt}

GET/v1/loanmanager/assessment-copyOpen ↗

When the consumer’s copy of the assessment is due under s 132

Query
requestedYYYY-MM-DD
creditYYYY-MM-DD

POST/v1/loanmanager/accountKey

One loan replayed from its terms and what happened to it

Body
{terms, events, asAt}

GET/v1/lOpen ↗

Calls a lender’s own program makes against the records its hosted pages keep, under /v1/l/<lender id>/: applications from its own front end, sign-in links for its staff, the work queue, case files and every action its staff take on them for a console of its own, the payments and requests its borrowers made, the daily run and the funder pack.

GET/v1/l/:tenant/contract-templatesKey

Your contract templates, and which version of each is published.

POST/v1/l/:tenant/contract-templatesKey

A new template, or one from an example: { "starter": "mutual-nda | services | contractor | referral | variation | personal-guarantee | loan-sacc | loan-macc | loan-personal | loan-car | loan-mortgage | loan-business | loan-business-supplier-pay | loan-business-invoice-advance | loan-business-line-of-credit | loan-business-equipment" }, or { "name", "title", "text", "signers": [{ "label", "side" }], "fields": [] }. Each {{name}} in the wording that is not described becomes a field.

GET/v1/l/:tenant/contract-templates/:idKey

One template: its draft and its latest version.

POST/v1/l/:tenant/contract-templates/:id/publishKey

Publish the draft as the next version. Wording that began as an example needs { "reviewed": true } for real records.

Body
reviewedtrue: it has been reviewed for your use

GET/v1/l/:tenant/contractsKey

Your contracts, newest first, each with its status and who has signed.

Query
status—
q—

POST/v1/l/:tenant/contracts/runKey

Do what is due today: reminders, contracts past their day, notices of an end date and renewals. Where Creditcrest runs your day this happens by itself.

POST/v1/l/:tenant/contractsKey

A contract from a template’s latest version, or from wording of its own. It stays a draft unless "send" is true; then it answers with each signer’s link.

Body
templatea template’s id
titleoptional; the template’s if left out
textwording of its own, or a change for this one
values{ field: value }
signers[{ "role", "name", "email" }]
startsOnYYYY-MM-DD
endsOnYYYY-MM-DD
termMonthswhole months, if there is no end date
renewalnone | remind | auto
links{ "application" | "loan": a reference }
sendtrue to send it now
signWithinDays1 to 30

GET/v1/l/:tenant/contracts/:idKey

One contract, with its history and whether that history is unchanged.

POST/v1/l/:tenant/contracts/:id/sendKey

Send a draft for signature: its document is frozen and fingerprinted, and each signer whose turn it is gets their link, by email where they have one and you may send it. Answers with the links.

POST/v1/l/:tenant/contracts/:id/remindKey

Send a reminder to everyone it is waiting on who has not had one today. Answers with their links.

POST/v1/l/:tenant/contracts/:id/voidKey

Withdraw a draft or a contract out for signature. A signed one cannot be: amend it.

Body
reasonwhy

GET/v1/l/:tenant/contracts/:id/pdfKey

The contract as a PDF, with every signature so far.

GET/v1/l/:tenant/loansKey

Every funded loan, as the LoanManager dashboard lists it: balance, days past due and band, risk class, hardship and flags, with the portfolio’s tiles. Needs that lender’s API key.

Query
statusopen | current | arrears | hardship | closed | paid-out | written-off | written-off-hardship
bandcurrent | 1-30 | 31-60 | 61-90 | 91-120 | 120+
hardshiprequest | undecided | arrangement | any | ever | none
askedstatement (a payout statement still owed) | complaint (a complaint on file)
producta product key
qa loan or application reference, customer id, name or mobile
sortpriority | dpd | balance | principal | next | risk | borrower | reference
pagefrom 1, 25 loans a page

GET/v1/l/:tenant/loans/:loanRefKey

One loan: its account as the ledger runs it today — schedule, every transaction with its allocations, balances, payout figure, hardship — with its repayment history month by month, its score history and the borrower’s requests. Needs that lender’s API key.

GET/v1/l/:tenant/loans/:loanRef/actionsKey

The servicing actions on one loan, as its LoanManager page offers them, for a lender building its own staff console: each with whether it is open on the loan now and why not, the roles that may take it, and its fields — kind (money, day, choice, choices, text or yes), label, whether required, choices and default. With the lastSeq and requestsSeq to send it with. Needs that lender’s API key.

Query
byoptional: a work email on the lender’s staff list, to say whether that person may take each (allowed)

POST/v1/l/:tenant/loans/:loanRef/actionsKey

A servicing action on one loan, taken exactly as its LoanManager page takes it: the same checks, the same ledger, the same webhooks. by is the person it is recorded as, active on the lender’s staff list, and their role there decides what they may do. Written after the lastSeq and requestsSeq sent, so a change made since is a 409 conflict, never written over, and a call sent again is never recorded twice. Answers the events posted and the loan as GET /v1/l/:tenant/loans/:loanRef answers it; a payout statement, the statement too. Not charged: servicing is in the take-rate on each advance. Needs that lender’s own key, live for a lender whose records are live.

Body
actionpayment | settle | dishonour | fee | waive | refund | notice | decide | end-arrangement | write-off | payout-statement | default-notice | customer-paid | security-released
bythe work email of the staff member taking it, active on the lender’s staff list
lastSeqthe loan’s lastSeq, as you read it
requestsSeqthe loan’s requestsSeq, as you read it
amountmoney, for payment, fee, waive, refund, customer-paid
planAmountmoney, for decide
onday, for payment, settle, dishonour, fee, end-arrangement, default-notice, customer-paid, security-released
receivedOnday, for notice
decidedOnday, for decide
untilday, for decide
firstday, for decide
asAtday, for payout-statement
methodchoice, for payment
partchoice, for fee, waive
channelchoice, for notice
outcomechoice, for settle, decide
cadencechoice, for decide
paymentchoice, for dishonour
noticechoice, for decide
requestchoice, for settle, payout-statement
rowchoice, for fee
tochoice, for customer-paid
reasonschoices, for notice
referencetext, for payment, settle, customer-paid, security-released
reasontext, for payment, settle, dishonour, fee, waive, refund, decide, end-arrangement, write-off, default-notice
statedReasontext, for notice
againyes, for payment
overpayyes, for payment
enforcementyes, for fee
confirmyes, for write-off
hardshipReliefyes, for write-off

POST/v1/l/:tenant/applications/prefillKey

What to fill your own form in with, once the applicant has proved both contacts: their details from their last application with you, or — for someone who signed up before applying — the name they saved. {found: false} for anyone else. The same keys as an application, and refused (not_open) while you take only sign-ups.

Body
{contact: {email, mobile, emailToken, mobileToken}}, the tokens POST /v1/identity/contact/check gave back once each code was right

GET/v1/l/:tenant/requests/:loanRefKey

What a borrower asked for on a loan: payments with their state (processing, settled or returned), hardship notices, complaints and payout statements.

GET/v1/l/:tenant/sign-upsKey

The people who signed up before applying and said yes to the lender’s marketing emails: each one’s email address and first name, with the version of the question and when it was answered. Read it again before every send: anyone can say no on their account at any time, and an account not used is deleted. Pages of 200, from ?after=<the last customerId>.

GET/v1/l/:tenant/support/:referenceKey

A hardship notice or complaint given on the support page, by its acknowledgement reference: what was asked, and the name and contact to reply to. The loan reference is as the person typed it, for the lender to match.

POST/v1/l/:tenant/requests/:loanRef/settleKey

Settle or return a payment a borrower asked for. Settled, it becomes the payment on the account, once, whatever the number of times it is sent.

Body
requestSeqthe seq of the payment requested event
outcomesettled | returned
referencethe payment’s reference in the lender’s system
onYYYY-MM-DD, the day; today in Sydney if left out
reasonfor a return, why

POST/v1/l/:tenant/dayKey

The daily run: seals the day before for every funded account, and lists the debits, hardship and complaint deadlines, payout statements, processing payments and messages due. Where the lender’s payments are connected (Zepto, with payment collection allowed), each repayment due today on a loan whose borrower authorised a PayTo agreement is collected — never more than the ledger says is owed that day, one at a time — and goes on the ledger when Zepto reports it settled. It sends nothing else.

Body
asAtYYYY-MM-DD; today in Sydney if left out.

GET/v1/l/:tenant/staffKey

The lender’s staff list, as its Staff page shows it: each person with their id, work email, role and whether they are active — those who may be named in by — and the changes waiting for a second administrator. Needs that lender’s API key.

POST/v1/l/:tenant/staffKey

One change to the staff list, by an operations admin on it, under the Staff page’s own rules: nobody changes their own entry, the last administrator stays one, and a change that gives a senior analyst’s or an administrator’s role (or stops requiring a passkey) waits for a second administrator where there is one. Needs that lender’s API key.

Body
{by, seq, op, …}: op is add | role | deactivate | reactivate | reset-passkeys | passkey-rule | approve | reject. add takes name, email, role; role takes id, role; deactivate, reactivate and reset-passkeys take id; passkey-rule takes roles ([] or ["senior"]); approve and reject take request. seq is the list’s, as read.