Floating vs. locking
When a borrower selects a product structure, there are two ways to move the loan forward:Float (floatStructure) | Lock (confirmRateLock) | |
|---|---|---|
| Initial disclosures dispatched | ✅ Yes | ✅ Yes |
| Product structure committed | ✅ Yes | ✅ Yes |
| Interest rate locked | ❌ No | ✅ Yes |
| Protected from rate increases | ❌ No | ✅ Yes |
| Can capture rate decreases | ✅ Yes | ❌ No (without a float-down) |
Floating is not the same as simply attaching a product structure. Attaching a product structure starts a 3-business-day timer after which initial disclosures auto-fire. Floating dispatches those initial disclosures immediately, on demand, without waiting for the timer and without locking the rate.
Why float instead of lock?
Floating is useful when a borrower is ready to move forward with the loan process but is not yet ready to commit to a rate:- Begin processing sooner — Dispatching initial disclosures lets borrowers sign, establish ITP, and trigger order-outs (appraisal, title, verifications) without waiting to lock.
- Keep rate optionality — The borrower stays exposed to the market and can lock later if rates improve, rather than committing to today’s rate.
- Compress timelines — Because disclosures and order-outs can start before the lock decision, the loan can be further along by the time the rate is locked.
How floating works in Pylon
Float a product structure with thefloatStructure mutation, which takes the loan ID:
floatStructure validates the loan, then dispatches the initial disclosure package for the loan’s committed product structure. It deliberately does not lock the rate, send a lock notification, or run any post-lock change-of-circumstance workflow—it only performs the pre-lock half of the flow.
Preconditions
A loan can only be floated when all of the following are true. If any check fails, the mutation rejects with a client-correctable error:- AUS must pass — The latest AUS run must allow locking. If AUS has not been run or has not passed, the mutation rejects with
AUS_LOCK_NOT_ALLOWED(HTTP 412). - The loan must not already be rate locked — A locked loan cannot be floated; the mutation rejects with
LOAN_ALREADY_LOCKED(HTTP 403). - The loan must not be frozen — A loan whose initial disclosures have already been sent is frozen and cannot have a second disclosure package dispatched.
- Initial disclosures must not already have been dispatched — If an initial disclosure package is already in flight or has completed successfully, the mutation rejects with
LOAN_INITIAL_DISCLOSURES_ALREADY_DISPATCHED(HTTP 412). This guarantees a borrower never receives duplicate initial disclosures. (A previously failed disclosure send does not count as dispatched, so it can be safely retried.)
Checking whether a loan is floated
TheLoan type exposes a derived isFloated boolean. A loan is floated when its initial disclosures have been sent but its rate is not yet locked:
isFloated as the canonical signal that a loan has begun the disclosure process but still has an open rate decision. A floated loan is also frozen (isFrozen is true), because its initial disclosures have been sent and its product structure can no longer be changed.
Lifecycle: from float to lock
A typical floated loan moves through these states:- Product structure attached — The borrower commits to a product. The 3-business-day disclosure timer starts.
- Floated —
floatStructuredispatches initial disclosures immediately. The loan is now frozen,isFloatedis true, and the rate remains unlocked. - ITP established — Borrowers sign their initial disclosures, establishing Intent to Proceed (ITP) and triggering order-outs.
- Locked — When the borrower is ready,
confirmRateLocklocks the rate.isFloatedbecomes false (the rate is nowLOCKED) and the loan proceeds through processing toward closing.
Related concepts
- Rate lock - The second half of the flow, where the interest rate is committed
- Intent to Proceed (ITP) - Established when borrowers sign the disclosures that floating dispatches
- Automated Underwriting System (AUS) - Must pass before a loan can be floated
- TRID (TILA-RESPA Integrated Disclosure) - The regulation governing the initial disclosures that floating sends
- Disclosures - How to retrieve and track the disclosures dispatched by floating
- Loan - Where
isFloatedand rate lock state are managed