Skip to main content

Submission

The submission stage of the loan lifecycle. Once the borrower proceeds from the pre-submission serviceability check, lodge the full application. The application is the same LIXI CAL package as the serviceability check, fleshed out with identity, employment, dependants, and the security contract; the shared shape is documented in LIXI CAL field mapping.

Consent (target behaviour)

Submitting to Slate lodges the application with the lender. In phase one there is no separate broker consent modal; consent is handled out of band, via a magic link or a confirmation screen. A richer in-flow consent step is deferred to phase two.

Submit an application

Submissions are keyed on the X-Channel + X-External-Ref header pair. Resending the same reference with an identical body returns the existing submission rather than creating a duplicate; resending it with a changed body is reprocessed as a resubmission against the existing application, not a new submission. Pass the preSubmissionRequestUid (the psr_ uid) from the pre-qualification quote in the optional X-PreSubmission-Ref header to link the application, and any documents uploaded against that preSubmissionRequestUid, to its serviceability check.

Request

POST https://api.slateos.ai/api/v1/channel-submissions/xml
Authorization: Bearer <token>
Content-Type: application/xml
HeaderRequiredNotes
X-ChannelYesYour channel code (for example NextGenMalE).
X-External-RefYesYour submission reference; the key matched on replay and resubmission.
X-PreSubmission-RefNoThe pre-qualification quote's psr_ uid; the linkage key for the application and its documents.
X-Partner-Scenario-ReferenceNoYour own non-unique trace reference for your records; not the linkage key.

The body is the full LIXI CAL application package (applicants, employment, assets, liabilities, security, loan details). Submit a single proposed loan: one LoanDetails plus the security. Slate derives any internal split (primary plus deposit boost) server-side, so you do not send the splits yourself.

Example application

A complete owner-occupier purchase for two applicants, fleshing out the pre-qualification scenario FIN-SCENARIO-9281 from the quickstart. The monetary values match that serviceability quote (income, expenses, the credit card, the $608,000 loan, the $640,000 security); LIXI CAL carries them as decimal dollars rather than the cents the JSON uses. Identity, employment, dependants, and the security contract are the submission-only sections the serviceability call does not need. See LIXI CAL field mapping for how each element is read.

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://www.lixi.org.au/schema/cal2_6">
<Content>
<Application>
<!-- Applicant 1 -->
<PersonApplicant DateOfBirth="1990-01-15" Gender="Female">
<PersonName NameTitle="Ms" FirstName="Sarah" Surname="Taylor"/>
<Employment EmploymentType="PAYG">
<PAYG Occupation="Registered Nurse">
<Income GrossSalaryAmount="72000.00" GrossSalaryFrequency="Annual"/>
</PAYG>
</Employment>
<Contact>
<CurrentAddress>
<x_ResidentialAddress>
<addressType AustralianState="VIC" AustralianPostCode="3000"/>
</x_ResidentialAddress>
</CurrentAddress>
</Contact>
</PersonApplicant>
<!-- Applicant 2 -->
<PersonApplicant DateOfBirth="1991-01-29" Gender="Male">
<PersonName NameTitle="Mr" FirstName="Daniel" Surname="Cooper"/>
<Employment EmploymentType="PAYG">
<PAYG Occupation="Software Developer">
<Income GrossSalaryAmount="48000.00" GrossSalaryFrequency="Annual"/>
</PAYG>
</Employment>
<Contact>
<CurrentAddress>
<x_ResidentialAddress>
<addressType AustralianState="VIC" AustralianPostCode="3000"/>
</x_ResidentialAddress>
</CurrentAddress>
</Contact>
</PersonApplicant>

<Household NumberOfDependants="2">
<Dependant DateOfBirth="2017-06-12"/>
<Dependant DateOfBirth="2019-09-03"/>
<ExpenseDetails>
<LivingExpense Category="Groceries" Amount="1000.00" Frequency="Monthly"/>
<LivingExpense Category="Transport" Amount="450.00" Frequency="Monthly"/>
<LivingExpense Category="Insurance" Amount="350.00" Frequency="Monthly"/>
<LivingExpense Category="Childcare" Amount="600.00" Frequency="Monthly"/>
<LivingExpense Category="Medical and health" Amount="300.00" Frequency="Monthly"/>
<LivingExpense Category="Recreation and entertainment" Amount="500.00" Frequency="Monthly"/>
</ExpenseDetails>
</Household>

<Liability Type="Credit Card" OutstandingBalance="8500.00" CreditLimit="15000.00">
<Repayment RepaymentAmount="250.00" RepaymentFrequency="Monthly"/>
</Liability>

<LoanDetails AmountRequested="608000.00">
<Term TotalTermDuration="30" TotalTermType="Years"/>
</LoanDetails>

<RealEstateAsset PrimaryPurpose="OwnerOccupied">
<PropertyType CategoryTypeName="Established" PropertyTypeCode="House"/>
<ContractDetails ContractPriceAmount="640000.00" DepositPaid="40000.00" EstimatedSettlementDate="2026-08-15"/>
<Valuation Type="Estimated" Value="640000.00"/>
</RealEstateAsset>
</Application>
</Content>
</Package>

This is a single proposed loan: one LoanDetails plus the security. Slate derives any primary plus deposit-boost split server-side.

Response

{
"submissionUid": "csub_01ARZ3NDEKTSV4RRFFQ69G5FAV",
"status": "Received",
"applicationRef": null,
"magicLinkUrl": "https://<lender-portal>/<opaque-token>"
}
  • 202 Accepted for a new submission, or a resubmission that carries changes; 200 OK when the same X-Channel + X-External-Ref is replayed with an identical body.
  • submissionUid: Slate's reference for this submission.
  • status: Received, Processing, Completed, Failed, Rejected, or Duplicate. Processing is asynchronous; the application is built in the background.
  • applicationRef: the created application's reference (for example app_...), populated once the submission completes; null until then. On a resubmission the application already exists, so the ref is present even at Received.
  • magicLinkUrl: a passwordless URL the broker opens to confirm and consent, review status, and respond to More Information Required (MIR) requests against the application. See MIR magic link. Target field; not yet built, and its shape and lifetime are not yet finalised.
  • error: human-readable failure detail; present when status is Failed or Rejected, otherwise absent.

See the Error Reference for the 400 / 403 / 409 / 422 responses.

Track the application

Once lodged, the application moves through its lender lifecycle. Track it through back-channel messages or polling on the Status updates page.

Resubmission

To correct or re-lodge an application, see Resubmission. You resend the same call with the same identifiers; Slate reprocesses the existing application rather than creating a new one.