Lifecycle
State machines for quotes, financing, contracts and quote requests — generated directly from the code, so they always match the API.
These diagrams show the complete server-side lifecycle of each workflow. Transitions happen through different channels — the partner UI, the customer, inbound webhooks or scheduled jobs, and for a few, direct API calls. For the operations you can trigger yourself, see the API Reference.
Quote Lifecycle
The full server-side state machine of a rental quote, from draft to completion.
graph TB
place0(["in_progress"])
place1(("in_review"))
place2(("review_expired"))
place3(("change_requested"))
place4(("accepted_by_customer"))
place5(("rejected_by_customer"))
place6(("finance_review"))
place7(("manual_finance_review"))
place8(("finance_questions"))
place9(("finance_accepted"))
place10(("finance_rejected"))
place11(("completed"))
place12(("canceled"))
place0-->|"finalize"|place1
place2-->|"reactivate"|place1
place3-->|"apply_changes"|place1
place1-->|"accept_by_customer"|place4
place0-->|"accept_by_customer"|place4
place4-->|"request_finance_review"|place6
place0-->|"request_finance_review_direct"|place6
place6-->|"finance_accept"|place9
place7-->|"finance_accept"|place9
place8-->|"finance_accept"|place9
place10-->|"finance_accept"|place9
place9-->|"complete"|place11
place1-->|"request_changes"|place3
place6-->|"finance_needs_help"|place8
place7-->|"finance_needs_help"|place8
place4-->|"start_manual_finance_review"|place7
place0-->|"start_manual_finance_review"|place7
place1-->|"reject_by_customer"|place5
place1-->|"expire"|place2
place0-->|"cancel"|place12
place1-->|"cancel"|place12
place2-->|"cancel"|place12
place3-->|"cancel"|place12
place4-->|"cancel"|place12
place5-->|"cancel"|place12
place6-->|"cancel"|place12
place7-->|"cancel"|place12
place8-->|"cancel"|place12
place9-->|"cancel"|place12
place10-->|"cancel"|place12
place11-->|"cancel"|place12
place6-->|"finance_reject"|place10
place7-->|"finance_reject"|place10
place8-->|"finance_reject"|place10
place10-->|"finance_resume"|place9
Transitions (text alternative)
| Transition | From | To |
|---|---|---|
| finalize | in_progress | in_review |
| reactivate | review_expired | in_review |
| apply_changes | change_requested | in_review |
| accept_by_customer | in_review | accepted_by_customer |
| accept_by_customer | in_progress | accepted_by_customer |
| request_finance_review | accepted_by_customer | finance_review |
| request_finance_review_direct | in_progress | finance_review |
| finance_accept | finance_review | finance_accepted |
| finance_accept | manual_finance_review | finance_accepted |
| finance_accept | finance_questions | finance_accepted |
| finance_accept | finance_rejected | finance_accepted |
| complete | finance_accepted | completed |
| request_changes | in_review | change_requested |
| finance_needs_help | finance_review | finance_questions |
| finance_needs_help | manual_finance_review | finance_questions |
| start_manual_finance_review | accepted_by_customer | manual_finance_review |
| start_manual_finance_review | in_progress | manual_finance_review |
| reject_by_customer | in_review | rejected_by_customer |
| expire | in_review | review_expired |
| cancel | in_progress | canceled |
| cancel | in_review | canceled |
| cancel | review_expired | canceled |
| cancel | change_requested | canceled |
| cancel | accepted_by_customer | canceled |
| cancel | rejected_by_customer | canceled |
| cancel | finance_review | canceled |
| cancel | manual_finance_review | canceled |
| cancel | finance_questions | canceled |
| cancel | finance_accepted | canceled |
| cancel | finance_rejected | canceled |
| cancel | completed | canceled |
| finance_reject | finance_review | finance_rejected |
| finance_reject | manual_finance_review | finance_rejected |
| finance_reject | finance_questions | finance_rejected |
| finance_resume | finance_rejected | finance_accepted |
Financing Flow
The financing states of a quote (a filtered view of the quote lifecycle), from finance review to acceptance.
graph TB
place0(["accepted_by_customer"])
place1(("finance_review"))
place2(("in_progress"))
place3(("finance_accepted"))
place4(("manual_finance_review"))
place5(("finance_questions"))
place6(("finance_rejected"))
place7(("completed"))
place0-->|"request_finance_review"|place1
place2-->|"request_finance_review_direct"|place1
place1-->|"finance_accept"|place3
place4-->|"finance_accept"|place3
place5-->|"finance_accept"|place3
place6-->|"finance_accept"|place3
place3-->|"complete"|place7
place1-->|"finance_needs_help"|place5
place4-->|"finance_needs_help"|place5
place0-->|"start_manual_finance_review"|place4
place2-->|"start_manual_finance_review"|place4
place1-->|"finance_reject"|place6
place4-->|"finance_reject"|place6
place5-->|"finance_reject"|place6
place6-->|"finance_resume"|place3
Transitions (text alternative)
| Transition | From | To |
|---|---|---|
| request_finance_review | accepted_by_customer | finance_review |
| request_finance_review_direct | in_progress | finance_review |
| finance_accept | finance_review | finance_accepted |
| finance_accept | manual_finance_review | finance_accepted |
| finance_accept | finance_questions | finance_accepted |
| finance_accept | finance_rejected | finance_accepted |
| complete | finance_accepted | completed |
| finance_needs_help | finance_review | finance_questions |
| finance_needs_help | manual_finance_review | finance_questions |
| start_manual_finance_review | accepted_by_customer | manual_finance_review |
| start_manual_finance_review | in_progress | manual_finance_review |
| finance_reject | finance_review | finance_rejected |
| finance_reject | manual_finance_review | finance_rejected |
| finance_reject | finance_questions | finance_rejected |
| finance_resume | finance_rejected | finance_accepted |
Contract Lifecycle
The state machine of a signed contract, from signing to completion.
graph TB
place0(["wait_for_signing"])
place1(("signed"))
place2(("post_processing_required"))
place3(("delivery_approved"))
place4(("invoice_checked"))
place5(("completed"))
place6(("canceled"))
place0-->|"sign"|place1
place1-->|"deliver"|place3
place2-->|"deliver"|place3
place3-->|"invoice_check"|place4
place4-->|"complete"|place5
place1-->|"post_processing"|place2
place0-->|"cancel"|place6
place1-->|"cancel"|place6
place2-->|"cancel"|place6
place3-->|"cancel"|place6
place4-->|"cancel"|place6
place5-->|"cancel"|place6
Transitions (text alternative)
| Transition | From | To |
|---|---|---|
| sign | wait_for_signing | signed |
| deliver | signed | delivery_approved |
| deliver | post_processing_required | delivery_approved |
| invoice_check | delivery_approved | invoice_checked |
| complete | invoice_checked | completed |
| post_processing | signed | post_processing_required |
| cancel | wait_for_signing | canceled |
| cancel | signed | canceled |
| cancel | post_processing_required | canceled |
| cancel | delivery_approved | canceled |
| cancel | invoice_checked | canceled |
| cancel | completed | canceled |
Quote Request Lifecycle
The state machine of a partner quote request.
graph TB
place0(["pending"])
place1(("converted"))
place2(("rejected"))
place0-->|"convert_to_quote"|place1
place0-->|"reject"|place2
Transitions (text alternative)
| Transition | From | To |
|---|---|---|
| convert_to_quote | pending | converted |
| reject | pending | rejected |