Due diligence & closing
What happens between an accepted offer and a sold vehicle — every step evented, every document as data.
TL;DRAI summary
After accepting an offer, this chapter explains the step-by-step closing process for a vehicle sale. You’ll see how money, legal documents, and physical release are handled, with events at each stage to keep you informed.
Acceptance is not the sale. A used vehicle changing hands involves money movement, legal paper, titles, and physical release — and deals genuinely fall through here. Cypress structures all of it as a step-by-step closing that both sides walk together, and your webhooks narrate every step, not just the bookends.
Why this matters to an integrator
A partner's back office usually reconciles three things: did the paper get signed, did the money arrive, and what were the exact figures. The closing events answer all three as structured data — including the full bill-of-sale payload — so nothing requires a human reading a PDF.
The closing pipeline
Deals opened before the six-step shape shipped still carry their original
nine rows (BUYER_SIGN, PAYMENT and TITLE_RECEIPT among them) until
they are migrated. Key your integration off each step's stepKey, never its
number or the total count — the same number names different steps on the two
shapes.
The steps, from a seller's perspective
Fee & data sheet. The commission settles and both sides confirm the deal's facts — parties, payment routing, delivery location — on a shared data sheet. That sheet becomes the single source every document renders from.
Bill of sale. Generated from your org's template against the data
sheet — CLOSING.DOCUMENT.GENERATED fires with the complete data-sheet
JSON the render used. Both parties sign in this one step, in the order
the template declares; CLOSING.DOCUMENT.SIGNED delivers the executed copy
(fresh presigned link) plus the same structured payload, and the last
signature completes the step.
Payment & funds. The buyer pays against the instructions on the bill of
sale, off the rail. The seller confirms receipt and records the method —
CLOSING.PAYMENT.RECEIVED (with method and reference) plus the step's own
STEP.COMPLETED. Confirming here also generates the gate pass.
Release & title. The gate pass authorizes physical release on the
seller's signature, the title ships with tracking (a cheque deal holding
until the funds are confirmed cleared), and pickup completes the deal:
LISTINGS.PURCHASED + CLOSING.COMPLETED, sale price final.
The bill of sale as data
The document events carry the paper's contents, not just a link:
{
"eventType": "CLOSING.DOCUMENT.SIGNED",
"resource": "closing",
"body": {
"documentName": "bill-of-sale-v3.pdf",
"documentUrl": "https://…presigned, ~1h…",
"stepKey": "BOS",
"data": {
"sale.price": 21900,
"sale.date": "2026-08-19",
"vehicle.vin": "1FTFW1ET5DFC10312",
"vehicle.odometer": 88500,
"seller.legalName": "NU Relay LLC",
"payment.recipient": "LENDER"
},
"provenance": {
"sheetRevision": 4,
"signaturePlan": [
{ "role": "SELLER", "order": 1 },
{ "role": "BUYER", "order": 2 }
]
}
}
}data is the closing data sheet's field map — the exact values the template
rendered. Field keys follow your org's document templates; treat unknown
keys as forward-compatible.
Deals can fail
CLOSING.CANCELLED carries the reason, the responsible party
(seller/buyer/Cypress), and the vehicle's next disposition — back to market,
archived, or sold. Your listing row reflects the outcome with the matching
lifecycle event.