Create and operate Orders
Use the canonical sale aggregate for checkout, refunds, and fulfillment.
Order is the sale aggregate; InvoiceV2 rows are its product lines. Order creation accepts the existing v2 Invoice-create body unchanged, while the Invoice API stays compatible. Checkout URLs only appear in Order create and checkout responses.
Every mutation below requires Idempotency-Key. Reuse it only for the same intended change.
Authorization
bearerAuth storeAuth Provide your SellApp API key as a bearer token.
In: header
Select the SellApp store for this API request.
In: header
Header Parameters
Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.
8 <= length <= 255Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://sell.app/api/v2/orders" \ -H "Idempotency-Key: founder-memo-2026-09-04" \ -H "Content-Type: application/json" \ -d '{ "customer_email": "natya.sadella@example.com", "payment_method": "STRIPE", "product_variants": { "4321": { "quantity": 1 } } }'{
"data": {
"id": 4242,
"status": "COMPLETED",
"timeline": [
{
"status": "COMPLETED",
"set_at": "2026-09-04T09:12:00.000Z"
}
],
"customer": {
"id": 314,
"email": "natya.sadella@example.com",
"country": "United Kingdom",
"location": "London",
"proxied": false
},
"payment": {
"method": "STRIPE",
"transaction_id": "pi_founder",
"payment_id": "pi_founder",
"payment_capture_id": null,
"blockchain_txid": null,
"settlement_gateway": null,
"has_checkout_url": true
},
"totals": {
"currency": "USD",
"subtotal_cents": 2900,
"total_exclusive_cents": 2900,
"total_cents": 2900,
"total_exclusive_usd_cents": 2900,
"total_usd_cents": 2900
},
"coupon_id": null,
"line_items": [
{
"id": 501,
"product_id": 77,
"product_variant_id": 84,
"product_title": "Founder memo circle",
"variant_title": "Monthly",
"quantity": 1,
"status": "COMPLETED",
"currency": "USD",
"subtotal_cents": 2900,
"total_exclusive_cents": 2900,
"total_cents": 2900,
"subscription_id": 991,
"created_at": "2026-09-04T09:10:00.000Z"
}
],
"created_at": "2026-09-04T09:10:00.000Z",
"updated_at": "2026-09-04T09:12:00.000Z"
}
}{
"type": "invalid_request_error",
"code": "bad_request",
"message": "The request could not be understood.",
"status": 400,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#bad-request"
}{
"type": "authentication_error",
"code": "unauthenticated",
"message": "Unauthenticated.",
"status": 401,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}{
"type": "authorization_error",
"code": "forbidden",
"message": "This action is unauthorized.",
"status": 403,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#forbidden"
}{
"type": "not_found_error",
"code": "resource_not_found",
"message": "Not Found.",
"status": 404,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#resource-not-found"
}{
"type": "conflict_error",
"code": "conflict",
"message": "The resource state changed before this request.",
"status": 409,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#conflict"
}{
"type": "invalid_request_error",
"code": "cursor_expired",
"message": "This cursor has expired. Start again without a cursor.",
"status": 410,
"param": "cursor",
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#cursor-expired"
}{
"type": "validation_error",
"code": "validation_failed",
"message": "The selected product variant id is invalid.",
"status": 422,
"param": "product_variant_id",
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#validation-failed",
"errors": {
"product_variant_id": [
"The selected product variant id is invalid."
]
}
}{
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"message": "Too Many Attempts.",
"status": 429,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}{
"type": "api_error",
"code": "api_error",
"message": "Server Error",
"status": 500,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#api-error"
}Authorization
bearerAuth storeAuth Provide your SellApp API key as a bearer token.
In: header
Select the SellApp store for this API request.
In: header
Path Parameters
The order identifier.
Header Parameters
Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.
8 <= length <= 255Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://sell.app/api/v2/orders/4242/status" \ -H "Idempotency-Key: founder-memo-2026-09-04" \ -H "Content-Type: application/json" \ -d '{ "status": "COMPLETED" }'{
"data": {
"id": 4242,
"status": "COMPLETED",
"timeline": [
{
"status": "COMPLETED",
"set_at": "2026-09-04T09:12:00.000Z"
}
],
"customer": {
"id": 314,
"email": "natya.sadella@example.com",
"country": "United Kingdom",
"location": "London",
"proxied": false
},
"payment": {
"method": "STRIPE",
"transaction_id": "pi_founder",
"payment_id": "pi_founder",
"payment_capture_id": null,
"blockchain_txid": null,
"settlement_gateway": null,
"has_checkout_url": true
},
"totals": {
"currency": "USD",
"subtotal_cents": 2900,
"total_exclusive_cents": 2900,
"total_cents": 2900,
"total_exclusive_usd_cents": 2900,
"total_usd_cents": 2900
},
"coupon_id": null,
"line_items": [
{
"id": 501,
"product_id": 77,
"product_variant_id": 84,
"product_title": "Founder memo circle",
"variant_title": "Monthly",
"quantity": 1,
"status": "COMPLETED",
"currency": "USD",
"subtotal_cents": 2900,
"total_exclusive_cents": 2900,
"total_cents": 2900,
"subscription_id": 991,
"created_at": "2026-09-04T09:10:00.000Z"
}
],
"created_at": "2026-09-04T09:10:00.000Z",
"updated_at": "2026-09-04T09:12:00.000Z"
}
}{
"type": "invalid_request_error",
"code": "bad_request",
"message": "The request could not be understood.",
"status": 400,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#bad-request"
}{
"type": "authentication_error",
"code": "unauthenticated",
"message": "Unauthenticated.",
"status": 401,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}{
"type": "authorization_error",
"code": "forbidden",
"message": "This action is unauthorized.",
"status": 403,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#forbidden"
}{
"type": "not_found_error",
"code": "resource_not_found",
"message": "Not Found.",
"status": 404,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#resource-not-found"
}{
"type": "conflict_error",
"code": "conflict",
"message": "The resource state changed before this request.",
"status": 409,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#conflict"
}{
"type": "invalid_request_error",
"code": "cursor_expired",
"message": "This cursor has expired. Start again without a cursor.",
"status": 410,
"param": "cursor",
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#cursor-expired"
}{
"type": "validation_error",
"code": "validation_failed",
"message": "The selected product variant id is invalid.",
"status": 422,
"param": "product_variant_id",
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#validation-failed",
"errors": {
"product_variant_id": [
"The selected product variant id is invalid."
]
}
}{
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"message": "Too Many Attempts.",
"status": 429,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}{
"type": "api_error",
"code": "api_error",
"message": "Server Error",
"status": 500,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#api-error"
}Authorization
bearerAuth storeAuth Provide your SellApp API key as a bearer token.
In: header
Select the SellApp store for this API request.
In: header
Path Parameters
The order identifier.
Header Parameters
Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.
8 <= length <= 255Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://sell.app/api/v2/orders/42/checkout" \ -H "Idempotency-Key: founder-memo-2026-09-04" \ -H "Content-Type: application/json" \ -d '{ "line_item_ids": [ 501 ] }'{
"data": {
"id": 4242,
"status": "COMPLETED",
"timeline": [
{
"status": "COMPLETED",
"set_at": "2026-09-04T09:12:00.000Z"
}
],
"customer": {
"id": 314,
"email": "natya.sadella@example.com",
"country": "United Kingdom",
"location": "London",
"proxied": false
},
"payment": {
"method": "STRIPE",
"transaction_id": "pi_founder",
"payment_id": "pi_founder",
"payment_capture_id": null,
"blockchain_txid": null,
"settlement_gateway": null,
"has_checkout_url": true
},
"totals": {
"currency": "USD",
"subtotal_cents": 2900,
"total_exclusive_cents": 2900,
"total_cents": 2900,
"total_exclusive_usd_cents": 2900,
"total_usd_cents": 2900
},
"coupon_id": null,
"line_items": [
{
"id": 501,
"product_id": 77,
"product_variant_id": 84,
"product_title": "Founder memo circle",
"variant_title": "Monthly",
"quantity": 1,
"status": "COMPLETED",
"currency": "USD",
"subtotal_cents": 2900,
"total_exclusive_cents": 2900,
"total_cents": 2900,
"subscription_id": 991,
"created_at": "2026-09-04T09:10:00.000Z"
}
],
"created_at": "2026-09-04T09:10:00.000Z",
"updated_at": "2026-09-04T09:12:00.000Z"
}
}{
"type": "invalid_request_error",
"code": "bad_request",
"message": "The request could not be understood.",
"status": 400,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#bad-request"
}{
"type": "authentication_error",
"code": "unauthenticated",
"message": "Unauthenticated.",
"status": 401,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}{
"type": "authorization_error",
"code": "forbidden",
"message": "This action is unauthorized.",
"status": 403,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#forbidden"
}{
"type": "not_found_error",
"code": "resource_not_found",
"message": "Not Found.",
"status": 404,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#resource-not-found"
}{
"type": "conflict_error",
"code": "conflict",
"message": "The resource state changed before this request.",
"status": 409,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#conflict"
}{
"type": "invalid_request_error",
"code": "cursor_expired",
"message": "This cursor has expired. Start again without a cursor.",
"status": 410,
"param": "cursor",
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#cursor-expired"
}{
"type": "validation_error",
"code": "validation_failed",
"message": "The selected product variant id is invalid.",
"status": 422,
"param": "product_variant_id",
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#validation-failed",
"errors": {
"product_variant_id": [
"The selected product variant id is invalid."
]
}
}{
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"message": "Too Many Attempts.",
"status": 429,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}{
"type": "api_error",
"code": "api_error",
"message": "Server Error",
"status": 500,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#api-error"
}Authorization
bearerAuth storeAuth Provide your SellApp API key as a bearer token.
In: header
Select the SellApp store for this API request.
In: header
Path Parameters
The order identifier.
Header Parameters
Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.
8 <= length <= 255Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://sell.app/api/v2/orders/42/replacements" \ -H "Idempotency-Key: founder-memo-2026-09-04" \ -H "Content-Type: application/json" \ -d '{ "line_item_ids": [ 501 ] }'{
"data": {
"id": 4242,
"status": "COMPLETED",
"timeline": [
{
"status": "COMPLETED",
"set_at": "2026-09-04T09:12:00.000Z"
}
],
"customer": {
"id": 314,
"email": "natya.sadella@example.com",
"country": "United Kingdom",
"location": "London",
"proxied": false
},
"payment": {
"method": "STRIPE",
"transaction_id": "pi_founder",
"payment_id": "pi_founder",
"payment_capture_id": null,
"blockchain_txid": null,
"settlement_gateway": null,
"has_checkout_url": true
},
"totals": {
"currency": "USD",
"subtotal_cents": 2900,
"total_exclusive_cents": 2900,
"total_cents": 2900,
"total_exclusive_usd_cents": 2900,
"total_usd_cents": 2900
},
"coupon_id": null,
"line_items": [
{
"id": 501,
"product_id": 77,
"product_variant_id": 84,
"product_title": "Founder memo circle",
"variant_title": "Monthly",
"quantity": 1,
"status": "COMPLETED",
"currency": "USD",
"subtotal_cents": 2900,
"total_exclusive_cents": 2900,
"total_cents": 2900,
"subscription_id": 991,
"created_at": "2026-09-04T09:10:00.000Z"
}
],
"created_at": "2026-09-04T09:10:00.000Z",
"updated_at": "2026-09-04T09:12:00.000Z"
}
}{
"type": "invalid_request_error",
"code": "bad_request",
"message": "The request could not be understood.",
"status": 400,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#bad-request"
}{
"type": "authentication_error",
"code": "unauthenticated",
"message": "Unauthenticated.",
"status": 401,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}{
"type": "authorization_error",
"code": "forbidden",
"message": "This action is unauthorized.",
"status": 403,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#forbidden"
}{
"type": "not_found_error",
"code": "resource_not_found",
"message": "Not Found.",
"status": 404,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#resource-not-found"
}{
"type": "conflict_error",
"code": "conflict",
"message": "The resource state changed before this request.",
"status": 409,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#conflict"
}{
"type": "invalid_request_error",
"code": "cursor_expired",
"message": "This cursor has expired. Start again without a cursor.",
"status": 410,
"param": "cursor",
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#cursor-expired"
}{
"type": "validation_error",
"code": "validation_failed",
"message": "The selected product variant id is invalid.",
"status": 422,
"param": "product_variant_id",
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#validation-failed",
"errors": {
"product_variant_id": [
"The selected product variant id is invalid."
]
}
}{
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"message": "Too Many Attempts.",
"status": 429,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}{
"type": "api_error",
"code": "api_error",
"message": "Server Error",
"status": 500,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#api-error"
}Authorization
bearerAuth storeAuth Provide your SellApp API key as a bearer token.
In: header
Select the SellApp store for this API request.
In: header
Path Parameters
The order identifier.
Header Parameters
Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.
8 <= length <= 255Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://sell.app/api/v2/orders/42/refunds" \ -H "Idempotency-Key: founder-memo-2026-09-04" \ -H "Content-Type: application/json" \ -d '{ "amount_cents": 2900, "reason": "requested_by_customer" }'{
"data": {
"id": 4242,
"status": "COMPLETED",
"timeline": [
{
"status": "COMPLETED",
"set_at": "2026-09-04T09:12:00.000Z"
}
],
"customer": {
"id": 314,
"email": "natya.sadella@example.com",
"country": "United Kingdom",
"location": "London",
"proxied": false
},
"payment": {
"method": "STRIPE",
"transaction_id": "pi_founder",
"payment_id": "pi_founder",
"payment_capture_id": null,
"blockchain_txid": null,
"settlement_gateway": null,
"has_checkout_url": true
},
"totals": {
"currency": "USD",
"subtotal_cents": 2900,
"total_exclusive_cents": 2900,
"total_cents": 2900,
"total_exclusive_usd_cents": 2900,
"total_usd_cents": 2900
},
"coupon_id": null,
"line_items": [
{
"id": 501,
"product_id": 77,
"product_variant_id": 84,
"product_title": "Founder memo circle",
"variant_title": "Monthly",
"quantity": 1,
"status": "COMPLETED",
"currency": "USD",
"subtotal_cents": 2900,
"total_exclusive_cents": 2900,
"total_cents": 2900,
"subscription_id": 991,
"created_at": "2026-09-04T09:10:00.000Z"
}
],
"created_at": "2026-09-04T09:10:00.000Z",
"updated_at": "2026-09-04T09:12:00.000Z"
}
}{
"type": "invalid_request_error",
"code": "bad_request",
"message": "The request could not be understood.",
"status": 400,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#bad-request"
}{
"type": "authentication_error",
"code": "unauthenticated",
"message": "Unauthenticated.",
"status": 401,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}{
"type": "authorization_error",
"code": "forbidden",
"message": "This action is unauthorized.",
"status": 403,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#forbidden"
}{
"type": "not_found_error",
"code": "resource_not_found",
"message": "Not Found.",
"status": 404,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#resource-not-found"
}{
"type": "conflict_error",
"code": "conflict",
"message": "The resource state changed before this request.",
"status": 409,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#conflict"
}{
"type": "invalid_request_error",
"code": "cursor_expired",
"message": "This cursor has expired. Start again without a cursor.",
"status": 410,
"param": "cursor",
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#cursor-expired"
}{
"type": "validation_error",
"code": "validation_failed",
"message": "The selected product variant id is invalid.",
"status": 422,
"param": "product_variant_id",
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#validation-failed",
"errors": {
"product_variant_id": [
"The selected product variant id is invalid."
]
}
}{
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"message": "Too Many Attempts.",
"status": 429,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}{
"type": "api_error",
"code": "api_error",
"message": "Server Error",
"status": 500,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#api-error"
}Authorization
bearerAuth storeAuth Provide your SellApp API key as a bearer token.
In: header
Select the SellApp store for this API request.
In: header
Path Parameters
The order identifier.
Header Parameters
Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.
8 <= length <= 255Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://sell.app/api/v2/orders/42/fulfillment-retries" \ -H "Idempotency-Key: founder-memo-2026-09-04" \ -H "Content-Type: application/json" \ -d '{ "line_item_ids": [ 501 ] }'{
"data": {
"id": 4242,
"status": "COMPLETED",
"timeline": [
{
"status": "COMPLETED",
"set_at": "2026-09-04T09:12:00.000Z"
}
],
"customer": {
"id": 314,
"email": "natya.sadella@example.com",
"country": "United Kingdom",
"location": "London",
"proxied": false
},
"payment": {
"method": "STRIPE",
"transaction_id": "pi_founder",
"payment_id": "pi_founder",
"payment_capture_id": null,
"blockchain_txid": null,
"settlement_gateway": null,
"has_checkout_url": true
},
"totals": {
"currency": "USD",
"subtotal_cents": 2900,
"total_exclusive_cents": 2900,
"total_cents": 2900,
"total_exclusive_usd_cents": 2900,
"total_usd_cents": 2900
},
"coupon_id": null,
"line_items": [
{
"id": 501,
"product_id": 77,
"product_variant_id": 84,
"product_title": "Founder memo circle",
"variant_title": "Monthly",
"quantity": 1,
"status": "COMPLETED",
"currency": "USD",
"subtotal_cents": 2900,
"total_exclusive_cents": 2900,
"total_cents": 2900,
"subscription_id": 991,
"created_at": "2026-09-04T09:10:00.000Z"
}
],
"created_at": "2026-09-04T09:10:00.000Z",
"updated_at": "2026-09-04T09:12:00.000Z"
}
}{
"type": "invalid_request_error",
"code": "bad_request",
"message": "The request could not be understood.",
"status": 400,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#bad-request"
}{
"type": "authentication_error",
"code": "unauthenticated",
"message": "Unauthenticated.",
"status": 401,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}{
"type": "authorization_error",
"code": "forbidden",
"message": "This action is unauthorized.",
"status": 403,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#forbidden"
}{
"type": "not_found_error",
"code": "resource_not_found",
"message": "Not Found.",
"status": 404,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#resource-not-found"
}{
"type": "conflict_error",
"code": "conflict",
"message": "The resource state changed before this request.",
"status": 409,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#conflict"
}{
"type": "invalid_request_error",
"code": "cursor_expired",
"message": "This cursor has expired. Start again without a cursor.",
"status": 410,
"param": "cursor",
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#cursor-expired"
}{
"type": "validation_error",
"code": "validation_failed",
"message": "The selected product variant id is invalid.",
"status": 422,
"param": "product_variant_id",
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#validation-failed",
"errors": {
"product_variant_id": [
"The selected product variant id is invalid."
]
}
}{
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"message": "Too Many Attempts.",
"status": 429,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}{
"type": "api_error",
"code": "api_error",
"message": "Server Error",
"status": 500,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#api-error"
}Authorization
bearerAuth storeAuth Provide your SellApp API key as a bearer token.
In: header
Select the SellApp store for this API request.
In: header
Path Parameters
The order identifier.
Header Parameters
Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.
8 <= length <= 255Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://sell.app/api/v2/orders/42/dynamic-delivery-retries" \ -H "Idempotency-Key: founder-memo-2026-09-04" \ -H "Content-Type: application/json" \ -d '{ "line_item_ids": [ 501 ] }'{
"data": {
"id": 4242,
"status": "COMPLETED",
"timeline": [
{
"status": "COMPLETED",
"set_at": "2026-09-04T09:12:00.000Z"
}
],
"customer": {
"id": 314,
"email": "natya.sadella@example.com",
"country": "United Kingdom",
"location": "London",
"proxied": false
},
"payment": {
"method": "STRIPE",
"transaction_id": "pi_founder",
"payment_id": "pi_founder",
"payment_capture_id": null,
"blockchain_txid": null,
"settlement_gateway": null,
"has_checkout_url": true
},
"totals": {
"currency": "USD",
"subtotal_cents": 2900,
"total_exclusive_cents": 2900,
"total_cents": 2900,
"total_exclusive_usd_cents": 2900,
"total_usd_cents": 2900
},
"coupon_id": null,
"line_items": [
{
"id": 501,
"product_id": 77,
"product_variant_id": 84,
"product_title": "Founder memo circle",
"variant_title": "Monthly",
"quantity": 1,
"status": "COMPLETED",
"currency": "USD",
"subtotal_cents": 2900,
"total_exclusive_cents": 2900,
"total_cents": 2900,
"subscription_id": 991,
"created_at": "2026-09-04T09:10:00.000Z"
}
],
"created_at": "2026-09-04T09:10:00.000Z",
"updated_at": "2026-09-04T09:12:00.000Z"
}
}{
"type": "invalid_request_error",
"code": "bad_request",
"message": "The request could not be understood.",
"status": 400,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#bad-request"
}{
"type": "authentication_error",
"code": "unauthenticated",
"message": "Unauthenticated.",
"status": 401,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}{
"type": "authorization_error",
"code": "forbidden",
"message": "This action is unauthorized.",
"status": 403,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#forbidden"
}{
"type": "not_found_error",
"code": "resource_not_found",
"message": "Not Found.",
"status": 404,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#resource-not-found"
}{
"type": "conflict_error",
"code": "conflict",
"message": "The resource state changed before this request.",
"status": 409,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#conflict"
}{
"type": "invalid_request_error",
"code": "cursor_expired",
"message": "This cursor has expired. Start again without a cursor.",
"status": 410,
"param": "cursor",
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#cursor-expired"
}{
"type": "validation_error",
"code": "validation_failed",
"message": "The selected product variant id is invalid.",
"status": 422,
"param": "product_variant_id",
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#validation-failed",
"errors": {
"product_variant_id": [
"The selected product variant id is invalid."
]
}
}{
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"message": "Too Many Attempts.",
"status": 429,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}{
"type": "api_error",
"code": "api_error",
"message": "Server Error",
"status": 500,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#api-error"
}Authorization
bearerAuth storeAuth Provide your SellApp API key as a bearer token.
In: header
Select the SellApp store for this API request.
In: header
Path Parameters
The order identifier.
Header Parameters
Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.
8 <= length <= 255Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://sell.app/api/v2/orders/42/fulfillment-notifications" \ -H "Idempotency-Key: founder-memo-2026-09-04" \ -H "Content-Type: application/json" \ -d '{ "line_item_ids": [ 501 ] }'{
"data": {
"id": 4242,
"status": "COMPLETED",
"timeline": [
{
"status": "COMPLETED",
"set_at": "2026-09-04T09:12:00.000Z"
}
],
"customer": {
"id": 314,
"email": "natya.sadella@example.com",
"country": "United Kingdom",
"location": "London",
"proxied": false
},
"payment": {
"method": "STRIPE",
"transaction_id": "pi_founder",
"payment_id": "pi_founder",
"payment_capture_id": null,
"blockchain_txid": null,
"settlement_gateway": null,
"has_checkout_url": true
},
"totals": {
"currency": "USD",
"subtotal_cents": 2900,
"total_exclusive_cents": 2900,
"total_cents": 2900,
"total_exclusive_usd_cents": 2900,
"total_usd_cents": 2900
},
"coupon_id": null,
"line_items": [
{
"id": 501,
"product_id": 77,
"product_variant_id": 84,
"product_title": "Founder memo circle",
"variant_title": "Monthly",
"quantity": 1,
"status": "COMPLETED",
"currency": "USD",
"subtotal_cents": 2900,
"total_exclusive_cents": 2900,
"total_cents": 2900,
"subscription_id": 991,
"created_at": "2026-09-04T09:10:00.000Z"
}
],
"created_at": "2026-09-04T09:10:00.000Z",
"updated_at": "2026-09-04T09:12:00.000Z"
}
}{
"type": "invalid_request_error",
"code": "bad_request",
"message": "The request could not be understood.",
"status": 400,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#bad-request"
}{
"type": "authentication_error",
"code": "unauthenticated",
"message": "Unauthenticated.",
"status": 401,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}{
"type": "authorization_error",
"code": "forbidden",
"message": "This action is unauthorized.",
"status": 403,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#forbidden"
}{
"type": "not_found_error",
"code": "resource_not_found",
"message": "Not Found.",
"status": 404,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#resource-not-found"
}{
"type": "conflict_error",
"code": "conflict",
"message": "The resource state changed before this request.",
"status": 409,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#conflict"
}{
"type": "invalid_request_error",
"code": "cursor_expired",
"message": "This cursor has expired. Start again without a cursor.",
"status": 410,
"param": "cursor",
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#cursor-expired"
}{
"type": "validation_error",
"code": "validation_failed",
"message": "The selected product variant id is invalid.",
"status": 422,
"param": "product_variant_id",
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#validation-failed",
"errors": {
"product_variant_id": [
"The selected product variant id is invalid."
]
}
}{
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"message": "Too Many Attempts.",
"status": 429,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}{
"type": "api_error",
"code": "api_error",
"message": "Server Error",
"status": 500,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#api-error"
}Authorization
bearerAuth storeAuth Provide your SellApp API key as a bearer token.
In: header
Select the SellApp store for this API request.
In: header
Path Parameters
The order identifier.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://sell.app/api/v2/orders/42/deliverables"{
"data": [
{
"line_item_id": 501,
"type": "download",
"status": "delivered"
}
]
}{
"type": "invalid_request_error",
"code": "bad_request",
"message": "The request could not be understood.",
"status": 400,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#bad-request"
}{
"type": "authentication_error",
"code": "unauthenticated",
"message": "Unauthenticated.",
"status": 401,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}{
"type": "authorization_error",
"code": "forbidden",
"message": "This action is unauthorized.",
"status": 403,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#forbidden"
}{
"type": "not_found_error",
"code": "resource_not_found",
"message": "Not Found.",
"status": 404,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#resource-not-found"
}{
"type": "conflict_error",
"code": "conflict",
"message": "The resource state changed before this request.",
"status": 409,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#conflict"
}{
"type": "invalid_request_error",
"code": "cursor_expired",
"message": "This cursor has expired. Start again without a cursor.",
"status": 410,
"param": "cursor",
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#cursor-expired"
}{
"type": "validation_error",
"code": "validation_failed",
"message": "The selected product variant id is invalid.",
"status": 422,
"param": "product_variant_id",
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#validation-failed",
"errors": {
"product_variant_id": [
"The selected product variant id is invalid."
]
}
}{
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"message": "Too Many Attempts.",
"status": 429,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}{
"type": "api_error",
"code": "api_error",
"message": "Server Error",
"status": 500,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#api-error"
}