cypress.DOCS
Log inRegister
Cypress Docs
Developers

Closings

The closings of the cars you sold and bought, step by step, with who carries each deadline and whose turn it is.

TL;DRAI summary

This chapter explains how your systems can track a vehicle sale as it moves from a deal to actual pickup. You can see all the steps needed, like paying the commission or getting a gate pass, and who is responsible for each one. This helps you manage your workflow efficiently.

Dive deeper:

After an offer is accepted, a closing takes the car from a deal to a pickup: the commission fee, the Bill of Sale, the funds, the gate pass, the title and the pickup. The API reads every closing your organization is a party to, so your systems and agents can see what is waiting, on whom, and by when. Since 1.5.0.

ScopeGrants
closing:readGET /api/v1/closings and GET /api/v1/closings/{id}, and subscribing to CLOSING.STEP.DUE, CLOSING.STEP.OVERDUE and CLOSING.DOCUMENT.REQUESTED
closing:writeEverything closing:read grants, plus reminding, asking for a document, re-sending a signing link and marking your own steps done

Neither is a default scope. Both an API key and a Connect Cypress token are accepted.

Read

curl "$BASE/api/v1/closings?status=IN_PROGRESS&yourTurn=true" -H "authorization: Bearer $TOKEN"
curl "$BASE/api/v1/closings/cls_…" -H "authorization: Bearer $TOKEN"

Each closing says which side you are on, SELLER for a car you sold and BUYER for one you bought, and lists its steps:

FieldMeaning
keyFEE, BOS, CONFIRM_FUNDS, GATE_PASS, TITLE, PICKUP. Older closings may also carry BUYER_SIGN, PAYMENT and TITLE_RECEIPT. Key off this, never the step number
deadlineOwnerWho carries the step's deadline: SELLER on a self-serve channel (a direct link or your storefront), where your team does the paperwork, else CYPRESS
turn, yourTurnWho must act now on an open step: SELLER, BUYER or CYPRESS. On the Bill of Sale it follows the signatures: the seller signs first, then the buyer
dueDate, overdueThe step's deadline, set when it unlocks, and whether an open step is past it
documentsThe latest document in each slot, with its signatures
titleShipmentThe title's carrier and tracking number, once the seller sent it

currentStep is the first open step that holds the closing up. requirements lists the documents the closing needs, what fills each, whether Cypress waived it, and whether it is satisfied.

What each side sees

  • Signing links are your own side's. Each signature names its party and status; only your side's carry signingLink and email. An outside signer is emailed by Cypress's signing service and has neither.
  • The commission is the seller's. The FEE step, and any requirement on it, is in the seller's view only.
  • No money detail, and the other party by name only. No payment instructions, bank or lender accounts, invoices, amounts paid or references. price is the agreed price. counterparty names the other company (its side and its organization's name, as the closing page in the app shows it): it is your own trade, and the Bill of Sale names both. Never a person or a contact detail.
  • Only your closings. Another company's closing answers 404, as one that does not exist.

Move a closing along

Three acts, none of which changes a step: they tell the people who must act. Each takes ?dryRun=true to see what would happen and an Idempotency-Key for safe retries, is recorded in your audit log with the key or app that did it, and can be repeated only after a while (a 409 carries retryAfter).

# Remind whoever's turn the Bill of Sale is
curl -X POST "$BASE/api/v1/closings/cls_…/steps/BOS/remind" -H "authorization: Bearer $TOKEN"

# Ask for a document a requirement still lacks
curl -X POST "$BASE/api/v1/closings/cls_…/document-requests" \
  -H "authorization: Bearer $TOKEN" -H "content-type: application/json" \
  -d '{ "requirementId": "req_…" }'

# Email a signer their signing link again
curl -X POST "$BASE/api/v1/closings/cls_…/documents/doc_…/signatures/buyer/resend" \
  -H "authorization: Bearer $TOKEN"
ActWho hears itAgain after
RemindWhoever's turn the step is: the seller's fleet managers and admins (with your account manager copied), the buyer, or CypressAn hour
Ask for a documentWhoever does the requirement's step: the seller for most papers, the buyer for the pickup's. Both sides' systems also get CLOSING.DOCUMENT.REQUESTEDAn hour
Re-send a signing linkThe signer, by email from Cypress's signing service. The seller may re-send to anyone on the document; a buyer to its own signers. Signing goes in order, so a link is not re-sent before its signer's turnTen minutes

Mark your own steps

Your side's own steps can be marked done through the API. The same step action the app runs does the work, with the same checks, notifications and events:

SideStepActionFields
SellerCONFIRM_FUNDSconfirm_fundsmethod (ACH or CHECK), reference, carrier, note
SellerGATE_PASSissue_gate_passaddress, city, state, zip
SellerTITLEsubmit_title_trackingcarrier, trackingNumber, titleHolder, titleHolderType, titleHolderAddress
SellerTITLEconfirm_check_clearednone (check payments only)
BuyerPICKUPconfirm_pickupnone; it completes the sale
curl -X POST "$BASE/api/v1/closings/cls_…/steps/GATE_PASS/actions" \
  -H "authorization: Bearer $TOKEN" -H "content-type: application/json" \
  -d '{ "action": "issue_gate_pass", "address": "1 Lot Rd", "city": "Austin", "state": "TX", "zip": "78701" }'

The answer is the step's and the closing's status afterwards. The other side's step is 403 POLICY_DENIED; a step that is not open yet, or a requirement still missing, is 409. Cypress's own actions, such as approving a Bill of Sale, are never offered.

Deadlines as events

Three events follow a closing while it waits on someone:

EventWhen
CLOSING.STEP.DUEAn open step's deadline is less than 12 hours away
CLOSING.STEP.OVERDUEAn open step's deadline has passed
CLOSING.DOCUMENT.REQUESTEDSomeone asked for a document a requirement still lacks; the body names the requirement, who it is askedOf, who requestedBy, and yourDocument
  • Both sides hear them. Unlike the other CLOSING.* events, which go to the seller, these go to the seller and to the buyer, each in its own organization. The commission step's go to the seller only.
  • They say whose turn it is. The body is the step as your side sees it:
{
  "closingId": "cls_…",
  "side": "BUYER",
  "vehicleId": "clx…",
  "step": {
    "key": "PICKUP", "number": 6, "label": "Vehicle pickup",
    "deadlineOwner": "CYPRESS", "turn": "BUYER", "yourTurn": true,
    "dueDate": "2026-10-16T09:00:00.000Z"
  }
}
  • Once each. A step is told once per deadline; a deadline that moves is told again.
  • Opt-in. Only a Cypress-dialect subscription that lists the event gets it, and subscribing needs closing:read. The envelope's href is /api/v1/closings/{id}.