API ReferenceOrders

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.

POST
/v2/orders

Authorization

bearerAuth storeAuth
AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

X-STORE<token>

Select the SellApp store for this API request.

In: header

Header Parameters

Idempotency-Key*string

Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.

Length8 <= length <= 255

Request 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"
}
PATCH
/v2/orders/{order}/status

Authorization

bearerAuth storeAuth
AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

X-STORE<token>

Select the SellApp store for this API request.

In: header

Path Parameters

order*integer

The order identifier.

Header Parameters

Idempotency-Key*string

Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.

Length8 <= length <= 255

Request 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"
}
POST
/v2/orders/{order}/checkout

Authorization

bearerAuth storeAuth
AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

X-STORE<token>

Select the SellApp store for this API request.

In: header

Path Parameters

order*integer

The order identifier.

Header Parameters

Idempotency-Key*string

Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.

Length8 <= length <= 255

Request 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"
}
POST
/v2/orders/{order}/replacements

Authorization

bearerAuth storeAuth
AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

X-STORE<token>

Select the SellApp store for this API request.

In: header

Path Parameters

order*integer

The order identifier.

Header Parameters

Idempotency-Key*string

Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.

Length8 <= length <= 255

Request 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"
}
POST
/v2/orders/{order}/refunds

Authorization

bearerAuth storeAuth
AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

X-STORE<token>

Select the SellApp store for this API request.

In: header

Path Parameters

order*integer

The order identifier.

Header Parameters

Idempotency-Key*string

Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.

Length8 <= length <= 255

Request 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"
}
POST
/v2/orders/{order}/fulfillment-retries

Authorization

bearerAuth storeAuth
AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

X-STORE<token>

Select the SellApp store for this API request.

In: header

Path Parameters

order*integer

The order identifier.

Header Parameters

Idempotency-Key*string

Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.

Length8 <= length <= 255

Request 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"
}
POST
/v2/orders/{order}/dynamic-delivery-retries

Authorization

bearerAuth storeAuth
AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

X-STORE<token>

Select the SellApp store for this API request.

In: header

Path Parameters

order*integer

The order identifier.

Header Parameters

Idempotency-Key*string

Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.

Length8 <= length <= 255

Request 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"
}
POST
/v2/orders/{order}/fulfillment-notifications

Authorization

bearerAuth storeAuth
AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

X-STORE<token>

Select the SellApp store for this API request.

In: header

Path Parameters

order*integer

The order identifier.

Header Parameters

Idempotency-Key*string

Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.

Length8 <= length <= 255

Request 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"
}
GET
/v2/orders/{order}/deliverables

Authorization

bearerAuth storeAuth
AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

X-STORE<token>

Select the SellApp store for this API request.

In: header

Path Parameters

order*integer

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"
}