POST
/v1/checkoutsCreates a checkout for a product variant and lease term. Returns existing checkout if one already exists for this combination. Auto-waitlists if product is unavailable.
Request Body
Fields in the request body
Optional
| Name | Type | Description |
|---|---|---|
billingAddress | - | |
cancelUrl | string | URL to redirect to when checkout is cancelled |
customer | - | |
externalOrderId | string | External order ID for tracking in external systems (unique per organization) |
failureUrl | string | URL to redirect to when checkout fails |
productVariantId | ProductVariantPubId | - |
purchaseItems | Optional purchase items to apply to this checkout | |
selectedTermInMonths | integer | Lease term in months to use for this checkout |
shippingAddress | - | |
sku | string | SKU of the product variant to include in the checkout. **Required if `productVariantId` is not provided.** Cannot be used together with `productVariantId`. |
successUrl | string | URL to redirect to on successful checkout completion |
Response Data
Fields returned in the response
Always Present
| Name | Type | Description |
|---|---|---|
createdAt | string (date-time) | - |
id | CheckoutPubId | Public-facing unique identifier for the checkout |
insuranceStatus | Status of insurance approval (pending, approved, denied) | |
lifecycle | Current lifecycle state of the checkout | |
offtakePartnerId | OftakePartnerId | - |
recurringPaymentStatus | Status of recurring payments (pending, active, cancelled) | |
updatedAt | string (date-time) | - |
checkoutUrl | string | URL to access the checkout page |
customerId | UserPubId | Public ID of the customer (resolved from internal customer_id) |
progress | Unified progress information for the checkout flow Includes milestones with timestamps for post-confirmation checkouts |
Optional
| Name | Type | Description |
|---|---|---|
billingAddress | - | |
billingAddressLocked | boolean | Whether the billing address is locked (set by organization, cannot be changed by customer) |
cancelUrl | string | URL to redirect to when checkout is cancelled |
deliveredAt | string | When the items were delivered |
depositInvoiceId | string | Stripe invoice ID for the deposit payment |
depositPreauthExpiresAt | string | Timestamp when the pre-authorization expires (typically 7 days from authorization) |
depositTimestamp | string | Timestamp when the deposit was paid |
externalOrderId | string | External order ID from integrated systems |
failureUrl | string | URL to redirect to when checkout fails |
lastPaymentError | string | Last payment error message (if payment failed) |
lastPaymentErrorAt | string | Timestamp of last payment error |
lastPaymentErrorCode | string | Last payment error code (if payment failed) |
leaseDocumentId | string | ID of the lease document in PandaDoc |
leaseEndDate | string | - |
leaseStartDate | string | - |
leaseTermId | LeaseTermId | - |
paymentFailureCount | integer | Count of payment failures |
pickupLocationId | integer | ID of the pickup location (if using pickup instead of shipping) |
previousLifecycle | - | |
purchaseItems | Purchase items applied to this checkout | |
recurringPaymentMethod | - | |
recurringPaymentMethodId | string | Stripe PaymentMethod ID for recurring payments (may differ from deposit payment method) |
returnCancelledAt | string | When a pending return was cancelled |
returnCompletedAt | string | When the return was completed |
returnInitiatedAt | string | When the return was initiated |
returnNotes | string | Additional notes about the return |
returnReason | string | Reason for the return |
shippedAt | string | When the items were shipped |
shippingAddress | - | |
shippingAddressLocked | boolean | Whether the shipping address is locked (set by organization, cannot be changed by customer) |
signedBy | string | Who signed for the delivery |
stripeDepositPaymentIntentId | string | Stripe PaymentIntent ID for the deposit pre-authorization |
stripeSubscriptionId | string | Stripe subscription ID for recurring payments |
successUrl | string | URL to redirect to on successful checkout completion |
trackingCarrier | - | |
trackingNumber | string | Tracking number for shipped items |
trackingStatus | - | |
waitlistLocationAddress | - | |
waitlistLocationReasonCode | - | |
waitlistReason | - | |
locationMessage | string | Location waitlist message (machine-readable) when waitlisted by location |
organizationId | OrganizationPubId | - |
POST
/v1/checkoutsRequest
curl https://api.thesweetspot.com/v1/checkouts \
-X POST \
-H "Content-Type: application/json" \
-d '{
"billingAddress": null,
"cancelUrl": null,
"customer": null,
"externalOrderId": null,
"failureUrl": null,
"productVariantId": null,
"purchaseItems": null,
"selectedTermInMonths": null,
"shippingAddress": null,
"sku": null,
"successUrl": null
}'Response
{
"createdAt": "2026-02-04T03:44:08.484Z",
"id": null,
"insuranceStatus": null,
"lifecycle": null,
"offtakePartnerId": null,
"recurringPaymentStatus": null,
"updatedAt": "2026-02-04T03:44:08.484Z",
"checkoutUrl": "string",
"customerId": "string",
"progress": {
"canGoBack": null,
"isFailed": null,
"isTerminal": null,
"isWaitlisted": null,
"lifecycle": null,
"needsAttention": null,
"percentage": null,
"phase": null,
"phaseLabel": null,
"totalSteps": null
}
}