POST /v1/quotes requires a bearer token and Idempotency-Key. Choose one or two provider IDs; more returns 422, never silent truncation.
GET /v1/quotes/:id. States include VALIDATED_PENDING_REVIEW, APPROVED, COUNTERED, DECLINED, EXPIRED; default validity is seven days.
POST /v1/quotes/:id/authorize authorizes a hold. POST /v1/quotes/:id/accept-counter accepts revised terms; /cancel cancels. Present revised amounts for consent before accepting a counter. A live request without a payment method can return requires_escalation: true with a hosted continue_url; return it to the user rather than claiming payment succeeded.
Test keys produce deterministic simulated holds with no Stripe HTTP and zero charges. Live processing fails closed without configured Stripe and provider connected account. Holds use manual capture; approval and capture are distinct from estimation. Declined, expired and uncaptured holds incur zero platform fee. Only a captured live hold can accrue an isolated partner bounty. The payout ledger never processes deposits.
See signed quote locks and the API reference.