Quote and execute endpoints require an Admin API key (
stytch_admin). Payout
methods use Member access (stytch_member). See
Authentication for the full role split.How It Works
1
Check Payout Methods
Call
GET /execution/payout-methods/v1 to see your payout configuration
and instant payout credit availability.2
Get a Sell Quote
POST /execution/v2/sell/quotes with your items (offer IDs or
product+variant pairs). You receive a quoteId, pricing breakdown, and
optionals. Quotes expire in 60 seconds.3
Select Optionals (Optional)
Inspect
optionals[] on the quote, call GET /execution/v2/sell/quotes/:quoteId/optionals, or pass selectedOptionalIds
when creating or refreshing a quote. See Optionals.4
Check Listing Conflicts (Optional)
If you also have active listings for the same products, call
GET /execution/v2/sell/quotes/:quoteId/listing-conflicts before executing.5
Execute the Sell
POST /execution/v2/sell/quotes/:quoteId/execute with expectedTotal,
expectedOptionalFees, and any selected optionals. Pure verifies the
current total is not less than your expectedTotal.Endpoints
All v2 sell routes require stytch_admin. Payout methods require stytch_member.
Sell Quotes
Sell quotes are pricing snapshots that expire in 60 seconds. Each sell quote includes:- Line items with per-item pricing, matched offers, and availability status
- Fees (processing, shipping, etc.)
- Optionals — add-on services like instant payout and overnight label (see Optionals)
- Total in cents — pass this as
expectedTotalwhen executing
- Offer ID — sell directly into a specific buy offer (
offerId+quantity) - Product + Variant — let Pure match the best available offers (
productId+variantId+quantity)
GET /execution/v2/sell/quotes/:quoteId with optional selectedOptionalIds as a repeatable query param (e.g. ?selectedOptionalIds=instant_payout&selectedOptionalIds=overnight_label) — not comma-joined.
Quotes can contain multiple items (up to 50 per quote). Each item is an
offer ID or product+variant pair with a quantity. Offer IDs must be unique
within a quote.
Optionals
Sell quotes include built-in optionals: instant payout (instant_payout) and overnight label (overnight_label). Fees on sell optionals are returned as negative values (they reduce your payout).
See the Optionals guide for eligibility rules, catalog endpoints, and fee reconciliation.
Optional Fee Reconciliation
On execute, passexpectedOptionalFees — a map of optional ID to fee in cents from the quote response:
errorCode: "optional_fee_mismatch". Refresh the quote and retry with updated fees.
Listing Conflicts
When selling items you also have listed on the marketplace, callGET /execution/v2/sell/quotes/:quoteId/listing-conflicts before execute. The response is { success: true, data: [...] } — an array of conflicts where your sell quantity overlaps with active listings for the same product and variant.
At execute time, pass:
adjustListings: true— automatically decrements your active listings for the same productsconfirmListingMismatch: true— skips the error when your sell quantity is less than listed quantity
errorCode: "listing_quantity_mismatch" or "listing_validation_failed".
Promotions
Promotion codes are not accepted when creating a quote. Preview with:promotionCode on execute to apply the promotion at checkout.
Payout Methods
Before selling, check your payout configuration:payoutMethod— your configured payout method (electronic_check,teller_ach, orwire_transfer)electronicCheckName/electronicCheckEmail— payee details for e-check payoutsinstantPayout— your credit limit, outstanding balance, and available credit for instant payouts
Price Protection
When executing, passexpectedTotal — the total value from the quote. Pure rejects the order with 409 Conflict if the current total is less than your expectedTotal. This guarantees your payout is never less than what you agreed to.
Access and Roles
All execution routes (v1 and v2) are gated by an organization allowlist. If your organization is not allowlisted, every execution request returns 403 Forbidden. Contact support to request access.Trading Halts
If trading is halted, execute may return 409 witherrorCode: "system_check_failed". Poll GET /execution/v2/trading-status before submitting orders.
Error Handling
Error responses includeerror, code (HTTP status), suggestion, and optionally a machine-readable errorCode string.
The execute response includes
counterpartyOrderIds — the buy-side order IDs created as counterparties to your sell.
Legacy v1 (Deprecated)
v1 sell endpoints remain available but are deprecated. Migrate to the v2 routes below.
v2 adds optionals catalog, listing-conflicts pre-check, promotion preview,
expectedOptionalFees reconciliation, counterpartyOrderIds on execute, and improved error codes. v1 uses comma-separated selectedOptionalIds on GET refresh; v2 uses repeatable array params.