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.
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
| Header | Required | Notes |
|---|---|---|
X-Channel | Yes | Your channel code (for example NextGenMalE). |
X-External-Ref | Yes | Your submission reference; the key matched on replay and resubmission. |
X-PreSubmission-Ref | No | The pre-qualification quote's psr_ uid; the linkage key for the application and its documents. |
X-Partner-Scenario-Reference | No | Your 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 Acceptedfor a new submission, or a resubmission that carries changes;200 OKwhen the sameX-Channel+X-External-Refis replayed with an identical body.submissionUid: Slate's reference for this submission.status:Received,Processing,Completed,Failed,Rejected, orDuplicate. Processing is asynchronous; the application is built in the background.applicationRef: the created application's reference (for exampleapp_...), populated once the submission completes; null until then. On a resubmission the application already exists, so the ref is present even atReceived.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 whenstatusisFailedorRejected, 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.